diff options
Diffstat (limited to '_nav/lib.php')
-rw-r--r-- | _nav/lib.php | 348 |
1 files changed, 0 insertions, 348 deletions
diff --git a/_nav/lib.php b/_nav/lib.php deleted file mode 100644 index c3377d33d..000000000 --- a/_nav/lib.php +++ /dev/null @@ -1,348 +0,0 @@ -<?php -/** - * mageia.org global nav bar utilities. - * - * PHP version 5.4 - * - * @category Mageia - * @package Mageia\Web\nav - * @author rda <rda@mageia.org> - * @link http://nav.mageia.org/ - * - * @license http://www.gnu.org/licenses/gpl-2.0.html GNU GPL v2+ - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License aspublished by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. -*/ -// definition - -require_once('php-mo.php'); - -// languages for home -$langs = array( - 'ast' => 'Asturianu', - 'ca' => 'Català', - 'cs' => 'Čeština', - 'de' => 'Deutsch', - 'el' => 'Ελληνικά', - 'en' => 'English', - 'eo' => 'Esperanto', - 'es' => 'Español', - 'et' => 'Eesti', - 'fi' => 'Suomeksi', - 'fr' => 'Français', - 'id' => 'Bahasa Indonesia', - 'it' => 'Italiano', - 'lv' => 'Latviešu', - 'nb' => 'Bokmål', - 'nl' => 'Nederlands', - 'pl' => 'Polski', - 'pt' => 'Português', - 'pt-br' => 'Português do Brasil', - 'ro' => 'Română', - 'ru' => 'Русский', - 'sl' => 'Slovenščina', - 'sq' => 'Gjuha shqipe', - 'sv' => 'Svenska', - 'tr' => 'Türkçe', - 'uk' => 'Українська', - 'ur' => 'اردو', - 'zh-cn' => '简体中文', - 'zh-tw' => '正體中文' -); - -class NCache -{ - function __construct() { } - - /** - * Factory. - * - * @param string $path where cache file store is located, relative to app path. - * @param integer $timeout in seconds - * - * @return NCache - */ - public static function build($path, $timeout = 3600) - { - $path = __DIR__ . '/' . $path; - - if (!is_dir($path)) - return null; - - if ($timeout < 60) - $timeout = 60; - - $i = new self; - $i->_path = $path; - $i->_timeout = $timeout; - - return $i; - } - - /** - * Get value for $key. - * - * @param mixed $key - * - * @return mixed - */ - function get($key = null) - { - if (is_null($key)) - return false; - - $filename = $this->_get_filename($key); - - if ($this->_is_valid_file($filename, $this->_timeout)) { - return unserialize(file_get_contents($filename)); - } - - return null; - } - - /** - * Save $value under $key. - * - * @param mixed $key - * @param mixed $value - */ - function set($key, $value) - { - if (is_null($key)) - return false; - - $filename = $this->_get_filename($key); - file_put_contents($filename, serialize($value)); - - return true; - } - - /** - * Get cache file from key. - * - * @param mixed $key - * - * @return string - */ - private function _get_filename($key) - { - $key = hash('sha1', serialize($key)); - - return $this->_path . '/' . $key . '.cache'; - } - - /** - * Check that the cache file exists and has not expired. - * - * @param string $filename - * - * @return boolean - */ - private function _is_valid_file($filename, $timeout) - { - if (!file_exists($filename)) { - //error_log(sprintf('Could not find %s', $filename), 0); - return false; - } - - if (filemtime($filename) + $timeout < time()) { - //error_log(sprintf('%s timestamp expired (timeout was %ds.).', $filename, $timeout)); - unlink($filename); - return false; - } - - //error_log(sprintf('Found %s', $filename)); - return true; - } -} - -class l10n -{ -// public static $t; - - /** - * Load langs/$lang.lang into global $_t array. - * - * @param string $lang - * - * @return void - */ - public static function load($lang) - { - global $_t; - $_t = array(); - - if ($lang == 'en') - return; - - $po_file = __DIR__ . '/langs/' . $lang . '.po'; - $cache_file = __DIR__ . '/var/tmp/cache/nav_lang_' . $lang . '.php'; - $po_ts = filemtime($po_file); - - if (file_exists($cache_file)) { - include $cache_file; - if ($_ts > $po_ts) - return; - } - - if (file_exists($po_file)) { - $dictionary = phpmo_parse_po_file($po_file); - - foreach ($dictionary as $key => $value) { - if ($key != '') { - if ($value['msgstr'][0] != '') { - $_t[trim($key)] = trim($value['msgstr'][0]); - } else { - $_t[trim($key)] = trim($key); - } - } - } - - $_t_data = var_export($_t, true); - $cache = <<<P -<?php -/**! Generated. Do not edit. */ - -// filemtime($po_file) -\$_ts = $po_ts; - -// $lang strings -global \$_t; -\$_t = $_t_data; -P; - file_put_contents($cache_file, $cache); - } - } - - /** - * Get value for key $s in global array $_t. - * - * @param string $s - * - * @return string - */ - public static function _t($s) { - if (trim($s) == '') - return ''; - - global $_t; - - $s = array_key_exists($s, $_t) ? $_t[$s] : $s; - $s = trim(str_replace(array('{ok}', '{OK}', '{Ok}', '{oK}'), '', $s)); - - return $s; - } -} - -/** - * Produce navigation HTML code. - * - * @param boolean $wrap = false should it be wrapped in a <header id="nav" /> element? - * @param string $lang = 'en' - * @param string $inject = null - * @param string $vhost = 'www.mageia.org' - * @param object $cache - * - * @return string HTML code -*/ -function _mgnav_html($wrap = false, $lang = 'en', $inject = null, $vhost = 'www.mageia.org', $cache = null) -{ - $key = array($wrap, $lang, $inject, $vhost); - - if (!is_null($cache) && ($h = $cache->get($key))) { - apache_note('navCacheHit', 1); - return $h; - } - - apache_note('navCacheHit', 0); - - $lang = _lang_check($lang); - - l10n::load($lang, $cache); - - $tn = array( - array('mageia', '//$S/$L/map/', 'Mageia', l10n::_t('Go to mageia.org site map.')), - array('about', '//$S/$L/about/', l10n::_t('About us'), l10n::_t('Learn more about Mageia.')), - array('downloads', '//$S/$L/downloads/', l10n::_t('Downloads'), l10n::_t('Download Mageia ISO and updates.')), - array('support', '//$S/$L/support/', l10n::_t('Support'), l10n::_t('Get support from Mageia community.')), - array('wiki', '//wiki.mageia.org/', l10n::_t('Wiki'), l10n::_t('Wiki of the Mageia Community')), - array('doc', '//$S/$L/doc/', l10n::_t('Docs'), l10n::_t('Documentations of Mageia')), - array('community', '//$S/$L/community/', l10n::_t('Community'), l10n::_t('')), - array('contribute', '//$S/$L/contribute/', l10n::_t('Contribute'), l10n::_t('You too can build Mageia with us!')), - array('donate', '//$S/$L/donate/', l10n::_t('Donate'), l10n::_t('')), - array('you', '//identity.mageia.org/', l10n::_t('You'), l10n::_t('Your Mageia online account.')), - array('contact', '//$S/$L/contact/', l10n::_t('Contact'), l10n::_t('Contact Us')) - // <search> - ); - - $s = array(); - foreach ($tn as $i) { - $s[] = sprintf('<li><a href="%s" class="%s" title="%s">%s</a></li>', - str_replace( - array('$L', '$S'), - array($lang, $vhost), - $i[1] - ), - $i[0], - $i[3], - $i[2] - ); - } - - if (!is_null($inject)) - $s[] = sprintf('<li>%s</li>', $inject); - - $s = implode($s); - $h = sprintf('<!--googleoff: all--><nav id="mgnav"><ul id="nav">%s</ul></nav><!--googleon: all-->', $s); - - if ($wrap) - $h = sprintf('<header id="hmgn">%s -<link rel="icon" type="image/png" href="/g/favicon.png" /> -</header>', $h); - - if (!is_null($cache)) - $cache->set($key, $h); - - return $h; -} - -/** - * Returns CSS definition ready to be inserted into a HTML document. - * - * @return string -*/ -function _mgnav_style() -{ - if ( defined('ALIGNMENT') && constant('ALIGNMENT') == 'Center' ){ - return '<style>' . file_get_contents(__DIR__ . '/css/source.css') . '</style><style>' . file_get_contents(__DIR__ . '/css/center.css') . '</style>'; - } else { - return '<style>' . file_get_contents(__DIR__ . '/css/source.css') . '</style>'; - } -} - -/** - * Get the primary language subtag only.<p></p> -*/ -function _lang_check($s = null) -{ - if (is_null($s)) { - return 'en'; - } - - global $langs; - $supported = array_keys($langs); - - if (in_array($s, $supported)) - return $s; - - $sub = explode('-', $s); - $sub = strtolower($sub[0]); - - if (in_array($sub, $supported)) - return $sub; - - return 'en'; -} |