Skip to content

Technical Plugin PlayLists

Daniel Neto edited this page Oct 29, 2026 · 1 revision

Technical: PlayLists plugin

Manages playlists/programs, series and playlist-related presentation/live behavior.

Audience: developers, advanced administrators and AI-assisted diagnosis. Plugin catalog.

Source baseline

  • Review date: 2026-10-29. Method: static source analysis; runtime/provider behavior was not exercised.
  • Code ownership: AVideo Streamer repository.
  • Reported version: 3.0.
  • Source revision: 7d48f2dfc0289236718a3f9fba7c5ffecff4a37f.
  • Entry class file: PlayLists.php.

Confirm the installed plugin version independently of the Streamer version. Configuration defaults below are not a dump of this installation's saved settings.

Dependencies

Plugin Required by declaration Source reason
Rebroadcaster Optional Optional scheduled playlist rebroadcasting
VideoPlaylistScheduler Optional Optional schedule management UI integration

Literal runtime plugin references: API, Live, Rebroadcaster, SecureVideosDirectory, VideoHLS, VideoPlaylistScheduler, VideoTags. These calls do not mean every referenced plugin is mandatory.

Hook integration

Override Implementation
getTags() PlayLists.php:22
getPermissionsOptions(): array PlayLists.php:47
getWatchActionButton($videos_id) PlayLists.php:105
getNetflixActionButton($videos_id) PlayLists.php:121
getGalleryActionButton($videos_id) PlayLists.php:133
getHeadCode() PlayLists.php:147
getFooterCode() PlayLists.php:167
thumbsOverlay($videos_id) PlayLists.php:261
getStart() PlayLists.php:313
navBarButtons() PlayLists.php:378
navBarProfileButtons() PlayLists.php:422
getPluginMenu() PlayLists.php:1021
getMyAccount($users_id) PlayLists.php:1049
onNewVideo($videos_id) PlayLists.php:1055
executeEveryMinute() PlayLists.php:1088
on_publish_done($live_transmitions_history_id, $users_id, $key, $live_servers_id) PlayLists.php:1107
on_publish_denied($key) PlayLists.php:1138

Configuration assignments

These are direct assignments inside getEmptyDataObject(), not evaluated effective defaults. Stored plugins.object_data, globals, structured values and conditional branches may alter runtime behavior. Private/default credential values are omitted.

Field Literal default or expression type Literal source label/help Evidence
name Computed/structured; inspect source — source
playOnSelect true — source
autoadvance true — source
usersCanOnlyCreatePlayListsFromTheirContent false — source
useOldPlayList false — source
expandPlayListOnChannels false — source
usePlaylistPlayerForSeries true — source
showWatchLaterOnLeftMenu true — source
showFavoriteOnLeftMenu true — source
showWatchLaterOnProfileMenu true — source
showFavoriteOnProfileMenu true — source
showPlayLiveButton true — source
showTrailerInThePlayList true — source
showTVFeatures false — source
showFeed true — source

Files and request surface

This inventory distinguishes implementation files from an API specification. Includes, templates, callbacks and CLI workers are not interchangeable HTTP endpoints. Request-field names below are direct source references, not a complete schema or permission declaration.

File Source role Direct request fields observed
Objects/Playlists_schedules.php class/helper implementation —
PlayListElement.php class/helper implementation —
PlayLists.php plugin entry class live_servers_id, playlists_id_live, sort, videoName
View/Playlists_schedules/add.json.php JSON entry point; inspect caller and guard description, finish_datetime, id, loop, name, parameters, playlists_id, repeat, start_datetime
View/Playlists_schedules/delete.json.php JSON entry point; inspect caller and guard id
View/Playlists_schedules/index.php PHP page/include/worker; inspect caller —
View/Playlists_schedules/index_body.php PHP page/include/worker; inspect caller sort
View/Playlists_schedules/index_head.php PHP page/include/worker; inspect caller —
View/Playlists_schedules/list.json.php JSON entry point; inspect caller and guard program_id
View/Playlists_schedules/schedule.php PHP page/include/worker; inspect caller program_id
View/editor.php PHP page/include/worker; inspect caller —
View/getPlaylistButtons.php PHP page/include/worker; inspect caller —
actionButton.php PHP page/include/worker; inspect caller disableAddTo
actionButtonLive.php PHP page/include/worker; inspect caller playlists_id_live
addVideoModal.php PHP page/include/worker; inspect caller —
buttons.php PHP page/include/worker; inspect caller —
clone.json.php JSON entry point; inspect caller and guard playlists_id
collections.php PHP page/include/worker; inspect caller playlists_id
embed.php PHP page/include/worker; inspect caller disableCloseButton, forceCloseButton, hideAutoplaySwitch, playlist_index, playlists_id, playlists_tags_id
epg.day.php PHP page/include/worker; inspect caller site
epg.html.php PHP page/include/worker; inspect caller playlists_id, users_id
epg.json.php JSON entry point; inspect caller and guard playlists_id, users_id
epg.php PHP page/include/worker; inspect caller site
epg.xml.php PHP page/include/worker; inspect caller —
footer.php PHP page/include/worker; inspect caller —
getMyAccount.php PHP page/include/worker; inspect caller —
getMyAccount.save.json.php JSON entry point; inspect caller and guard autoadd_playlist
getStartPlayerJS.js browser/worker JavaScript; verify loader —
goLiveNow.js browser/worker JavaScript; verify loader —
install/install.sql schema/migration SQL —
install/updateV2.0.sql schema/migration SQL —
install/updateV3.0.sql schema/migration SQL —
iptv.php PHP page/include/worker; inspect caller site
managerPlaylists.php PHP page/include/worker; inspect caller PlaylistOwnerUsersId, searchPlaylist, users_id
managerPlaylistsSearchVideo.php PHP page/include/worker; inspect caller —
playListHolder.html.php PHP page/include/worker; inspect caller sort
playListToSerie.php PHP page/include/worker; inspect caller action, playlist_id
playProgramsLive.json.php JSON entry point; inspect caller and guard playlists_id
player.php PHP page/include/worker; inspect caller playlists_id, sort, tags_id
playerButton.js browser/worker JavaScript; verify loader —
playerEmbed.php PHP page/include/worker; inspect caller playlist_index, playlists_id
run.php PHP page/include/worker; inspect caller —
saveShowOnTV.json.php JSON entry point; inspect caller and guard playlists_id, showOnTV
script.js browser/worker JavaScript; verify loader —
showOnTV.js browser/worker JavaScript; verify loader —
tv.php PHP page/include/worker; inspect caller —
tv_body.php PHP page/include/worker; inspect caller —
tv_iframePlayer.php PHP page/include/worker; inspect caller —
tv_videoPlayer.php PHP page/include/worker; inspect caller —

Data and migrations

Tables named in available CREATE TABLE statements: playlists_schedules. Apply installation/update behavior through the owning plugin; this reference is not a script for running historical migrations manually.

Main-file named symbols

Visibility and implementation semantics must be checked in source. Nonempty string defaults are represented as . This is a symbol reference, not a stable public API promise.

Function or method Source
getPluginDependencies() 13
getTags() 22
getDescription() 30
getName() 37
getUUID() 42
getPermissionsOptions(): array 47
canManageAllPlaylists(): bool 54
canManagePlaylist($playlists_id) 62
getPluginVersion() 77
getEmptyDataObject() 82
getWatchActionButton($videos_id) 105
getNetflixActionButton($videos_id) 121
getGalleryActionButton($videos_id) 133
getHeadCode() 147
loadScripts() 161
getFooterCode() 167
canAddVideoOnPlaylist($videos_id) 201
isVideoOnFavorite($videos_id, $users_id) 223
isVideoOnWatchLater($videos_id, $users_id) 228
getFavoriteIdFromUser($users_id) 233
getWatchLaterIdFromUser($users_id) 238
getWatchLaterLink() 243
getFavoriteLink() 252
thumbsOverlay($videos_id) 261
isPlayListASerie($serie_playlists_id) 267
removeSerie($serie_playlists_id) 278
saveSerie($serie_playlists_id) 288
getStart() 313
getLink($playlists_id, $embed = false, $playlist_index = null) 337
getTagLink($tags_id, $embed = false, $playlist_index = null) 360
navBarButtons() 378
navBarProfileButtons() 422
getLiveLink($playlists_id) 447
showPlayLiveButton() 464
canPlayProgramsLive() 472
getOnlyVideosAndAudioIDFromPlaylistLight($playlists_id) 487
getLiveEPGLink($playlists_id, $type = '<string>') 512
videosToPlaylist($videos, $index = 0, $audioOnly = false) 522
getLinkToLive($playlists_id) 581
getImage($playlists_id) 589
getLiveImage($playlists_id) 614
getNameOrSerieTitle($playlists_id) 624
getDescriptionIfIsSerie($playlists_id) 635
getTrailerIfIsSerie($playlists_id) 644
getLinkToM3U8($playlists_id, $key, $live_servers_id) 653
getM3U8File($playlists_id) 661
showTVFeatures() 671
getShowOnTVSwitch($playlists_id) 677
getPlayListEPG($playlists_id, $users_id = 0) 692
getUserEPG($users_id) 706
getSiteEPGs($addPlaylistInfo = false) 716
getALLEPGs() 738
epgFromPlayList($playListArray, $generated, $created, $showClock = false, $linkToLive = false, $showTitle = false) 763
showOnTV($playlists_id) 881
getPlayLiveButton($playlists_id) 890
scheduleLiveButton($playlists_id, $showLabel = true, $class = '<string>') 920
getVideosIdFromPlaylist($playlists_id) 960
isPlaylistLive($playlists_id, $users_id = 0) 965
getPlaylistLiveServersID($playlists_id, $users_id = 0) 978
getPlaylistLiveKey($playlists_id, $users_id = 0) 994
getLivePosterImage($playlists_id) 1009
getPluginMenu() 1021
setAutoAddPlaylist($users_id, $playlists_id) 1028
getAutoAddPlaylist($users_id) 1036
getPLButtons($playlists_id, $showMore = true) 1043
getMyAccount($users_id) 1049
onNewVideo($videos_id) 1055
addVideo($videos_id, $playlists_id, $add = true, $order = 0) 1069
getPlaylistNotFoundMessage($playlistId) 1075
executeEveryMinute() 1088
thereIsARebroadcastPlaying($key) 1095
on_publish_done($live_transmitions_history_id, $users_id, $key, $live_servers_id) 1107
on_publish_denied($key) 1138
setScheduleStatus($key, $status) 1143
getURL($playlist_id, $count = null, $PLChannelName = ''<string>''<string>'') 1163
getPlaylists_id() 1226
getIndex() 1231
getName() 1236
getVideos() 1241
canSee() 1246
canNotSeeReason() 1251
__construct($playlists_id, $tags_id, $checkPlayMode = false) 1268
_getName() 1293
_getVideos() 1313
fixRows($playList) 1356
getPlayListData() 1381
getCurrentVideo() 1419
getNextVideo() 1438
checkPlayMode() 1451

Supporting PHP declarations

These symbols are grouped by source file; inspect the class declaration and visibility before calling them.

Objects/Playlists_schedules.php

Declared classes: Playlists_schedules, PlaylistsSchedulesParameters.

Named symbol Source
getSearchFieldsNames() 33
getTableName() 38
setId($id) 43
setPlaylists_id($playlists_id) 48
setName($name) 53
setDescription($description) 59
setStatus($status) 64
setLoop($loop) 69
setStart_datetime($start_datetime) 74
setFinish_datetime($finish_datetime) 82
setRepeat($repeat) 90
setParameters($parameters) 95
getId() 104
getPlaylists_id() 109
getName() 114
getDescription() 119
getStatus() 124
getLoop() 129
getStart_datetime() 134
getFinish_datetime() 139
getRepeat() 144
getParameters() 149
getAllFromStatus($status) 154
getAllActive() 168
getAllExecuted() 173
getAllExecuting() 178
save() 183
getCleanVideosIDArray($playlists_id, $depth=0) 196
getPlaying($playlists_schedules_id) 211
getDynamicTitle($playlists_schedules_id) 287
getDynamicDescription($playlists_schedules_id) 301
getPlayListScheduledIndex($playlists_schedules) 327
canRecordVideo($key) 331
iskeyPlayListScheduled($key) 337
stopBroadcast($playlists_schedules_id) 346
getAll($playlists_id = 0) 353

PlayListElement.php

Declared classes: PlayListElement, playListSource, playListThumbnail.

Named symbol Source
__construct($name, $description, $duration, $playListSource, $playListThumbnail, $poster, $videoStartSeconds, $created, $likes, $views, $videos_id, $className='', $tracks=array()) 7
getName() 24
getDescription() 28
getDuration() 32
getPlayListSource() 36
getPlayListThumbnail() 40
setName($name) 44
setDescription($description) 48
setDuration($duration) 52
setPlayListSource($playListSource) 59
setPlayListThumbnail($playListThumbnail) 63
getSources() 67
getThumbnail() 71
getPoster() 75
getVideoStartSeconds() 79
getCreated() 83
getLikes() 87
getViews() 91
getVideos_id() 95
setSources($sources) 99
setThumbnail($thumbnail) 103
setPoster($poster) 107
setVideoStartSeconds($videoStartSeconds) 111
setCreated($created) 115
setLikes($likes) 119
setViews($views) 123
setVideos_id($videos_id) 127
__construct($src, $videos_id, $youtube = false) 139

epg.day.php

Named symbol Source
secondsToDayTime($seconds) 18

epg.json.php

Named symbol Source
epgPlaylistId($playlist) 11
epgRedactPlaylist(&$playlist) 17
epgFilterAndRedactPlaylists(&$playlists) 27

managerPlaylists.php

Named symbol Source
getPlaylistOwnerUsersId() 13

Diagnostics and validation

  1. Check the installed/enabled version and the dependencies/settings above.
  2. Identify the actual failing page, request, callback or worker and correlate its timestamp with the AVideo log.
  3. Follow the linked method and caller. Check business-state changes and output artifacts as well as HTTP status.
  4. Reproduce the relevant workflow in a test environment. External provider, Encoder, live-server, storage, payment and authenticated flows require their real integrations.

Shared diagnostic workflow. This page is not a security audit or a claim of end-to-end validation.

Clone this wiki locally