diff options
author | filip <filip.komar@gmail.com> | 2018-04-27 20:03:03 +0200 |
---|---|---|
committer | filip <filip.komar@gmail.com> | 2018-04-27 20:03:03 +0200 |
commit | 1e35475cee83c4e19f7c165011064ae77231924b (patch) | |
tree | ddc16f0c90d25f72faccc997c92fd435b3cfe13c /lib/news.php | |
parent | b379ed46dd9bf2ef5b7e8dd29a4c7b8b8259101b (diff) | |
download | www-1e35475cee83c4e19f7c165011064ae77231924b.tar www-1e35475cee83c4e19f7c165011064ae77231924b.tar.gz www-1e35475cee83c4e19f7c165011064ae77231924b.tar.bz2 www-1e35475cee83c4e19f7c165011064ae77231924b.tar.xz www-1e35475cee83c4e19f7c165011064ae77231924b.zip |
show only recent planet&blog post
show localized planet if exists otherwise localized blog
if number of localized titles is less then required add
English planet and English blog as fallback
Diffstat (limited to 'lib/news.php')
-rw-r--r-- | lib/news.php | 124 |
1 files changed, 111 insertions, 13 deletions
diff --git a/lib/news.php b/lib/news.php index fa1852d14..e4b261081 100644 --- a/lib/news.php +++ b/lib/news.php @@ -103,22 +103,25 @@ function get_feed($url, $count = 5, $cache_timeout = 5) * @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 + * @param array $data if get_feed() is called outside, it's result is passed * * @return string */ -function show_feed($locale, $news_title, $link, $feed, $count = 5, $skip = null, $split = false, $discrete_title = null) { +function show_feed($locale, $news_title, $link, $feed, $count = 5, $skip = null, $split = false, $discrete_title = null, $data = null) { if (!is_null($skip)) $count += 5; - $data = get_feed($feed, $count); - if(0 == count($data)) { - $feed = rtrim($feed, '10'); // cut 10 as a fallback (type=rss) - $data = get_feed($feed, $count); - } - if(0 == count($data)) { - $feed = $feed .'10'; // add 10 as a fallback (type=rss10) + if(is_null($data)) { $data = get_feed($feed, $count); + if(0 == count($data)) { + $feed = rtrim($feed, '10'); // cut 10 as a fallback (type=rss) + $data = get_feed($feed, $count); + } + if(0 == count($data)) { + $feed = $feed .'10'; // add 10 as a fallback (type=rss10) + $data = get_feed($feed, $count); + } } if(0 == count($data)) { return; @@ -158,23 +161,110 @@ function show_feed($locale, $news_title, $link, $feed, $count = 5, $skip = null, echo $s; } + +/** + * @param string $eng_planet_url = 'https://planet.mageia.org/en/' + * @param string $eng_blog_url = 'https://blog.mageia.org/en/' + * @param string $loc_planet_url = _r('https://planet.mageia.org/en/') + * @param string $loc_blog_url = _r('https://blog.mageia.org/en/') + * @param integer $req_quantity number or requested planet/blog titles + * @param integer $min_num_of_loc_post minimum number of localised posts to return without adding English ones + * + * @return array ($loc_posts_title for show_feed() function, $fresh_loc_posts, $num_fresh_loc_posts, $eng_posts_title for show_feed() function, $fresh_eng_posts) +*/ +function prepare_fresh_blog_post_titles($eng_planet_url, $eng_blog_url, $loc_planet_url, $loc_blog_url, $req_quantity = 9, $min_num_of_loc_post = 4) +{ + $max_posts_age_days = 90; + $posts_age_limit = time()-($max_posts_age_days * 24*60*60); + $fresh_loc_posts = array(); + $fresh_eng_posts = array(); + $loc_posts_title = ''; + $eng_posts_title = ''; + + // prepare fresh enough localised planet posts if they exist + if ($eng_planet_url != $loc_planet_url) { + $loc_planet_posts = get_feed($loc_planet_url . '?type=rss10', $req_quantity); + if (count($loc_planet_posts) > 0) { + $loc_posts_title = _r('Planet'); + foreach ($loc_planet_posts as $planet_post) { + if ($posts_age_limit < strtotime($planet_post["date"])) { + $planet_post["desc"] = ''; // not needed (conserving memory) + $fresh_loc_posts[] = $planet_post; + } + } + } + } + + // prepare fresh enough localised blog posts if there's no localised planet + if(0 == count($fresh_loc_posts) && $eng_blog_url != $loc_blog_url) { + $loc_blog_posts = get_feed($loc_blog_url . '?type=rss10', $req_quantity); + if (count($loc_blog_posts) > 0) { + $loc_posts_title = _r('Blog'); + foreach ($loc_blog_posts as $blog_post) { + if ($posts_age_limit < strtotime($blog_post["date"])) { + $blog_post["desc"] = ''; // not needed + $fresh_loc_posts[] = $blog_post; + } + } + } + } + + // prepare fresh enough English planet posts if there's only a few or no localised posts + $num_fresh_loc_posts = count($fresh_loc_posts); + if ($min_num_of_loc_post > $num_fresh_loc_posts) { + if (0 < $num_fresh_loc_posts) { + $req_quantity = $req_quantity - $num_fresh_loc_posts - 1; + } + $eng_planet_posts = get_feed($eng_planet_url . '?type=rss10', $req_quantity); + if (count($eng_planet_posts) > 0) { + $eng_posts_title = _r('Planet'); + foreach ($eng_planet_posts as $planet_post) { + if ($posts_age_limit < strtotime($planet_post["date"])) { + $planet_post["desc"] = ''; // not needed + $fresh_eng_posts[] = $planet_post; + } + } + } + // prepare fresh enough English blog posts if there's no English planet posts + if (0 == count($fresh_eng_posts)) { + $eng_blog_posts = get_feed($eng_blog_url . '?type=rss10', $req_quantity); + if (count($eng_blog_posts) > 1) { + $eng_posts_title = _r('Blog'); + foreach ($eng_blog_posts as $blog_post) { + if ($posts_age_limit < strtotime($blog_post["date"])) { + $blog_post["desc"] = ''; // not needed + $fresh_eng_posts[] = $blog_post; + } + } + } + } + } + + return array($loc_posts_title, $fresh_loc_posts, $num_fresh_loc_posts, $eng_posts_title, $fresh_eng_posts); +} + /** */ function blog_link($locale) { $news = array( - 'el' => 'https://blog.mageia.org/el/', 'en' => 'https://blog.mageia.org/en/', + 'de' => 'https://blog.mageia.org/de/', + 'el' => 'https://blog.mageia.org/el/', '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 + 'nl' => 'https://blog.mageia.org/nl/', + 'pl' => 'https://blog.mageia.org/pl/', 'pt' => 'https://blog.mageia.org/pt/', + 'pt-br'=>'https://blog.mageia.org/pt/', 'ro' => 'https://blog.mageia.org/ro/', - 'ru' => 'https://blog.mageia.org/en/', // ru, when up to date + 'ru' => 'https://blog.mageia.org/ru/', + 'sv' => 'https://blog.mageia.org/sv/', 'tr' => 'https://blog.mageia.org/tr/', - /* missing: et, fi, lv, nb, nl, sl, zh-cn, zh-tw */ + 'uk' => 'https://blog.mageia.org/uk/', + /* missing: et, fi, lv, nb, sl, zh-cn, zh-tw */ ); if (!array_key_exists($locale, $news)) @@ -187,7 +277,15 @@ function blog_link($locale) function planet_link($locale) { - $planets = array('en', 'fr', 'de', 'es', 'it', 'pt'); + $planets = array( + 'en', + 'de', + 'es', + 'fr', + 'it', + 'pl', + 'pt', + 'pt-br'); $locale = in_array($locale, $planets) ? $locale : 'en'; return sprintf('https://planet.mageia.org/%s/', $locale); |