'; $item_tmpl = '
  • %3$s %1$s
  • '; foreach ($news as $item) { $html .= sprintf($item_tmpl, news_date($item['date'], $locale), $item['link'], $item['title'] ); } $html .= ''; return $html; } /** * @param string $dt date in the form ISO 8601 (2015-02-24T15:42:00+01:00) * @param string $locale * * @return string localised date */ function news_date($dt, $locale = 'en') { $eng_months = array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'); $localised_months = array(_r('Jan'), _r('Feb'), _r('Mar'), _r('Apr'), _r('May'), _r('Jun'), _r('Jul'), _r('Aug'), _r('Sep'), _r('Oct'), _r('Nov'), _r('Dec')); return str_replace($eng_months, $localised_months, date(_r('M d Y'), strtotime($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(); $feed->set_feed_url($url); $feed->set_cache_location(realpath(G_APP_ROOT . '/_nav/var/tmp/cache')); $feed->set_cache_duration(3600 * $cache_timeout); $feed->set_timeout(2); $feed->enable_order_by_date(true); $feed->init(); $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 * @param string $discrete_title more discrete title * * @return string */ function show_feed($locale, $title, $link, $feed, $count = 5, $skip = null, $split = false, $discrete_title = null) { if (!is_null($skip)) $count += 5; $data = get_feed($feed, $count); $s = ''; $date_separator = (is_null($discrete_title) ? null : ' | '); if (!is_null($title)) $s .= sprintf('

    %s

    ', $link, $title); $s .= ''; 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); }