From 5ee728972e5e8d16c482fe82a0dd5ecde6ba26b2 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 19 Nov 2017 17:05:21 -0500 Subject: [PATCH] Remove include/Contact.php - Remove all mentions to include/Contact.php --- include/Contact.php | 900 ------------------------------ include/bbcode.php | 1 - include/contact_widgets.php | 2 - include/conversation.php | 1 - include/items.php | 1 - include/threads.php | 2 - mod/admin.php | 2 - mod/allfriends.php | 1 - mod/common.php | 1 - mod/contacts.php | 1 - mod/dfrn_notify.php | 1 - mod/dirfind.php | 1 - mod/display.php | 2 - mod/follow.php | 1 - mod/hovercard.php | 2 - mod/item.php | 1 - mod/nogroup.php | 2 - mod/profiles.php | 2 - mod/randprof.php | 2 - mod/removeme.php | 1 - mod/unfollow.php | 1 - mod/viewcontacts.php | 1 - src/Core/NotificationsManager.php | 1 - src/Model/GlobalContact.php | 1 - src/Protocol/DFRN.php | 1 - src/Protocol/Diaspora.php | 1 - src/Protocol/OStatus.php | 1 - src/Protocol/PortableContact.php | 1 - src/Worker/Expire.php | 1 - src/Worker/Notifier.php | 1 - src/Worker/OnePoll.php | 1 - 31 files changed, 938 deletions(-) delete mode 100644 include/Contact.php diff --git a/include/Contact.php b/include/Contact.php deleted file mode 100644 index cd1696af56..0000000000 --- a/include/Contact.php +++ /dev/null @@ -1,900 +0,0 @@ - $uid), array("limit" => 1)); - - call_hooks('remove_user',$r); - - // save username (actually the nickname as it is guaranteed - // unique), so it cannot be re-registered in the future. - - dba::insert('userd', array('username' => $r['nickname'])); - - // The user and related data will be deleted in "cron_expire_and_remove_users" (cronjobs.php) - q("UPDATE `user` SET `account_removed` = 1, `account_expires_on` = UTC_TIMESTAMP() WHERE `uid` = %d", intval($uid)); - Worker::add(PRIORITY_HIGH, "Notifier", "removeme", $uid); - - // Send an update to the directory - Worker::add(PRIORITY_LOW, "Directory", $r['url']); - - if($uid == local_user()) { - unset($_SESSION['authenticated']); - unset($_SESSION['uid']); - goaway(System::baseUrl()); - } -} - - -function contact_remove($id) { - - // We want just to make sure that we don't delete our "self" contact - $r = q("SELECT `uid` FROM `contact` WHERE `id` = %d AND NOT `self` LIMIT 1", - intval($id) - ); - if (!DBM::is_result($r) || !intval($r[0]['uid'])) { - return; - } - - $archive = PConfig::get($r[0]['uid'], 'system','archive_removed_contacts'); - if ($archive) { - q("update contact set `archive` = 1, `network` = 'none', `writable` = 0 where id = %d", - intval($id) - ); - return; - } - - dba::delete('contact', array('id' => $id)); - - // Delete the rest in the background - Worker::add(PRIORITY_LOW, 'RemoveContact', $id); -} - - -// sends an unfriend message. Does not remove the contact - -function terminate_friendship($user,$self,$contact) { - - /// @TODO Get rid of this, include/datetime.php should care about it by itself - $a = get_app(); - - require_once 'include/datetime.php'; - - if ($contact['network'] === NETWORK_OSTATUS) { - // create an unfollow slap - $item = array(); - $item['verb'] = NAMESPACE_OSTATUS."/unfollow"; - $item['follow'] = $contact["url"]; - $slap = OStatus::salmon($item, $user); - - if ((x($contact,'notify')) && (strlen($contact['notify']))) { - require_once 'include/salmon.php'; - slapper($user,$contact['notify'],$slap); - } - } elseif ($contact['network'] === NETWORK_DIASPORA) { - Diaspora::send_unshare($user,$contact); - } elseif ($contact['network'] === NETWORK_DFRN) { - DFRN::deliver($user,$contact,'placeholder', 1); - } - -} - - -// Contact has refused to recognise us as a friend. We will start a countdown. -// If they still don't recognise us in 32 days, the relationship is over, -// and we won't waste any more time trying to communicate with them. -// This provides for the possibility that their database is temporarily messed -// up or some other transient event and that there's a possibility we could recover from it. - -function mark_for_death($contact) { - - if($contact['archive']) - return; - - if ($contact['term-date'] <= NULL_DATE) { - q("UPDATE `contact` SET `term-date` = '%s' WHERE `id` = %d", - dbesc(datetime_convert()), - intval($contact['id']) - ); - - if ($contact['url'] != '') { - q("UPDATE `contact` SET `term-date` = '%s' - WHERE `nurl` = '%s' AND `term-date` <= '1000-00-00'", - dbesc(datetime_convert()), - dbesc(normalise_link($contact['url'])) - ); - } - } else { - - /// @todo - /// We really should send a notification to the owner after 2-3 weeks - /// so they won't be surprised when the contact vanishes and can take - /// remedial action if this was a serious mistake or glitch - - /// @todo - /// Check for contact vitality via probing - - $expiry = $contact['term-date'] . ' + 32 days '; - if(datetime_convert() > datetime_convert('UTC','UTC',$expiry)) { - - // relationship is really truly dead. - // 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", - intval($contact['id']) - ); - - if ($contact['url'] != '') { - q("UPDATE `contact` SET `archive` = 1 WHERE `nurl` = '%s'", - dbesc(normalise_link($contact['url'])) - ); - } - } - } - -} - -function unmark_for_death($contact) { - - $r = q("SELECT `term-date` FROM `contact` WHERE `id` = %d AND (`term-date` > '%s' OR `archive`)", - intval($contact['id']), - dbesc('1000-00-00 00:00:00') - ); - - // We don't need to update, we never marked this contact as dead - if (!DBM::is_result($r)) { - return; - } - - // It's a miracle. Our dead contact has inexplicably come back to life. - $fields = array('term-date' => NULL_DATE, 'archive' => false); - dba::update('contact', $fields, array('id' => $contact['id'])); - - if ($contact['url'] != '') { - dba::update('contact', $fields, array('nurl' => normalise_link($contact['url']))); - } -} - -/** - * @brief Get contact data for a given profile link - * - * The function looks at several places (contact table and gcontact table) for the contact - * It caches its result for the same script execution to prevent duplicate calls - * - * @param string $url The profile link - * @param int $uid User id - * @param array $default If not data was found take this data as default value - * - * @return array Contact data - */ -function get_contact_details_by_url($url, $uid = -1, $default = array()) { - static $cache = array(); - - if ($url == '') { - return $default; - } - - if ($uid == -1) { - $uid = local_user(); - } - - if (isset($cache[$url][$uid])) { - return $cache[$url][$uid]; - } - - $ssl_url = str_replace('http://', 'https://', $url); - - // Fetch contact data from the contact table for the given user - $s = dba::p("SELECT `id`, `id` AS `cid`, 0 AS `gid`, 0 AS `zid`, `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`, `xmpp`, - `keywords`, `gender`, `photo`, `thumb`, `micro`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `contact-type`, `bd` AS `birthday`, `self` - FROM `contact` WHERE `nurl` = ? AND `uid` = ?", - normalise_link($url), $uid); - $r = dba::inArray($s); - - // Fetch contact data from the contact table for the given user, checking with the alias - if (!DBM::is_result($r)) { - $s = dba::p("SELECT `id`, `id` AS `cid`, 0 AS `gid`, 0 AS `zid`, `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`, `xmpp`, - `keywords`, `gender`, `photo`, `thumb`, `micro`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `contact-type`, `bd` AS `birthday`, `self` - FROM `contact` WHERE `alias` IN (?, ?, ?) AND `uid` = ?", - normalise_link($url), $url, $ssl_url, $uid); - $r = dba::inArray($s); - } - - // Fetch the data from the contact table with "uid=0" (which is filled automatically) - if (!DBM::is_result($r)) { - $s = dba::p("SELECT `id`, 0 AS `cid`, `id` AS `zid`, 0 AS `gid`, `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`, `xmpp`, - `keywords`, `gender`, `photo`, `thumb`, `micro`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `contact-type`, `bd` AS `birthday`, 0 AS `self` - FROM `contact` WHERE `nurl` = ? AND `uid` = 0", - normalise_link($url)); - $r = dba::inArray($s); - } - - // Fetch the data from the contact table with "uid=0" (which is filled automatically) - checked with the alias - if (!DBM::is_result($r)) { - $s = dba::p("SELECT `id`, 0 AS `cid`, `id` AS `zid`, 0 AS `gid`, `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`, `xmpp`, - `keywords`, `gender`, `photo`, `thumb`, `micro`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `contact-type`, `bd` AS `birthday`, 0 AS `self` - FROM `contact` WHERE `alias` IN (?, ?, ?) AND `uid` = 0", - normalise_link($url), $url, $ssl_url); - $r = dba::inArray($s); - } - - // Fetch the data from the gcontact table - if (!DBM::is_result($r)) { - $s = dba::p("SELECT 0 AS `id`, 0 AS `cid`, `id` AS `gid`, 0 AS `zid`, 0 AS `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`, '' AS `xmpp`, - `keywords`, `gender`, `photo`, `photo` AS `thumb`, `photo` AS `micro`, `community` AS `forum`, 0 AS `prv`, `community`, `contact-type`, `birthday`, 0 AS `self` - FROM `gcontact` WHERE `nurl` = ?", - normalise_link($url)); - $r = dba::inArray($s); - } - - if (DBM::is_result($r)) { - // If there is more than one entry we filter out the connector networks - if (count($r) > 1) { - foreach ($r AS $id => $result) { - if ($result["network"] == NETWORK_STATUSNET) { - unset($r[$id]); - } - } - } - - $profile = array_shift($r); - - // "bd" always contains the upcoming birthday of a contact. - // "birthday" might contain the birthday including the year of birth. - if ($profile["birthday"] > '0001-01-01') { - $bd_timestamp = strtotime($profile["birthday"]); - $month = date("m", $bd_timestamp); - $day = date("d", $bd_timestamp); - - $current_timestamp = time(); - $current_year = date("Y", $current_timestamp); - $current_month = date("m", $current_timestamp); - $current_day = date("d", $current_timestamp); - - $profile["bd"] = $current_year."-".$month."-".$day; - $current = $current_year."-".$current_month."-".$current_day; - - if ($profile["bd"] < $current) { - $profile["bd"] = (++$current_year)."-".$month."-".$day; - } - } else { - $profile["bd"] = '0001-01-01'; - } - } else { - $profile = $default; - } - - if (($profile["photo"] == "") && isset($default["photo"])) { - $profile["photo"] = $default["photo"]; - } - - if (($profile["name"] == "") && isset($default["name"])) { - $profile["name"] = $default["name"]; - } - - if (($profile["network"] == "") && isset($default["network"])) { - $profile["network"] = $default["network"]; - } - - if (($profile["thumb"] == "") && isset($profile["photo"])) { - $profile["thumb"] = $profile["photo"]; - } - - if (($profile["micro"] == "") && isset($profile["thumb"])) { - $profile["micro"] = $profile["thumb"]; - } - - if ((($profile["addr"] == "") || ($profile["name"] == "")) && ($profile["gid"] != 0) && - in_array($profile["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS))) { - Worker::add(PRIORITY_LOW, "UpdateGContact", $profile["gid"]); - } - - // Show contact details of Diaspora contacts only if connected - if (($profile["cid"] == 0) && ($profile["network"] == NETWORK_DIASPORA)) { - $profile["location"] = ""; - $profile["about"] = ""; - $profile["gender"] = ""; - $profile["birthday"] = '0001-01-01'; - } - - $cache[$url][$uid] = $profile; - - return $profile; -} - -/** - * @brief Get contact data for a given address - * - * The function looks at several places (contact table and gcontact table) for the contact - * - * @param string $addr The profile link - * @param int $uid User id - * - * @return array Contact data - */ -function get_contact_details_by_addr($addr, $uid = -1) { - static $cache = array(); - - if ($addr == '') { - return array(); - } - - if ($uid == -1) { - $uid = local_user(); - } - - // Fetch contact data from the contact table for the given user - $r = q("SELECT `id`, `id` AS `cid`, 0 AS `gid`, 0 AS `zid`, `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`, `xmpp`, - `keywords`, `gender`, `photo`, `thumb`, `micro`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `contact-type`, `bd` AS `birthday`, `self` - FROM `contact` WHERE `addr` = '%s' AND `uid` = %d", - dbesc($addr), intval($uid)); - - // Fetch the data from the contact table with "uid=0" (which is filled automatically) - if (!DBM::is_result($r)) - $r = q("SELECT `id`, 0 AS `cid`, `id` AS `zid`, 0 AS `gid`, `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`, `xmpp`, - `keywords`, `gender`, `photo`, `thumb`, `micro`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `contact-type`, `bd` AS `birthday`, 0 AS `self` - FROM `contact` WHERE `addr` = '%s' AND `uid` = 0", - dbesc($addr)); - - // Fetch the data from the gcontact table - if (!DBM::is_result($r)) - $r = q("SELECT 0 AS `id`, 0 AS `cid`, `id` AS `gid`, 0 AS `zid`, 0 AS `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`, '' AS `xmpp`, - `keywords`, `gender`, `photo`, `photo` AS `thumb`, `photo` AS `micro`, `community` AS `forum`, 0 AS `prv`, `community`, `contact-type`, `birthday`, 0 AS `self` - FROM `gcontact` WHERE `addr` = '%s'", - dbesc($addr)); - - if (!DBM::is_result($r)) { - $data = Probe::uri($addr); - - $profile = get_contact_details_by_url($data['url'], $uid); - } else { - $profile = $r[0]; - } - - return $profile; -} - -if (! function_exists('contact_photo_menu')) { -function contact_photo_menu($contact, $uid = 0) -{ - $a = get_app(); - - $contact_url = ''; - $pm_url = ''; - $status_link = ''; - $photos_link = ''; - $posts_link = ''; - $contact_drop_link = ''; - $poke_link = ''; - - if ($uid == 0) { - $uid = local_user(); - } - - if ($contact['uid'] != $uid) { - if ($uid == 0) { - $profile_link = zrl($contact['url']); - $menu = Array('profile' => array(t('View Profile'), $profile_link, true)); - - return $menu; - } - - $r = q("SELECT * FROM `contact` WHERE `nurl` = '%s' AND `network` = '%s' AND `uid` = %d", - dbesc($contact['nurl']), dbesc($contact['network']), intval($uid)); - if ($r) { - return contact_photo_menu($r[0], $uid); - } else { - $profile_link = zrl($contact['url']); - $connlnk = 'follow/?url='.$contact['url']; - $menu = array( - 'profile' => array(t('View Profile'), $profile_link, true), - 'follow' => array(t('Connect/Follow'), $connlnk, true) - ); - - return $menu; - } - } - - $sparkle = false; - if ($contact['network'] === NETWORK_DFRN) { - $sparkle = true; - $profile_link = System::baseUrl() . '/redir/' . $contact['id']; - } else { - $profile_link = $contact['url']; - } - - if ($profile_link === 'mailbox') { - $profile_link = ''; - } - - if ($sparkle) { - $status_link = $profile_link . '?url=status'; - $photos_link = $profile_link . '?url=photos'; - $profile_link = $profile_link . '?url=profile'; - } - - if (in_array($contact['network'], array(NETWORK_DFRN, NETWORK_DIASPORA))) { - $pm_url = System::baseUrl() . '/message/new/' . $contact['id']; - } - - if ($contact['network'] == NETWORK_DFRN) { - $poke_link = System::baseUrl() . '/poke/?f=&c=' . $contact['id']; - } - - $contact_url = System::baseUrl() . '/contacts/' . $contact['id']; - - $posts_link = System::baseUrl() . '/contacts/' . $contact['id'] . '/posts'; - $contact_drop_link = System::baseUrl() . '/contacts/' . $contact['id'] . '/drop?confirm=1'; - - /** - * menu array: - * "name" => [ "Label", "link", (bool)Should the link opened in a new tab? ] - */ - $menu = array( - 'status' => array(t("View Status"), $status_link, true), - 'profile' => array(t("View Profile"), $profile_link, true), - 'photos' => array(t("View Photos"), $photos_link, true), - 'network' => array(t("Network Posts"), $posts_link, false), - 'edit' => array(t("View Contact"), $contact_url, false), - 'drop' => array(t("Drop Contact"), $contact_drop_link, false), - 'pm' => array(t("Send PM"), $pm_url, false), - 'poke' => array(t("Poke"), $poke_link, false), - ); - - - $args = array('contact' => $contact, 'menu' => &$menu); - - call_hooks('contact_photo_menu', $args); - - $menucondensed = array(); - - foreach ($menu AS $menuname => $menuitem) { - if ($menuitem[1] != '') { - $menucondensed[$menuname] = $menuitem; - } - } - - return $menucondensed; -}} - - -function random_profile() { - $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 (DBM::is_result($r)) - return dirname($r[0]['url']); - return ''; -} - - -function contacts_not_grouped($uid,$start = 0,$count = 0) { - - if(! $count) { - $r = q("select count(*) as total from contact where uid = %d and self = 0 and id not in (select distinct(`contact-id`) from group_member where uid = %d) ", - intval($uid), - intval($uid) - ); - - return $r; - - - } - - $r = q("select * from contact where uid = %d and self = 0 and id not in (select distinct(`contact-id`) from group_member where uid = %d) and blocked = 0 and pending = 0 limit %d, %d", - intval($uid), - intval($uid), - intval($start), - intval($count) - ); - - return $r; -} - -/** - * @brief Fetch the contact id for a given url and user - * - * First lookup in the contact table to find a record matching either `url`, `nurl`, - * `addr` or `alias`. - * - * If there's no record and we aren't looking for a public contact, we quit. - * If there's one, we check that it isn't time to update the picture else we - * directly return the found contact id. - * - * Second, we probe the provided $url wether it's http://server.tld/profile or - * nick@server.tld. We quit if we can't get any info back. - * - * Third, we create the contact record if it doesn't exist - * - * Fourth, we update the existing record with the new data (avatar, alias, nick) - * if there's any updates - * - * @param string $url Contact URL - * @param integer $uid The user id for the contact (0 = public contact) - * @param boolean $no_update Don't update the contact - * - * @return integer Contact ID - */ -function get_contact($url, $uid = 0, $no_update = false) { - logger("Get contact data for url ".$url." and user ".$uid." - ".System::callstack(), LOGGER_DEBUG); - - $data = array(); - $contact_id = 0; - - if ($url == '') { - return 0; - } - - // We first try the nurl (http://server.tld/nick), most common case - $contact = dba::select('contact', array('id', 'avatar-date'), array('nurl' => normalise_link($url), 'uid' => $uid), array('limit' => 1)); - - // Then the addr (nick@server.tld) - if (!DBM::is_result($contact)) { - $contact = dba::select('contact', array('id', 'avatar-date'), array('addr' => $url, 'uid' => $uid), array('limit' => 1)); - } - - // Then the alias (which could be anything) - if (!DBM::is_result($contact)) { - // The link could be provided as http although we stored it as https - $ssl_url = str_replace('http://', 'https://', $url); - $r = dba::p("SELECT `id`, `avatar-date` FROM `contact` WHERE `alias` IN (?, ?, ?) AND `uid` = ? LIMIT 1", - $url, normalise_link($url), $ssl_url, $uid); - $contact = dba::fetch($r); - dba::close($r); - } - - if (DBM::is_result($contact)) { - $contact_id = $contact["id"]; - - // Update the contact every 7 days - $update_contact = ($contact['avatar-date'] < datetime_convert('','','now -7 days')); - - // We force the update if the avatar is empty - if ($contact['avatar'] == '') { - $update_contact = true; - } - - if (!$update_contact || $no_update) { - return $contact_id; - } - } elseif ($uid != 0) { - // Non-existing user-specific contact, exiting - return 0; - } - - $data = Probe::uri($url, "", $uid); - - // Last try in gcontact for unsupported networks - if (!in_array($data["network"], array(NETWORK_DFRN, NETWORK_OSTATUS, NETWORK_DIASPORA, NETWORK_PUMPIO, NETWORK_MAIL))) { - if ($uid != 0) { - return 0; - } - - // Get data from the gcontact table - $gcontacts = dba::select('gcontact', array('name', 'nick', 'url', 'photo', 'addr', 'alias', 'network'), - array('nurl' => normalise_link($url)), array('limit' => 1)); - if (!DBM::is_result($gcontacts)) { - return 0; - } - - $data = array_merge($data, $gcontacts); - } - - if (!$contact_id && ($data["alias"] != '') && ($data["alias"] != $url)) { - $contact_id = get_contact($data["alias"], $uid, true); - } - - $url = $data["url"]; - if (!$contact_id) { - dba::insert('contact', array('uid' => $uid, 'created' => datetime_convert(), 'url' => $data["url"], - 'nurl' => normalise_link($data["url"]), 'addr' => $data["addr"], - 'alias' => $data["alias"], 'notify' => $data["notify"], 'poll' => $data["poll"], - 'name' => $data["name"], 'nick' => $data["nick"], 'photo' => $data["photo"], - 'keywords' => $data["keywords"], 'location' => $data["location"], 'about' => $data["about"], - 'network' => $data["network"], 'pubkey' => $data["pubkey"], - 'rel' => CONTACT_IS_SHARING, 'priority' => $data["priority"], - 'batch' => $data["batch"], 'request' => $data["request"], - 'confirm' => $data["confirm"], 'poco' => $data["poco"], - 'name-date' => datetime_convert(), 'uri-date' => datetime_convert(), - 'avatar-date' => datetime_convert(), 'writable' => 1, 'blocked' => 0, - 'readonly' => 0, 'pending' => 0)); - - $contacts = q("SELECT `id` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d ORDER BY `id` LIMIT 2", - dbesc(normalise_link($data["url"])), - intval($uid)); - if (!DBM::is_result($contacts)) { - return 0; - } - - $contact_id = $contacts[0]["id"]; - - // Update the newly created contact from data in the gcontact table - $gcontact = dba::select('gcontact', array('location', 'about', 'keywords', 'gender'), - array('nurl' => normalise_link($data["url"])), array('limit' => 1)); - if (DBM::is_result($gcontact)) { - // Only use the information when the probing hadn't fetched these values - if ($data['keywords'] != '') { - unset($gcontact['keywords']); - } - if ($data['location'] != '') { - unset($gcontact['location']); - } - if ($data['about'] != '') { - unset($gcontact['about']); - } - dba::update('contact', $gcontact, array('id' => $contact_id)); - } - - if (count($contacts) > 1 && $uid == 0 && $contact_id != 0 && $data["url"] != "") { - dba::delete('contact', array("`nurl` = ? AND `uid` = 0 AND `id` != ? AND NOT `self`", - normalise_link($data["url"]), $contact_id)); - } - } - - require_once "Photo.php"; - - update_contact_avatar($data["photo"], $uid, $contact_id); - - $contact = dba::select('contact', array('url', 'nurl', 'addr', 'alias', 'name', 'nick', 'keywords', 'location', 'about', 'avatar-date'), - array('id' => $contact_id), array('limit' => 1)); - - // This condition should always be true - if (!DBM::is_result($contact)) { - return $contact_id; - } - - $updated = array('addr' => $data['addr'], - 'alias' => $data['alias'], - 'url' => $data['url'], - 'nurl' => normalise_link($data['url']), - 'name' => $data['name'], - 'nick' => $data['nick']); - - if ($data['keywords'] != '') { - $updated['keywords'] = $data['keywords']; - } - if ($data['location'] != '') { - $updated['location'] = $data['location']; - } - if ($data['about'] != '') { - $updated['about'] = $data['about']; - } - - if (($data["addr"] != $contact["addr"]) || ($data["alias"] != $contact["alias"])) { - $updated['uri-date'] = datetime_convert(); - } - if (($data["name"] != $contact["name"]) || ($data["nick"] != $contact["nick"])) { - $updated['name-date'] = datetime_convert(); - } - - $updated['avatar-date'] = datetime_convert(); - - dba::update('contact', $updated, array('id' => $contact_id), $contact); - - return $contact_id; -} - -/** - * @brief Checks if the contact is blocked - * - * @param int $cid contact id - * - * @return boolean Is the contact blocked? - */ -function blockedContact($cid) { - if ($cid == 0) { - return false; - } - - $blocked = dba::select('contact', array('blocked'), array('id' => $cid), array('limit' => 1)); - if (!DBM::is_result($blocked)) { - return false; - } - return (bool)$blocked['blocked']; -} - -/** - * @brief Checks if the contact is hidden - * - * @param int $cid contact id - * - * @return boolean Is the contact hidden? - */ -function hiddenContact($cid) { - if ($cid == 0) { - return false; - } - - $hidden = dba::select('contact', array('hidden'), array('id' => $cid), array('limit' => 1)); - if (!DBM::is_result($hidden)) { - return false; - } - return (bool)$hidden['hidden']; -} - -/** - * @brief Returns posts from a given gcontact - * - * @param App $a argv application class - * @param int $gcontact_id Global contact - * - * @return string posts in HTML - */ -function posts_from_gcontact(App $a, $gcontact_id) { - - require_once 'include/conversation.php'; - - // There are no posts with "uid = 0" with connector networks - // This speeds up the query a lot - $r = q("SELECT `network` FROM `gcontact` WHERE `id` = %d", dbesc($gcontact_id)); - if (in_array($r[0]["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS, ""))) - $sql = "(`item`.`uid` = 0 OR (`item`.`uid` = %d AND `item`.`private`))"; - else - $sql = "`item`.`uid` = %d"; - - $r = q("SELECT `item`.`uri`, `item`.*, `item`.`id` AS `item_id`, - `author-name` AS `name`, `owner-avatar` AS `photo`, - `owner-link` AS `url`, `owner-avatar` AS `thumb` - FROM `item` - WHERE `gcontact-id` = %d AND $sql AND - NOT `deleted` AND NOT `moderated` AND `visible` - ORDER BY `item`.`created` DESC LIMIT %d, %d", - intval($gcontact_id), - intval(local_user()), - intval($a->pager['start']), - intval($a->pager['itemspage']) - ); - - $o = conversation($a, $r, 'community', false); - - $o .= alt_pager($a, count($r)); - - return $o; -} -/** - * @brief Returns posts from a given contact url - * - * @param App $a argv application class - * @param string $contact_url Contact URL - * - * @return string posts in HTML - */ -function posts_from_contact_url(App $a, $contact_url) { - - require_once 'include/conversation.php'; - - // There are no posts with "uid = 0" with connector networks - // This speeds up the query a lot - $r = q("SELECT `network`, `id` AS `author-id`, `contact-type` FROM `contact` - WHERE `contact`.`nurl` = '%s' AND `contact`.`uid` = 0", - dbesc(normalise_link($contact_url))); - - if (!DBM::is_result($r)) { - return ''; - } - - if (in_array($r[0]["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS, ""))) { - $sql = "(`item`.`uid` = 0 OR (`item`.`uid` = %d AND NOT `item`.`global`))"; - } else { - $sql = "`item`.`uid` = %d"; - } - - $author_id = intval($r[0]["author-id"]); - - $contact = ($r[0]["contact-type"] == ACCOUNT_TYPE_COMMUNITY ? 'owner-id' : 'author-id'); - - $r = q(item_query()." AND `item`.`".$contact."` = %d AND ".$sql. - " ORDER BY `item`.`created` DESC LIMIT %d, %d", - intval($author_id), - intval(local_user()), - intval($a->pager['start']), - intval($a->pager['itemspage']) - ); - - $o = conversation($a, $r, 'community', false); - - $o .= alt_pager($a, count($r)); - - return $o; -} - -/** - * @brief Returns a formatted location string from the given profile array - * - * @param array $profile Profile array (Generated from the "profile" table) - * - * @return string Location string - */ -function formatted_location($profile) { - $location = ''; - - if($profile['locality']) - $location .= $profile['locality']; - - if($profile['region'] && ($profile['locality'] != $profile['region'])) { - if($location) - $location .= ', '; - - $location .= $profile['region']; - } - - if($profile['country-name']) { - if($location) - $location .= ', '; - - $location .= $profile['country-name']; - } - - return $location; -} - -/** - * @brief Returns the account type name - * - * The function can be called with either the user or the contact array - * - * @param array $contact contact or user array - */ -function account_type($contact) { - - // There are several fields that indicate that the contact or user is a forum - // "page-flags" is a field in the user table, - // "forum" and "prv" are used in the contact table. They stand for PAGE_COMMUNITY and PAGE_PRVGROUP. - // "community" is used in the gcontact table and is true if the contact is PAGE_COMMUNITY or PAGE_PRVGROUP. - if((isset($contact['page-flags']) && (intval($contact['page-flags']) == PAGE_COMMUNITY)) - || (isset($contact['page-flags']) && (intval($contact['page-flags']) == PAGE_PRVGROUP)) - || (isset($contact['forum']) && intval($contact['forum'])) - || (isset($contact['prv']) && intval($contact['prv'])) - || (isset($contact['community']) && intval($contact['community']))) - $type = ACCOUNT_TYPE_COMMUNITY; - else - $type = ACCOUNT_TYPE_PERSON; - - // The "contact-type" (contact table) and "account-type" (user table) are more general then the chaos from above. - if (isset($contact["contact-type"])) - $type = $contact["contact-type"]; - if (isset($contact["account-type"])) - $type = $contact["account-type"]; - - switch($type) { - case ACCOUNT_TYPE_ORGANISATION: - $account_type = t("Organisation"); - break; - case ACCOUNT_TYPE_NEWS: - $account_type = t('News'); - break; - case ACCOUNT_TYPE_COMMUNITY: - $account_type = t("Forum"); - break; - default: - $account_type = ""; - break; - } - - return $account_type; -} diff --git a/include/bbcode.php b/include/bbcode.php index 105e9595e7..83ea3fcfa6 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -11,7 +11,6 @@ require_once 'include/oembed.php'; require_once 'include/event.php'; require_once 'include/map.php'; require_once 'mod/proxy.php'; -require_once 'include/Contact.php'; require_once 'include/plaintext.php'; function bb_PictureCacheExt($matches) { diff --git a/include/contact_widgets.php b/include/contact_widgets.php index efb258ecae..036504a4f5 100644 --- a/include/contact_widgets.php +++ b/include/contact_widgets.php @@ -22,8 +22,6 @@ function follow_widget($value = "") { } function findpeople_widget() { - require_once 'include/Contact.php'; - $a = get_app(); $global_dir = Config::get('system', 'directory'); diff --git a/include/conversation.php b/include/conversation.php index 62c4d678e0..5e764e6706 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -513,7 +513,6 @@ if (!function_exists('conversation')) { function conversation(App $a, $items, $mode, $update, $preview = false) { require_once 'include/bbcode.php'; - require_once 'include/Contact.php'; require_once 'mod/proxy.php'; $ssl_state = ((local_user()) ? true : false); diff --git a/include/items.php b/include/items.php index 8862eb1abd..1f55112174 100644 --- a/include/items.php +++ b/include/items.php @@ -29,7 +29,6 @@ require_once 'include/email.php'; require_once 'include/threads.php'; require_once 'include/plaintext.php'; require_once 'include/feed.php'; -require_once 'include/Contact.php'; require_once 'mod/share.php'; require_once 'include/enotify.php'; require_once 'include/group.php'; diff --git a/include/threads.php b/include/threads.php index e776a37e7e..107f2f76b1 100644 --- a/include/threads.php +++ b/include/threads.php @@ -99,7 +99,6 @@ function add_shadow_thread($itemid) { if (!DBM::is_result($r)) { // Preparing public shadow (removing user specific data) require_once("include/items.php"); - require_once("include/Contact.php"); unset($item[0]['id']); $item[0]['uid'] = 0; @@ -159,7 +158,6 @@ function add_shadow_entry($itemid) { // Preparing public shadow (removing user specific data) require_once("include/items.php"); - require_once("include/Contact.php"); unset($item['id']); $item['uid'] = 0; diff --git a/mod/admin.php b/mod/admin.php index 34055ba5d3..7a7ca14103 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -1444,7 +1444,6 @@ function admin_page_users_post(App $a) { notice(sprintf(tt("%s user blocked/unblocked", "%s users blocked/unblocked", count($users)), count($users))); } if (x($_POST,'page_users_delete')) { - require_once("include/Contact.php"); foreach ($users as $uid) { User::remove($uid); } @@ -1492,7 +1491,6 @@ function admin_page_users(App $a) { case "delete": check_form_security_token_redirectOnErr('/admin/users', 'admin_users', 't'); // delete user - require_once("include/Contact.php"); User::remove($uid); notice(sprintf(t("User '%s' deleted"), $user[0]['username']).EOL); diff --git a/mod/allfriends.php b/mod/allfriends.php index c88ce96312..3cfe6c0f9e 100644 --- a/mod/allfriends.php +++ b/mod/allfriends.php @@ -8,7 +8,6 @@ use Friendica\Database\DBM; use Friendica\Model\GlobalContact; use Friendica\Object\Contact; -require_once 'include/Contact.php'; require_once 'include/contact_selectors.php'; require_once 'mod/contacts.php'; diff --git a/mod/common.php b/mod/common.php index c0bab4171c..9933c3f51f 100644 --- a/mod/common.php +++ b/mod/common.php @@ -7,7 +7,6 @@ use Friendica\Database\DBM; use Friendica\Model\GlobalContact; use Friendica\Object\Contact; -require_once 'include/Contact.php'; require_once 'include/contact_selectors.php'; require_once 'mod/contacts.php'; diff --git a/mod/contacts.php b/mod/contacts.php index c8c73b51fa..1859c2aa60 100644 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -8,7 +8,6 @@ use Friendica\Model\GlobalContact; use Friendica\Network\Probe; use Friendica\Object\Contact; -require_once 'include/Contact.php'; require_once 'include/contact_selectors.php'; require_once 'mod/proxy.php'; require_once 'include/Photo.php'; diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php index 8ad599c9d4..8e2b18e496 100644 --- a/mod/dfrn_notify.php +++ b/mod/dfrn_notify.php @@ -128,7 +128,6 @@ function dfrn_notify_post(App $a) { logger('dfrn_notify: data: ' . $data, LOGGER_DATA); if ($dissolve == 1) { - require_once('include/Contact.php'); // Relationship is dissolved permanently Contact::remove($importer['id']); logger('relationship dissolved : ' . $importer['name'] . ' dissolved ' . $importer['username']); diff --git a/mod/dirfind.php b/mod/dirfind.php index 5a31ef9962..4ba122b566 100644 --- a/mod/dirfind.php +++ b/mod/dirfind.php @@ -12,7 +12,6 @@ use Friendica\Object\Contact; use Friendica\Protocol\PortableContact; require_once 'include/contact_widgets.php'; -require_once 'include/Contact.php'; require_once 'include/contact_selectors.php'; require_once 'mod/contacts.php'; diff --git a/mod/display.php b/mod/display.php index aa885f5bd2..e81e654acb 100644 --- a/mod/display.php +++ b/mod/display.php @@ -115,8 +115,6 @@ function display_init(App $a) { function display_fetchauthor($a, $item) { - require_once("include/Contact.php"); - $profiledata = array(); $profiledata["uid"] = -1; $profiledata["nickname"] = $item["author-name"]; diff --git a/mod/follow.php b/mod/follow.php index 567a955cc3..b5e73ca9a4 100644 --- a/mod/follow.php +++ b/mod/follow.php @@ -7,7 +7,6 @@ use Friendica\Network\Probe; use Friendica\Object\Contact; require_once 'include/follow.php'; -require_once 'include/Contact.php'; require_once 'include/contact_selectors.php'; function follow_post(App $a) { diff --git a/mod/hovercard.php b/mod/hovercard.php index 41de07c616..5542fe5b98 100644 --- a/mod/hovercard.php +++ b/mod/hovercard.php @@ -11,8 +11,6 @@ use Friendica\App; use Friendica\Core\Config; use Friendica\Model\GlobalContact; - -require_once "include/Contact.php"; use Friendica\Object\Contact; function hovercard_init(App $a) { diff --git a/mod/item.php b/mod/item.php index 7b0f21a815..8055d63aec 100644 --- a/mod/item.php +++ b/mod/item.php @@ -33,7 +33,6 @@ require_once 'include/files.php'; require_once 'include/threads.php'; require_once 'include/text.php'; require_once 'include/items.php'; -require_once 'include/Contact.php'; function item_post(App $a) { diff --git a/mod/nogroup.php b/mod/nogroup.php index c50ec486c2..a66a70a1e0 100644 --- a/mod/nogroup.php +++ b/mod/nogroup.php @@ -6,7 +6,6 @@ use Friendica\App; use Friendica\Database\DBM; use Friendica\Object\Contact; -require_once 'include/Contact.php'; require_once 'include/contact_selectors.php'; function nogroup_init(App $a) @@ -32,7 +31,6 @@ function nogroup_content(App $a) return ''; } - require_once 'include/Contact.php'; $r = Contact::getUngroupedList(local_user()); if (DBM::is_result($r)) { $a->set_pager_total($r[0]['total']); diff --git a/mod/profiles.php b/mod/profiles.php index 03265ccf4e..75023beb64 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -10,8 +10,6 @@ use Friendica\Core\Worker; use Friendica\Database\DBM; use Friendica\Model\GlobalContact; use Friendica\Network\Probe; - -require_once 'include/Contact.php'; use Friendica\Object\Profile; function profiles_init(App $a) { diff --git a/mod/randprof.php b/mod/randprof.php index 55b77aec8b..38d05c53e4 100644 --- a/mod/randprof.php +++ b/mod/randprof.php @@ -5,8 +5,6 @@ use Friendica\Core\System; use Friendica\Model\GlobalContact; function randprof_init(App $a) { - require_once('include/Contact.php'); - $x = GlobalContact::getRandomUrl(); if ($x) { diff --git a/mod/removeme.php b/mod/removeme.php index 4b5591c0b5..b1ad2e5ca0 100644 --- a/mod/removeme.php +++ b/mod/removeme.php @@ -29,7 +29,6 @@ function removeme_post(App $a) { $encrypted = hash('whirlpool',trim($_POST['qxz_password'])); if ((strlen($a->user['password'])) && ($encrypted === $a->user['password'])) { - require_once('include/Contact.php'); User::remove($a->user['uid']); // NOTREACHED } diff --git a/mod/unfollow.php b/mod/unfollow.php index 652394ac59..3f94fb5760 100644 --- a/mod/unfollow.php +++ b/mod/unfollow.php @@ -6,7 +6,6 @@ use Friendica\Database\DBM; use Friendica\Object\Contact; require_once 'include/follow.php'; -require_once 'include/Contact.php'; require_once 'include/contact_selectors.php'; function unfollow_post(App $a) { diff --git a/mod/viewcontacts.php b/mod/viewcontacts.php index 0a1021a795..30ae92f8e3 100644 --- a/mod/viewcontacts.php +++ b/mod/viewcontacts.php @@ -5,7 +5,6 @@ use Friendica\Core\Config; use Friendica\Database\DBM; use Friendica\Object\Contact; -require_once('include/Contact.php'); require_once('include/contact_selectors.php'); function viewcontacts_init(App $a) { diff --git a/src/Core/NotificationsManager.php b/src/Core/NotificationsManager.php index b3146a1d3d..42d514e618 100644 --- a/src/Core/NotificationsManager.php +++ b/src/Core/NotificationsManager.php @@ -14,7 +14,6 @@ use Friendica\Object\Contact; require_once 'include/html2plain.php'; require_once 'include/datetime.php'; require_once 'include/bbcode.php'; -require_once 'include/Contact.php'; /** * @brief Methods for read and write notifications from/to database diff --git a/src/Model/GlobalContact.php b/src/Model/GlobalContact.php index fe45d5bb70..e73bfb9075 100644 --- a/src/Model/GlobalContact.php +++ b/src/Model/GlobalContact.php @@ -18,7 +18,6 @@ use Exception; require_once 'include/datetime.php'; require_once 'include/network.php'; require_once 'include/html2bbcode.php'; -require_once 'include/Contact.php'; require_once 'include/Photo.php'; /** diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 8547d23026..592bca83c4 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -23,7 +23,6 @@ use dba; use DOMDocument; use DomXPath; -require_once "include/Contact.php"; require_once "include/enotify.php"; require_once "include/threads.php"; require_once "include/items.php"; diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index bf1988d2c6..ccd1ec594b 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -27,7 +27,6 @@ use SimpleXMLElement; require_once 'include/items.php'; require_once 'include/bb2diaspora.php'; -require_once 'include/Contact.php'; require_once 'include/Photo.php'; require_once 'include/group.php'; require_once 'include/datetime.php'; diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 4b8b6d4703..dfdc75498d 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -18,7 +18,6 @@ use dba; use DOMDocument; use DomXPath; -require_once 'include/Contact.php'; require_once 'include/threads.php'; require_once 'include/html2bbcode.php'; require_once 'include/bbcode.php'; diff --git a/src/Protocol/PortableContact.php b/src/Protocol/PortableContact.php index 06d47f2f9c..6bd1750101 100644 --- a/src/Protocol/PortableContact.php +++ b/src/Protocol/PortableContact.php @@ -26,7 +26,6 @@ use Exception; require_once 'include/datetime.php'; require_once 'include/network.php'; require_once 'include/html2bbcode.php'; -require_once 'include/Contact.php'; require_once 'include/Photo.php'; class PortableContact diff --git a/src/Worker/Expire.php b/src/Worker/Expire.php index 11f12df030..1485f3570f 100644 --- a/src/Worker/Expire.php +++ b/src/Worker/Expire.php @@ -17,7 +17,6 @@ class Expire { require_once('include/datetime.php'); require_once('include/items.php'); - require_once('include/Contact.php'); load_hooks(); diff --git a/src/Worker/Notifier.php b/src/Worker/Notifier.php index f092282c31..142bf866d0 100644 --- a/src/Worker/Notifier.php +++ b/src/Worker/Notifier.php @@ -124,7 +124,6 @@ class Notifier { if (!$r) { return; } - require_once 'include/Contact.php'; foreach ($r as $contact) { Contact::terminateFriendship($user, $contact); } diff --git a/src/Worker/OnePoll.php b/src/Worker/OnePoll.php index f8f9fcd1db..122b400bb8 100644 --- a/src/Worker/OnePoll.php +++ b/src/Worker/OnePoll.php @@ -20,7 +20,6 @@ Class OnePoll require_once 'include/datetime.php'; require_once 'include/items.php'; - require_once 'include/Contact.php'; require_once 'include/email.php'; require_once 'include/queue_fn.php'; -- 2.39.5