/**
  * Provides auto complete results when adding tags to object
  *
  * @static
  * @param mixed $args
  * @return array
  */
 public static function autocomplete($args)
 {
     $http = eZHTTPTool::instance();
     $searchString = $http->postVariable('search_string');
     $subTreeLimit = $http->postVariable('subtree_limit');
     $hideRootTag = $http->postVariable('hide_root_tag') == '1' ? true : false;
     $params = array('keyword' => array('like', $searchString . '%'));
     if ($subTreeLimit > 0) {
         if ($hideRootTag) {
             $params['id'] = array('<>', $subTreeLimit);
         }
         $params['path_string'] = array('like', '%/' . $subTreeLimit . '/%');
     }
     $tags = eZTagsObject::fetchList($params);
     $returnArray = array();
     $returnArray['status'] = 'success';
     $returnArray['message'] = '';
     $returnArray['tags'] = array();
     foreach ($tags as $tag) {
         $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;
 }
 /**
  * Creates and returns SQL parts used in fetch functions
  *
  * @return array
  */
 function createSqlParts($params)
 {
     $returnArray = array('tables' => '', 'joins' => '', 'columns' => '');
     if (isset($params['tag_id'])) {
         if (is_array($params['tag_id'])) {
             $tagIDsArray = $params['tag_id'];
         } else {
             if ((int) $params['tag_id'] > 0) {
                 $tagIDsArray = array((int) $params['tag_id']);
             } else {
                 return $returnArray;
             }
         }
         if (!isset($params['include_synonyms']) || isset($params['include_synonyms']) && (bool) $params['include_synonyms'] == true) {
             $result = eZTagsObject::fetchList(array('main_tag_id' => array($tagIDsArray)), null, false);
             if (is_array($result) && !empty($result)) {
                 foreach ($result as $r) {
                     array_push($tagIDsArray, (int) $r['id']);
                 }
             }
         }
         $returnArray['tables'] = " INNER JOIN eztags_attribute_link i1 ON (i1.object_id = ezcontentobject.id AND i1.objectattribute_version = ezcontentobject.current_version)";
         $db = eZDB::instance();
         $dbString = $db->generateSQLINStatement($tagIDsArray, 'i1.keyword_id', false, true, 'int');
         $returnArray['joins'] = " {$dbString} AND ";
     }
     return $returnArray;
 }
Exemple #3
0
 /**
  * Returns the JSON encoded string of children tags for supplied GET params
  * Used in YUI version of children tags list in admin interface
  *
  * @static
  *
  * @param array $args
  *
  * @return string
  */
 public static function tagsChildren($args)
 {
     $http = eZHTTPTool::instance();
     $filter = urldecode(trim($http->getVariable('filter', '')));
     if (!isset($args[0]) || !is_numeric($args[0])) {
         return array('count' => 0, 'offset' => false, 'filter' => $filter, 'data' => array());
     }
     $offset = false;
     $limits = null;
     if ($http->hasGetVariable('offset')) {
         $offset = (int) $http->getVariable('offset');
         if ($http->hasGetVariable('limit')) {
             $limit = (int) $http->getVariable('limit');
         } else {
             $limit = 10;
         }
         $limits = array('offset' => $offset, 'limit' => $limit);
     }
     $sorts = null;
     if ($http->hasGetVariable('sortby')) {
         $sortBy = trim($http->getVariable('sortby'));
         $sortDirection = 'asc';
         if ($http->hasGetVariable('sortdirection') && trim($http->getVariable('sortdirection')) == 'desc') {
             $sortDirection = 'desc';
         }
         $sorts = array($sortBy => $sortDirection);
     }
     $fetchParams = array('parent_id' => (int) $args[0], 'main_tag_id' => 0);
     if (!empty($filter)) {
         $fetchParams['keyword'] = array('like', '%' . $filter . '%');
     }
     /** @var eZTagsObject[] $children */
     $children = eZTagsObject::fetchList($fetchParams, $limits, $sorts);
     $childrenCount = eZTagsObject::fetchListCount($fetchParams);
     if (!is_array($children) || empty($children)) {
         return array('count' => 0, 'offset' => false, 'filter' => $filter, 'data' => array());
     }
     $dataArray = array();
     foreach ($children as $child) {
         $tagArray = array();
         $tagArray['id'] = $child->attribute('id');
         $tagArray['keyword'] = htmlspecialchars($child->attribute('keyword'), ENT_QUOTES);
         $tagArray['modified'] = $child->attribute('modified');
         $tagArray['translations'] = array();
         foreach ($child->getTranslations() as $translation) {
             $tagArray['translations'][] = htmlspecialchars($translation->attribute('locale'), ENT_QUOTES);
         }
         $dataArray[] = $tagArray;
     }
     return array('count' => $childrenCount, 'offset' => $offset, 'filter' => $filter, 'data' => $dataArray);
 }
Exemple #4
0
 /**
  * Generates output for use with autocomplete and suggest methods
  *
  * @static
  *
  * @param array $params
  * @param int $subTreeLimit
  * @param bool $hideRootTag
  * @param string $locale
  *
  * @return array
  */
 private static function generateOutput(array $params, $subTreeLimit, $hideRootTag, $locale)
 {
     $subTreeLimit = (int) $subTreeLimit;
     $hideRootTag = (bool) $hideRootTag;
     $locale = (string) $locale;
     if (empty($locale)) {
         return array('status' => 'success', 'message' => '', 'tags' => array());
     }
     // @TODO Fix synonyms not showing up in autocomplete
     // when subtree limit is defined in class attribute
     if ($subTreeLimit > 0) {
         if ($hideRootTag) {
             $params['id'] = array('<>', $subTreeLimit);
         }
         $params['path_string'] = array('like', '%/' . $subTreeLimit . '/%');
     }
     // first fetch tags that exist in selected locale
     /** @var eZTagsObject[] $tags */
     $tags = eZTagsObject::fetchList($params, null, null, false, $locale);
     if (!is_array($tags)) {
         $tags = array();
     }
     $tagsIDsToExclude = array_map(function ($tag) {
         /** @var eZTagsObject $tag */
         return (int) $tag->attribute('id');
     }, $tags);
     // then fetch the rest of tags, but exclude already fetched ones
     // fetch with main translation to be consistent with eztags attribute content
     $customConds = eZTagsObject::fetchCustomCondsSQL($params, true);
     if (!empty($tagsIDsToExclude)) {
         $customConds .= " AND " . eZDB::instance()->generateSQLINStatement($tagsIDsToExclude, 'eztags.id', true, true, 'int') . " ";
     }
     $tagsRest = eZPersistentObject::fetchObjectList(eZTagsObject::definition(), array(), $params, null, null, true, false, array('DISTINCT eztags.*', array('operation' => 'eztags_keyword.keyword', 'name' => 'keyword'), array('operation' => 'eztags_keyword.locale', 'name' => 'locale')), array('eztags_keyword'), $customConds);
     if (!is_array($tagsRest)) {
         $tagsRest = array();
     }
     // finally, return both set of tags as one list
     $tags = array_merge($tags, $tagsRest);
     $returnArray = array('status' => 'success', 'message' => '', 'tags' => array());
     foreach ($tags as $tag) {
         $returnArrayChild = array();
         $returnArrayChild['tag_parent_id'] = $tag->attribute('parent_id');
         $returnArrayChild['tag_parent_name'] = $tag->hasParent(true) ? $tag->getParent(true)->attribute('keyword') : '';
         $returnArrayChild['tag_name'] = $tag->attribute('keyword');
         $returnArrayChild['tag_id'] = $tag->attribute('id');
         $returnArrayChild['tag_locale'] = $tag->attribute('current_language');
         $returnArray['tags'][] = $returnArrayChild;
     }
     return $returnArray;
 }
Exemple #5
0
 /**
  * Returns tags within this instance
  *
  * @return array
  */
 function tags()
 {
     if (!is_array($this->IDArray) || empty($this->IDArray)) {
         return array();
     }
     return eZTagsObject::fetchList(array('id' => array($this->IDArray)));
 }
Exemple #6
0
<?php

/** @var eZModule $Module */
/** @var array $Params */
$http = eZHTTPTool::instance();
$tagIDs = $http->sessionVariable('eZTagsDeleteIDArray', $http->postVariable('SelectedIDArray'), array());
if (!is_array($tagIDs) || empty($tagIDs)) {
    return $Module->handleError(eZError::KERNEL_NOT_FOUND, 'kernel');
}
/** @var eZTagsObject[] $tagsList */
$tagsList = eZTagsObject::fetchList(array('id' => array($tagIDs)), null, null, true);
if (!is_array($tagsList) || empty($tagsList)) {
    return $Module->handleError(eZError::KERNEL_NOT_FOUND, 'kernel');
}
$http->setSessionVariable('eZTagsDeleteIDArray', $tagIDs);
$parentTagID = (int) $tagsList[0]->attribute('parent_id');
if ($http->hasPostVariable('NoButton')) {
    $http->removeSessionVariable('eZTagsDeleteIDArray');
    if ($parentTagID > 0) {
        return $Module->redirectToView('id', array($parentTagID));
    }
    return $Module->redirectToView('dashboard', array());
} else {
    if ($http->hasPostVariable('YesButton')) {
        $db = eZDB::instance();
        foreach ($tagsList as $tag) {
            if ($tag->getSubTreeLimitationsCount() > 0 || $tag->attribute('main_tag_id') != 0) {
                continue;
            }
            $db->begin();
            $parentTag = $tag->getParent(true);
    public static function create($remoteID, $keyword, eZTagsObject $parentTag=null)
    {
        // Vérification de l'existance
        if ($remoteID)
        {
            $tag = eZTagsObject::fetchByRemoteID($remoteID);

            if ($tag)
            {
                if ($parentTag && $tag->attribute( 'parent_id' ) != $parentTag->attribute('id'))
                {
                    $tag->setAttribute('parent_id', $parentTag->attribute('id'));
                    $tag->updatePathString($parentTag);
                    $tag->updateDepth($parentTag);
                }

                return $tag;
            }
        }
        else
        {
            $tags = eZTagsObject::fetchList(array(
                'keyword' => array( 'like', trim( $keyword ) ),
                'parent_id' => $parentTag ? $parentTag->attribute('id') : 0,
            ));

            if (count($tags))
                return $tags[0];
        }

        $db = eZDB::instance();
        $db->begin();

        // Création du tag
        $tag = new eZTagsObject(array(
            'remote_id'   => $remoteID,
            'parent_id'   => $parentTag ? $parentTag->attribute( 'id' ) : null,
            'main_tag_id' => null,
            'keyword'     => $keyword,
            'depth'       => $parentTag ? $parentTag->attribute( 'depth' ) + 1 : 1
        ));

        $tag->store();

        // Mise a jour du path string
        $tag->setAttribute( 'path_string', ($parentTag ? $parentTag->attribute( 'path_string' ) : '/') . $tag->attribute( 'id' ) . '/' );
        $tag->store();
        $tag->updateModified();

        $db->commit();

        /* Extended Hook */
        if ( class_exists( 'ezpEvent', false ) )
            ezpEvent::getInstance()->filter( 'tag/add', array( 'tag' => $tag, 'parentTag' => $parentTag ) );

        return $tag;
    }
Exemple #8
0
 /**
  * Returns the tag cloud for specified parameters using eZ Find
  *
  * @param array $params
  *
  * @return array
  */
 private function solrTagCloud($params)
 {
     $offset = 0;
     if (isset($params['offset']) && is_numeric($params['offset'])) {
         $offset = (int) $params['offset'];
     }
     // It seems that Solr doesn't like PHP_INT_MAX constant on 64bit operating systems
     $limit = 1000000;
     if (isset($params['limit']) && is_numeric($params['limit'])) {
         $limit = (int) $params['limit'];
     }
     $searchFilter = array();
     if (isset($params['class_identifier'])) {
         if (!is_array($params['class_identifier'])) {
             $params['class_identifier'] = array($params['class_identifier']);
         }
         if (!empty($params['class_identifier'])) {
             $searchFilter['meta_class_identifier_ms'] = '(' . implode(' OR ', $params['class_identifier']) . ')';
         }
     }
     if (isset($params['parent_node_id'])) {
         $searchFilter['meta_path_si'] = (int) $params['parent_node_id'];
     }
     $solrSearch = new eZSolr();
     $solrParams = array('SearchOffset' => 0, 'SearchLimit' => 1000000, 'Facet' => array(array('field' => 'ezf_df_tag_ids', 'limit' => 1000000)), 'Filter' => $searchFilter, 'QueryHandler' => 'ezpublish', 'AsObjects' => false);
     $searchResult = $solrSearch->search('*:*', $solrParams);
     if (!isset($searchResult['SearchExtras']) || !$searchResult['SearchExtras'] instanceof ezfSearchResultInfo) {
         return array();
     }
     $facetResult = $searchResult['SearchExtras']->attribute('facet_fields');
     if (!is_array($facetResult) || empty($facetResult[0]['countList'])) {
         return array();
     }
     $tagsCountList = $facetResult[0]['countList'];
     /** @var eZTagsObject[] $tags */
     $tags = eZTagsObject::fetchList(array('id' => array(array_keys($tagsCountList))));
     if (!is_array($tags) || empty($tags)) {
         return array();
     }
     $tagSortArray = array();
     $tagKeywords = array();
     $tagCounts = array();
     foreach ($tags as $tag) {
         $tagKeyword = $tag->attribute('keyword');
         $tagCount = $tagsCountList[(int) $tag->attribute('id')];
         $tagSortArray[] = array('keyword' => $tagKeyword, 'count' => $tagCount, 'tag' => $tag);
         $tagKeywords[] = $tagKeyword;
         $tagCounts[] = $tagCount;
     }
     // calling call_user_func_array requires all arguments to be references
     // this is the reason for $sortFlags array and $sortArgs[] = &....
     $sortArgs = array();
     $sortFlags = array(SORT_ASC, SORT_DESC, SORT_LOCALE_STRING, SORT_NUMERIC);
     if (isset($params['sort_by']) && is_array($params['sort_by']) && !empty($params['sort_by'])) {
         $params['sort_by'] = is_string($params['sort_by'][0]) ? array($params['sort_by']) : $params['sort_by'];
         foreach ($params['sort_by'] as $sortItem) {
             if (is_array($sortItem) && !empty($sortItem)) {
                 switch ($sortItem[0]) {
                     case 'keyword':
                         $sortArgs[] =& $tagKeywords;
                         if (isset($sortItem[1]) && $sortItem[1]) {
                             $sortArgs[] =& $sortFlags[0];
                         } else {
                             $sortArgs[] =& $sortFlags[1];
                         }
                         $sortArgs[] =& $sortFlags[2];
                         break;
                     case 'count':
                         $sortArgs[] =& $tagCounts;
                         if (isset($sortItem[1]) && $sortItem[1]) {
                             $sortArgs[] =& $sortFlags[0];
                         } else {
                             $sortArgs[] =& $sortFlags[1];
                         }
                         $sortArgs[] =& $sortFlags[3];
                         break;
                 }
             }
         }
     }
     if (empty($sortArgs)) {
         $sortArgs[] =& $tagKeywords;
         $sortArgs[] =& $sortFlags[0];
     }
     $sortArgs[] =& $tagSortArray;
     call_user_func_array('array_multisort', $sortArgs);
     $tagSortArray = array_slice($tagSortArray, $offset, $limit);
     if (empty($tagSortArray)) {
         return array();
     }
     $tagKeywords = array_slice($tagKeywords, $offset, $limit);
     $tagCounts = array_slice($tagCounts, $offset, $limit);
     if (isset($params['post_sort_by'])) {
         if ($params['post_sort_by'] === 'keyword') {
             array_multisort($tagKeywords, SORT_ASC, SORT_LOCALE_STRING, $tagSortArray);
         } else {
             if ($params['post_sort_by'] === 'keyword_reverse') {
                 array_multisort($tagKeywords, SORT_DESC, SORT_LOCALE_STRING, $tagSortArray);
             } else {
                 if ($params['post_sort_by'] === 'count') {
                     array_multisort($tagCounts, SORT_ASC, SORT_NUMERIC, $tagSortArray);
                 } else {
                     if ($params['post_sort_by'] === 'count_reverse') {
                         array_multisort($tagCounts, SORT_DESC, SORT_NUMERIC, $tagSortArray);
                     }
                 }
             }
         }
     }
     $this->normalizeTagCounts($tagSortArray, $tagCounts);
     return $tagSortArray;
 }
 /**
  * Fetches latest modified tags by specified parameters
  *
  * @static
  *
  * @param int|bool $parentTagID
  * @param int $limit
  * @param mixed $language
  *
  * @return array
  */
 public static function fetchLatestTags($parentTagID = false, $limit = 0, $language = false)
 {
     $parentTagID = (int) $parentTagID;
     $filterArray = array();
     $filterArray['main_tag_id'] = 0;
     $filterArray['id'] = array('!=', $parentTagID);
     if ($parentTagID > 0) {
         $filterArray['path_string'] = array('like', '%/' . $parentTagID . '/%');
     }
     if ($language) {
         if (!is_array($language)) {
             $language = array($language);
         }
         eZContentLanguage::setPrioritizedLanguages($language);
     }
     $result = eZTagsObject::fetchList($filterArray, array('offset' => 0, 'limit' => $limit), array('modified' => 'desc'));
     if ($language) {
         eZContentLanguage::clearPrioritizedLanguages();
     }
     if (is_array($result) && !empty($result)) {
         return array('result' => $result);
     }
     return array('result' => false);
 }
 /**
  * Creates and returns SQL parts used in fetch functions
  *
  * @param array $params where 'tag_id' is an array of arrays; at least one tag ID from each array must match
  *
  * @return array
  */
 public function createAndMultipleFilterSqlParts($params)
 {
     $returnArray = array('tables' => '', 'joins' => '', 'columns' => '');
     if (!isset($params['tag_id'])) {
         return $returnArray;
     }
     if (is_array($params['tag_id'])) {
         $tagIDsArray = $params['tag_id'];
     } else {
         return $returnArray;
     }
     $returnArray['tables'] = " INNER JOIN eztags_attribute_link i1 ON (i1.object_id = ezcontentobject.id AND i1.objectattribute_version = ezcontentobject.current_version)\n                                   INNER JOIN eztags i2 ON (i1.keyword_id = i2.id)\n                                   INNER JOIN eztags_keyword i3 ON (i2.id = i3.keyword_id)";
     $dbStrings = array();
     $db = eZDB::instance();
     foreach ($tagIDsArray as $tagIDGroup) {
         $tagIDGroup = (array) $tagIDGroup;
         if (!isset($params['include_synonyms']) || isset($params['include_synonyms']) && (bool) $params['include_synonyms'] == true) {
             /** @var eZTagsObject[] $tags */
             $tags = eZTagsObject::fetchList(array('main_tag_id' => array($tagIDGroup)));
             if (is_array($tags)) {
                 foreach ($tags as $tag) {
                     $tagIDGroup[] = $tag->attribute('id');
                 }
             }
         }
         $dbStrings[] = "EXISTS (\n                SELECT 1\n                FROM\n                    eztags_attribute_link j1,\n                    ezcontentobject j2\n                WHERE " . $db->generateSQLINStatement($tagIDGroup, 'j1.keyword_id', false, true, 'int') . " AND j1.object_id = j2.id\n                AND j2.id = ezcontentobject.id\n                AND j1.objectattribute_version = j2.current_version\n            )";
     }
     $dbString = implode(" AND ", $dbStrings);
     if (isset($params['language'])) {
         $language = $params['language'];
         if (!is_array($language)) {
             $language = array($language);
         }
         eZContentLanguage::setPrioritizedLanguages($language);
     }
     $returnArray['joins'] = " {$dbString}\n                                  AND " . eZContentLanguage::languagesSQLFilter('i2') . " AND " . eZContentLanguage::sqlFilter('i3', 'i2') . " AND ";
     if (isset($params['language'])) {
         eZContentLanguage::clearPrioritizedLanguages();
     }
     return $returnArray;
 }
Exemple #11
0
if ($tagID > 0 && !$tag instanceof eZTagsObject) {
    header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
    eZExecution::cleanExit();
}
$maxTags = 100;
if ($eztagsINI->hasVariable('TreeMenu', 'MaxTags')) {
    $iniMaxTags = $eztagsINI->variable('TreeMenu', 'MaxTags');
    if (is_numeric($iniMaxTags)) {
        $maxTags = (int) $iniMaxTags;
    }
}
$limitArray = null;
if ($maxTags > 0) {
    $limitArray = array('offset' => 0, 'length' => $maxTags);
}
$children = eZTagsObject::fetchList(array('parent_id' => $tagID, 'main_tag_id' => 0), $limitArray);
$response = array();
$response['error_code'] = 0;
$response['id'] = $tagID;
$response['parent_id'] = $tag instanceof eZTagsObject ? (int) $tag->attribute('parent_id') : -1;
$response['children_count'] = count($children);
$response['children'] = array();
foreach ($children as $child) {
    $childResponse = array();
    $childResponse['id'] = (int) $child->attribute('id');
    $childResponse['parent_id'] = (int) $child->attribute('parent_id');
    $childResponse['has_children'] = $child->getChildrenCount() > 0 ? 1 : 0;
    $childResponse['synonyms_count'] = $child->getSynonymsCount();
    $childResponse['subtree_limitations_count'] = $child->getSubTreeLimitationsCount();
    $childResponse['language_name_array'] = $child->languageNameArray();
    $childResponse['keyword'] = $child->attribute('keyword');
Exemple #12
0
#!/usr/bin/env php
<?php 
require 'autoload.php';
$cli = eZCLI::instance();
$script = eZScript::instance(array('description' => '\\nUpdates path string of all the tags.\\n', 'use-session' => false, 'use-modules' => false, 'use-extensions' => true));
$script->startup();
$options = $script->getOptions('', '', array());
$script->initialize();
$limit = 20;
$offset = 0;
$db = eZDB::instance();
$script->setIterationData('.', '~');
while ($firstLevelTags = eZTagsObject::fetchList(array('parent_id' => 0, 'main_tag_id' => 0), array('offset' => $offset, 'limit' => $limit), null, true)) {
    foreach ($firstLevelTags as $tag) {
        $tagID = $tag->attribute('id');
        $db->begin();
        $tag->updatePathString();
        $db->commit();
        $script->iterate($cli, true, 'Updated path string of tag ID = $tagID and all its children.');
    }
    $offset += $limit;
}
$script->shutdown();
Exemple #13
0
 /**
  * Returns tags within this instance
  *
  * @return eZTagsObject[]
  */
 public function tags()
 {
     if (!is_array($this->IDArray) || empty($this->IDArray)) {
         return array();
     }
     $tags = array();
     foreach (eZTagsObject::fetchList(array('id' => array($this->IDArray))) as $item) {
         $tags[array_search($item->attribute('id'), $this->IDArray)] = $item;
     }
     ksort($tags);
     return $tags;
 }
Exemple #14
0
$http = eZHTTPTool::instance();
$keywordArray = $Params['Parameters'];
if (!(is_array($keywordArray) && !empty($keywordArray))) {
    return $Module->handleError(eZError::KERNEL_NOT_FOUND, 'kernel');
}
$parentID = 0;
for ($i = 0; $i < count($keywordArray) - 1; $i++) {
    $tags = eZTagsObject::fetchList(array('parent_id' => $parentID, 'main_tag_id' => 0, 'keyword' => urldecode(trim($keywordArray[$i]))));
    if (is_array($tags) && !empty($tags)) {
        $parentID = $tags[0]->attribute('id');
    } else {
        return $Module->handleError(eZError::KERNEL_NOT_FOUND, 'kernel');
    }
}
$tags = eZTagsObject::fetchList(array('parent_id' => $parentID, 'keyword' => urldecode(trim($keywordArray[count($keywordArray) - 1]))));
if (!(is_array($tags) && !empty($tags))) {
    return $Module->handleError(eZError::KERNEL_NOT_FOUND, 'kernel');
}
$viewParameters = array();
if (isset($Params['Offset'])) {
    $viewParameters['offset'] = (int) $Params['Offset'];
}
$tpl = eZTemplate::factory();
$tpl->setVariable('blocks', eZINI::instance('eztags.ini')->variable('View', 'ViewBlocks'));
$tpl->setVariable('tag', $tags[0]);
$tpl->setVariable('view_parameters', $viewParameters);
$tpl->setVariable('persistent_variable', false);
$tpl->setVariable('show_reindex_message', false);
if ($http->hasSessionVariable('eZTagsShowReindexMessage')) {
    $http->removeSessionVariable('eZTagsShowReindexMessage');