call_hooks('remove_user',$r[0]);
- // save username (actually the nickname as it is guaranteed
+ // save username (actually the nickname as it is guaranteed
// unique), so it cannot be re-registered in the future.
q("insert into userd ( username ) values ( '%s' )",
// q("DELETE FROM `user` WHERE `uid` = %d", intval($uid));
q("UPDATE `user` SET `account_removed` = 1, `account_expires_on` = UTC_TIMESTAMP() WHERE `uid` = %d", intval($uid));
proc_run('php', "include/notifier.php", "removeme", $uid);
+
+ // Send an update to the directory
+ proc_run('php', "include/directory.php", $r[0]['url']);
+
if($uid == local_user()) {
unset($_SESSION['authenticated']);
unset($_SESSION['uid']);
$archive = get_pconfig($r[0]['uid'], 'system','archive_removed_contacts');
if($archive) {
- q("update contact set `archive` = 1, `network` = 'none', `writable` = 0 where id = %d limit 1",
+ q("update contact set `archive` = 1, `network` = 'none', `writable` = 0 where id = %d",
intval($id)
);
return;
}
- q("DELETE FROM `contact` WHERE `id` = %d LIMIT 1",
+ q("DELETE FROM `contact` WHERE `id` = %d",
intval($id)
);
q("DELETE FROM `item` WHERE `contact-id` = %d ",
'$photo' => $self['photo'],
'$thumb' => $self['thumb'],
'$published' => datetime_convert('UTC','UTC', 'now', ATOM_TIME),
- '$item_id' => 'urn:X-dfrn:' . $a->get_hostname() . ':unfollow:' . random_string(),
+ '$item_id' => 'urn:X-dfrn:' . $a->get_hostname() . ':unfollow:' . get_guid(32),
'$title' => '',
'$type' => 'text',
'$content' => t('stopped following'),
return;
if($contact['term-date'] == '0000-00-00 00:00:00') {
- q("UPDATE `contact` SET `term-date` = '%s' WHERE `id` = %d LIMIT 1",
+ q("UPDATE `contact` SET `term-date` = '%s' WHERE `id` = %d",
dbesc(datetime_convert()),
intval($contact['id'])
);
// archive them rather than delete
// though if the owner tries to unarchive them we'll start the whole process over again
- q("update contact set `archive` = 1 where id = %d limit 1",
+ q("update contact set `archive` = 1 where id = %d",
intval($contact['id'])
);
q("UPDATE `item` SET `private` = 2 WHERE `contact-id` = %d AND `uid` = %d", intval($contact['id']), intval($contact['uid']));
if(! function_exists('unmark_for_death')) {
function unmark_for_death($contact) {
// It's a miracle. Our dead contact has inexplicably come back to life.
- q("UPDATE `contact` SET `term-date` = '%s' WHERE `id` = %d LIMIT 1",
+ q("UPDATE `contact` SET `term-date` = '%s' WHERE `id` = %d",
dbesc('0000-00-00 00:00:00'),
intval($contact['id'])
);
function contact_photo_menu($contact) {
$a = get_app();
-
+
$contact_url="";
$pm_url="";
$status_link="";
$contact_url = $a->get_baseurl() . '/contacts/' . $contact['id'];
$posts_link = $a->get_baseurl() . '/network/0?nets=all&cid=' . $contact['id'];
$contact_drop_link = $a->get_baseurl() . "/contacts/" . $contact['id'] . '/drop?confirm=1';
-
+
$menu = Array(
'poke' => array(t("Poke"), $poke_link),
'status' => array(t("View Status"), $status_link),
'profile' => array(t("View Profile"), $profile_link),
- 'photos' => array(t("View Photos"), $photos_link),
- 'network' => array(t("Network Posts"), $posts_link),
+ 'photos' => array(t("View Photos"), $photos_link),
+ 'network' => array(t("Network Posts"), $posts_link),
'edit' => array(t("Edit Contact"), $contact_url),
'drop' => array(t("Drop Contact"), $contact_drop_link),
'pm' => array(t("Send PM"), $pm_url),
);
-
-
+
+
$args = array('contact' => $contact, 'menu' => &$menu);
-
+
call_hooks('contact_photo_menu', $args);
-
+
/* $o = "";
foreach($menu as $k=>$v){
if ($v!="") {
function random_profile() {
- $r = q("select url from gcontact where url like '%%://%%/profile/%%' order by rand() limit 1");
+ $r = q("SELECT `url` FROM `gcontact` WHERE `network` = '%s'
+ AND `last_contact` >= `last_failure`
+ AND `updated` > UTC_TIMESTAMP - INTERVAL 1 MONTH
+ ORDER BY rand() LIMIT 1",
+ dbesc(NETWORK_DFRN));
+
if(count($r))
return dirname($r[0]['url']);
return '';
return $r;
}
+function get_contact($url, $uid = 0) {
+ require_once("include/Scrape.php");
+
+ $data = array();
+ $contactid = 0;
+
+ // is it an address in the format user@server.tld?
+ if (!strstr($url, "http") OR strstr($url, "@")) {
+ $data = probe_url($url);
+ $url = $data["url"];
+ if ($url == "")
+ return 0;
+ }
+
+ $contact = q("SELECT `id`, `avatar-date` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d",
+ dbesc(normalise_link($url)),
+ intval($uid));
+
+ if (!$contact)
+ $contact = q("SELECT `id`, `avatar-date` FROM `contact` WHERE `alias` IN ('%s', '%s') AND `uid` = %d",
+ dbesc($url),
+ dbesc(normalise_link($url)),
+ intval($uid));
+
+ if ($contact) {
+ $contactid = $contact[0]["id"];
+
+ // Update the contact every 7 days
+ $update_photo = ($contact[0]['avatar-date'] < datetime_convert('','','now -7 days'));
+ //$update_photo = ($contact[0]['avatar-date'] < datetime_convert('','','now -12 hours'));
+
+ if (!$update_photo)
+ return($contactid);
+ } elseif ($uid != 0)
+ return 0;
+
+ if (!count($data))
+ $data = probe_url($url);
+
+ // Does this address belongs to a valid network?
+ if (!in_array($data["network"], array(NETWORK_DFRN, NETWORK_OSTATUS, NETWORK_DIASPORA)))
+ return 0;
+
+ // tempory programming. Can be deleted after 2015-02-07
+ if (($data["alias"] == "") AND (normalise_link($data["url"]) != normalise_link($url)))
+ $data["alias"] = normalise_link($url);
+
+ if ($contactid == 0) {
+ q("INSERT INTO `contact` (`uid`, `created`, `url`, `nurl`, `addr`, `alias`, `notify`, `poll`,
+ `name`, `nick`, `photo`, `network`, `pubkey`, `rel`, `priority`,
+ `batch`, `request`, `confirm`, `poco`,
+ `writable`, `blocked`, `readonly`, `pending`)
+ VALUES (%d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', '%s', '%s', '%s', 1, 0, 0, 0)",
+ intval($uid),
+ dbesc(datetime_convert()),
+ dbesc($data["url"]),
+ dbesc(normalise_link($data["url"])),
+ dbesc($data["addr"]),
+ dbesc($data["alias"]),
+ dbesc($data["notify"]),
+ dbesc($data["poll"]),
+ dbesc($data["name"]),
+ dbesc($data["nick"]),
+ dbesc($data["photo"]),
+ dbesc($data["network"]),
+ dbesc($data["pubkey"]),
+ intval(CONTACT_IS_SHARING),
+ intval($data["priority"]),
+ dbesc($data["batch"]),
+ dbesc($data["request"]),
+ dbesc($data["confirm"]),
+ dbesc($data["poco"])
+ );
+
+ $contact = q("SELECT `id` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d",
+ dbesc(normalise_link($data["url"])),
+ intval($uid));
+ if (!$contact)
+ return 0;
+
+ $contactid = $contact[0]["id"];
+ }
+
+ require_once("Photo.php");
+
+ $photos = import_profile_photo($data["photo"],$uid,$contactid);
+
+ q("UPDATE `contact` SET `photo` = '%s', `thumb` = '%s', `micro` = '%s',
+ `addr` = '%s', `alias` = '%s', `name` = '%s', `nick` = '%s',
+ `name-date` = '%s', `uri-date` = '%s', `avatar-date` = '%s' WHERE `id` = %d",
+ dbesc($photos[0]),
+ dbesc($photos[1]),
+ dbesc($photos[2]),
+ dbesc($data["addr"]),
+ dbesc($data["alias"]),
+ dbesc($data["name"]),
+ dbesc($data["nick"]),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ intval($contactid)
+ );
+
+ return $contactid;
+}