Example #1
0
function updateFavsFromUser($user_nsid, $page = 1)
{
    include_once 'Flickr/API.php';
    global $db;
    static $user_nsid_prev = null;
    static $flickr = null;
    static $lastFav = null;
    static $num_fav = null;
    static $nb_favs = null;
    if (!is_null($user_nsid_prev) && $user_nsid_prev != $user_nsid) {
        $lastFav = null;
        $num_fav = null;
        $nb_favs = null;
    }
    $user_nsid_prev = $user_nsid;
    if (is_null($flickr)) {
        $flickr = new Flickr_API(array('api_key' => FLICKR_APIKEY));
    }
    if (is_null($lastFav)) {
        // Get last favorite already in database
        $date_faved = $db->getOne("SELECT date_faved FROM favorites WHERE user_nsid = '" . $user_nsid . "' ORDER BY date_faved DESC LIMIT 0,1");
        if (is_null($date_faved) || PEAR::isError($date_faved)) {
            $lastFav = -1;
        } else {
            $lastFav = $date_faved;
        }
    }
    if (is_null($num_fav)) {
        $num_fav = 0;
    }
    if (is_null($nb_favs)) {
        $nb_favs = 0;
    }
    $response = $flickr->callMethod('flickr.favorites.getPublicList', array('email' => FLICKR_ACCOUNT_EMAIL, 'password' => FLICKR_ACCOUNT_PASSWORD, 'user_id' => $user_nsid, 'per_page' => 50, 'page' => $page, 'min_fave_date' => $lastFav));
    if ($response && $response->attributes['stat'] == 'ok') {
        $data = $response->getNodeAt('photos');
        $pages = intval($data->attributes['pages']);
        foreach ($data->children as $child) {
            $num_fav++;
            if ($child->name == 'photo') {
                if (isset($child->attributes['id']) && $child->attributes['id'] != '') {
                    $photo_id = $child->attributes['id'];
                    $photographer_nsid = $child->attributes['owner'];
                    $date_faved = $child->attributes['date_faved'];
                    if (addFav($user_nsid, $photo_id, $photographer_nsid, $date_faved)) {
                        $nb_favs++;
                    }
                } else {
                    if (SHOW_DEBUG) {
                        echo '<h4>Photo num ' . $num_fav . ' has no id! (previous one was ' . $photo_id . ')</h4>' . "\n";
                        echo '<p>user_id => ' . $user_nsid . ', per_page => 50, page => ' . $page . ', min_fave_date => ' . $lastFav . '</p>' . "\n";
                        echo '<pre>' . print_r($child, true) . '</pre><hr />' . "\n";
                        flush();
                    }
                }
            }
        }
        if ($page < $pages) {
            updateFavsFromUser($user_nsid, $page + 1);
        } else {
            $db->query("REPLACE INTO users (user_nsid, date_updated) VALUES ('" . $user_nsid . "', " . time() . ")");
            if ($user_nsid == FLICKR_USER_NSID || $db->getOne("SELECT COUNT(photo_id) FROM favorites  WHERE user_nsid = '" . $user_nsid . "' AND photo_id IN (SELECT photo_id FROM favorites WHERE user_nsid = '" . FLICKR_USER_NSID . "')") >= NEIGHBOURHOOD_DISTANCE) {
                $db->query("UPDATE favorites SET checked=1 WHERE user_nsid = '" . $user_nsid . "'");
            } else {
                if ($user_nsid != FLICKR_USER_NSID && $db->getOne("SELECT COUNT(photo_id) FROM favorites  WHERE user_nsid = '" . $user_nsid . "' AND photo_id IN (SELECT photo_id FROM ignored)") >= IGNORED_DISTANCE) {
                    $db->query("UPDATE users SET ignored=1 WHERE user_nsid = '" . $user_nsid . "'");
                }
                $db->query("DELETE FROM favorites WHERE user_nsid = '" . $user_nsid . "'");
                $nb_favs = 0;
            }
        }
    } elseif (SHOW_DEBUG) {
        var_dump($response);
    }
    return $nb_favs;
}
Example #2
0
require_once 'inc/init.inc.php';
require_once 'inc/layout_page_top.inc.php';
require_once 'inc/photo.inc.php';
require_once 'inc/favorites.inc.php';
ob_end_flush();
echo '<h2>Updating data</h2>';
echo '<p>Current date/time: ' . date("d/m/Y H:i") . '</p>';
echo '<h3>Updating <a href="http://www.flickr.com/photos/' . FLICKR_USER_NSID . '/favorites/">my favorites</a>...</h3>' . "\n";
flush();
$nb = updateFavsFromUser(FLICKR_USER_NSID);
echo '<p>' . $nb . ' fav' . ($nb > 1 ? 's' : '') . ' added!</p>' . "\n";
flush();
if ($olderUser = $db->getOne("SELECT user_nsid FROM users WHERE user_nsid != '" . FLICKR_USER_NSID . "' AND ignored=0 ORDER BY date_updated LIMIT 0,1")) {
    echo '<h3>Updating <a href="http://www.flickr.com/photos/' . $olderUser . '/favorites/">' . $olderUser . '\'s favorites</a>...</h3>' . "\n";
    flush();
    $nb = updateFavsFromUser($olderUser);
    echo '<p>' . $nb . ' fav' . ($nb > 1 ? 's' : '') . ' added!</p>' . "\n";
    flush();
}
if ($olderPhoto = $db->getOne("SELECT photo_id FROM favorites WHERE user_nsid = '" . FLICKR_USER_NSID . "' ORDER BY date_updated LIMIT 0,1")) {
    echo '<h3>Updating users who have favorited ' . $olderPhoto . '...</h3>' . "\n";
    flush();
    echo '<ol class="gallery">' . getPhotoHTML($olderPhoto) . '</ol>' . "\n";
    flush();
    $nb = updateUsersFromFav($olderPhoto);
    echo '<p style="clear: left">' . $nb . ' user' . ($nb > 1 ? 's' : '') . ' added!</p>' . "\n";
    flush();
}
require 'inc/close.inc.php';
echo '<p>Done in ' . (time() - $begin) . ' seconds.</p>';
if (!SHOW_DEBUG) {