Repository navigation
Technical Plugin CustomizeUser
Configures user/profile/login/account behavior and video presentation.
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:
4.1. - Source revision:
7d48f2dfc0289236718a3f9fba7c5ffecff4a37f. - Entry class file: CustomizeUser.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 |
|---|---|---|
| YPTWallet | Optional | Optional donation-to-wallet integration |
| VideoTags | Optional | Optional video tags shown on the user subscriptions tab |
Literal runtime plugin references: Layout, SecureVideosDirectory, YPTSocket, YPTWallet. These calls do not mean every referenced plugin is mandatory.
| Override | Implementation |
|---|---|
getTags() |
CustomizeUser.php:243 |
onUserSocketConnect() |
CustomizeUser.php:457 |
onUserSocketDisconnect() |
CustomizeUser.php:463 |
getUserOptions() |
CustomizeUser.php:496 |
getMyAccount($users_id) |
CustomizeUser.php:609 |
getChannelButton() |
CustomizeUser.php:632 |
getVideoManagerButton() |
CustomizeUser.php:659 |
onUserSignup($users_id) |
CustomizeUser.php:726 |
getWatchActionButton($videos_id) |
CustomizeUser.php:742 |
getHTMLMenuRight() |
CustomizeUser.php:752 |
getModeYouTube($videos_id) |
CustomizeUser.php:761 |
getEmbed($videos_id) |
CustomizeUser.php:825 |
getStart() |
CustomizeUser.php:830 |
getPluginMenu() |
CustomizeUser.php:854 |
getVideosManagerListButton() |
CustomizeUser.php:861 |
profileTabName($users_id) |
CustomizeUser.php:868 |
profileTabContent($users_id) |
CustomizeUser.php:917 |
getUsersManagerListButton() |
CustomizeUser.php:942 |
afterNewVideo($videos_id) |
CustomizeUser.php:964 |
getFooterCode(): string |
CustomizeUser.php:1058 |
getMobileInfo() |
CustomizeUser.php:1065 |
executeEveryDay() |
CustomizeUser.php:1077 |
getChannelPageButtons($users_id) |
CustomizeUser.php:1117 |
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 |
|---|---|---|---|
nonAdminCannotDownload |
false |
— | source |
nonAdminCannotDeleteVideo |
false |
— | source |
userCanAllowFilesDownload |
false |
— | source |
userCanAllowFilesShare |
false |
— | source |
userCanAllowFilesDownloadSelectPerVideo |
false |
— | source |
userCanAllowFilesShareSelectPerVideo |
false |
— | source |
blockEmbedFromSharedVideos |
true |
— | source |
userCanProtectVideosWithPassword |
Private setting; value omitted | — | source |
userCanChangeVideoOwner |
false |
— | source |
usersCanCreateNewCategories |
Computed/structured; inspect source | — | source |
userCanNotChangeCategory |
Computed/structured; inspect source | — | source |
userCanNotChangeUserGroup |
false |
— | source |
userDefaultUserGroup |
Computed/structured; inspect source | — | source |
userMustBeLoggedIn |
Computed/structured; inspect source | — | source |
userMustBeLoggedInCloseButtonURL |
"" |
— | source |
onlyVerifiedEmailCanUpload |
Computed/structured; inspect source | — | source |
sendVerificationMailAutomatic |
Computed/structured; inspect source | — | source |
verificationMailTextLine1 |
Computed/structured; inspect source | — | source |
verificationMailTextLine2 |
Computed/structured; inspect source | — | source |
verificationMailTextLine3 |
Computed/structured; inspect source | — | source |
verificationMailTextLine4 |
"All you need to do is to verify your e-mail by clicking the link below" |
— | source |
verificationMailButtonLabel |
"Verify" |
— | source |
recoverPassSubject |
"Recover Pass from" |
— | source |
recoverPassText |
Computed/structured; inspect source | — | source |
unverifiedEmailsCanNOTLogin |
Computed/structured; inspect source | — | source |
unverifiedEmailsCanNOTComment |
false |
— | source |
unverifiedEmailsCanNOTLiveStream |
true |
— | source |
newUsersCanStream |
Computed/structured; inspect source | — | source |
doNotIdentifyByName |
Computed/structured; inspect source | Do NOT identify user by Name: The identification order will be: 1. Name2. email3. Username4. Channel Name | source |
doNotIdentifyByEmail |
Computed/structured; inspect source | Do NOT identify user by Email: The identification order will be: 1. Name2. email3. Username4. Channel Name | source |
doNotIdentifyByUserName |
Computed/structured; inspect source | Do NOT identify user by Username: The identification order will be: 1. Name2. email3. Username4. Channel Name | source |
hideRemoveChannelFromModeYoutube |
Computed/structured; inspect source | — | source |
showChannelBannerOnModeYoutube |
Computed/structured; inspect source | — | source |
showChannelLiveTab |
true |
— | source |
showChannelHomeTab |
true |
— | source |
showChannelVideosTab |
true |
— | source |
showChannelFeed |
true |
— | source |
showArticlesTab |
true |
— | source |
showAudioTab |
true |
— | source |
showImageTab |
true |
— | source |
showChannelProgramsTab |
true |
— | source |
showBigVideoOnChannelVideosTab |
true |
— | source |
encryptPasswordsWithSalt |
Private setting; value omitted | — | source |
requestCaptchaAfterLoginsAttempts |
Computed/structured; inspect source | — | source |
disableSignOutButton |
false |
— | source |
disableNativeSignUp |
Computed/structured; inspect source | — | source |
disableCompanySignUp |
true |
Disable Company SignUp: Company SignUp will enable a form with sone extra fields specific for companies | source |
disableNativeSignIn |
Computed/structured; inspect source | — | source |
disablePersonalInfo |
Computed/structured; inspect source | — | source |
loginBackgroundAnimation |
Computed/structured; inspect source | — | source |
userCanChangeUsername |
true |
— | source |
signInOnRight |
false |
— | source |
doNotShowRightProfile |
false |
— | source |
doNotShowLeftProfile |
false |
— | source |
forceLoginToBeTheEmail |
false |
— | source |
emailMustBeUnique |
false |
— | source |
messageReplaceWelcomeBackLoginBox |
Computed/structured; inspect source | — | source |
messageToAppearBelowLoginBox |
Computed/structured; inspect source | — | source |
messageToAppearAboveSignUpBox |
Computed/structured; inspect source | — | source |
keepViewerOnChannel |
false |
— | source |
showLeaveChannelButton |
false |
— | source |
addChannelNameOnLinks |
true |
— | source |
doNotShowTopBannerOnChannel |
false |
— | source |
doNotShowMyChannelNameOnBasicInfo |
false |
— | source |
doNotShowMyAnalyticsCodeOnBasicInfo |
false |
— | source |
doNotShowMyAboutOnBasicInfo |
false |
— | source |
MyChannelLabel |
"My Channel" |
— | source |
showAllAboutTextOnChannel |
false |
Show All About Text On Channel: Instead of show the [Show more] button, it will show the whole text | source |
afterLoginGoToMyChannel |
false |
— | source |
afterLoginGoToURL |
"" |
— | source |
afterLogoffGoToMyChannel |
false |
— | source |
afterLogoffGoToURL |
"" |
— | source |
afterSignUpGoToURL |
"" |
— | source |
signupWelcomeAlert |
"You are welcome and an even bigger thank you for registering" |
— | source |
allowDonationLink |
false |
— | source |
donationLinkWhoCanUse |
everyone (everyone = All Users, usergroup = Selected user groups) |
Who can use the Donation Link. CustomizeUser::canUseDonationLink($users_id) checks the link owner: allowDonationLink must be on; with usergroup the owner must be an admin or have permission PERMISSION_CAN_USE_DONATION_LINK (0). Used by the My Account field, objects/userUpdate.json.php (a disallowed user keeps the stored link unchanged), the video action button and User::getDonationLinkIfEnabled() (Chat2). |
— |
donationButtonLabel |
Computed/structured; inspect source | — | source |
allowWalletDirectTransferDonation |
false |
— | source |
UsersCanCustomizeWalletDirectTransferDonation |
false |
— | source |
donationWalletButtonLabel |
Computed/structured; inspect source | — | source |
defaultDonationMessage |
Computed/structured; inspect source | Default Donation Message: This message will be shown as the default donation message. | source |
disableCaptchaOnWalletDirectTransferDonation |
false |
— | source |
showEmailVerifiedMark |
true |
— | source |
Checkmark1Enabled |
true |
— | source |
Checkmark1HTML |
Computed/structured; inspect source | — | source |
Checkmark2Enabled |
true |
— | source |
Checkmark2HTML |
Computed/structured; inspect source | — | source |
Checkmark3Enabled |
true |
— | source |
Checkmark3HTML |
Computed/structured; inspect source | — | source |
autoSaveUsersOnCategorySelectedGroups |
false |
Auto save new videos on category selected User Groups: Edit this plugin to select the user groups per category | source |
enableExtraInfo |
false |
Enable user extra info: You can add custom fields on user´s profile, Edit this plugin to tell what fields should be saved | source |
videosSearchAlsoSearchesOnChannelName |
false |
Videos search also searches on ChannelName: With this checked when you searc a video we will also return the results that matches with the channel name | source |
doNotShowPhoneMyAccount |
true |
— | source |
doNotShowPhoneOnSignup |
true |
— | source |
enableAffiliation |
false |
Enable user affiliation: Users that are marked as company can select other users to be afiliated to him | source |
enableChannelCalls |
true |
Enable Meeting Calls from channels: This feature requires the meet plugin enabled | source |
onSignUpSubscribeToChannelsIds |
Computed/structured; inspect source | On Sign Up Subscribe To Channels Ids: This field is an json array with ids of users that will be auto-subscribed | source |
autoDeleteUnverifiedUsersAfterDays |
Computed/structured; inspect source | — | source |
enableResolutionsByUserGroup |
false |
Enable Resolutions by User Group: Allow admins to restrict available video resolutions per user group | source |
hideVideoGroupTags |
false |
Hide Video Group Tags: When enabled, the user group tags (group icons) will not appear on videos in the frontend | 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 |
|---|---|---|
| CustomizeUser.php | plugin entry class | video_password |
| Objects/Categories_has_users_groups.php | class/helper implementation | — |
| Objects/Users_affiliations.php | class/helper implementation | — |
| Objects/Users_extra_info.php | class/helper implementation | — |
| View/Categories_has_users_groups/add.json.php | JSON entry point; inspect caller and guard |
categories_id, id, status, users_groups_id
|
| View/Categories_has_users_groups/delete.json.php | JSON entry point; inspect caller and guard | id |
| View/Categories_has_users_groups/index.php | PHP page/include/worker; inspect caller | — |
| View/Categories_has_users_groups/index_body.php | PHP page/include/worker; inspect caller | — |
| View/Categories_has_users_groups/index_head.php | PHP page/include/worker; inspect caller | — |
| View/Categories_has_users_groups/list.json.php | JSON entry point; inspect caller and guard | — |
| View/Users_affiliations/add.json.php | JSON entry point; inspect caller and guard |
affiliate_agree_date, company_agree_date, id, status, users_id_affiliate, users_id_company
|
| View/Users_affiliations/confirm.json.php | JSON entry point; inspect caller and guard |
confirm, id
|
| View/Users_affiliations/delete.json.php | JSON entry point; inspect caller and guard | id |
| View/Users_affiliations/index.php | PHP page/include/worker; inspect caller | — |
| View/Users_affiliations/index_body.php | PHP page/include/worker; inspect caller | — |
| View/Users_affiliations/index_head.php | PHP page/include/worker; inspect caller | — |
| View/Users_affiliations/list.json.php | JSON entry point; inspect caller and guard | draw |
| View/Users_extra_info/add.json.php | JSON entry point; inspect caller and guard |
field_default_value, field_name, field_options, field_type, id, order, parameters, status
|
| View/Users_extra_info/delete.json.php | JSON entry point; inspect caller and guard | id |
| View/Users_extra_info/index.php | PHP page/include/worker; inspect caller | — |
| View/Users_extra_info/index_body.php | PHP page/include/worker; inspect caller | — |
| View/Users_extra_info/index_head.php | PHP page/include/worker; inspect caller | — |
| View/Users_extra_info/list.json.php | JSON entry point; inspect caller and guard | — |
| View/Users_extra_info/save.json.php | JSON entry point; inspect caller and guard | usersExtraInfo |
| View/channelCall.php | PHP page/include/worker; inspect caller | — |
| View/editor.php | PHP page/include/worker; inspect caller | — |
| View/extraInfo.php | PHP page/include/worker; inspect caller | users_id |
| View/footer.php | PHP page/include/worker; inspect caller | — |
| View/saveDonationButtons.json.php | JSON entry point; inspect caller and guard | donationButtonsList |
| View/tabAffiliation.php | PHP page/include/worker; inspect caller | — |
| View/tabDonation.php | PHP page/include/worker; inspect caller | — |
| View/tabExtraInfo.php | PHP page/include/worker; inspect caller | — |
| View/tabSubscriptions.php | PHP page/include/worker; inspect caller | — |
| actionButton.php | PHP page/include/worker; inspect caller | live_transmitions_history_id |
| channelMenuRight.php | PHP page/include/worker; inspect caller | channelName |
| confirmDeleteUser.json.php | JSON entry point; inspect caller and guard |
captcha, users_id
|
| confirmDeleteUser.php | PHP page/include/worker; inspect caller | users_id |
| confirmVideoPassword.php | PHP page/include/worker; inspect caller | video_password |
| customizeUser.json.php | JSON entry point; inspect caller and guard | — |
| donate.json.php | JSON entry point; inspect caller and guard |
buttonIndex, captcha, live_transmitions_history_id, message, users_id, value, videos_id
|
| getMyAccount.php | PHP page/include/worker; inspect caller | — |
| getMyAccount.save.json.php | JSON entry point; inspect caller and guard |
platform, url, val
|
| getSource.php | PHP page/include/worker; inspect caller | videos_id |
| install/updateV4.1.sql | schema/migration SQL | — |
| onUserSocketConnect.js | browser/worker JavaScript; verify loader | — |
| onUserSocketDisconnect.js | browser/worker JavaScript; verify loader | — |
| pluginMenu.php | PHP page/include/worker; inspect caller | — |
| set.json.php | JSON entry point; inspect caller and guard |
type, value
|
| setPassword.json.php | JSON entry point; inspect caller and guard |
ProfilePassword, users_id
|
| setPassword.php | PHP page/include/worker; inspect caller | users_id |
| setSubscribers.json.php | JSON entry point; inspect caller and guard |
ExtraSubscribers, users_id
|
| setSubscribers.php | PHP page/include/worker; inspect caller | users_id |
| swapUser.json.php | JSON entry point; inspect caller and guard | users_id |
| switchUserCanAllowFilesDownload.php | PHP page/include/worker; inspect caller | — |
| switchUserCanAllowFilesShare.php | PHP page/include/worker; inspect caller | — |
| videosManagerListButton.php | PHP page/include/worker; inspect caller | — |
No CREATE TABLE names were extracted from available plugin SQL. The plugin can still use core tables, PHP-created schema or another component's data. 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() |
16 |
_getSocialMedia() |
23 |
getSocialMedia() |
232 |
getTags() |
243 |
getDescription() |
251 |
getName() |
257 |
getUUID() |
262 |
getPluginVersion() |
267 |
getEmptyDataObject() |
272 |
onUserSocketConnect() |
457 |
onUserSocketDisconnect() |
463 |
getCallerButton($users_id, $class = '') |
469 |
isChannelCallEnabled() |
478 |
autoIncludeBGAnimationFile() |
488 |
getUserOptions() |
496 |
getBGAnimationArray() |
513 |
canDownloadVideosFromUser($users_id) |
526 |
canDownloadVideos() |
550 |
setCanDownloadVideosFromUser($users_id, $value = true) |
560 |
canShareVideosFromUser($users_id) |
570 |
setCanShareVideosFromUser($users_id, $value = true) |
587 |
getSwitchUserCanAllowFilesDownload($users_id) |
597 |
getSwitchUserCanAllowFilesShare($users_id) |
603 |
getMyAccount($users_id) |
609 |
getChannelButton() |
632 |
getVideoManagerButton() |
659 |
canDownloadVideosFromVideo($videos_id) |
666 |
canShareVideosFromVideo($videos_id) |
704 |
onUserSignup($users_id) |
726 |
getWatchActionButton($videos_id) |
742 |
getHTMLMenuRight() |
752 |
getModeYouTube($videos_id) |
761 |
videoPasswordIsGood($videos_id) |
805 |
getEmbed($videos_id) |
825 |
getStart() |
830 |
getPluginMenu() |
854 |
getVideosManagerListButton() |
861 |
profileTabName($users_id) |
868 |
showExtraInfo() |
896 |
profileTabContent($users_id) |
917 |
getUsersManagerListButton() |
942 |
afterNewVideo($videos_id) |
964 |
getAffiliateCompanies($users_id_affiliate, $activeOnly = true) |
987 |
getCompanyAffiliates($users_id_company, $activeOnly = true) |
996 |
getAffiliationNotifications() |
1018 |
getFooterCode(): string |
1058 |
getMobileInfo() |
1065 |
executeEveryDay() |
1077 |
deleteOldUsers($days) |
1085 |
getChannelPageButtons($users_id) |
1117 |
These symbols are grouped by source file; inspect the class declaration and visibility before calling them.
Declared classes: Categories_has_users_groups.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
12 |
getTableName() |
17 |
getAllCategories() |
22 |
getAllUsers_groups() |
42 |
setId($id) |
64 |
setCategories_id($categories_id) |
69 |
setUsers_groups_id($users_groups_id) |
74 |
setStatus($status) |
79 |
getId() |
85 |
getCategories_id() |
90 |
getUsers_groups_id() |
95 |
getStatus() |
100 |
getAll() |
106 |
getAllFromCategory($categories_id) |
132 |
getUserGroupsIdsFromCategory($categories_id) |
162 |
deleteAllFromCategory($categories_id) |
188 |
saveUsergroup($categories_id, $users_groups_id) |
204 |
Declared classes: Users_affiliations.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
9 |
getTableName() |
13 |
getAllUsers($companyOnly = false) |
17 |
setId($id) |
27 |
setUsers_id_company($users_id_company) |
31 |
setUsers_id_affiliate($users_id_affiliate) |
35 |
setStatus($status) |
39 |
setCompany_agree_date($company_agree_date) |
43 |
setAffiliate_agree_date($affiliate_agree_date) |
47 |
getId() |
51 |
getUsers_id_company() |
55 |
getUsers_id_affiliate() |
59 |
getStatus() |
63 |
getCompany_agree_date() |
67 |
getAffiliate_agree_date() |
71 |
getAll($users_id_company = 0, $users_id_affiliate = 0, $activeOnly = false) |
75 |
getTotal($users_id_company = 0, $users_id_affiliate = 0, $activeOnly = false) |
120 |
save() |
144 |
deleteFromID($id) |
217 |
canEditAffiliation($Users_affiliations_id) |
231 |
isUserAffiliateOrCompanyToEachOther($users_id1, $users_id2) |
257 |
Declared classes: Users_extra_info.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
32 |
getTableName() |
36 |
setId($id) |
40 |
setField_name($field_name) |
44 |
setField_type($field_type) |
49 |
setField_options($field_options) |
53 |
setField_default_value($field_default_value) |
57 |
setParameters($parameters) |
62 |
setStatus($status) |
66 |
getId() |
70 |
getField_name() |
74 |
getField_type() |
78 |
getField_options() |
82 |
getField_default_value() |
86 |
getParameters() |
90 |
getStatus() |
94 |
getOrder() |
98 |
setOrder($order) |
102 |
getTypesOptionArray() |
106 |
typeToHTML($row, $class1 = ''<string>'') |
110 |
getActiveStatusList($includeCompany = false): array |
160 |
isRequiredField($status): bool |
175 |
isAllUserField($status): bool |
183 |
isCompanyOnlyField($status): bool |
193 |
getAllActive($users_id = 0, $includeCompany = false) |
201 |
getFromUser($users_id) |
238 |
getAll() |
243 |
- 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