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; }
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())); } } }
public static function getBaseViewParams() { return array("borderList" => ThreePointStudio_CustomMarkupForUser_Helpers::lazyArrayShift(ThreePointStudio_CustomMarkupForUser_Constants::$borderList), "fontList" => ThreePointStudio_CustomMarkupForUser_Helpers::lazyArrayShift(ThreePointStudio_CustomMarkupForUser_Constants::$fontList)); }
/** * 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>"; }
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); }
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 }
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 }