⌈⌋ ⎇ branch:  freshcode


Artifact [f84fdd81fd]

Artifact f84fdd81fd5b72e078e94f9ec0c310ae1742e538:

  • File cron.daily/social_links.php — part of check-in [727bd10ffa] at 2014-11-08 15:23:28 on branch trunk — Added plugin meta for current cron hook timing. (user: mario size: 1447)

<?php
/**
 * api: cli
 * title: Social links count
 * description: Queries api.i-o/links for project homepages
 * version: 0.1
 * category: rpc
 * type: cron
 * x-cron: 20 03 * * *
 *
 * Retrieve social media sharing site links for project homepages.
 * Stores them in `release`.`social_links`
 *
 * Only updates latest DB entry, so a versioned history of link counts
 * will be retained. (Not that it's needed, ...)
 *
 */

// deps
chdir(dirname(__DIR__)); 
include("config.php");

// use "remotely" for implicit caching
define("IO_LINKS", "http://api.include-once.org/links/social.ajax.php");

// traverse projects
foreach (db("SELECT *, MAX(t_changed) FROM release_versions GROUP BY name ORDER BY t_published DESC")->fetchAll() as $project) {

    // homepage
    $url = $project["homepage"];
    
    // request counts
    $counts = curl()
        ->url(IO_LINKS . "?url=$url")
        ->UserAgent("cron.daily/social_links (0.1; http://freshcode.club/)")
        ->exec();
    
    // summarize
    $counts = json_decode($counts, TRUE);
    $counts = array_sum($counts);
    print "$url = $counts\n";
    
    // store
    $project["social_links"] = $counts;
    #$project->store("REPLACE");
    db("UPDATE release SET social_links=? WHERE :&",
        $counts,
        array(
            "name" => $project["name"],
            "t_changed" => $project["t_changed"],
            "t_published" => $project["t_published"],
        )
    );

}