Пример #1
0
 public static function helperUserTitle($user, $allowCustomTitle = true, $withBanner = false)
 {
     $result = parent::helperUserTitle($user, $allowCustomTitle, $withBanner);
     $options = unserialize($user["3ps_cmfu_options"]);
     if (!$options) {
         $options = ThreePointStudio_CustomMarkupForUser_Constants::$defaultOptionsArray;
         XenForo_Model::create("XenForo_Model_User")->insertDefaultCustomMarkup($user["user_id"]);
     }
     if (empty($user["user_id"]) || empty($result)) {
         $html = "{inner}";
     } else {
         $html = ThreePointStudio_CustomMarkupForUser_Helpers::getCustomMarkupHtml($options, "usertitle", $user);
     }
     $finalHTML = str_replace("{inner}", $result, $html);
     return $finalHTML;
 }
Пример #2
0
 public function rebuildCustomMarkupCache($userId, $category = null)
 {
     $user = $this->getUserById($userId);
     $options = unserialize($user["3ps_cmfu_options"]);
     /* @var $dr XenForo_Model_DataRegistry */
     $dr = self::create("XenForo_Model_DataRegistry");
     $extraClasses = ThreePointStudio_CustomMarkupForUser_TemplateHelpers::getUserExtraClasses($user);
     if ($category) {
         if (!in_array($category, ThreePointStudio_CustomMarkupForUser_Constants::$categories)) {
             throw new UnexpectedValueException("Unknown category");
         }
         $dr->set("3ps_cmfu_render_cache_" . $userId . "_" . $category, ThreePointStudio_CustomMarkupForUser_Helpers::getCustomMarkupHtml($options, $category, $user, $category == "username" ? $extraClasses : array()));
     } else {
         foreach (ThreePointStudio_CustomMarkupForUser_Constants::$categories as $category) {
             $dr->set("3ps_cmfu_render_cache_" . $userId . "_" . $category, ThreePointStudio_CustomMarkupForUser_Helpers::getCustomMarkupHtml($options, $category, $user, $category == "username" ? $extraClasses : array()));
         }
     }
 }
Пример #3
0
 public static function getBaseViewParams()
 {
     return array("borderList" => ThreePointStudio_CustomMarkupForUser_Helpers::lazyArrayShift(ThreePointStudio_CustomMarkupForUser_Constants::$borderList), "fontList" => ThreePointStudio_CustomMarkupForUser_Helpers::lazyArrayShift(ThreePointStudio_CustomMarkupForUser_Constants::$fontList));
 }
Пример #4
0
 /**
  * Template hook for Admin User Edit page (panes).
  */
 public static function adminUserEditPanes($hookName, &$contents, array $hookParams, XenForo_Template_Abstract $template)
 {
     $user = $template->getParam("user");
     $renderHTML = "";
     /* @var $presetModel ThreePointStudio_CustomMarkupForUser_Model_Preset */
     $presetModel = XenForo_Model::create("ThreePointStudio_CustomMarkupForUser_Model_Preset");
     if ($user["user_id"] == 0) {
         return;
     }
     // New user, don't show this
     $fullUserOptions = ThreePointStudio_CustomMarkupForUser_Helpers::prepareOptionsForView($user["3ps_cmfu_options"]);
     if (!array_key_exists("presets", $fullUserOptions["username"])) {
         $fullUserOptions["username"]["presets"] = array();
     } elseif (is_int($fullUserOptions["username"]["presets"])) {
         $fullUserOptions["username"]["presets"] = array($fullUserOptions["username"]["presets"]);
     }
     if (!array_key_exists("presets", $fullUserOptions["usertitle"])) {
         $fullUserOptions["usertitle"]["presets"] = array();
     } elseif (is_int($fullUserOptions["usertitle"]["presets"])) {
         $fullUserOptions["usertitle"]["presets"] = array($fullUserOptions["usertitle"]["presets"]);
     }
     $settingsTemplate = $template->create("3ps_cmfu_cmcontrol", $template->getParams());
     $presets = array();
     foreach ($presetModel->getPresetsByGroup("username") as $presetId => $preset) {
         $presets[$presetId] = array("label" => $preset["title"], "value" => $presetId, "selected" => in_array($presetId, $fullUserOptions["username"]["presets"]));
     }
     $presetsTemplate = $template->create("3ps_cmfu_options_presets_list", $template->getParams());
     $presetsTemplate->setParams(array("title" => new XenForo_Phrase("user_name"), "titleCode" => "username", "presets" => $presets));
     $presetHTML = $presetsTemplate->render();
     $settingsTemplate->setParams(array_merge(array("title" => new XenForo_Phrase("user_name"), "titleCode" => "username", "userOptions" => $fullUserOptions["username"], "currentMarkupRender" => XenForo_Template_Helper_Core::callHelper("usernamehtml", array($user, "", true)), "presetsHTML" => $presetHTML), ThreePointStudio_CustomMarkupForUser_Helpers::getBaseViewParams()));
     $renderHTML .= $settingsTemplate->render();
     // Render user title
     if (empty($user["custom_title"])) {
         // No user title
         $user["custom_title"] = "(No Custom Title Set)";
     }
     $settingsTemplate = $template->create("3ps_cmfu_cmcontrol", $template->getParams());
     $presets = array();
     foreach ($presetModel->getPresetsByGroup("usertitle") as $presetId => $preset) {
         $presets[$presetId] = array("label" => $preset["title"], "value" => $presetId, "selected" => in_array($presetId, $fullUserOptions["usertitle"]["presets"]));
     }
     $presetsTemplate = $template->create("3ps_cmfu_options_presets_list", $template->getParams());
     $presetsTemplate->setParams(array("title" => new XenForo_Phrase("3ps_cmfu_user_title"), "titleCode" => "usertitle", "presets" => $presets));
     $presetHTML = $presetsTemplate->render();
     $settingsTemplate->setParams(array_merge(array("title" => new XenForo_Phrase("3ps_cmfu_user_title"), "titleCode" => "usertitle", "userOptions" => $fullUserOptions["usertitle"], "currentMarkupRender" => XenForo_Template_Helper_Core::callHelper("usertitle", array($user, true)), "presetsHTML" => $presetHTML), ThreePointStudio_CustomMarkupForUser_Helpers::getBaseViewParams()));
     $renderHTML .= $settingsTemplate->render();
     /* Things - AdminCP */
     $contents .= "<li>" . $renderHTML . "</li>";
 }
Пример #5
0
 protected function _getPresetAddEditResponse(array $preset = null)
 {
     $user = XenForo_Visitor::getInstance()->toArray();
     if ($preset == null) {
         $preset = array("config" => array("preset" => array()), "enable_for" => ThreePointStudio_CustomMarkupForUser_Constants::$defaultOptionsArray, "user_groups" => array());
         $options = $preset["config"];
     } else {
         $preset["enable_for"] = unserialize($preset["enable_for"]);
         $preset["user_groups"] = unserialize($preset["user_groups"]);
         $options = unserialize($preset["config"]);
     }
     $viewOptions = ThreePointStudio_CustomMarkupForUser_Helpers::prepareOptionsForView($options);
     $html = str_replace("{inner}", $user["username"], ThreePointStudio_CustomMarkupForUser_Helpers::assembleCustomMarkup($options, "preset"));
     $userGroups = array();
     foreach ($this->_getUserGroupModel()->getAllUserGroupTitles() as $userGroupId => $title) {
         $userGroups[] = array('label' => $title, 'value' => $userGroupId, 'selected' => in_array($userGroupId, $preset["user_groups"]));
     }
     $viewParams = array_merge(array("userGroups" => $userGroups, "preset" => $preset, "title" => new XenForo_Phrase("3ps_cmfu_preset"), "titleCode" => "preset", "userOptions" => $viewOptions["preset"], "currentMarkupRender" => $html), ThreePointStudio_CustomMarkupForUser_Helpers::getBaseViewParams());
     return $this->responseView('ThreePointStudio_CustomMarkupForUser_ViewAdmin_Presets', '3ps_cmfu_presets_edit', $viewParams);
 }
Пример #6
0
 public function actionSave()
 {
     $response = parent::actionSave();
     $userId = $this->_input->filterSingle('user_id', XenForo_Input::UINT);
     if ($userId == 0) {
         return $response;
     }
     // Not sure why, but don't do it
     $options = $this->_input->filterSingle("3ps_cmfu_options", XenForo_Input::ARRAY_SIMPLE);
     if (empty($options)) {
         // Nothing in here, populate it with nothingness
         $options = ThreePointStudio_CustomMarkupForUser_Constants::$defaultOptionsArray;
     }
     // Pre-check cleanup
     foreach ($options as $category => $catArray) {
         foreach ($catArray as $itemName => $itemValue) {
             if (ThreePointStudio_CustomMarkupForUser_Helpers::startsWith($itemName, "enable_")) {
                 unset($options[$category][$itemName]);
                 // Ignore any placeholders
                 continue;
             }
             if ($itemName == "presets") {
                 $options[$category][$itemName] = XenForo_Input::rawFilter($itemValue, XenForo_Input::ARRAY_SIMPLE);
             } else {
                 $options[$category][$itemName] = XenForo_Input::rawFilter($itemValue, ThreePointStudio_CustomMarkupForUser_Constants::$availableMarkups[$itemName]["type"]);
             }
         }
     }
     foreach ($options as $category => $catArray) {
         foreach ($catArray as $itemName => $itemValue) {
             if ($itemName == "presets") {
                 continue;
                 // Don't process presets
             }
             $itemArray = ThreePointStudio_CustomMarkupForUser_Constants::$availableMarkups[$itemName];
             // Check if we have dependencies
             if (isset($itemArray["requires"])) {
                 foreach ($itemArray["requires"] as $requirement) {
                     if ($catArray[$requirement[0]] !== $requirement[1]) {
                         unset($options[$category][$itemName]);
                         // Dependency not match, skipping
                         continue;
                     }
                 }
             }
             if (!call_user_func($itemArray["verify"]["func"], $itemValue)) {
                 return $this->responseError(new XenForo_Phrase($itemArray["verify"]["error"]));
                 // Validation failed, ragequit
             }
         }
     }
     $dw = XenForo_DataWriter::create('XenForo_DataWriter_User');
     $dw->setExistingData($userId);
     $dw->set("3ps_cmfu_options", serialize($options));
     if (XenForo_Application::getOptions()->get("3ps_cmfu_useCache")) {
         $dw->rebuildCustomMarkupCache();
     }
     $dw->save();
     return $response;
     // No error from our end, continue executing
 }
Пример #7
0
 public function actionPreferencesSave()
 {
     $response = parent::actionPreferencesSave();
     /* @var $userModel XenForo_Model_User */
     $userModel = $this->getModelFromCache("XenForo_Model_User");
     $user = $userModel->getUserById(XenForo_Visitor::getUserId());
     $user["user_groups"] = array_merge(array((int) $user["user_group_id"]), explode(",", $user["secondary_group_ids"]));
     $options = $this->_input->filterSingle("3ps_cmfu_options", XenForo_Input::ARRAY_SIMPLE);
     /* @var $presetsModel ThreePointStudio_CustomMarkupForUser_Model_Preset */
     $presetsModel = $this->getModelFromCache("ThreePointStudio_CustomMarkupForUser_Model_Preset");
     $userPermissions = array("username" => ThreePointStudio_CustomMarkupForUser_Helpers::assembleCustomMarkupPermissionForUser("username"), "usertitle" => ThreePointStudio_CustomMarkupForUser_Helpers::assembleCustomMarkupPermissionForUser("usertitle"));
     if (empty($options)) {
         // Nothing in here, populate it with nothingness
         $options = ThreePointStudio_CustomMarkupForUser_Constants::$defaultOptionsArray;
     }
     // Pre-check cleanup
     foreach ($options as $category => $catArray) {
         foreach ($catArray as $itemName => $itemValue) {
             if (ThreePointStudio_CustomMarkupForUser_Helpers::startsWith($itemName, "enable_")) {
                 unset($options[$category][$itemName]);
                 // Ignore any placeholders
                 continue;
             }
             if ($itemName == "presets") {
                 $options[$category][$itemName] = XenForo_Input::rawFilter($itemValue, XenForo_Input::ARRAY_SIMPLE);
             } else {
                 $options[$category][$itemName] = XenForo_Input::rawFilter($itemValue, ThreePointStudio_CustomMarkupForUser_Constants::$availableMarkups[$itemName]["type"]);
             }
         }
     }
     foreach ($options as $category => $catArray) {
         foreach ($catArray as $itemName => $itemValue) {
             if ($itemName == "presets") {
                 if (!is_array($itemValue)) {
                     $options[$category]["presets"] = array();
                 }
                 foreach ($itemValue as $index => $presetId) {
                     // Can we do this?
                     $thePreset = $presetsModel->getPresetById($presetId);
                     $user_groups = unserialize($thePreset["user_groups"]);
                     $intersection = array_intersect($user_groups, $user["user_groups"]);
                     if (empty($intersection)) {
                         unset($options[$category]["presets"][$index]);
                         // Validation failed
                         continue;
                     }
                 }
             } else {
                 $itemArray = ThreePointStudio_CustomMarkupForUser_Constants::$availableMarkups[$itemName];
                 // Can we do this?
                 if (!$userPermissions[$category][$itemName]) {
                     unset($options[$category][$itemName]);
                     // Validation failed
                     continue;
                 }
                 // Yes we can! Check if we have dependencies
                 if (isset($itemArray["requires"])) {
                     foreach ($itemArray["requires"] as $requirement) {
                         if ($catArray[$requirement[0]] !== $requirement[1]) {
                             unset($options[$category][$itemName]);
                             // Dependency not match, skipping
                             continue;
                         }
                     }
                 }
                 if (!call_user_func($itemArray["verify"]["func"], $itemValue)) {
                     return $this->responseError(new XenForo_Phrase($itemArray["verify"]["error"]));
                     // Validation failed, ragequit
                 }
             }
         }
     }
     $dw = XenForo_DataWriter::create('XenForo_DataWriter_User');
     $dw->setExistingData(XenForo_Visitor::getUserId());
     $dw->set("3ps_cmfu_options", serialize($options));
     $dw->save();
     if (XenForo_Application::getOptions()->get("3ps_cmfu_useCache")) {
         $dw->rebuildCustomMarkupCache();
     }
     return $response;
     // No errors from our end, continue execution
 }