public function getData() { $ezTagsObject = new eZTagsObject(); $returnArray = array(); $childrenArray = array(); // recupero la lista dei remoteID dei tags che il server gestisce $tagsGestiti = explode(',', $this->runtimeSettingsINI->variable('serverSyncTags', 'serverSyncTagsList')); $numtagreturned = count($tagsGestiti); // Ciclo per recuperare gli array degli oggetti ritornati for ($i = 0; $i < $numtagreturned; $i++) { $parentFields = array(); #$eZTagParentObj = eZTagsObject::fetchByRemoteID('e4fd6bcf76ab7ce0e04684bdb867a76d'); #$eZTagParentObj = eZTagsObject::fetchByRemoteID(trim($tagsGestiti[$i])); $eZTagParentObj_array = eZTagsObject::fetchByKeyword(trim($tagsGestiti[$i]), true); $eZTagParentObj = $eZTagParentObj_array[0]; /* $eZTagParentObj->RemoteID; $eZTagParentObj->getAttribute('RemoteID'); $eZTagParentObj->attributes('remote_id'); */ # recupero e trasformo in array l'oggetto parentID $parentFields = itobjectsutils::getObjectAsArray($eZTagParentObj); # recupero tutti i children tags $childrenArray = eZTagsObject::fetchByParentID($eZTagParentObj->ID); # aggiungo al mio array generale il blocco dei children tags $parentFields['subTags'] = $childrenArray; $returnArray[$eZTagParentObj->RemoteID] = $parentFields; } return $returnArray; }
function findTags($id) { if (is_numeric($id)) { $tags = array(eZTagsObject::fetch($id)); } else { $tags = eZTagsObject::fetchByKeyword($id); } return $tags; }
/** * Fetches all tags named with provided keyword * * @static * @param string $keyword * @return array */ public static function fetchTagsByKeyword($keyword) { $result = eZTagsObject::fetchByKeyword($keyword); if (is_array($result) && !empty($result)) { return array('result' => $result); } else { return array('result' => false); } }
/** * Provides suggestion results when adding tags to object * * @static * @param mixed $args * @return array */ public static function suggest($args) { $tags = array(); $siteINI = eZINI::instance('site.ini'); if ($siteINI->variable('SearchSettings', 'SearchEngine') == 'ezsolr' && class_exists('eZSolr')) { $tagsCount = 1; $filteredTagsArray = array(); $http = eZHTTPTool::instance(); $tagsString = $http->postVariable('tags_string'); $tagsArray = explode('|#', $tagsString); $subTreeLimit = $http->postVariable('subtree_limit'); $hideRootTag = $http->postVariable('hide_root_tag') == '1' ? true : false; if (!empty($tagsArray) && strlen(trim($tagsArray[0])) > 0) { $solrFilter = '"' . trim($tagsArray[0]) . '"'; $filteredTagsArray[] = strtolower(trim($tagsArray[0])); for ($i = 1; $i < count($tagsArray); $i++) { if (strlen(trim($tagsArray[$i])) > 0) { $solrFilter = $solrFilter . ' OR "' . trim($tagsArray[$i]) . '"'; $filteredTagsArray[] = strtolower(trim($tagsArray[$i])); $tagsCount++; } } $solrFilter = 'ezf_df_tags:(' . $solrFilter . ')'; $solrSearch = new eZSolr(); $params = array('SearchOffset' => 0, 'SearchLimit' => 0, 'Facet' => array(array('field' => 'ezf_df_tags', 'limit' => 5 + $tagsCount, 'mincount', 1)), 'SortBy' => null, 'Filter' => $solrFilter, 'QueryHandler' => 'ezpublish', 'FieldsToReturn' => null); $searchResult = $solrSearch->search('', $params); $facetResult = $searchResult['SearchExtras']->attribute('facet_fields'); $facetResult = $facetResult[0]['nameList']; $tags = array(); foreach ($facetResult as $facetValue) { if (!in_array(strtolower($facetValue), $filteredTagsArray)) { $tags[] = trim($facetValue); } } if (!empty($tags)) { $tags = eZTagsObject::fetchByKeyword(array($tags)); } } } $returnArray = array(); $returnArray['status'] = 'success'; $returnArray['message'] = ''; $returnArray['tags'] = array(); foreach ($tags as $tag) { if (!$subTreeLimit > 0 || $subTreeLimit > 0 && strpos($tag->attribute('path_string'), '/' . $subTreeLimit . '/') !== false) { if (!$hideRootTag || $hideRootTag && $tag->attribute('id') != $subTreeLimit) { $returnArrayChild = array(); $returnArrayChild['tag_parent_id'] = (int) $tag->attribute('parent_id'); $returnArrayChild['tag_parent_name'] = $tag->hasParent() ? $tag->getParent()->attribute('keyword') : ''; $returnArrayChild['tag_name'] = $tag->attribute('keyword'); $returnArrayChild['tag_id'] = (int) $tag->attribute('id'); $returnArray['tags'][] = $returnArrayChild; } } } return $returnArray; }
/** * Fetches all tags named with provided keyword * * @static * * @param string $keyword * @param mixed $language * * @return array */ public static function fetchTagsByKeyword($keyword, $language = false) { if ($language) { if (!is_array($language)) { $language = array($language); } eZContentLanguage::setPrioritizedLanguages($language); } if (strpos($keyword, '*') !== false) { $keyword = preg_replace(array('#%#m', '#(?<!\\\\)\\*#m', '#(?<!\\\\)\\\\\\*#m', '#\\\\\\\\#m'), array('\\%', '%', '*', '\\\\'), $keyword); $keyword = array('like', $keyword); } $result = eZTagsObject::fetchByKeyword($keyword); if ($language) { eZContentLanguage::clearPrioritizedLanguages(); } if (is_array($result) && !empty($result)) { return array('result' => $result); } return array('result' => false); }
<?php /** * Estrae in formato JSON l'elenco delle tematiche */ $module = $Params['Module']; $tematiche = array(); $subtree = eZTagsObject::fetchByKeyword('Tematiche'); if (count($subtree) > 0) { $tematiche = eZTagsObject::subTreeByTagID(array('SortBy' => array('keyword', 'asc'), 'Depth' => 1), $subtree[0]->ID); } header('Content-Type: application/json'); echo json_encode($tematiche); eZExecution::cleanExit();
/** * Cerca sul siteaccess locale tramite le KeyWord se esistono i tag uguali e * li imposta. Nel caso di Keyword uguali con nodo padre diverso questo metodo non funziona. * * @param string $identifier * @param string $remoteTags */ protected function createLocalTags($identifier, $remoteTags) { $tag = ""; $ezTagsArray = explode("|#", $remoteTags); // Verifico ci siano tags impostati if (!empty($ezTagsArray)) { // Verifico che la lunghezza dell'array sia un multiplo di 3 if (count($ezTagsArray) % 3 == 0) { $tagsNum = count($ezTagsArray) / 3; $tagIDs = ""; $tagKeywords = ""; $tagParents = ""; for ($i = $tagsNum; $i < $tagsNum * 2; $i++) { $keyword = $ezTagsArray[$i]; $ezTag = eZTagsObject::fetchByKeyword($keyword); if (!empty($ezTag)) { $tagIDs .= $ezTag[0]->ID . '|#'; $tagKeywords .= $ezTag[0]->Keyword . '|#'; $tagParents .= $ezTag[0]->ParentID . '|#'; } } $tag = $tagIDs . $tagKeywords . $tagParents; $tag = substr($tag, 0, strlen($tag) - 2); } } return $tag; }