⌈⌋ ⎇ branch:  freshcode


Artifact [3c815d0f60]

Artifact 3c815d0f6093f2fde1651daad13a04d0e6dbef37:

  • File cron.daily/news_github.php — part of check-in [1534cf257a] at 2014-11-03 02:10:50 on branch trunk — Add GitHub/Archive list and cache database polling. (user: mario size: 2309)

<?php
/**
 * title: github releases news feed
 * description: fetch from cache database, build feed and releases page
 * version: 0.3
 *
 * Short summary
 *     → ./template/feed.github.htm
 * Long table
 *     → ./template/github-releases.htm
 *
 */


chdir(dirname(__DIR__));
include("./config.php");
db(new PDO("sqlite:github.db"));


// query
$recent = db("
   SELECT *
     FROM (
       SELECT *
         FROM releases
        WHERE LENGTH(repo_description) > 0
     GROUP BY repo_name
     ORDER BY t_published DESC
        LIMIT 500
          )
  ORDER BY repo_language
");

// prepare output
$lang = "";
$out = [];
$full = "";

// printout
foreach ($recent as $r) {
    $r = array_map("htmlspecialchars", $r);

    
    #-- filter some
    if (preg_match("~/(test|main)$~", $r["repo_name"])
    or  preg_match("~Contribute to .+? by creating an account on GitHub~", $r["repo_description"]))
    {
       continue;
    }


    #-- sidebar feed
    if (count($out) < 25) {
       $name = trim(strstr($r["repo_name"], "/"), "/");
       $out[] = "   <a href='$r[release_url]' title='$r[repo_description]'>$name "
              . "<em class=version title='$r[release_title]'>$r[release_tag]</em></a>";
    }


    #-- complete list
    $verdesc = input::spaces(substr($r["release_body"], 0, 200));
    $name = explode("/", $r["repo_name"]);

    // project blob    
    $full .= <<<HTML
 <tr class="github release">
    <td class=author-avatar><img src="$r[author_avatar]&s=40" alt="$r[author_login]" height=40 width=40></td>
    <td class=repo-name>
       <a href='$r[repo_url]' title='$r[repo_name]'>
          <small class=repo-org>$name[0] /</small>
          <strong class=repo-localname>$name[1]</strong>
       </a>
       <span class=repo-language>$r[repo_language]<span>
    </td>
    <td class=repo-description>
       $r[repo_description]
       <a class=repo-homepage href="$r[repo_homepage]">$r[repo_homepage]</a>
    </td>
    <td class=release>
        <a class=release-tag href='$r[release_url]'><em class=version title='$r[release_title]'>$r[release_tag]</em></a>
        <span class=release-body>$verdesc</span>
    </td>
 </tr>
 
HTML;
}

// write
file_put_contents("./template/feed.github.htm", implode("\n", $out));
file_put_contents("./template/github-releases.htm", $full);