diff --git a/plugin/CustomizeUser/CustomizeUser.php b/plugin/CustomizeUser/CustomizeUser.php index 9df3b45e0..164bb1ce0 100644 --- a/plugin/CustomizeUser/CustomizeUser.php +++ b/plugin/CustomizeUser/CustomizeUser.php @@ -1,515 +1,516 @@ nonAdminCannotDownload = false; $obj->userCanAllowFilesDownload = false; $obj->userCanAllowFilesShare = false; $obj->userCanAllowFilesDownloadSelectPerVideo = false; $obj->userCanAllowFilesShareSelectPerVideo = false; $obj->blockEmbedFromSharedVideos = true; $obj->userCanProtectVideosWithPassword = true; $obj->userCanChangeVideoOwner = false; $obj->usersCanCreateNewCategories = !isset($advancedCustom->usersCanCreateNewCategories) ? false : $advancedCustom->usersCanCreateNewCategories; $obj->userCanNotChangeCategory = !isset($advancedCustom->userCanNotChangeCategory) ? false : $advancedCustom->userCanNotChangeCategory; $obj->userCanNotChangeUserGroup = false; $o = new stdClass(); $o->type = array(0 => __("Default")) + UserGroups::getAllUsersGroupsArray(); $o->value = 0; $obj->userDefaultUserGroup = $o; $obj->userMustBeLoggedIn = !isset($advancedCustom->userMustBeLoggedIn) ? false : $advancedCustom->userMustBeLoggedIn; $obj->userMustBeLoggedInCloseButtonURL = ""; $obj->onlyVerifiedEmailCanUpload = !isset($advancedCustom->onlyVerifiedEmailCanUpload) ? false : $advancedCustom->onlyVerifiedEmailCanUpload; $obj->sendVerificationMailAutomaic = !isset($advancedCustom->sendVerificationMailAutomaic) ? false : $advancedCustom->sendVerificationMailAutomaic; $o = new stdClass(); $o->type = "textarea"; $o->value = "Just a quick note to say a big welcome and an even bigger thank you for registering"; $obj->verificationMailTextLine1 = "Just a quick note to say a big welcome and an even bigger thank you for registering"; $obj->verificationMailTextLine2 = "Cheers, %s Team."; $obj->verificationMailTextLine3 = "You are just one click away from starting your journey with %s!"; $obj->verificationMailTextLine4 = "All you need to do is to verify your e-mail by clicking the link below"; $obj->unverifiedEmailsCanNOTLogin = !isset($advancedCustom->unverifiedEmailsCanNOTLogin) ? false : $advancedCustom->unverifiedEmailsCanNOTLogin; $obj->unverifiedEmailsCanNOTComment = false; $obj->newUsersCanStream = !isset($advancedCustom->newUsersCanStream) ? false : $advancedCustom->newUsersCanStream; $obj->doNotIndentifyByEmail = !isset($advancedCustom->doNotIndentifyByEmail) ? false : $advancedCustom->doNotIndentifyByEmail; $obj->doNotIndentifyByName = !isset($advancedCustom->doNotIndentifyByName) ? false : $advancedCustom->doNotIndentifyByName; $obj->doNotIndentifyByUserName = !isset($advancedCustom->doNotIndentifyByUserName) ? false : $advancedCustom->doNotIndentifyByUserName; $obj->hideRemoveChannelFromModeYoutube = !isset($advancedCustom->hideRemoveChannelFromModeYoutube) ? false : $advancedCustom->hideRemoveChannelFromModeYoutube; $obj->showChannelBannerOnModeYoutube = !isset($advancedCustom->showChannelBannerOnModeYoutube) ? false : $advancedCustom->showChannelBannerOnModeYoutube; $obj->showChannelHomeTab = true; $obj->showChannelVideosTab = true; $obj->showChannelProgramsTab = true; $obj->showBigVideoOnChannelVideosTab = true; $obj->encryptPasswordsWithSalt = !isset($advancedCustom->encryptPasswordsWithSalt) ? false : $advancedCustom->encryptPasswordsWithSalt; $obj->requestCaptchaAfterLoginsAttempts = !isset($advancedCustom->requestCaptchaAfterLoginsAttempts) ? 0 : $advancedCustom->requestCaptchaAfterLoginsAttempts; $obj->disableSignOutButton = false; $obj->disableNativeSignUp = !isset($advancedCustom->disableNativeSignUp) ? false : $advancedCustom->disableNativeSignUp; $obj->disableNativeSignIn = !isset($advancedCustom->disableNativeSignIn) ? false : $advancedCustom->disableNativeSignIn; $obj->disablePersonalInfo = !isset($advancedCustom->disablePersonalInfo) ? true : $advancedCustom->disablePersonalInfo; $o = new stdClass(); $o->type = array(0 => '-- ' . __("None"), 1 => '-- ' . __("Random")) + self::getBGAnimationArray(); $o->value = 1; $obj->loginBackgroundAnimation = $o; $obj->userCanChangeUsername = true; $obj->signInOnRight = false; $obj->doNotShowRightProfile = false; $obj->doNotShowLeftProfile = false; $obj->forceLoginToBeTheEmail = false; $obj->emailMustBeUnique = false; // added on 2019-02-11 $o = new stdClass(); $o->type = "textarea"; $o->value = ""; $obj->messageToAppearBelowLoginBox = $o; $o = new stdClass(); $o->type = "textarea"; $o->value = ""; $obj->messageToAppearAboveSignUpBox = $o; $obj->keepViewerOnChannel = false; $obj->showLeaveChannelButton = false; $obj->addChannelNameOnLinks = true; $obj->doNotShowTopBannerOnChannel = false; $obj->doNotShowMyChannelNameOnBasicInfo = false; $obj->doNotShowMyAnalyticsCodeOnBasicInfo = false; $obj->doNotShowMyAboutOnBasicInfo = false; $obj->MyChannelLabel = "My Channel"; $obj->afterLoginGoToMyChannel = false; $obj->afterLoginGoToURL = ""; $obj->afterLogoffGoToMyChannel = false; $obj->afterLogoffGoToURL = ""; $obj->allowDonationLink = false; $obj->donationButtonLabel = __('Donation'); $obj->allowWalletDirectTransferDonation = false; $obj->donationWalletButtonLabel = __('Donatate from your wallet'); $obj->disableCaptchaOnWalletDirectTransferDonation = false; $obj->showEmailVerifiedMark = true; $obj->Checkmark1Enabled = true; $obj->Checkmark1HTML = ''; $obj->Checkmark2Enabled = true; $obj->Checkmark2HTML = ''; $obj->Checkmark3Enabled = true; $obj->Checkmark3HTML = ''; $obj->autoSaveUsersOnCategorySelectedGroups = false; self::addDataObjectHelper('autoSaveUsersOnCategorySelectedGroups', 'Auto save new videos on category selected User Groups', 'Edit this plugin to select the user groups per category'); $obj->enableExtraInfo = false; self::addDataObjectHelper('enableExtraInfo', 'Enable user extra info', 'You can add custom fields on userĀ“s profile, Edit this plugin to tell what fields should be saved'); $obj->videosSearchAlsoSearchesOnChannelName = false; self::addDataObjectHelper('videosSearchAlsoSearchesOnChannelName', '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'); return $obj; } static function autoIncludeBGAnimationFile() {$baseName = basename($_SERVER["SCRIPT_FILENAME"]); $obj = AVideoPlugin::getObjectData('CustomizeUser'); Layout::includeBGAnimationFile($obj->loginBackgroundAnimation->value); //Layout::includeBGAnimationFile('Animated3'); } public function getUserOptions() { $obj = $this->getDataObject(); $userOptions = array(); if ($obj->Checkmark1Enabled) { $userOptions["Checkmark 1"] = "checkmark1"; } if ($obj->Checkmark2Enabled) { $userOptions["Checkmark 2"] = "checkmark2"; } if ($obj->Checkmark3Enabled) { $userOptions["Checkmark 3"] = "checkmark3"; } return $userOptions; } static function getBGAnimationArray() { if(!class_exists('Layout')){ $avideoLayout = AVideoPlugin::getObjectData('Layout'); } $files = Layout::getBGAnimationFiles(); $response = array(); foreach ($files as $key => $value) { $response[$value['name']] = ucfirst($value['name']); } return $response; } static function canDownloadVideosFromUser($users_id) { global $config; $obj = AVideoPlugin::getObjectDataIfEnabled("CustomizeUser"); if (!empty($obj->nonAdminCannotDownload) && !User::isAdmin()) { return false; } if (empty($obj) || empty($obj->userCanAllowFilesDownload)) { return self::canDownloadVideos(); } $user = new User($users_id); return !empty($user->getExternalOption('userCanAllowFilesDownload')); } static function canDownloadVideos() { global $config; $obj = AVideoPlugin::getObjectDataIfEnabled("CustomizeUser"); if (!empty($obj->nonAdminCannotDownload) && !User::isAdmin()) { return false; } return !empty($config->getAllow_download()); } static function setCanDownloadVideosFromUser($users_id, $value = true) { $obj = AVideoPlugin::getObjectDataIfEnabled("CustomizeUser"); if (empty($obj) || empty($obj->userCanAllowFilesDownload)) { return false; } $user = new User($users_id); return $user->addExternalOptions('userCanAllowFilesDownload', $value); } static function canShareVideosFromUser($users_id) { global $advancedCustom; if (!empty($advancedCustom->disableShareOnly)) { _error_log("CustomizeUser::canShareVideosFromUser disableShareOnly"); return false; } if (!empty($advancedCustom->disableShareAndPlaylist)) { _error_log("CustomizeUser::canShareVideosFromUser disableShareAndPlaylist"); return false; } $obj = AVideoPlugin::getObjectDataIfEnabled("CustomizeUser"); if (empty($obj) || empty($obj->userCanAllowFilesShare)) { return true; } $user = new User($users_id); return !empty($user->getExternalOption('userCanAllowFilesShare')); } static function setCanShareVideosFromUser($users_id, $value = true) { $obj = AVideoPlugin::getObjectDataIfEnabled("CustomizeUser"); if (empty($obj) || empty($obj->userCanAllowFilesShare)) { return false; } $user = new User($users_id); return $user->addExternalOptions('userCanAllowFilesShare', $value); } static function getSwitchUserCanAllowFilesDownload($users_id) { global $global; include $global['systemRootPath'] . 'plugin/CustomizeUser/switchUserCanAllowFilesDownload.php'; } static function getSwitchUserCanAllowFilesShare($users_id) { global $global; include $global['systemRootPath'] . 'plugin/CustomizeUser/switchUserCanAllowFilesShare.php'; } public function getMyAccount($users_id) { $objcu = AVideoPlugin::getObjectDataIfEnabled("CustomizeUser"); if (!empty($objcu) && !empty($objcu->userCanAllowFilesDownload)) { echo '
'; self::getSwitchUserCanAllowFilesDownload($users_id); echo '
'; } if (!empty($objcu) && !empty($objcu->userCanAllowFilesShare)) { echo '
'; self::getSwitchUserCanAllowFilesShare($users_id); echo '
'; } } public function getChannelButton() { global $global, $isMyChannel; if (!$isMyChannel) { return ""; } $objcu = AVideoPlugin::getObjectDataIfEnabled("CustomizeUser"); echo "
"; if (!empty($objcu) && !empty($objcu->userCanAllowFilesDownload)) { echo '
'; echo '
'; self::getSwitchUserCanAllowFilesDownload(User::getId()); echo '
'; } if (!empty($objcu) && !empty($objcu->userCanAllowFilesShare)) { echo '
'; echo '
'; self::getSwitchUserCanAllowFilesShare(User::getId()); echo '
'; } echo "
"; } public function getVideoManagerButton() { global $isMyChannel; $isMyChannel = true; return self::getChannelButton(); } static function canDownloadVideosFromVideo($videos_id) { if (!CustomizeUser::canDownloadVideos()) { return false; } $video = new Video("", "", $videos_id); if (empty($video)) { return false; } $users_id = $video->getUsers_id(); if (!self::canDownloadVideosFromUser($users_id)) { return false; } $category = new Category($video->getCategories_id()); if (is_object($category) && !$category->getAllow_download()) { return false; } $obj = AVideoPlugin::getObjectDataIfEnabled("CustomizeUser"); if (!empty($obj->userCanAllowFilesDownloadSelectPerVideo)) { if (empty($video->getCan_download())) { return false; } } return true; } static function canShareVideosFromVideo($videos_id) { $video = new Video("", "", $videos_id); if (empty($video)) { _error_log("CustomizeUser::canShareVideosFromVideo video not found"); return false; } $users_id = $video->getUsers_id(); if (!self::canShareVideosFromUser($users_id)) { _error_log("CustomizeUser::canShareVideosFromVideo canShareVideosFromUser($users_id) = false"); return false; } $obj = AVideoPlugin::getObjectDataIfEnabled("CustomizeUser"); if (!empty($obj->userCanAllowFilesShareSelectPerVideo) && !empty($obj->blockEmbedFromSharedVideos)) { if (empty($video->getCan_share())) { _error_log("CustomizeUser::canShareVideosFromVideo video->getCan_share() = false"); return false; } } return true; } public function onUserSignup($users_id) { global $global; $obj = $this->getDataObject(); if ($obj->sendVerificationMailAutomaic) { url_get_contents("{$global['webSiteRootURL']}objects/userVerifyEmail.php?users_id=$users_id"); } } public function getWatchActionButton($videos_id) { global $global, $video; if (!empty($videos_id) && empty($video)) { $video = Video::getVideo($videos_id); } $obj = $this->getDataObject(); include $global['systemRootPath'] . 'plugin/CustomizeUser/actionButton.php'; } public function getHTMLMenuRight() { global $global; $obj = $this->getDataObject(); if ($obj->keepViewerOnChannel) { include $global['systemRootPath'] . 'plugin/CustomizeUser/channelMenuRight.php'; } } public function getModeYouTube($videos_id) { global $global, $config; if (empty($videos_id)) { return false; } $cansee = User::canWatchVideoWithAds($videos_id); $obj = $this->getDataObject(); if (!$cansee) { $resp = Video::canVideoBePurchased($videos_id); if(!empty($resp) && $resp->canVideoBePurchased && isValidURL($resp->buyURL)){ header("Location: {$resp->buyURL}"); exit; }else{ forbiddenPage(__("Sorry, this video is private")); } /* if (!AVideoPlugin::isEnabled('Gallery') && !AVideoPlugin::isEnabled('YouPHPFlix2') && !AVideoPlugin::isEnabled('YouTube')) { header("Location: {$global['webSiteRootURL']}user?msg=" . urlencode(__("Sorry, this video is private"))); } else { header("Location: {$global['webSiteRootURL']}?msg=" . urlencode(__("Sorry, this video is private"))); } exit; * */ } else if ($obj->userCanProtectVideosWithPassword) { if (!$this->videoPasswordIsGood($videos_id)) { $video = Video::getVideoLight($videos_id); include "{$global['systemRootPath']}plugin/CustomizeUser/confirmVideoPassword.php"; exit; } } } public static function videoPasswordIsGood($videos_id) { $video = new Video("", "", $videos_id); $videoPassword = $video->getVideo_password(); if (empty($videoPassword)) { return true; } if (empty($_SESSION['video_password'][$videos_id]) || $videoPassword !== $_SESSION['video_password'][$videos_id]) { if (!empty($_POST['video_password']) && $_POST['video_password'] == $videoPassword) { _session_start(); $_SESSION['video_password'][$videos_id] = $_POST['video_password']; return true; } return false; } return true; } public function getEmbed($videos_id) { $this->getModeYouTube($videos_id); } public function getStart() { global $global; $obj = $this->getDataObject(); $thisScriptFile = pathinfo($_SERVER["SCRIPT_FILENAME"]); if (!isBot() && !empty($obj->userMustBeLoggedIn) && ($thisScriptFile["basename"] === 'index.php' || $thisScriptFile["basename"] === "channel.php" || $thisScriptFile["basename"] === "channels.php" || $thisScriptFile["basename"] === "trending.php") && !User::isLogged()) { + _error_log("CustomizeUser::userMustBeLoggedIn basename: {$thisScriptFile["basename"]}"); $actual_link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; header("Location: {$global['webSiteRootURL']}user?redirectUri=" . urlencode($actual_link)); exit; } } public function getPluginMenu() { global $global; return ''; } public static function profileTabName($users_id) { $p = AVideoPlugin::loadPlugin("CustomizeUser"); $obj = $p->getDataObject(); if (empty($obj->enableExtraInfo)) { return ""; } return '
  • ' . __('Extra Info') . '
  • '; } public static function profileTabContent($users_id) { global $global; $p = AVideoPlugin::loadPlugin("CustomizeUser"); $obj = $p->getDataObject(); if (empty($obj->enableExtraInfo)) { return ""; } $tabId = 'tabExtraInfo' . $p->getUUID(); include $global['systemRootPath'] . 'plugin/CustomizeUser/View/tabExtraInfo.php'; return ""; } public function getUsersManagerListButton() { global $global; $p = AVideoPlugin::loadPlugin("CustomizeUser"); $obj = $p->getDataObject(); if (empty($obj->enableExtraInfo)) { return ""; } if (User::isAdmin()) { $btn = ''; } return $btn; } public function afterNewVideo($videos_id) { $obj = $this->getDataObject(); if (!empty($obj->autoSaveUsersOnCategorySelectedGroups)) { $video = new Video("", "", $videos_id); $categories_id = $video->getCategories_id(); $rows = Categories_has_users_groups::getAllFromCategory($categories_id); $userGroups = array(); foreach ($rows as $value) { $userGroups[] = $value['users_groups_id']; } $userGroups = array_unique($userGroups); if (!empty($userGroups)) { _error_log("CustomizeUser::afterNewVideo: set user groups " . json_encode($userGroups)); $video->setVideoGroups($userGroups); return $video->save(true, true); } } return false; } }