Exemplo n.º 1
0
 public static function accountPreferencesOptions($hookName, &$contents, array $hookParams, XenForo_Template_Abstract $template)
 {
     $visitor = XenForo_Visitor::getInstance();
     if (!$visitor->hasPermission("3ps_cmfu", "canUseCMFUSystem")) {
         return;
     }
     $fullUserOptions = ThreePointStudio_CustomMarkupForUser_Helpers::prepareOptionsForView($visitor["3ps_cmfu_options"]);
     /* @var $presetModel ThreePointStudio_CustomMarkupForUser_Model_Preset */
     $presetModel = XenForo_Model::create("ThreePointStudio_CustomMarkupForUser_Model_Preset");
     $renderHTML = "";
     $settingsTemplate = $template->create("3ps_cmfu_account_cmcontrol", $template->getParams());
     // Render username
     if ($visitor->hasPermission("3ps_cmfu", "canUseCustomUNM")) {
         $permissions = ThreePointStudio_CustomMarkupForUser_Helpers::assembleCustomMarkupPermissionForUser("username");
         $presets = array();
         if (!is_array($fullUserOptions["username"]["presets"])) {
             $fullUserOptions["username"]["presets"] = array();
         }
         foreach ($presetModel->getPresetsByGroup("username") as $presetId => $preset) {
             $enable_for = unserialize($preset["enable_for"]);
             if ($enable_for) {
                 $presets[$presetId] = array("label" => $preset["title"], "value" => $presetId, "selected" => in_array($presetId, $fullUserOptions["username"]["presets"]));
             }
         }
         $presetsTemplate = $template->create("3ps_cmfu_presets_select", $template->getParams());
         $presetsTemplate->setParams(array("title" => new XenForo_Phrase("user_name"), "titleCode" => "username", "presets" => $presets, "permissions" => $permissions));
         $presetHTML = $presetsTemplate->render();
         $settingsTemplate->setParams(array_merge(array("title" => new XenForo_Phrase("user_name"), "titleCode" => "username", "permissions" => $permissions, "userOptions" => $fullUserOptions["username"], "currentMarkupRender" => XenForo_Template_Helper_Core::callHelper("usernamehtml", array($visitor->toArray(), "", true)), "presetHTML" => $presetHTML), ThreePointStudio_CustomMarkupForUser_Helpers::getBaseViewParams()));
         $renderHTML .= $settingsTemplate->render();
     }
     // Clean up
     $settingsTemplate = $template->create("3ps_cmfu_account_cmcontrol", $template->getParams());
     // Render user title
     if (empty($user["custom_title"])) {
         // No user title
         $user["custom_title"] = "(No Title Set)";
     }
     if ($visitor->hasPermission("3ps_cmfu", "canUseCustomUTM")) {
         $permissions = ThreePointStudio_CustomMarkupForUser_Helpers::assembleCustomMarkupPermissionForUser("usertitle");
         $presets = array();
         if (!is_array($fullUserOptions["usertitle"]["presets"])) {
             $fullUserOptions["usertitle"]["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_presets_select", $template->getParams());
         $presetsTemplate->setParams(array("title" => new XenForo_Phrase("3ps_cmfu_user_title"), "titleCode" => "usertitle", "presets" => $presets, "permissions" => $permissions));
         $presetHTML = $presetsTemplate->render();
         $settingsTemplate->setParams(array_merge(array("title" => new XenForo_Phrase("3ps_cmfu_user_title"), "titleCode" => "usertitle", "permissions" => $permissions, "userOptions" => $fullUserOptions["usertitle"], "currentMarkupRender" => XenForo_Template_Helper_Core::callHelper("usertitle", array($visitor->toArray())), "presetHTML" => $presetHTML), ThreePointStudio_CustomMarkupForUser_Helpers::getBaseViewParams()));
         $renderHTML .= $settingsTemplate->render();
     }
     /* Things - Account Panel */
     $contents .= $renderHTML;
 }
Exemplo n.º 2
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
 }