Ejemplo n.º 1
0
 public function getTagListForEdit($contentType, $contentId, $editOthers, $userId = null)
 {
     $this->Tinhte_XenTag_cacheQueriedTags(true);
     $result = parent::getTagListForEdit($contentType, $contentId, $editOthers, $userId);
     $visitor = XenForo_Visitor::getInstance();
     if (!$visitor->hasPermission('general', Tinhte_XenTag_Constants::PERM_USER_IS_STAFF)) {
         $queriedTags = $this->Tinhte_XenTag_getQueriedTags();
         foreach (array_keys($result['editable']) as $i) {
             $isStaffTag = false;
             foreach ($queriedTags as $tag) {
                 if ($result['editable'][$i] === $tag['tag'] && !empty($tag['tinhte_xentag_staff'])) {
                     $isStaffTag = true;
                 }
             }
             if ($isStaffTag) {
                 $result['uneditable'][] = $result['editable'][$i];
                 unset($result['editable'][$i]);
             }
         }
     }
     if (!!Tinhte_XenTag_Option::get('keepOrder')) {
         $queriedTags = $this->Tinhte_XenTag_getQueriedTags();
         $editableTagTexts = array();
         foreach ($result['editable'] as $editableTagText) {
             $editableTagFound = false;
             foreach ($queriedTags as $tag) {
                 if ($editableTagText === $tag['tag']) {
                     $editableTagTexts[$tag['tag_content_id']] = $tag['tag'];
                     $editableTagFound = true;
                 }
             }
             if (!$editableTagFound) {
                 $editableTagTexts[$editableTagText] = $editableTagText;
             }
         }
         ksort($editableTagTexts);
         $result['editable'] = array_values($editableTagTexts);
     }
     $this->Tinhte_XenTag_cacheQueriedTags(false);
     return $result;
 }