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; }
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) {