X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2FContact.php;h=920ec3c2b406f91054815e6927a09734a5c1106d;hb=af5da5bece626f0a8b42055fa4fae465e4cd7a23;hp=a6429bbf49eced95df08533580c48bfd3087327f;hpb=6e7bd68ebb027b90398eee4fcc3bd73912a881e3;p=friendica.git diff --git a/include/Contact.php b/include/Contact.php index a6429bbf49..920ec3c2b4 100644 --- a/include/Contact.php +++ b/include/Contact.php @@ -15,7 +15,7 @@ function user_remove($uid) { 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' )", @@ -46,6 +46,10 @@ function user_remove($uid) { // 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']); @@ -109,7 +113,7 @@ function terminate_friendship($user,$self,$contact) { '$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'), @@ -191,7 +195,7 @@ if(! function_exists('contact_photo_menu')){ function contact_photo_menu($contact) { $a = get_app(); - + $contact_url=""; $pm_url=""; $status_link=""; @@ -222,24 +226,24 @@ function contact_photo_menu($contact) { $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!="") { @@ -263,7 +267,12 @@ function contact_photo_menu($contact) { 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 ''; @@ -293,3 +302,108 @@ function contacts_not_grouped($uid,$start = 0,$count = 0) { 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; +}