Repository navigation
Technical Plugin PlayLists
Manages playlists/programs, series and playlist-related presentation/live behavior.
Audience: developers, advanced administrators and AI-assisted diagnosis. Plugin catalog.
- 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.
| 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.
| 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 |
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 |
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 | — |
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.
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 |
These symbols are grouped by source file; inspect the class declaration and visibility before calling them.
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 |
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 |
| Named symbol | Source |
|---|---|
secondsToDayTime($seconds) |
18 |
| Named symbol | Source |
|---|---|
epgPlaylistId($playlist) |
11 |
epgRedactPlaylist(&$playlist) |
17 |
epgFilterAndRedactPlaylists(&$playlists) |
27 |
| Named symbol | Source |
|---|---|
getPlaylistOwnerUsersId() |
13 |
- Check the installed/enabled version and the dependencies/settings above.
- Identify the actual failing page, request, callback or worker and correlate its timestamp with the AVideo log.
- Follow the linked method and caller. Check business-state changes and output artifacts as well as HTTP status.
- 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.
Start
Install and update
- Install on Ubuntu 24.04 or 26.04
- Installation Setup Page
- Scheduler cron job (required)
- Set up email
- Use HTTPS
- Own Encoder
- Docker
- Update AVideo
- Backup
- Secure file permissions
- Server command-line tools
- Hidden configuration options
Videos
- Upload a video
- Local Encoder (on your computer)
- Bulk upload by FTP
- Import a channel
- Publish on YouTube and social media
- Privacy options
- Only for logged-in users
- Resolutions by user group
- Storage options
- Move and protect video files
- Video does not play
Users
Live
- Make a live stream
- Stream with OBS
- Own live server
- One live server, many sites
- Live server install errors
- Live does not play
Plugins
Problems
Other
- Translate your site
- Write a plugin (developers)
- Technical reference (developers and advanced administrators)
Old and retired guides