diff options
author | Thomas Backlund <tmb@mageia.org> | 2014-10-12 12:27:45 +0300 |
---|---|---|
committer | Thomas Backlund <tmb@mageia.org> | 2014-10-12 12:27:45 +0300 |
commit | 9ce6d646ff718cd62f6434c9a4c94e450436612a (patch) | |
tree | 3ee82e5db7c0aee44a5573d9d17035c6ecac697d /lib/news.php | |
parent | a0b2d09125d7911656fe4cb286f20643c4432281 (diff) | |
download | www-9ce6d646ff718cd62f6434c9a4c94e450436612a.tar www-9ce6d646ff718cd62f6434c9a4c94e450436612a.tar.gz www-9ce6d646ff718cd62f6434c9a4c94e450436612a.tar.bz2 www-9ce6d646ff718cd62f6434c9a4c94e450436612a.tar.xz www-9ce6d646ff718cd62f6434c9a4c94e450436612a.zip |
Revert "Updated Estonian translation"
This reverts commit a0b2d09125d7911656fe4cb286f20643c4432281.
Diffstat (limited to 'lib/news.php')
-rw-r--r-- | lib/news.php | 179 |
1 files changed, 179 insertions, 0 deletions
diff --git a/lib/news.php b/lib/news.php new file mode 100644 index 000000000..613103849 --- /dev/null +++ b/lib/news.php @@ -0,0 +1,179 @@ +<?php +/** +*/ + + +/** + * @param string $locale + * + * @return array +*/ +function html_news($locale = 'en', $count = 5) +{ + $news = get_news($locale, $count); + $html = '<ul class="news">'; + $item_tmpl = '<li><a href="%2$s">%3$s</a> <span class="dt">%1$s</span></li>'; + foreach ($news as $item) + { + $html .= sprintf($item_tmpl, + news_date($item['date'], $locale), + $item['link'], + $item['title'] + ); + } + $html .= '</ul>'; + return $html; +} + +/** + * @param string $dt + * @param string $locale + * + * @return string +*/ +function news_date($dt, $locale = 'en') +{ + $months = array( + 'en' => array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'), + 'fr' => array('jan', 'fév', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'sept', 'oct', 'nov', 'déc'), + 'de' => array('Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez') + ); + $formats = array( + 'en' => 'M d Y', + 'fr' => 'd M Y', + 'de' => 'd. M Y', + 'default' => 'Y-m-d' + ); + $ft = array_key_exists($locale, $formats) ? $locale : 'default'; + + $dts = strtotime($dt); + $dt = date($formats[$ft], $dts); + if (array_key_exists($locale, $months)) + $dt = str_replace($months['en'], $months[$locale], $dt); + + return $dt; +} + +/** + * @param string $locale + * @param integer $count + * @param integer $cache_timeout + * + * @return array +*/ +function get_news($locale = 'en', $count = 5, $cache_timeout = 5) +{ + return get_feed(blog_link($locale), $count, cache_timeout); + +} + +/** +*/ +function get_feed($url, $count = 5, $cache_timeout = 5) +{ + include_once G_APP_ROOT . '/lib/simplepie/simplepie.inc'; + + $feed = new SimplePie($url, + realpath(G_APP_ROOT . '/var/tmp/cache'), + 3600 * $cache_timeout); + + $feed->set_timeout(2); + $feed->enable_order_by_date(true); + $feed->handle_content_type(); + $items = array(); + + foreach ($feed->get_items(0, $count) as $item) + { + $items[] = array( + 'source' => $item->get_feed()->get_link(), + 'link' => $item->get_permalink(), + 'title' => $item->get_title(), + 'date' => $item->get_date('c'), + 'desc' => $item->get_description(), + 'author' => $item->get_author() + ); + } + + unset($feed); + + return $items; +} + +/** + * + * @param string $locale locale this feed is expected to be in + * @param string $title feed title + * @param string $link feed main site title + * @param string $feed feed url + * @param integer $count how many items to return + * @param string $skip url whose element we want to skip (why?) + * @param boolean split title that has been built by aggregator + * + * @return string +*/ +function show_feed($locale, $title, $link, $feed, $count = 5, $skip = null, $split = false) { + + if (!is_null($skip)) + $count += 5; + + $data = get_feed($feed, $count); + + $s = ''; + if (!is_null($title)) + $s .= sprintf('<h3><a href="%s">%s</a></h3>', $link, $title); + + $s .= '<ul id="newslist">'; + foreach ($data as $d) { + if (!is_null($skip) && strpos($d['link'], $skip) !== false) + continue; + + if ($split && strpos($d['title'], ' : ') !== false) { + $title = explode(' : ', $d['title']); + $source = ' / ' . array_shift($title); + $title = implode(' : ', $title); + } else { + $title = $d['title']; + $source = null; + } + + $s .= sprintf('<li><a href="%s">%s</a> <span class="dt">%s%s</span></li>', + $d['link'], $title, news_date($d['date'], $locale), $source); + } + $s .= '</ul>'; + echo $s; +} + +/** +*/ +function blog_link($locale) +{ + $news = array( + 'el' => 'https://blog.mageia.org/el/', + 'en' => 'https://blog.mageia.org/en/', + 'es' => 'https://blog.mageia.org/es/', + 'fr' => 'https://blog.mageia.org/fr/', + 'de' => 'https://blog.mageia.org/de/', + 'it' => 'https://blog.mageia.org/it/', + 'pl' => 'https://blog.mageia.org/en/', // pl when up to date + 'pt' => 'https://blog.mageia.org/pt/', + 'ro' => 'https://blog.mageia.org/ro/', + 'ru' => 'https://blog.mageia.org/en/', // ru, when up to date + 'tr' => 'https://blog.mageia.org/tr/', + /* missing: et, fi, lv, nb, nl, sl, zh-cn, zh-tw */ + ); + + if (!array_key_exists($locale, $news)) + $locale = 'en'; + + $source_url = $news[$locale]; + + return $source_url; +} + +function planet_link($locale) +{ + $planets = array('en', 'fr', 'de', 'es', 'it', 'pt'); + $locale = in_array($locale, $planets) ? $locale : 'en'; + + return sprintf('https://planet.mageia.org/%s/', $locale); +}
\ No newline at end of file |