/**
  * Fetches the list of the languages used on the site.
  *
  * \param forceReloading Optional. If true, the list will be fetched from database even if it is cached in memory.
  *                       Default value is false.
  * \return Array of the eZContentLanguage objects of languages used on the site.
  * \static
  */
 static function fetchList($forceReloading = false)
 {
     if (isset($GLOBALS['eZContentLanguageList']) && $forceReloading === false) {
         return $GLOBALS['eZContentLanguageList'];
     }
     $cachePath = eZSys::cacheDirectory() . '/ezcontentlanguage_cache.php';
     $clusterFileHandler = eZClusterFileHandler::instance($cachePath);
     if ($forceReloading || !$clusterFileHandler->fileExists($cachePath)) {
         $languages = eZPersistentObject::fetchObjectList(eZContentLanguage::definition());
         $clusterFileHandler->fileStoreContents($cachePath, serialize($languages), 'content', 'php');
     } else {
         $languages = unserialize($clusterFileHandler->fetchContents());
         // If for some reason unserialize operation fails, we force the cache file to regenerate
         // See http://issues.ez.no/18613
         if ($languages === false) {
             eZDebug::writeError("An error occurred while reading content language cache file {$cachePath}. File is being re-generated", __METHOD__);
             return self::fetchList(true);
         }
     }
     unset($GLOBALS['eZContentLanguageList']);
     unset($GLOBALS['eZContentLanguageMask']);
     $GLOBALS['eZContentLanguageList'] = array();
     $mask = 1;
     // we want have 0-th bit set too!
     foreach ($languages as $language) {
         $GLOBALS['eZContentLanguageList'][$language->attribute('id')] = $language;
         $mask += $language->attribute('id');
     }
     $GLOBALS['eZContentLanguageMask'] = $mask;
     return $GLOBALS['eZContentLanguageList'];
 }
    /**
     * Fetches the list of the languages used on the site.
     *
     * \param forceReloading Optional. If true, the list will be fetched from database even if it is cached in memory.
     *                       Default value is false.
     * \return Array of the eZContentLanguage objects of languages used on the site.
     * \static
     */
    static function fetchList( $forceReloading = false )
    {
        if( isset( $GLOBALS['eZContentLanguageList'] ) && $forceReloading === false )
            return $GLOBALS['eZContentLanguageList'];

        $cachePath = eZSys::cacheDirectory() . '/ezcontentlanguage_cache.php';
        $clusterFileHandler = eZClusterFileHandler::instance( $cachePath );

        if( $forceReloading || !$clusterFileHandler->fileExists( $cachePath ) )
        {
            $languages = eZPersistentObject::fetchObjectList( eZContentLanguage::definition() );
            $clusterFileHandler->fileStoreContents( $cachePath, serialize( $languages ), 'content', 'php' );
        }
        else
            $languages = unserialize( $clusterFileHandler->fetchContents() );

        unset( $GLOBALS['eZContentLanguageList'] );
        unset( $GLOBALS['eZContentLanguageMask'] );
        $GLOBALS['eZContentLanguageList'] = array();
        $mask = 1; // we want have 0-th bit set too!
        foreach ( $languages as $language )
        {
            $GLOBALS['eZContentLanguageList'][$language->attribute( 'id' )] = $language;
            $mask += $language->attribute( 'id' );
        }

        $GLOBALS['eZContentLanguageMask'] = $mask;

        return $GLOBALS['eZContentLanguageList'];
    }