Skip to content

Technical Plugin CustomizeUser

Daniel Neto edited this page Oct 30, 2026 · 2 revisions

Technical: CustomizeUser plugin

Configures user/profile/login/account behavior and video presentation.

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: 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.

Dependencies

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.

Hook integration

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

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
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

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
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 —

Data and migrations

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.

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() 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

Supporting PHP declarations

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

Objects/Categories_has_users_groups.php

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

Objects/Users_affiliations.php

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

Objects/Users_extra_info.php

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

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