Skip to content

Commit

Permalink
wrap contacts import in to the general flickr_backups bucket; rename …
Browse files Browse the repository at this point in the history
…get_contacts as backup_contacts
  • Loading branch information
thisisaaronland committed Nov 11, 2011
1 parent a81f49f commit 8ac8b7f
Show file tree
Hide file tree
Showing 5 changed files with 211 additions and 111 deletions.
17 changes: 17 additions & 0 deletions bin/backup_contacts.php
@@ -0,0 +1,17 @@
<?php

$root = dirname(dirname(__FILE__));
ini_set("include_path", "{$root}/www:{$root}/www/include");

#

include("include/init.php");
loadlib("flickr_backups");

foreach (flickr_backups_users() as $user){
$rsp = flickr_backups_get_contacts($user);
dumper($rsp);
}

exit();
?>
116 changes: 5 additions & 111 deletions bin/get_contacts.php
Expand Up @@ -7,121 +7,15 @@

include("include/init.php");

loadlib("flickr_api");

loadlib("flickr_users");
loadlib("flickr_contacts");
loadlib("flickr_backups");

loadlib("flickr_api");
loadlib("random");

$nsid = '35034348999@N01';

$flickr_user = flickr_users_get_by_nsid($nsid);
$user = users_get_by_id($flickr_user['user_id']);

# purge and restore

$cluster_id = $user['cluster_id'];
$enc_id = AddSlashes($user['id']);

$sql = "DELETE FROM FlickrContacts WHERE user_id='{$enc_id}'";
$rsp = db_write_users($cluster_id, $sql);

# re-fetch

$method = 'flickr.contacts.getList';

$args = array(
'auth_token' => $flickr_user['auth_token'],
'per_page' => 100,
'page' => 1,
);

$pages = null;

while ((! isset($pages)) || ($pages >= $args['page'])){

$rsp = flickr_api_call($method, $args);

if (! $rsp){
exit();
}

if (! isset($pages)){
$pages = $rsp['rsp']['contacts']['pages'];
}

$contacts = $rsp['rsp']['contacts']['contact'];

if (! is_array($contacts)){
exit;
}

foreach ($contacts as $contact){

$contact_nsid = $contact['nsid'];
$contact_username = $contact['username'];

#

$flickr_contact = flickr_users_get_by_nsid($contact_nsid);

if (! $flickr_contact){

$password = random_string(32);

$user_contact = users_create_user(array(
"username" => $contact_username,
"email" => "{$contact_username}@donotsend-flickr.com",
"password" => $password,
));

$flickr_contact = flickr_users_create_user(array(
'user_id' => $user_contact['id'],
'nsid' => $contact_nsid,
# note the lack of an auth_token
));
}

#

$friend = $contact['friend'];
$family = $contact['family'];

# TODO: put me in a function...

$map = flickr_contacts_relationship_map('string keys');
$rel = 0;

if (($family) && ($friend)){
$rel = $map['frfa'];
}

else if ($family){
$rel = $map['family'];
}

else if ($friend){
$rel = $map['friend'];
}

else {
$rel = $map['contact'];
}

# echo "{$contact_username} ({$flickr_contact['user_id']}) fr:{$friend} fa:{$family} rel:{$rel}\n";

#

$insert = array(
'user_id' => $user['id'],
'contact_id' => $flickr_contact['user_id'],
'rel' => $rel,
);

$contact = flickr_contacts_add_contact($insert);
}

$args['page'] += 1;
foreach (flickr_backups_users() as $user){
$rsp = flickr_backups_get_contacts($user);
}

exit();
Expand Down
39 changes: 39 additions & 0 deletions www/include/lib_flickr_backups.php
@@ -1,6 +1,7 @@
<?php

loadlib("flickr_users");
loadlib("flickr_contacts_import");
loadlib("flickr_photos_import");
loadlib("flickr_faves_import");

Expand Down Expand Up @@ -229,4 +230,42 @@ function flickr_backups_get_faves(&$user){
}

#################################################################

function flickr_backups_get_contacts(&$user){

$backups = flickr_backups_for_user($user);

if (! isset($backups['contacts'])){

return array(
'ok' => 0,
'error' => 'backups not registered',
);
}

$start_time = time();

$rsp = flickr_contacts_purge_contacts($user);

if ($rsp['ok']){

$flickr_user = flickr_users_get_by_user_id($user['id']);
$rsp = flickr_contacts_import_for_nsid($flickr_user['nsid']);
}

if ($rsp['ok']){
$update['date_lastupdate'] = $start_time;
$update['details'] = "count: {$rsp['count_imported']}";
}

else {
$update['details'] = "update failed ($start_time) : {$rsp['error']}";
}

flickr_backups_update($backup, $update);

return $rsp;
}

#################################################################
?>
46 changes: 46 additions & 0 deletions www/include/lib_flickr_contacts.php
Expand Up @@ -74,4 +74,50 @@ function flickr_contacts_for_user(&$user, $more=array()){
}

#################################################################

function flickr_contacts_purge_contacts(&$user){

$cluster_id = $user['cluster_id'];
$enc_id = AddSlashes($user['id']);

$sql = "DELETE FROM FlickrContacts WHERE user_id='{$enc_id}'";
$rsp = db_write_users($cluster_id, $sql);

return $rsp;
}

#################################################################

# $contact is a thing as returned by the Flickr API

function flickr_contacts_calculate_relationship(&$contact){

$friend = $contact['friend'];
$family = $contact['family'];

$map = flickr_contacts_relationship_map('string keys');
$rel = 0;

if (($family) && ($friend)){
$rel = $map['frfa'];
}

else if ($family){
$rel = $map['family'];
}

else if ($friend){
$rel = $map['friend'];
}

else {
$rel = $map['contact'];
}

# echo "{$contact_username} ({$flickr_contact['user_id']}) fr:{$friend} fa:{$family} rel:{$rel}\n";
return $rel;
}

#################################################################

?>
104 changes: 104 additions & 0 deletions www/include/lib_flickr_contacts_import.php
@@ -0,0 +1,104 @@
<?php

loadlib("flickr_api");
loadlib("flickr_users");
loadlib("flickr_contacts");
loadlib("random");

#################################################################

function flickr_contacts_import_for_nsid($nsid, $more=array()){

$flickr_user = flickr_users_get_by_nsid($nsid);
$user = users_get_by_id($flickr_user['user_id']);

if (! $user){
return array(
'ok' => 0,
'error' => 'not a valid user',
);
}

$method = 'flickr.contacts.getList';
$count_contacts = 0;

$args = array(
'auth_token' => $flickr_user['auth_token'],
'per_page' => 100,
'page' => 1,
);

$pages = null;

while ((! isset($pages)) || ($pages >= $args['page'])){

$rsp = flickr_api_call($method, $args);

if (! $rsp){
return array(
'ok' => 0,
'error' => 'The Flickr API is wigging out...',
);
}

if (! isset($pages)){
$pages = $rsp['rsp']['contacts']['pages'];
}

$contacts = $rsp['rsp']['contacts']['contact'];

if (! is_array($contacts)){
return array(
'ok' => 0,
'error' => 'The Flickr API did not return any contacts',
);
}

foreach ($contacts as $contact){

$contact_nsid = $contact['nsid'];
$contact_username = $contact['username'];

$flickr_contact = flickr_users_get_by_nsid($contact_nsid);

if (! $flickr_contact){

$password = random_string(32);

$user_contact = users_create_user(array(
"username" => $contact_username,
"email" => "{$contact_username}@donotsend-flickr.com",
"password" => $password,
));

$flickr_contact = flickr_users_create_user(array(
'user_id' => $user_contact['id'],
'nsid' => $contact_nsid,
# note the lack of an auth_token
));
}

$rel = flickr_contacts_calculate_relationship($contact);

$insert = array(
'user_id' => $user['id'],
'contact_id' => $flickr_contact['user_id'],
'rel' => $rel,
);

$contact = flickr_contacts_add_contact($insert);
$count_contacts ++;
}

$args['page'] += 1;
}

return array(
'ok' => 1,
'count_imported' => $count_contacts,
);
}

#################################################################

?>

0 comments on commit 8ac8b7f

Please sign in to comment.