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; }