aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorfilip <filip.komar@gmail.com>2018-04-27 20:03:03 +0200
committerfilip <filip.komar@gmail.com>2018-04-27 20:03:03 +0200
commit1e35475cee83c4e19f7c165011064ae77231924b (patch)
treeddc16f0c90d25f72faccc997c92fd435b3cfe13c /lib
parentb379ed46dd9bf2ef5b7e8dd29a4c7b8b8259101b (diff)
downloadwww-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')
-rw-r--r--lib/news.php124
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);