Repository navigation
Technical Plugin VideoTags
Manages video tags and related metadata/search interfaces.
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: VideoTags.php.
Confirm the installed plugin version independently of the Streamer version. Configuration defaults below are not a dump of this installation's saved settings.
No literal dependency declaration was extracted. This does not prove the plugin is standalone.
| Override | Implementation |
|---|---|
getTags() |
VideoTags.php:19 |
getPluginMenu() |
VideoTags.php:475 |
getManagerVideosAddNew() |
VideoTags.php:481 |
getManagerVideosReset() |
VideoTags.php:485 |
getManagerVideosEdit() |
VideoTags.php:489 |
getManagerVideosEditField($type = '<string>') |
VideoTags.php:503 |
getManagerVideosJavaScripts() |
VideoTags.php:509 |
saveVideosAddNew($post, $videos_id) |
VideoTags.php:516 |
getAllVideosArray($videos_id) |
VideoTags.php:523 |
updateScript() |
VideoTags.php:534 |
getHeadCode(): string |
VideoTags.php:546 |
getFooterCode() |
VideoTags.php:550 |
getMobileInfo() |
VideoTags.php:568 |
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 |
|---|---|---|---|
onlyAdminCanCreateTags |
false |
— | source |
maxTags |
100 |
— | source |
maxChars |
100 |
— | source |
disableTagsSubscriptions |
false |
— | source |
showTagsOnEmbed |
true |
— | source |
showTagsLabels |
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/Tags.php | class/helper implementation | — |
| Objects/TagsHasVideos.php | class/helper implementation | — |
| Objects/TagsTypes.php | class/helper implementation | — |
| Objects/Tags_subscriptions.php | class/helper implementation | — |
| VideoTags.php | plugin entry class |
current, rowCount
|
| View/Tags_subscriptions/add.json.php | JSON entry point; inspect caller and guard |
id, tags_id, users_id
|
| View/Tags_subscriptions/delete.json.php | JSON entry point; inspect caller and guard | id |
| View/Tags_subscriptions/index.php | PHP page/include/worker; inspect caller | — |
| View/Tags_subscriptions/index_body.php | PHP page/include/worker; inspect caller | — |
| View/Tags_subscriptions/index_head.php | PHP page/include/worker; inspect caller | — |
| View/Tags_subscriptions/list.json.php | JSON entry point; inspect caller and guard | draw |
| View/editor.php | PHP page/include/worker; inspect caller | — |
| View/list.php | PHP page/include/worker; inspect caller | — |
| View/script.js | browser/worker JavaScript; verify loader | — |
| addTagTypes.php | PHP page/include/worker; inspect caller |
campId, name
|
| bootstrap-tagsinput/bootstrap-tagsinput-angular.js | browser/worker JavaScript; verify loader | — |
| bootstrap-tagsinput/bootstrap-tagsinput.js | browser/worker JavaScript; verify loader | — |
| bootstrap-tagsinput/typeahead.bundle.js | browser/worker JavaScript; verify loader | — |
| deleteTagTypes.json.php | JSON entry point; inspect caller and guard | id |
| index.php | PHP page/include/worker; inspect caller | — |
| index_body.php | PHP page/include/worker; inspect caller | — |
| install/install.sql | schema/migration SQL | — |
| install/update.sql | schema/migration SQL | — |
| install/updateV3.0.sql | schema/migration SQL | — |
| subscribe.json.php | JSON entry point; inspect caller and guard |
add, encryptedIdAndUser, notify
|
| tagTypes.json.php | JSON entry point; inspect caller and guard | — |
| tags.json.php | JSON entry point; inspect caller and guard | tags_types_id |
Tables named in available CREATE TABLE statements: tags, tags_has_videos, tags_subscriptions, tags_types.
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 |
|---|---|
getTags() |
19 |
getDescription() |
25 |
getName() |
31 |
getUUID() |
35 |
getEmptyDataObject() |
39 |
saveTags($tagsNameList, $videos_id) |
50 |
getTagFromName($name, $tags_types_id) |
84 |
removeAllTagFromVideo($videos_id) |
91 |
add($name, $tags_types_id, $videos_id) |
96 |
getOrCreateTagFromName($name, $tags_types_id) |
105 |
getAll($users_id = 0) |
118 |
getAllFromVideosId($videos_id) |
122 |
getArrayFromVideosId($videos_id, $tags_id = 0) |
126 |
getAllVideosIdFromTagsId($tags_id, $limit = 100, $status = Video::SORT_TYPE_VIEWABLE) |
141 |
getTotalVideosFromTagsId($tags_id, $status = Video::SORT_TYPE_VIEWABLE) |
145 |
getVideoIndexFromTagsId($tags_id, $videos_id) |
149 |
getAllVideosFromTagsId($tags_id, $limit = 100) |
161 |
getTagsInputs($colSize = 3, $videos_id=0) |
165 |
getTagsInputsJquery() |
178 |
getTagsInputsJqueryRemoveAll() |
187 |
getTagsInput($tagTypesId, $videos_id=0) |
196 |
canCreateTag() |
258 |
isUserSubscribed($users_id, $tags_id) |
267 |
getButton($tags_id, $videos_id = 0, $btnClass = '<string>', $btnClassPrimary = '<string>', $btnClassSuccess = '<string>', $btnClassDefault = '<string>') |
288 |
getTagLink($tags_id) |
377 |
getTagHTMLLink($tags_id, $total_videos = 0) |
390 |
getAllSubscribersFromVideosId($videos_id) |
415 |
getLabels($videos_id, $showType = true, $showSubscription = true) |
427 |
getPluginMenu() |
475 |
getManagerVideosAddNew() |
481 |
getManagerVideosReset() |
485 |
getManagerVideosEdit() |
489 |
getManagerVideosEditField($type = '<string>') |
503 |
getManagerVideosJavaScripts() |
509 |
saveVideosAddNew($post, $videos_id) |
516 |
getAllVideosArray($videos_id) |
523 |
getPluginVersion() |
530 |
updateScript() |
534 |
getHeadCode(): string |
546 |
getFooterCode() |
550 |
getMobileInfo() |
568 |
These symbols are grouped by source file; inspect the class declaration and visibility before calling them.
Declared classes: Tags.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
12 |
getTableName() |
16 |
loadFromName($name, $tags_types_id) |
20 |
getFromName($name, $tags_types_id) |
31 |
getId() |
45 |
getName() |
49 |
setId($id) |
53 |
setName($name) |
57 |
getTags_types_id() |
62 |
setTags_types_id($tags_types_id) |
66 |
save() |
70 |
delete() |
77 |
_addVideo($videos_id) |
84 |
addVideo($tags_id, $videos_id) |
94 |
getAllFromVideosId($videos_id) |
99 |
getObjectFromVideosId($videos_id) |
118 |
getAllTags($tags_types_id) |
132 |
getAllTagsWithTotalVideos($tags_types_id) |
145 |
getAllTagsList($tags_types_id) |
164 |
getAllWithSubscriptionRow($users_id) |
174 |
Declared classes: TagsHasVideos.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
11 |
getTableName() |
15 |
getTags_id() |
19 |
getVideos_id() |
23 |
setTags_id($tags_id) |
27 |
setVideos_id($videos_id) |
34 |
save() |
41 |
delete() |
48 |
clearRequestCache($videos_id = 0, $tags_id = 0) |
55 |
loadFromTagsIdAndVideosId($tags_id, $videos_id) |
83 |
getFromTagsIdAndVideosId($tags_id, $videos_id) |
94 |
getAllFromVideosId($videos_id) |
112 |
getTotalVideosFromTagsId($tags_id, $status = Video::SORT_TYPE_VIEWABLE) |
140 |
getAllVideosFromTagsId($tags_id, $limit = 100, $status = Video::SORT_TYPE_VIEWABLE) |
172 |
getAllVideosIdFromTagsId($tags_id, $limit = 100, $status = Video::SORT_TYPE_VIEWABLE) |
200 |
getAllFromVideosIdAndTagsTypesId($videos_id, $tags_types_id) |
210 |
removeAllTagsFromVideo($videos_id) |
231 |
getAllWithVideo($limit=100) |
249 |
Declared classes: TagsTypes.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
12 |
getTableName() |
16 |
getName() |
20 |
getParameters_json() |
24 |
setName($name) |
28 |
setParameters_json($parameters_json) |
32 |
getFromName($name) |
36 |
Declared classes: Tags_subscriptions.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
9 |
getTableName() |
13 |
setId($id) |
17 |
setTags_id($tags_id) |
21 |
setUsers_id($users_id) |
25 |
getId() |
29 |
getTags_id() |
33 |
getUsers_id() |
37 |
getNotify() |
41 |
setNotify($notify): void |
49 |
getTotalFromTag($tags_id) |
57 |
getFromTagAndUser($tags_id, $users_id) |
71 |
getAllFromUsers_id($users_id) |
87 |
getAllTagsIdsFromUsers_id($users_id) |
97 |
getAllFromTags_id($tags_id) |
108 |
subscribe($tags_id, $users_id, $notify = 0) |
118 |
unsubscribe($tags_id, $users_id) |
132 |
- 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