From f43aaf5227af34b870bae3715f2cb1de293aa272 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 19 Nov 2017 16:50:49 -0500 Subject: [PATCH 1/5] Move Item and Conversation from Core to Object - Move BaseObject from Core\ to Friendica\ --- include/conversation.php | 4 ++-- index.php | 2 +- src/{Core => }/BaseObject.php | 8 ++++---- src/{Core => Object}/Conversation.php | 12 ++++++------ src/{Core => Object}/Item.php | 20 ++++++++++---------- 5 files changed, 23 insertions(+), 23 deletions(-) rename src/{Core => }/BaseObject.php (79%) rename src/{Core => Object}/Conversation.php (96%) rename src/{Core => Object}/Item.php (98%) diff --git a/include/conversation.php b/include/conversation.php index 218d7405b..3eae184a8 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -4,11 +4,11 @@ */ use Friendica\App; use Friendica\Core\Config; -use Friendica\Core\Conversation; -use Friendica\Core\Item; use Friendica\Core\PConfig; use Friendica\Core\System; use Friendica\Database\DBM; +use Friendica\Object\Conversation; +use Friendica\Object\Item; require_once "include/bbcode.php"; require_once "include/acl_selectors.php"; diff --git a/index.php b/index.php index 5e8860afd..0290a38be 100644 --- a/index.php +++ b/index.php @@ -9,7 +9,7 @@ */ use Friendica\App; -use Friendica\Core\BaseObject; +use Friendica\BaseObject; use Friendica\Core\System; use Friendica\Core\Config; use Friendica\Core\Worker; diff --git a/src/Core/BaseObject.php b/src/BaseObject.php similarity index 79% rename from src/Core/BaseObject.php rename to src/BaseObject.php index d6ea17f70..01957164c 100644 --- a/src/Core/BaseObject.php +++ b/src/BaseObject.php @@ -1,8 +1,8 @@ getApp(); + $a = self::getApp(); switch ($mode) { case 'network': @@ -165,7 +165,7 @@ class Conversation extends BaseObject */ public function getTemplateData($conv_responses) { - $a = get_app(); + $a = self::getApp(); $result = array(); $i = 0; diff --git a/src/Core/Item.php b/src/Object/Item.php similarity index 98% rename from src/Core/Item.php rename to src/Object/Item.php index 24e524d2e..082ecae03 100644 --- a/src/Core/Item.php +++ b/src/Object/Item.php @@ -1,14 +1,14 @@ getApp(); + $a = self::getApp(); $this->data = $data; $this->setTemplate('wall'); @@ -109,7 +109,7 @@ class Item extends BaseObject $result = array(); - $a = $this->getApp(); + $a = self::getApp(); $item = $this->getData(); $edited = false; @@ -186,7 +186,7 @@ class Item extends BaseObject } if (!isset($item['author-thumb']) || ($item['author-thumb'] == "")) { - $author_contact = get_contact_details_by_url($item['author-link'], $conv->getProfileOwner()); + $author_contact = Contact::getDetailsByURL($item['author-link'], $conv->getProfileOwner()); if ($author_contact["thumb"]) { $item['author-thumb'] = $author_contact["thumb"]; } else { @@ -195,7 +195,7 @@ class Item extends BaseObject } if (!isset($item['owner-thumb']) || ($item['owner-thumb'] == "")) { - $owner_contact = get_contact_details_by_url($item['owner-link'], $conv->getProfileOwner()); + $owner_contact = Contact::getDetailsByURL($item['owner-link'], $conv->getProfileOwner()); if ($owner_contact["thumb"]) { $item['owner-thumb'] = $owner_contact["thumb"]; } else { @@ -752,7 +752,7 @@ class Item extends BaseObject */ private function getCommentBox($indent) { - $a = $this->getApp(); + $a = self::getApp(); if (!$this->isToplevel() && !(Config::get('system', 'thread_allow') && $a->theme_thread_allow)) { return ''; } @@ -828,7 +828,7 @@ class Item extends BaseObject */ protected function checkWallToWall() { - $a = $this->getApp(); + $a = self::getApp(); $conv = $this->getConversation(); $this->wall_to_wall = false; From b92fc24ff06681f445edff0d45f8f81a7e25ebe6 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 19 Nov 2017 16:55:28 -0500 Subject: [PATCH 2/5] Add Contact Object - Add Profile Object - Add User Model - Add use statements --- boot.php | 1 + include/acl_selectors.php | 1 + include/api.php | 1 + include/bb2diaspora.php | 1 + include/bbcode.php | 1 + include/conversation.php | 1 + include/identity.php | 1 + include/items.php | 1 + include/like.php | 1 + include/post_update.php | 1 + include/threads.php | 1 + mod/admin.php | 1 + mod/allfriends.php | 1 + mod/cal.php | 1 + mod/common.php | 1 + mod/contacts.php | 1 + mod/crepair.php | 1 + mod/dfrn_notify.php | 1 + mod/directory.php | 1 + mod/dirfind.php | 1 + mod/display.php | 1 + mod/follow.php | 1 + mod/hovercard.php | 1 + mod/item.php | 1 + mod/match.php | 1 + mod/message.php | 1 + mod/network.php | 1 + mod/nogroup.php | 1 + mod/photos.php | 1 + mod/ping.php | 1 + mod/profiles.php | 1 + mod/randprof.php | 1 + mod/removeme.php | 1 + mod/suggest.php | 1 + mod/unfollow.php | 1 + mod/videos.php | 1 + mod/viewcontacts.php | 1 + src/Core/NotificationsManager.php | 1 + src/Model/GlobalContact.php | 1 + src/Model/User.php | 50 ++ src/Network/Probe.php | 1 + src/Object/Contact.php | 830 ++++++++++++++++++++++++++++++ src/Object/Profile.php | 46 ++ src/Protocol/DFRN.php | 4 +- src/Protocol/Diaspora.php | 2 + src/Protocol/OStatus.php | 1 + src/Protocol/PortableContact.php | 1 + src/Worker/Delivery.php | 1 + src/Worker/Notifier.php | 1 + src/Worker/OnePoll.php | 1 + 50 files changed, 976 insertions(+), 1 deletion(-) create mode 100644 src/Model/User.php create mode 100644 src/Object/Contact.php create mode 100644 src/Object/Profile.php diff --git a/boot.php b/boot.php index 402273bdd..698587eb5 100644 --- a/boot.php +++ b/boot.php @@ -27,6 +27,7 @@ use Friendica\Core\Config; use Friendica\Core\PConfig; use Friendica\Core\Worker; use Friendica\Database\DBM; +use Friendica\Object\Contact; use Friendica\Util\Lock; require_once 'include/network.php'; diff --git a/include/acl_selectors.php b/include/acl_selectors.php index a18a1b33a..f20668578 100644 --- a/include/acl_selectors.php +++ b/include/acl_selectors.php @@ -8,6 +8,7 @@ use Friendica\App; use Friendica\Core\Config; use Friendica\Database\DBM; use Friendica\Model\GlobalContact; +use Friendica\Object\Contact; require_once "include/contact_selectors.php"; require_once "include/contact_widgets.php"; diff --git a/include/api.php b/include/api.php index d25aeb8c5..730352423 100644 --- a/include/api.php +++ b/include/api.php @@ -12,6 +12,7 @@ use Friendica\Core\Config; use Friendica\Core\NotificationsManager; use Friendica\Core\Worker; use Friendica\Database\DBM; +use Friendica\Object\Contact; use Friendica\Protocol\Diaspora; use Friendica\Util\XML; diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index 20309b9d2..2188cf8c7 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -3,6 +3,7 @@ use Friendica\App; use Friendica\Core\System; use Friendica\Network\Probe; +use Friendica\Object\Contact; use League\HTMLToMarkdown\HtmlConverter; diff --git a/include/bbcode.php b/include/bbcode.php index 89311e775..609ca922b 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -5,6 +5,7 @@ use Friendica\Content\Smilies; use Friendica\Core\Cache; use Friendica\Core\System; use Friendica\Core\Config; +use Friendica\Object\Contact; require_once 'include/oembed.php'; require_once 'include/event.php'; diff --git a/include/conversation.php b/include/conversation.php index 3eae184a8..aea085569 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -7,6 +7,7 @@ use Friendica\Core\Config; use Friendica\Core\PConfig; use Friendica\Core\System; use Friendica\Database\DBM; +use Friendica\Object\Contact; use Friendica\Object\Conversation; use Friendica\Object\Item; diff --git a/include/identity.php b/include/identity.php index 6991a8dcc..31c17ef21 100644 --- a/include/identity.php +++ b/include/identity.php @@ -10,6 +10,7 @@ use Friendica\Core\PConfig; use Friendica\Core\System; use Friendica\Core\Worker; use Friendica\Database\DBM; +use Friendica\Object\Contact; require_once 'include/ForumManager.php'; require_once 'include/bbcode.php'; diff --git a/include/items.php b/include/items.php index ed2204f60..63ecc791b 100644 --- a/include/items.php +++ b/include/items.php @@ -12,6 +12,7 @@ use Friendica\Core\Worker; use Friendica\Core\System; use Friendica\Database\DBM; use Friendica\Model\GlobalContact; +use Friendica\Object\Contact; use Friendica\Protocol\DFRN; use Friendica\Protocol\OStatus; use Friendica\Util\Lock; diff --git a/include/like.php b/include/like.php index 5e05121f6..e8d69689b 100644 --- a/include/like.php +++ b/include/like.php @@ -4,6 +4,7 @@ use Friendica\App; use Friendica\Core\System; use Friendica\Core\Worker; use Friendica\Database\DBM; +use Friendica\Object\Contact; use Friendica\Protocol\Diaspora; /** diff --git a/include/post_update.php b/include/post_update.php index 8a346b7a2..f77cb0184 100644 --- a/include/post_update.php +++ b/include/post_update.php @@ -6,6 +6,7 @@ use Friendica\Core\Config; use Friendica\Database\DBM; use Friendica\Model\GlobalContact; +use Friendica\Object\Contact; /** * @brief Calls the post update functions diff --git a/include/threads.php b/include/threads.php index 16d4915fd..a1a6c7825 100644 --- a/include/threads.php +++ b/include/threads.php @@ -3,6 +3,7 @@ use Friendica\App; use Friendica\Core\System; use Friendica\Database\DBM; +use Friendica\Object\Contact; function add_thread($itemid, $onlyshadow = false) { $items = q("SELECT `uid`, `created`, `edited`, `commented`, `received`, `changed`, `wall`, `private`, `pubmail`, diff --git a/mod/admin.php b/mod/admin.php index ee456a23f..67313e060 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -11,6 +11,7 @@ use Friendica\Core\System; use Friendica\Core\Config; use Friendica\Core\Worker; use Friendica\Database\DBM; +use Friendica\Model\User; require_once("include/enotify.php"); require_once("include/text.php"); diff --git a/mod/allfriends.php b/mod/allfriends.php index 0a6989e4d..13a85e6aa 100644 --- a/mod/allfriends.php +++ b/mod/allfriends.php @@ -6,6 +6,7 @@ use Friendica\App; use Friendica\Core\System; use Friendica\Database\DBM; use Friendica\Model\GlobalContact; +use Friendica\Object\Contact; require_once 'include/Contact.php'; require_once 'include/contact_selectors.php'; diff --git a/mod/cal.php b/mod/cal.php index 1bfc8d95d..f3cb9f633 100644 --- a/mod/cal.php +++ b/mod/cal.php @@ -11,6 +11,7 @@ use Friendica\Core\Config; use Friendica\Core\PConfig; use Friendica\Core\System; use Friendica\Database\DBM; +use Friendica\Object\Contact; require_once('include/event.php'); require_once('include/redir.php'); diff --git a/mod/common.php b/mod/common.php index ab5343093..94c884771 100644 --- a/mod/common.php +++ b/mod/common.php @@ -5,6 +5,7 @@ use Friendica\App; use Friendica\Database\DBM; use Friendica\Model\GlobalContact; +use Friendica\Object\Contact; require_once 'include/Contact.php'; require_once 'include/contact_selectors.php'; diff --git a/mod/contacts.php b/mod/contacts.php index 10a4f6b1b..dba7680ba 100644 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -6,6 +6,7 @@ use Friendica\Core\Worker; use Friendica\Database\DBM; use Friendica\Model\GlobalContact; use Friendica\Network\Probe; +use Friendica\Object\Contact; require_once 'include/Contact.php'; require_once 'include/contact_selectors.php'; diff --git a/mod/crepair.php b/mod/crepair.php index a73429e15..f9c25845d 100644 --- a/mod/crepair.php +++ b/mod/crepair.php @@ -3,6 +3,7 @@ use Friendica\App; use Friendica\Core\Config; use Friendica\Database\DBM; +use Friendica\Object\Contact; require_once("include/contact_selectors.php"); require_once("mod/contacts.php"); diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php index 15cda13ad..74f6d4e9f 100644 --- a/mod/dfrn_notify.php +++ b/mod/dfrn_notify.php @@ -9,6 +9,7 @@ use Friendica\App; use Friendica\Core\Config; use Friendica\Database\DBM; +use Friendica\Object\Contact; use Friendica\Protocol\DFRN; require_once 'include/items.php'; diff --git a/mod/directory.php b/mod/directory.php index b32a58b35..269dc03d3 100644 --- a/mod/directory.php +++ b/mod/directory.php @@ -3,6 +3,7 @@ use Friendica\App; use Friendica\Core\Config; use Friendica\Database\DBM; +use Friendica\Object\Contact; function directory_init(App $a) { $a->set_pager_itemspage(60); diff --git a/mod/dirfind.php b/mod/dirfind.php index 89df7c885..c8a9709ab 100644 --- a/mod/dirfind.php +++ b/mod/dirfind.php @@ -8,6 +8,7 @@ use Friendica\Core\System; use Friendica\Core\Worker; use Friendica\Model\GlobalContact; use Friendica\Network\Probe; +use Friendica\Object\Contact; use Friendica\Protocol\PortableContact; require_once 'include/contact_widgets.php'; diff --git a/mod/display.php b/mod/display.php index 570582343..f36266e68 100644 --- a/mod/display.php +++ b/mod/display.php @@ -4,6 +4,7 @@ use Friendica\App; use Friendica\Core\Config; use Friendica\Core\System; use Friendica\Database\DBM; +use Friendica\Object\Contact; use Friendica\Protocol\DFRN; function display_init(App $a) { diff --git a/mod/follow.php b/mod/follow.php index 38ec83dc0..b3a503ec0 100644 --- a/mod/follow.php +++ b/mod/follow.php @@ -4,6 +4,7 @@ use Friendica\App; use Friendica\Core\Config; use Friendica\Core\System; use Friendica\Network\Probe; +use Friendica\Object\Contact; require_once 'include/follow.php'; require_once 'include/Contact.php'; diff --git a/mod/hovercard.php b/mod/hovercard.php index a5a41e263..a1d861067 100644 --- a/mod/hovercard.php +++ b/mod/hovercard.php @@ -13,6 +13,7 @@ use Friendica\Core\Config; use Friendica\Model\GlobalContact; require_once "include/Contact.php"; +use Friendica\Object\Contact; function hovercard_init(App $a) { // Just for testing purposes diff --git a/mod/item.php b/mod/item.php index 2fcaa6c3f..040ea7687 100644 --- a/mod/item.php +++ b/mod/item.php @@ -22,6 +22,7 @@ use Friendica\Core\Worker; use Friendica\Database\DBM; use Friendica\Model\GlobalContact; use Friendica\Network\Probe; +use Friendica\Object\Contact; use Friendica\Protocol\Diaspora; require_once 'include/crypto.php'; diff --git a/mod/match.php b/mod/match.php index 7258fd9c7..b5e1ea31f 100644 --- a/mod/match.php +++ b/mod/match.php @@ -6,6 +6,7 @@ use Friendica\App; use Friendica\Core\Config; use Friendica\Core\System; use Friendica\Database\DBM; +use Friendica\Object\Contact; require_once 'include/text.php'; require_once 'include/contact_widgets.php'; diff --git a/mod/message.php b/mod/message.php index 07145a6be..ecd377b7d 100644 --- a/mod/message.php +++ b/mod/message.php @@ -4,6 +4,7 @@ use Friendica\App; use Friendica\Content\Smilies; use Friendica\Core\System; use Friendica\Database\DBM; +use Friendica\Object\Contact; require_once 'include/acl_selectors.php'; require_once 'include/message.php'; diff --git a/mod/network.php b/mod/network.php index 662c306f5..8008fcc06 100644 --- a/mod/network.php +++ b/mod/network.php @@ -5,6 +5,7 @@ use Friendica\Core\System; use Friendica\Core\Config; use Friendica\Core\PConfig; use Friendica\Database\DBM; +use Friendica\Object\Contact; require_once 'include/conversation.php'; require_once 'include/group.php'; diff --git a/mod/nogroup.php b/mod/nogroup.php index e212b30dc..d88722e3f 100644 --- a/mod/nogroup.php +++ b/mod/nogroup.php @@ -4,6 +4,7 @@ */ use Friendica\App; use Friendica\Database\DBM; +use Friendica\Object\Contact; require_once 'include/Contact.php'; require_once 'include/contact_selectors.php'; diff --git a/mod/photos.php b/mod/photos.php index 1546bd9a8..3efa4a12e 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -6,6 +6,7 @@ use Friendica\Core\Config; use Friendica\Core\Worker; use Friendica\Database\DBM; use Friendica\Network\Probe; +use Friendica\Object\Contact; require_once 'include/Photo.php'; require_once 'include/photos.php'; diff --git a/mod/ping.php b/mod/ping.php index 00ee848dc..e722295b2 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -7,6 +7,7 @@ use Friendica\Core\Cache; use Friendica\Core\System; use Friendica\Core\PConfig; use Friendica\Database\DBM; +use Friendica\Object\Contact; use Friendica\Util\XML; require_once 'include/datetime.php'; diff --git a/mod/profiles.php b/mod/profiles.php index bbce17c33..835dd59f1 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -12,6 +12,7 @@ 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 f835780e0..79057b495 100644 --- a/mod/randprof.php +++ b/mod/randprof.php @@ -2,6 +2,7 @@ use Friendica\App; use Friendica\Core\System; +use Friendica\Model\GlobalContact; function randprof_init(App $a) { require_once('include/Contact.php'); diff --git a/mod/removeme.php b/mod/removeme.php index 5dcd33e8f..dcb07a5be 100644 --- a/mod/removeme.php +++ b/mod/removeme.php @@ -2,6 +2,7 @@ use Friendica\App; use Friendica\Core\System; +use Friendica\Model\User; function removeme_post(App $a) { diff --git a/mod/suggest.php b/mod/suggest.php index bb23fc8cb..cb2b3f9c4 100644 --- a/mod/suggest.php +++ b/mod/suggest.php @@ -6,6 +6,7 @@ use Friendica\App; use Friendica\Core\System; use Friendica\Database\DBM; use Friendica\Model\GlobalContact; +use Friendica\Object\Contact; require_once 'include/contact_widgets.php'; diff --git a/mod/unfollow.php b/mod/unfollow.php index 58b4397ca..28af7f86e 100644 --- a/mod/unfollow.php +++ b/mod/unfollow.php @@ -3,6 +3,7 @@ use Friendica\App; use Friendica\Core\System; use Friendica\Database\DBM; +use Friendica\Object\Contact; require_once 'include/follow.php'; require_once 'include/Contact.php'; diff --git a/mod/videos.php b/mod/videos.php index a46f5de1a..662da4ca4 100644 --- a/mod/videos.php +++ b/mod/videos.php @@ -5,6 +5,7 @@ use Friendica\Core\Config; use Friendica\Core\System; use Friendica\Core\Worker; use Friendica\Database\DBM; +use Friendica\Object\Contact; require_once('include/items.php'); require_once('include/acl_selectors.php'); diff --git a/mod/viewcontacts.php b/mod/viewcontacts.php index 8c35be77d..4747330d6 100644 --- a/mod/viewcontacts.php +++ b/mod/viewcontacts.php @@ -3,6 +3,7 @@ use Friendica\App; use Friendica\Core\Config; use Friendica\Database\DBM; +use Friendica\Object\Contact; require_once('include/Contact.php'); require_once('include/contact_selectors.php'); diff --git a/src/Core/NotificationsManager.php b/src/Core/NotificationsManager.php index 318d5a8e8..5e2f1ad1f 100644 --- a/src/Core/NotificationsManager.php +++ b/src/Core/NotificationsManager.php @@ -9,6 +9,7 @@ namespace Friendica\Core; use Friendica\Core\Pconfig; use Friendica\Core\System; use Friendica\Database\DBM; +use Friendica\Object\Contact; require_once 'include/html2plain.php'; require_once 'include/datetime.php'; diff --git a/src/Model/GlobalContact.php b/src/Model/GlobalContact.php index 1ca814789..dc30c8b69 100644 --- a/src/Model/GlobalContact.php +++ b/src/Model/GlobalContact.php @@ -10,6 +10,7 @@ use Friendica\Core\System; use Friendica\Core\Worker; use Friendica\Database\DBM; use Friendica\Network\Probe; +use Friendica\Object\Profile; use Friendica\Protocol\PortableContact; use dba; use Exception; diff --git a/src/Model/User.php b/src/Model/User.php new file mode 100644 index 000000000..ec4d1013b --- /dev/null +++ b/src/Model/User.php @@ -0,0 +1,50 @@ + $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()); + } + } +} diff --git a/src/Network/Probe.php b/src/Network/Probe.php index 37ca51d8a..b75895612 100644 --- a/src/Network/Probe.php +++ b/src/Network/Probe.php @@ -13,6 +13,7 @@ use Friendica\Core\System; use Friendica\Core\Cache; use Friendica\Core\Config; use Friendica\Database\DBM; +use Friendica\Object\Profile; use Friendica\Util\XML; use dba; diff --git a/src/Object/Contact.php b/src/Object/Contact.php new file mode 100644 index 000000000..2b8a11640 --- /dev/null +++ b/src/Object/Contact.php @@ -0,0 +1,830 @@ + $id)); + + // Delete the rest in the background + Worker::add(PRIORITY_LOW, 'RemoveContact', $id); + } + + /** + * @brief Sends an unfriend message. Does not remove the contact + * + * @param array $user User unfriending + * @param array $contact Contact unfriended + */ + public static function terminateFriendship(array $user, array $contact) + { + 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::sendUnshare($user, $contact); + } elseif ($contact['network'] === NETWORK_DFRN) { + DFRN::deliver($user, $contact, 'placeholder', 1); + } + } + + /** + * @brief Marks a contact for archival after a communication issue delay + * + * 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. + * + * @param array $contact + * @return type + */ + public static function markForArchival(array $contact) + { + // Contact already archived, nothing to do + 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'])) + ); + } + } + } + } + + /** + * @brief Cancels the archival countdown + * + * @see Contact::markForArchival() + * + * @param array $contact + * @return null + */ + public static function unmarkForArchival(array $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 for archival + 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 + */ + public static function getDetailsByURL($url, $uid = -1, array $default = []) + { + 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 + */ + public static function getDetailsByAddr($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 = self::getDetailsByURL($data['url'], $uid); + } else { + $profile = $r[0]; + } + + return $profile; + } + + /** + * @brief Returns the data array for the photo menu of a given contact + * + * @param array $contact + * @param int $uid + * @return array + */ + public static function photoMenu(array $contact, $uid = 0) + { + // @todo Unused, to be removed + $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 self::photoMenu($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; + } + + /** + * Returns either the total number of ungrouped contacts for the given user + * id or a paginated list of ungrouped contacts. + * + * @brief Returns ungrouped contact count or list for user + * + * @param int $uid + * @param int $start + * @param int $count + * @return array + */ + public static function getUngroupedList($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 + */ + public static function getIdForUrl($url, $uid = 0, $no_update = false) + { + logger("Get contact data for url " . $url . " and user " . $uid . " - " . System::callstack(), LOGGER_DEBUG); + + $contact_id = 0; + + if ($url == '') { + return 0; + } + + /// @todo Verify if we can't use Contact::getDetailsByUrl instead of the following + // 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 = self::getIdForUrl($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 'include/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? + */ + public static function isBlocked($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? + */ + public static function isHidden($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 contact url + * + * @param App $a argv application class + * @param string $contact_url Contact URL + * + * @return string posts in HTML + */ + public static function getPostsFromUrl($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']) + ); + + $a = self::getApp(); + + $o = conversation($a, $r, 'community', false); + + $o .= alt_pager($a, count($r)); + + return $o; + } + + /** + * @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 + * @return string + */ + public static function getAccountType(array $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/src/Object/Profile.php b/src/Object/Profile.php new file mode 100644 index 000000000..29925a949 --- /dev/null +++ b/src/Object/Profile.php @@ -0,0 +1,46 @@ + Date: Sun, 19 Nov 2017 17:03:39 -0500 Subject: [PATCH 3/5] Change called method names - Add GlobalContact::getRandomUrl - Rename Contact::getIdForURL - Rename Diaspora::sendUnshare - Remove unused parameter $self in Contact::terminateFriendship --- boot.php | 4 ++-- include/acl_selectors.php | 2 +- include/api.php | 4 ++-- include/bb2diaspora.php | 4 ++-- include/bbcode.php | 4 ++-- include/conversation.php | 4 ++-- include/identity.php | 2 +- include/items.php | 16 ++++++++-------- include/like.php | 2 +- include/post_update.php | 4 ++-- include/threads.php | 6 +++--- mod/admin.php | 4 ++-- mod/allfriends.php | 8 ++++---- mod/cal.php | 2 +- mod/common.php | 8 ++++---- mod/contacts.php | 25 +++++++++++++------------ mod/crepair.php | 2 +- mod/dfrn_notify.php | 8 ++------ mod/directory.php | 2 +- mod/dirfind.php | 10 +++++----- mod/display.php | 2 +- mod/follow.php | 4 ++-- mod/hovercard.php | 6 +++--- mod/item.php | 6 +++--- mod/match.php | 4 ++-- mod/message.php | 4 ++-- mod/network.php | 2 +- mod/nogroup.php | 8 ++++---- mod/photos.php | 2 +- mod/ping.php | 2 +- mod/profiles.php | 2 +- mod/randprof.php | 2 +- mod/removeme.php | 2 +- mod/suggest.php | 4 ++-- mod/unfollow.php | 7 +++---- mod/videos.php | 2 +- mod/viewcontacts.php | 6 +++--- src/Core/NotificationsManager.php | 4 ++-- src/Model/GlobalContact.php | 14 +++++++++++++- src/Network/Probe.php | 2 +- src/Object/Contact.php | 4 ++-- src/Protocol/DFRN.php | 8 +++----- src/Protocol/Diaspora.php | 16 ++++++++-------- src/Protocol/OStatus.php | 6 +++--- src/Protocol/PortableContact.php | 2 +- src/Worker/Delivery.php | 4 ++-- src/Worker/Notifier.php | 8 +------- src/Worker/OnePoll.php | 12 ++++++------ 48 files changed, 133 insertions(+), 133 deletions(-) diff --git a/boot.php b/boot.php index 698587eb5..f0ad74ed5 100644 --- a/boot.php +++ b/boot.php @@ -984,10 +984,10 @@ function public_contact() if (!$public_contact_id && x($_SESSION, 'authenticated')) { if (x($_SESSION, 'my_address')) { // Local user - $public_contact_id = intval(get_contact($_SESSION['my_address'], 0)); + $public_contact_id = intval(Contact::getIdForURL($_SESSION['my_address'], 0)); } elseif (x($_SESSION, 'visitor_home')) { // Remote user - $public_contact_id = intval(get_contact($_SESSION['visitor_home'], 0)); + $public_contact_id = intval(Contact::getIdForURL($_SESSION['visitor_home'], 0)); } } elseif (!x($_SESSION, 'authenticated')) { $public_contact_id = false; diff --git a/include/acl_selectors.php b/include/acl_selectors.php index f20668578..ef75d416f 100644 --- a/include/acl_selectors.php +++ b/include/acl_selectors.php @@ -692,7 +692,7 @@ function acl_lookup(App $a, $out_type = 'json') { ); if (DBM::is_result($r)) { foreach ($r as $row) { - $contact = get_contact_details_by_url($row['author-link']); + $contact = Contact::getDetailsByURL($row['author-link']); if (count($contact) > 0) { $unknown_contacts[] = array( diff --git a/include/api.php b/include/api.php index 730352423..2cfdcf024 100644 --- a/include/api.php +++ b/include/api.php @@ -650,7 +650,7 @@ function api_get_user(App $a, $contact_id = null, $type = "json") 'notifications' => false, 'statusnet_profile_url' => $r[0]["url"], 'uid' => 0, - 'cid' => get_contact($r[0]["url"], api_user(), true), + 'cid' => Contact::getIdForURL($r[0]["url"], api_user(), true), 'self' => 0, 'network' => $r[0]["network"], ); @@ -738,7 +738,7 @@ function api_get_user(App $a, $contact_id = null, $type = "json") $network_name = network_to_name($uinfo[0]['network'], $uinfo[0]['url']); - $pcontact_id = get_contact($uinfo[0]['url'], 0, true); + $pcontact_id = Contact::getIdForURL($uinfo[0]['url'], 0, true); $ret = array( 'id' => intval($pcontact_id), diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index 2188cf8c7..3b1540473 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -24,7 +24,7 @@ function diaspora_mention2bb($match) { return; } - $data = get_contact_details_by_addr($match[2]); + $data = Contact::getDetailsByAddr($match[2]); $name = $match[1]; @@ -97,7 +97,7 @@ function diaspora2bb($s) { */ function diaspora_mentions($match) { - $contact = get_contact_details_by_url($match[3]); + $contact = Contact::getDetailsByURL($match[3]); if (!x($contact, 'addr')) { $contact = Probe::uri($match[3]); diff --git a/include/bbcode.php b/include/bbcode.php index 609ca922b..105e9595e 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -493,9 +493,9 @@ function bb_ShareAttributes($share, $simplehtml) { // We only call this so that a previously unknown contact can be added. // This is important for the function "get_contact_details_by_url". // This function then can fetch an entry from the contact table. - get_contact($profile, 0); + Contact::getIdForURL($profile, 0); - $data = get_contact_details_by_url($profile); + $data = Contact::getDetailsByURL($profile); if (isset($data["name"]) && ($data["name"] != "") && isset($data["addr"]) && ($data["addr"] != "")) $userid_compact = $data["name"]." (".$data["addr"].")"; diff --git a/include/conversation.php b/include/conversation.php index aea085569..62c4d678e 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -734,7 +734,7 @@ function conversation(App $a, $items, $mode, $update, $preview = false) { } if (!x($item, 'author-thumb') || ($item['author-thumb'] == "")) { - $author_contact = get_contact_details_by_url($item['author-link'], $profile_owner); + $author_contact = Contact::getDetailsByURL($item['author-link'], $profile_owner); if ($author_contact["thumb"]) { $item['author-thumb'] = $author_contact["thumb"]; } else { @@ -743,7 +743,7 @@ function conversation(App $a, $items, $mode, $update, $preview = false) { } if (!isset($item['owner-thumb']) || ($item['owner-thumb'] == "")) { - $owner_contact = get_contact_details_by_url($item['owner-link'], $profile_owner); + $owner_contact = Contact::getDetailsByURL($item['owner-link'], $profile_owner); if ($owner_contact["thumb"]) { $item['owner-thumb'] = $owner_contact["thumb"]; } else { diff --git a/include/identity.php b/include/identity.php index 31c17ef21..96a978133 100644 --- a/include/identity.php +++ b/include/identity.php @@ -346,7 +346,7 @@ function profile_sidebar($profile, $block = 0) } // Fetch the account type - $account_type = account_type($profile); + $account_type = Contact::getAccountType($profile); if ((x($profile, 'address') == 1) || (x($profile, 'location') == 1) diff --git a/include/items.php b/include/items.php index 63ecc791b..8862eb1ab 100644 --- a/include/items.php +++ b/include/items.php @@ -719,12 +719,12 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f * This is done only for comments (See below explanation at "gcontact-id") */ if ($arr['parent-uri'] != $arr['uri']) { - $arr["contact-id"] = get_contact($arr['author-link'], $uid); + $arr["contact-id"] = Contact::getIdForURL($arr['author-link'], $uid); } // If not present then maybe the owner was found if ($arr["contact-id"] == 0) { - $arr["contact-id"] = get_contact($arr['owner-link'], $uid); + $arr["contact-id"] = Contact::getIdForURL($arr['owner-link'], $uid); } // Still missing? Then use the "self" contact of the current user @@ -755,19 +755,19 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f } if ($arr["author-id"] == 0) { - $arr["author-id"] = get_contact($arr["author-link"], 0); + $arr["author-id"] = Contact::getIdForURL($arr["author-link"], 0); } - if (blockedContact($arr["author-id"])) { + if (Contact::isBlocked($arr["author-id"])) { logger('Contact '.$arr["author-id"].' is blocked, item '.$arr["uri"].' will not be stored'); return 0; } if ($arr["owner-id"] == 0) { - $arr["owner-id"] = get_contact($arr["owner-link"], 0); + $arr["owner-id"] = Contact::getIdForURL($arr["owner-link"], 0); } - if (blockedContact($arr["owner-id"])) { + if (Contact::isBlocked($arr["owner-id"])) { logger('Contact '.$arr["owner-id"].' is blocked, item '.$arr["uri"].' will not be stored'); return 0; } @@ -1751,7 +1751,7 @@ function lose_follower($importer, $contact, array $datarray = array(), $item = " if (($contact['rel'] == CONTACT_IS_FRIEND) || ($contact['rel'] == CONTACT_IS_SHARING)) { dba::update('contact', array('rel' => CONTACT_IS_SHARING), array('id' => $contact['id'])); } else { - contact_remove($contact['id']); + Contact::remove($contact['id']); } } @@ -1760,7 +1760,7 @@ function lose_sharer($importer, $contact, array $datarray = array(), $item = "") if (($contact['rel'] == CONTACT_IS_FRIEND) || ($contact['rel'] == CONTACT_IS_FOLLOWER)) { dba::update('contact', array('rel' => CONTACT_IS_FOLLOWER), array('id' => $contact['id'])); } else { - contact_remove($contact['id']); + Contact::remove($contact['id']); } } diff --git a/include/like.php b/include/like.php index e8d69689b..e6f1aab6d 100644 --- a/include/like.php +++ b/include/like.php @@ -116,7 +116,7 @@ function do_like($item_id, $verb) { $item_contact_id = $owner_self_contact['id']; $item_contact = $owner_self_contact; } else { - $item_contact_id = get_contact($author_contact['url'], $item['uid']); + $item_contact_id = Contact::getIdForURL($author_contact['url'], $item['uid']); $contacts = q("SELECT * FROM `contact` WHERE `id` = %d", intval($item_contact_id) diff --git a/include/post_update.php b/include/post_update.php index f77cb0184..f67c064da 100644 --- a/include/post_update.php +++ b/include/post_update.php @@ -210,8 +210,8 @@ function post_update_1198() { // Set the "gcontact-id" in the item table and add a new gcontact entry if needed foreach ($item_arr AS $item) { - $author_id = get_contact($item["author-link"], 0); - $owner_id = get_contact($item["owner-link"], 0); + $author_id = Contact::getIdForURL($item["author-link"], 0); + $owner_id = Contact::getIdForURL($item["owner-link"], 0); if ($author_id == 0) $author_id = -1; diff --git a/include/threads.php b/include/threads.php index a1a6c7825..e776a37e7 100644 --- a/include/threads.php +++ b/include/threads.php @@ -59,7 +59,7 @@ function add_shadow_thread($itemid) { } // Is the public contact configured as hidden? - if (hiddenContact($item["owner-id"]) || hiddenContact($item["author-id"])) { + if (Contact::isHidden($item["owner-id"]) || Contact::isHidden($item["author-id"])) { return; } @@ -105,7 +105,7 @@ function add_shadow_thread($itemid) { $item[0]['uid'] = 0; $item[0]['origin'] = 0; $item[0]['wall'] = 0; - $item[0]['contact-id'] = get_contact($item[0]['author-link'], 0); + $item[0]['contact-id'] = Contact::getIdForURL($item[0]['author-link'], 0); if (in_array($item[0]['type'], array("net-comment", "wall-comment"))) { $item[0]['type'] = 'remote-comment'; @@ -165,7 +165,7 @@ function add_shadow_entry($itemid) { $item['uid'] = 0; $item['origin'] = 0; $item['wall'] = 0; - $item['contact-id'] = get_contact($item['author-link'], 0); + $item['contact-id'] = Contact::getIdForURL($item['author-link'], 0); if (in_array($item['type'], array("net-comment", "wall-comment"))) { $item['type'] = 'remote-comment'; diff --git a/mod/admin.php b/mod/admin.php index 67313e060..34055ba5d 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -1446,7 +1446,7 @@ function admin_page_users_post(App $a) { if (x($_POST,'page_users_delete')) { require_once("include/Contact.php"); foreach ($users as $uid) { - user_remove($uid); + User::remove($uid); } notice(sprintf(tt("%s user deleted", "%s users deleted", count($users)), count($users))); } @@ -1493,7 +1493,7 @@ function admin_page_users(App $a) { check_form_security_token_redirectOnErr('/admin/users', 'admin_users', 't'); // delete user require_once("include/Contact.php"); - user_remove($uid); + User::remove($uid); notice(sprintf(t("User '%s' deleted"), $user[0]['username']).EOL); break; diff --git a/mod/allfriends.php b/mod/allfriends.php index 13a85e6aa..c88ce9631 100644 --- a/mod/allfriends.php +++ b/mod/allfriends.php @@ -40,7 +40,7 @@ function allfriends_content(App $a) { } $a->page['aside'] = ""; - profile_load($a, "", 0, get_contact_details_by_url($c[0]["url"])); + profile_load($a, "", 0, Contact::getDetailsByURL($c[0]["url"])); $total = GlobalContact::countAllFriends(local_user(), $cid); @@ -59,7 +59,7 @@ function allfriends_content(App $a) { foreach ($r as $rr) { //get further details of the contact - $contact_details = get_contact_details_by_url($rr['url'], $uid, $rr); + $contact_details = Contact::getDetailsByURL($rr['url'], $uid, $rr); $photo_menu = ''; @@ -67,7 +67,7 @@ function allfriends_content(App $a) { // If the contact is not common to the user, Connect/Follow' will be added to the photo menu if ($rr[cid]) { $rr[id] = $rr[cid]; - $photo_menu = contact_photo_menu ($rr); + $photo_menu = Contact::photoMenu ($rr); } else { $connlnk = System::baseUrl() . '/follow/?url=' . $rr['url']; @@ -86,7 +86,7 @@ function allfriends_content(App $a) { 'details' => $contact_details['location'], 'tags' => $contact_details['keywords'], 'about' => $contact_details['about'], - 'account_type' => account_type($contact_details), + 'account_type' => Contact::getAccountType($contact_details), 'network' => network_to_name($contact_details['network'], $contact_details['url']), 'photo_menu' => $photo_menu, 'conntxt' => t('Connect'), diff --git a/mod/cal.php b/mod/cal.php index f3cb9f633..96a1c8f29 100644 --- a/mod/cal.php +++ b/mod/cal.php @@ -47,7 +47,7 @@ function cal_init(App $a) { $profile = get_profiledata_by_nick($nick, $a->profile_uid); - $account_type = account_type($profile); + $account_type = Contact::getAccountType($profile); $tpl = get_markup_template("vcard-widget.tpl"); diff --git a/mod/common.php b/mod/common.php index 94c884771..c0bab4171 100644 --- a/mod/common.php +++ b/mod/common.php @@ -40,7 +40,7 @@ function common_content(App $a) { ); /// @TODO Handle $c with DBM::is_result() $a->page['aside'] = ""; - profile_load($a, "", 0, get_contact_details_by_url($c[0]["url"])); + profile_load($a, "", 0, Contact::getDetailsByURL($c[0]["url"])); } else { $c = q("SELECT `name`, `url`, `photo` FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1", intval($uid) @@ -115,14 +115,14 @@ function common_content(App $a) { foreach ($r as $rr) { //get further details of the contact - $contact_details = get_contact_details_by_url($rr['url'], $uid); + $contact_details = Contact::getDetailsByURL($rr['url'], $uid); // $rr['id'] is needed to use contact_photo_menu() /// @TODO Adding '/" here avoids E_NOTICE on missing constants $rr['id'] = $rr['cid']; $photo_menu = ''; - $photo_menu = contact_photo_menu($rr); + $photo_menu = Contact::photoMenu($rr); $entry = array( 'url' => $rr['url'], @@ -133,7 +133,7 @@ function common_content(App $a) { 'details' => $contact_details['location'], 'tags' => $contact_details['keywords'], 'about' => $contact_details['about'], - 'account_type' => account_type($contact_details), + 'account_type' => Contact::getAccountType($contact_details), 'network' => network_to_name($contact_details['network'], $contact_details['url']), 'photo_menu' => $photo_menu, 'id' => ++$id, diff --git a/mod/contacts.php b/mod/contacts.php index dba7680ba..c8c73b51f 100644 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -59,7 +59,7 @@ function contacts_init(App $a) { '$addr' => (($a->data['contact']['addr'] != "") ? ($a->data['contact']['addr']) : ""), '$network_name' => $networkname, '$network' => t('Network:'), - '$account_type' => account_type($a->data['contact']) + '$account_type' => Contact::getAccountType($a->data['contact']) )); $finpeople_widget = ''; @@ -132,7 +132,7 @@ function contacts_batch_actions(App $a) { if ($r) $count_actions++; } if (x($_POST, 'contacts_batch_drop')) { - _contact_drop($contact_id, $orig_record); + _contact_drop($orig_record); $count_actions++; } } @@ -347,7 +347,9 @@ function _contact_archive($contact_id, $orig_record) { } return $r; } -function _contact_drop($contact_id, $orig_record) { + +function _contact_drop($orig_record) +{ $a = get_app(); $r = q("SELECT `contact`.*, `user`.* FROM `contact` INNER JOIN `user` ON `contact`.`uid` = `user`.`uid` @@ -358,9 +360,8 @@ function _contact_drop($contact_id, $orig_record) { return; } - $self = ""; // Unused parameter - terminate_friendship($r[0], $self, $orig_record); - contact_remove($orig_record['id']); + Contact::terminateFriendship($r[0], $orig_record); + Contact::remove($orig_record['id']); } @@ -480,7 +481,7 @@ function contacts_content(App $a) { } } - _contact_drop($contact_id, $orig_record[0]); + _contact_drop($orig_record[0]); info( t('Contact has been removed.') . EOL ); if (x($_SESSION,'return_url')) { goaway('' . $_SESSION['return_url']); @@ -654,7 +655,7 @@ function contacts_content(App $a) { '$url' => $url, '$profileurllabel' => t('Profile URL'), '$profileurl' => $contact['url'], - '$account_type' => account_type($contact), + '$account_type' => Contact::getAccountType($contact), '$location' => bbcode($contact["location"]), '$location_label' => t("Location:"), '$xmpp' => bbcode($contact["xmpp"]), @@ -917,7 +918,7 @@ function contact_posts($a, $contact_id) { if ($r) { $contact = $r[0]; $a->page['aside'] = ""; - profile_load($a, "", 0, get_contact_details_by_url($contact["url"])); + profile_load($a, "", 0, Contact::getDetailsByURL($contact["url"])); } else $profile = ""; @@ -925,7 +926,7 @@ function contact_posts($a, $contact_id) { $o .= $tab_str; - $o .= posts_from_contact_url($a, $contact["url"]); + $o .= Contact::getPostsFromUrl($contact["url"]); return $o; } @@ -960,14 +961,14 @@ function _contact_detail_for_template($rr){ return array( 'img_hover' => sprintf( t('Visit %s\'s profile [%s]'),$rr['name'],$rr['url']), 'edit_hover' => t('Edit contact'), - 'photo_menu' => contact_photo_menu($rr), + 'photo_menu' => Contact::photoMenu($rr), 'id' => $rr['id'], 'alt_text' => $alt_text, 'dir_icon' => $dir_icon, 'thumb' => proxy_url($rr['thumb'], false, PROXY_SIZE_THUMB), 'name' => htmlentities($rr['name']), 'username' => htmlentities($rr['name']), - 'account_type' => account_type($rr), + 'account_type' => Contact::getAccountType($rr), 'sparkle' => $sparkle, 'itemurl' => (($rr['addr'] != "") ? $rr['addr'] : $rr['url']), 'url' => $url, diff --git a/mod/crepair.php b/mod/crepair.php index f9c25845d..69efad24b 100644 --- a/mod/crepair.php +++ b/mod/crepair.php @@ -32,7 +32,7 @@ function crepair_init(App $a) { if($contact_id) { $a->data['contact'] = $r[0]; $contact = $r[0]; - profile_load($a, "", 0, get_contact_details_by_url($contact["url"])); + profile_load($a, "", 0, Contact::getDetailsByURL($contact["url"])); } } diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php index 74f6d4e9f..8ad599c9d 100644 --- a/mod/dfrn_notify.php +++ b/mod/dfrn_notify.php @@ -128,13 +128,9 @@ function dfrn_notify_post(App $a) { logger('dfrn_notify: data: ' . $data, LOGGER_DATA); if ($dissolve == 1) { - - /* - * Relationship is dissolved permanently - */ - require_once('include/Contact.php'); - contact_remove($importer['id']); + // Relationship is dissolved permanently + Contact::remove($importer['id']); logger('relationship dissolved : ' . $importer['name'] . ' dissolved ' . $importer['username']); xml_status(0, 'relationship dissolved'); } diff --git a/mod/directory.php b/mod/directory.php index 269dc03d3..4ce919b08 100644 --- a/mod/directory.php +++ b/mod/directory.php @@ -162,7 +162,7 @@ function directory_content(App $a) { 'img_hover' => $rr['name'], 'name' => $rr['name'], 'details' => $details, - 'account_type' => account_type($rr), + 'account_type' => Contact::getAccountType($rr), 'profile' => $profile, 'location' => $location_e, 'tags' => $rr['pub_keywords'], diff --git a/mod/dirfind.php b/mod/dirfind.php index c8a9709ab..5a31ef996 100644 --- a/mod/dirfind.php +++ b/mod/dirfind.php @@ -76,7 +76,7 @@ function dirfind_content(App $a, $prefix = "") { $objresult->tags = ""; $objresult->network = $user_data["network"]; - $contact = get_contact_details_by_url($user_data["url"], local_user()); + $contact = Contact::getDetailsByURL($user_data["url"], local_user()); $objresult->cid = $contact["cid"]; $j->results[] = $objresult; @@ -150,7 +150,7 @@ function dirfind_content(App $a, $prefix = "") { continue; } - $result = get_contact_details_by_url($result["url"], local_user(), $result); + $result = Contact::getDetailsByURL($result["url"], local_user(), $result); if ($result["name"] == "") { $urlparts = parse_url($result["url"]); @@ -194,7 +194,7 @@ function dirfind_content(App $a, $prefix = "") { $alt_text = ""; - $contact_details = get_contact_details_by_url($jj->url, local_user()); + $contact_details = Contact::getDetailsByURL($jj->url, local_user()); $itemurl = (($contact_details["addr"] != "") ? $contact_details["addr"] : $jj->url); @@ -205,7 +205,7 @@ function dirfind_content(App $a, $prefix = "") { $contact = q("SELECT * FROM `contact` WHERE `id` = %d", intval($jj->cid)); if ($contact) { - $photo_menu = contact_photo_menu($contact[0]); + $photo_menu = Contact::photoMenu($contact[0]); $details = _contact_detail_for_template($contact[0]); $alt_text = $details['alt_text']; } else { @@ -235,7 +235,7 @@ function dirfind_content(App $a, $prefix = "") { 'details' => $contact_details['location'], 'tags' => $contact_details['keywords'], 'about' => $contact_details['about'], - 'account_type' => account_type($contact_details), + 'account_type' => Contact::getAccountType($contact_details), 'network' => network_to_name($jj->network, $jj->url), 'id' => ++$id, ); diff --git a/mod/display.php b/mod/display.php index f36266e68..aa885f5bd 100644 --- a/mod/display.php +++ b/mod/display.php @@ -182,7 +182,7 @@ function display_fetchauthor($a, $item) { $profiledata["about"] = ""; } - $profiledata = get_contact_details_by_url($profiledata["url"], local_user(), $profiledata); + $profiledata = Contact::getDetailsByURL($profiledata["url"], local_user(), $profiledata); $profiledata["photo"] = System::removedBaseUrl($profiledata["photo"]); diff --git a/mod/follow.php b/mod/follow.php index b3a503ec0..567a955cc 100644 --- a/mod/follow.php +++ b/mod/follow.php @@ -177,7 +177,7 @@ function follow_content(App $a) { )); $a->page['aside'] = ""; - profile_load($a, "", 0, get_contact_details_by_url($ret["url"])); + profile_load($a, "", 0, Contact::getDetailsByURL($ret["url"])); if ($gcontact_id <> 0) { $o .= replace_macros(get_markup_template('section_title.tpl'), @@ -185,7 +185,7 @@ function follow_content(App $a) { )); // Show last public posts - $o .= posts_from_contact_url($a, $ret["url"]); + $o .= Contact::getPostsFromUrl($ret["url"]); } return $o; diff --git a/mod/hovercard.php b/mod/hovercard.php index a1d861067..41de07c61 100644 --- a/mod/hovercard.php +++ b/mod/hovercard.php @@ -52,14 +52,14 @@ function hovercard_content() { $nurl = normalise_link(GlobalContact::cleanContactUrl($profileurl)); if($nurl) { // Search for contact data - $contact = get_contact_details_by_url($nurl); + $contact = Contact::getDetailsByURL($nurl); } if(!is_array($contact)) return; // Get the photo_menu - the menu if possible contact actions if(local_user()) - $actions = contact_photo_menu($contact); + $actions = Contact::photoMenu($contact); // Move the contact data to the profile array so we can deliver it to @@ -81,7 +81,7 @@ function hovercard_content() { // 'server_url' => $contact["server_url"], 'bd' => (($contact["birthday"] <= '0001-01-01') ? "" : $contact["birthday"]), // 'generation' => $contact["generation"], - 'account_type' => account_type($contact), + 'account_type' => Contact::getAccountType($contact), 'actions' => $actions, ); if($datatype == "html") { diff --git a/mod/item.php b/mod/item.php index 040ea7687..7b0f21a81 100644 --- a/mod/item.php +++ b/mod/item.php @@ -147,7 +147,7 @@ function item_post(App $a) { $thrparent = q("SELECT `author-link`, `network` FROM `item` WHERE `uri` = '%s' LIMIT 1", dbesc($thr_parent)); if (DBM::is_result($thrparent) && ($thrparent[0]["network"] === NETWORK_OSTATUS) && (normalise_link($parent_contact["url"]) != normalise_link($thrparent[0]["author-link"]))) { - $parent_contact = get_contact_details_by_url($thrparent[0]["author-link"]); + $parent_contact = Contact::getDetailsByURL($thrparent[0]["author-link"]); if (!isset($parent_contact["nick"])) { $probed_contact = Probe::uri($thrparent[0]["author-link"]); @@ -704,11 +704,11 @@ function item_post(App $a) { $datarray['owner-name'] = $contact_record['name']; $datarray['owner-link'] = $contact_record['url']; $datarray['owner-avatar'] = $contact_record['thumb']; - $datarray['owner-id'] = get_contact($datarray['owner-link'], 0); + $datarray['owner-id'] = Contact::getIdForURL($datarray['owner-link'], 0); $datarray['author-name'] = $author['name']; $datarray['author-link'] = $author['url']; $datarray['author-avatar'] = $author['thumb']; - $datarray['author-id'] = get_contact($datarray['author-link'], 0); + $datarray['author-id'] = Contact::getIdForURL($datarray['author-link'], 0); $datarray['created'] = datetime_convert(); $datarray['edited'] = datetime_convert(); $datarray['commented'] = datetime_convert(); diff --git a/mod/match.php b/mod/match.php index b5e1ea31f..3a0d10c31 100644 --- a/mod/match.php +++ b/mod/match.php @@ -87,7 +87,7 @@ function match_content(App $a) 'follow' => array(t("Connect/Follow"), $connlnk) ); - $contact_details = get_contact_details_by_url($jj->url, local_user()); + $contact_details = Contact::getDetailsByURL($jj->url, local_user()); $entry = array( 'url' => zrl($jj->url), @@ -96,7 +96,7 @@ function match_content(App $a) 'details' => $contact_details['location'], 'tags' => $contact_details['keywords'], 'about' => $contact_details['about'], - 'account_type' => account_type($contact_details), + 'account_type' => Contact::getAccountType($contact_details), 'thumb' => proxy_url($jj->photo, false, PROXY_SIZE_THUMB), 'inttxt' => ' ' . t('is interested in:'), 'conntxt' => t('Connect'), diff --git a/mod/message.php b/mod/message.php index ecd377b7d..80940c816 100644 --- a/mod/message.php +++ b/mod/message.php @@ -462,7 +462,7 @@ function message_content(App $a) { $to_name_e = $message['name']; } - $contact = get_contact_details_by_url($message['from-url']); + $contact = Contact::getDetailsByURL($message['from-url']); if (isset($contact["thumb"])) $from_photo = $contact["thumb"]; else @@ -576,7 +576,7 @@ function render_messages(array $msg, $t) { $to_name_e = $rr['name']; } - $contact = get_contact_details_by_url($rr['url']); + $contact = Contact::getDetailsByURL($rr['url']); if (isset($contact["thumb"])) $from_photo = $contact["thumb"]; else diff --git a/mod/network.php b/mod/network.php index 8008fcc06..ff86e0b9e 100644 --- a/mod/network.php +++ b/mod/network.php @@ -677,7 +677,7 @@ function networkThreadedView(App $a, $update = 0) { 'details' => $r['location'], ); - $entries[0]["account_type"] = account_type($r); + $entries[0]["account_type"] = Contact::getAccountType($r); $o = replace_macros(get_markup_template("viewcontact_template.tpl"),array( 'contacts' => $entries, diff --git a/mod/nogroup.php b/mod/nogroup.php index d88722e3f..c50ec486c 100644 --- a/mod/nogroup.php +++ b/mod/nogroup.php @@ -33,19 +33,19 @@ function nogroup_content(App $a) } require_once 'include/Contact.php'; - $r = contacts_not_grouped(local_user()); + $r = Contact::getUngroupedList(local_user()); if (DBM::is_result($r)) { $a->set_pager_total($r[0]['total']); } - $r = contacts_not_grouped(local_user(), $a->pager['start'], $a->pager['itemspage']); + $r = Contact::getUngroupedList(local_user(), $a->pager['start'], $a->pager['itemspage']); if (DBM::is_result($r)) { foreach ($r as $rr) { - $contact_details = get_contact_details_by_url($rr['url'], local_user(), $rr); + $contact_details = Contact::getDetailsByURL($rr['url'], local_user(), $rr); $contacts[] = array( 'img_hover' => sprintf(t('Visit %s\'s profile [%s]'), $contact_details['name'], $rr['url']), 'edit_hover' => t('Edit contact'), - 'photo_menu' => contact_photo_menu($rr), + 'photo_menu' => Contact::photoMenu($rr), 'id' => $rr['id'], 'alt_text' => $alt_text, 'dir_icon' => $dir_icon, diff --git a/mod/photos.php b/mod/photos.php index 3efa4a12e..6ef256f27 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -46,7 +46,7 @@ function photos_init(App $a) { $profile = get_profiledata_by_nick($nick, $a->profile_uid); - $account_type = account_type($profile); + $account_type = Contact::getAccountType($profile); $tpl = get_markup_template("vcard-widget.tpl"); diff --git a/mod/ping.php b/mod/ping.php index e722295b2..39882d5e3 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -350,7 +350,7 @@ function ping_init(App $a) $notif['message'] = str_replace("{0}", $notif['name'], $notif['message']); } - $contact = get_contact_details_by_url($notif['url']); + $contact = Contact::getDetailsByURL($notif['url']); if (isset($contact['micro'])) { $notif['photo'] = proxy_url($contact['micro'], false, PROXY_SIZE_MICRO); } else { diff --git a/mod/profiles.php b/mod/profiles.php index 835dd59f1..03265ccf4 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -491,7 +491,7 @@ function profiles_post(App $a) { } if ($is_default) { - $location = formatted_location(array("locality" => $locality, "region" => $region, "country-name" => $country_name)); + $location = Profile::formatLocation(array("locality" => $locality, "region" => $region, "country-name" => $country_name)); q("UPDATE `contact` SET `about` = '%s', `location` = '%s', `keywords` = '%s', `gender` = '%s' WHERE `self` AND `uid` = %d", dbesc($about), diff --git a/mod/randprof.php b/mod/randprof.php index 79057b495..55b77aec8 100644 --- a/mod/randprof.php +++ b/mod/randprof.php @@ -7,7 +7,7 @@ use Friendica\Model\GlobalContact; function randprof_init(App $a) { require_once('include/Contact.php'); - $x = random_profile(); + $x = GlobalContact::getRandomUrl(); if ($x) { goaway(zrl($x)); diff --git a/mod/removeme.php b/mod/removeme.php index dcb07a5be..4b5591c0b 100644 --- a/mod/removeme.php +++ b/mod/removeme.php @@ -30,7 +30,7 @@ function removeme_post(App $a) { if ((strlen($a->user['password'])) && ($encrypted === $a->user['password'])) { require_once('include/Contact.php'); - user_remove($a->user['uid']); + User::remove($a->user['uid']); // NOTREACHED } diff --git a/mod/suggest.php b/mod/suggest.php index cb2b3f9c4..f05c76ced 100644 --- a/mod/suggest.php +++ b/mod/suggest.php @@ -88,7 +88,7 @@ function suggest_content(App $a) { 'hide' => array(t('Ignore/Hide'), $ignlnk) ); - $contact_details = get_contact_details_by_url($rr["url"], local_user(), $rr); + $contact_details = Contact::getDetailsByURL($rr["url"], local_user(), $rr); $entry = array( 'url' => zrl($rr['url']), @@ -99,7 +99,7 @@ function suggest_content(App $a) { 'details' => $contact_details['location'], 'tags' => $contact_details['keywords'], 'about' => $contact_details['about'], - 'account_type' => account_type($contact_details), + 'account_type' => Contact::getAccountType($contact_details), 'ignlnk' => $ignlnk, 'ignid' => $rr['id'], 'conntxt' => t('Connect'), diff --git a/mod/unfollow.php b/mod/unfollow.php index 28af7f86e..652394ac5 100644 --- a/mod/unfollow.php +++ b/mod/unfollow.php @@ -39,8 +39,7 @@ function unfollow_post(App $a) { intval($uid) ); if (DBM::is_result($r)) { - $self = ""; // Unused parameter - terminate_friendship($r[0], $self, $contact); + Contact::terminateFriendship($r[0], $contact); } } dba::update('contact', array('rel' => CONTACT_IS_FOLLOWER), array('id' => $contact['id'])); @@ -128,14 +127,14 @@ function unfollow_content(App $a) { )); $a->page['aside'] = ""; - profile_load($a, "", 0, get_contact_details_by_url($contact["url"])); + profile_load($a, "", 0, Contact::getDetailsByURL($contact["url"])); $o .= replace_macros(get_markup_template('section_title.tpl'), array('$title' => t('Status Messages and Posts') )); // Show last public posts - $o .= posts_from_contact_url($a, $contact["url"]); + $o .= Contact::getPostsFromUrl($contact["url"]); return $o; } diff --git a/mod/videos.php b/mod/videos.php index 662da4ca4..9f0244102 100644 --- a/mod/videos.php +++ b/mod/videos.php @@ -40,7 +40,7 @@ function videos_init(App $a) { $profile = get_profiledata_by_nick($nick, $a->profile_uid); - $account_type = account_type($profile); + $account_type = Contact::getAccountType($profile); $tpl = get_markup_template("vcard-widget.tpl"); diff --git a/mod/viewcontacts.php b/mod/viewcontacts.php index 4747330d6..0a1021a79 100644 --- a/mod/viewcontacts.php +++ b/mod/viewcontacts.php @@ -101,19 +101,19 @@ function viewcontacts_content(App $a) { else $url = zrl($url); - $contact_details = get_contact_details_by_url($rr['url'], $a->profile['uid'], $rr); + $contact_details = Contact::getDetailsByURL($rr['url'], $a->profile['uid'], $rr); $contacts[] = array( 'id' => $rr['id'], 'img_hover' => sprintf( t('Visit %s\'s profile [%s]'), $contact_details['name'], $rr['url']), - 'photo_menu' => contact_photo_menu($rr), + 'photo_menu' => Contact::photoMenu($rr), 'thumb' => proxy_url($contact_details['thumb'], false, PROXY_SIZE_THUMB), 'name' => htmlentities(substr($contact_details['name'],0,20)), 'username' => htmlentities($contact_details['name']), 'details' => $contact_details['location'], 'tags' => $contact_details['keywords'], 'about' => $contact_details['about'], - 'account_type' => account_type($contact_details), + 'account_type' => Contact::getAccountType($contact_details), 'url' => $url, 'sparkle' => '', 'itemurl' => (($contact_details['addr'] != "") ? $contact_details['addr'] : $rr['url']), diff --git a/src/Core/NotificationsManager.php b/src/Core/NotificationsManager.php index 5e2f1ad1f..b3146a1d3 100644 --- a/src/Core/NotificationsManager.php +++ b/src/Core/NotificationsManager.php @@ -775,7 +775,7 @@ class NotificationsManager $sql_extra = " AND `ignore` = 0 "; } - /// @todo Fetch contact details by "get_contact_details_by_url" instead of queries to contact, fcontact and gcontact + /// @todo Fetch contact details by "Contact::getDetailsByUrl" instead of queries to contact, fcontact and gcontact $r = q( "SELECT `intro`.`id` AS `intro_id`, `intro`.*, `contact`.*, `fcontact`.`name` AS `fname`, `fcontact`.`url` AS `furl`, @@ -904,7 +904,7 @@ class NotificationsManager // If the network and addr is still not available // get the missing data data from other sources if ($arr['gnetwork'] == "" || $arr['gaddr'] == "") { - $ret = get_contact_details_by_url($arr['url']); + $ret = Contact::getDetailsByURL($arr['url']); if ($arr['gnetwork'] == "" && $ret['network'] != "") { $arr['gnetwork'] = $ret['network']; diff --git a/src/Model/GlobalContact.php b/src/Model/GlobalContact.php index dc30c8b69..fe45d5bb7 100644 --- a/src/Model/GlobalContact.php +++ b/src/Model/GlobalContact.php @@ -895,7 +895,7 @@ class GlobalContact intval($uid) ); - $location = formatted_location( + $location = Profile::formatLocation( array("locality" => $r[0]["locality"], "region" => $r[0]["region"], "country-name" => $r[0]["country-name"]) ); @@ -1002,4 +1002,16 @@ class GlobalContact q("UPDATE `gserver` SET `last_poco_query` = '%s' WHERE `nurl` = '%s'", dbesc(datetime_convert()), dbesc($server["nurl"])); } } + + public static function getRandomUrl() { + $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 ''; + } } diff --git a/src/Network/Probe.php b/src/Network/Probe.php index b75895612..c6bf46f79 100644 --- a/src/Network/Probe.php +++ b/src/Network/Probe.php @@ -793,7 +793,7 @@ class Probe { } } - $location = formatted_location($json); + $location = Profile::formatLocation($json); if ($location) { $data["location"] = $location; } diff --git a/src/Object/Contact.php b/src/Object/Contact.php index 2b8a11640..876083971 100644 --- a/src/Object/Contact.php +++ b/src/Object/Contact.php @@ -538,7 +538,7 @@ class Contact extends BaseObject * * @return integer Contact ID */ - public static function getIdForUrl($url, $uid = 0, $no_update = false) + public static function getIdForURL($url, $uid = 0, $no_update = false) { logger("Get contact data for url " . $url . " and user " . $uid . " - " . System::callstack(), LOGGER_DEBUG); @@ -603,7 +603,7 @@ class Contact extends BaseObject } if (!$contact_id && ($data["alias"] != '') && ($data["alias"] != $url)) { - $contact_id = self::getIdForUrl($data["alias"], $uid, true); + $contact_id = self::getIdForURL($data["alias"], $uid, true); } $url = $data["url"]; diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index e0daaf360..8547d2302 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -708,7 +708,7 @@ class DFRN if (trim($profile["locality"].$profile["region"].$profile["country-name"]) != "") { $element = $doc->createElement("poco:address"); - XML::add_element($doc, $element, "poco:formatted", formatted_location($profile)); + XML::add_element($doc, $element, "poco:formatted", Profile::formatLocation($profile)); if (trim($profile["locality"]) != "") { XML::add_element($doc, $element, "poco:locality", $profile["locality"]); @@ -742,8 +742,7 @@ class DFRN */ private static function add_entry_author($doc, $element, $contact_url, $item) { - - $contact = get_contact_details_by_url($contact_url, $item["uid"]); + $contact = Contact::getDetailsByURL($contact_url, $item["uid"]); $author = $doc->createElement($element); XML::add_element($doc, $author, "name", $contact["name"]); @@ -1373,8 +1372,7 @@ class DFRN if ($contact['term-date'] > NULL_DATE) { logger("dfrn_deliver: $url back from the dead - removing mark for death"); - include_once 'include/Contact.php'; - unmark_for_death($contact); + Contact::unmarkForArchival($contact); } $res = parse_xml_string($xml); diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index d7f55b6f4..bf1988d2c 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -950,7 +950,7 @@ class Diaspora * We haven't found it? * We use another function for it that will possibly create a contact entry. */ - $cid = get_contact($handle, $uid); + $cid = Contact::getIdForURL($handle, $uid); if ($cid > 0) { /// @TODO Contact retrieval should be encapsulated into an "entity" class like `Contact` @@ -1342,7 +1342,7 @@ class Diaspora // We are receiving content from a user that possibly is about to be terminated // This means the user is vital, so we remove a possible termination date. - unmark_for_death($r[0]); + Contact::unmarkForArchival($r[0]); } else { $cid = $contact["id"]; $network = NETWORK_DIASPORA; @@ -1521,7 +1521,7 @@ class Diaspora } // We now remove the contact - contact_remove($contact["id"]); + Contact::remove($contact["id"]); return true; } @@ -2810,7 +2810,7 @@ class Diaspora case "Person": /// @todo What should we do with an "unshare"? // Removing the contact isn't correct since we still can read the public items - contact_remove($contact["id"]); + Contact::remove($contact["id"]); return true; default: @@ -3151,11 +3151,11 @@ class Diaspora add_to_queue($contact["id"], NETWORK_DIASPORA, $envelope, $public_batch); // The message could not be delivered. We mark the contact as "dead" - mark_for_death($contact); + Contact::markForArchival($contact); } } elseif (($return_code >= 200) && ($return_code <= 299)) { // We successfully delivered a message, the contact is alive - unmark_for_death($contact); + Contact::unmarkForArchival($contact); } return(($return_code) ? $return_code : (-1)); @@ -3291,7 +3291,7 @@ class Diaspora * * @return int The result of the transmission */ - public static function send_unshare($owner, $contact) + public static function sendUnshare($owner, $contact) { $message = array("author" => self::my_handle($owner), "recipient" => $contact["addr"], @@ -4007,7 +4007,7 @@ class Diaspora $about = $profile['about']; $about = strip_tags(bbcode($about)); - $location = formatted_location($profile); + $location = Profile::formatLocation($profile); $tags = ''; if ($profile['pub_keywords']) { $kw = str_replace(',', ' ', $profile['pub_keywords']); diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 4c0503ce6..4b8b6d470 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -153,7 +153,7 @@ class OStatus // Only update the contacts if it is an OStatus contact if ($r && ($r['id'] > 0) && !$onlyfetch && ($contact["network"] == NETWORK_OSTATUS)) { // This contact is vital, so we awake it from the dead - unmark_for_death($contact); + Contact::unmarkForArchival($contact); // Update contact data @@ -208,7 +208,7 @@ class OStatus } // Ensure that we are having this contact (with uid=0) - $cid = get_contact($aliaslink, 0); + $cid = Contact::getIdForURL($aliaslink, 0); if ($cid) { $fields = array('url', 'nurl', 'name', 'nick', 'alias', 'about', 'location'); @@ -2098,7 +2098,7 @@ class OStatus } $check_date = datetime_convert('UTC', 'UTC', $last_update, 'Y-m-d H:i:s'); - $authorid = get_contact($owner["url"], 0); + $authorid = Contact::getIdForURL($owner["url"], 0); $items = q( "SELECT `item`.*, `item`.`id` AS `item_id` FROM `item` USE INDEX (`uid_contactid_created`) diff --git a/src/Protocol/PortableContact.php b/src/Protocol/PortableContact.php index e3d9c96d8..06d47f2f9 100644 --- a/src/Protocol/PortableContact.php +++ b/src/Protocol/PortableContact.php @@ -401,7 +401,7 @@ class PortableContact } } - $location = formatted_location($noscrape); + $location = Profile::formatLocation($noscrape); if ($location) { $contact["location"] = $location; } diff --git a/src/Worker/Delivery.php b/src/Worker/Delivery.php index 8cd774d45..14fe3027f 100644 --- a/src/Worker/Delivery.php +++ b/src/Worker/Delivery.php @@ -354,10 +354,10 @@ class Delivery { add_to_queue($contact['id'],NETWORK_DFRN,$atom); // The message could not be delivered. We mark the contact as "dead" - mark_for_death($contact); + Contact::markForArchival($contact); } else { // We successfully delivered a message, the contact is alive - unmark_for_death($contact); + Contact::unmarkForArchival($contact); } break; diff --git a/src/Worker/Notifier.php b/src/Worker/Notifier.php index 2ad12e791..f092282c3 100644 --- a/src/Worker/Notifier.php +++ b/src/Worker/Notifier.php @@ -120,19 +120,13 @@ class Notifier { $user = $r[0]; - $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` LIMIT 1", intval($item_id)); - if (!$r) - return; - - $self = $r[0]; - $r = q("SELECT * FROM `contact` WHERE NOT `self` AND `uid` = %d", intval($item_id)); if (!$r) { return; } require_once 'include/Contact.php'; foreach ($r as $contact) { - terminate_friendship($user, $self, $contact); + Contact::terminateFriendship($user, $contact); } return; } elseif ($cmd === 'relocate') { diff --git a/src/Worker/OnePoll.php b/src/Worker/OnePoll.php index 98d130311..f8f9fcd1d 100644 --- a/src/Worker/OnePoll.php +++ b/src/Worker/OnePoll.php @@ -127,11 +127,11 @@ Class OnePoll } if (!update_contact($contact["id"])) { - mark_for_death($contact); + Contact::markForArchival($contact); logger('Contact is marked dead'); return; } else { - unmark_for_death($contact); + Contact::unmarkForArchival($contact); } } @@ -197,7 +197,7 @@ Class OnePoll // mean the software was uninstalled or the domain expired. // Will keep trying for one month. - mark_for_death($contact); + Contact::markForArchival($contact); // set the last-update so we don't keep polling $fields = array('last-update' => datetime_convert(), 'failure_update' => datetime_convert()); @@ -209,7 +209,7 @@ Class OnePoll if (!strstr($handshake_xml, '<')) { logger('poller: response from ' . $url . ' did not contain XML.'); - mark_for_death($contact); + Contact::markForArchival($contact); $fields = array('last-update' => datetime_convert(), 'failure_update' => datetime_convert()); dba::update('contact', $fields, array('id' => $contact['id'])); @@ -228,10 +228,10 @@ Class OnePoll $fields = array('last-update' => datetime_convert(), 'failure_update' => datetime_convert()); dba::update('contact', $fields, array('id' => $contact['id'])); - mark_for_death($contact); + Contact::markForArchival($contact); } elseif ($contact['term-date'] > NULL_DATE) { logger("poller: $url back from the dead - removing mark for death"); - unmark_for_death($contact); + Contact::unmarkForArchival($contact); } if ((intval($res->status) != 0) || !strlen($res->challenge) || !strlen($res->dfrn_id)) { From 5ee728972e5e8d16c482fe82a0dd5ecde6ba26b2 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 19 Nov 2017 17:05:21 -0500 Subject: [PATCH 4/5] 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 cd1696af5..000000000 --- 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 105e9595e..83ea3fcfa 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 efb258eca..036504a4f 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 62c4d678e..5e764e670 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 8862eb1ab..1f5511217 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 e776a37e7..107f2f76b 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 34055ba5d..7a7ca1410 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 c88ce9631..3cfe6c0f9 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 c0bab4171..9933c3f51 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 c8c73b51f..1859c2aa6 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 8ad599c9d..8e2b18e49 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 5a31ef996..4ba122b56 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 aa885f5bd..e81e654ac 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 567a955cc..b5e73ca9a 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 41de07c61..5542fe5b9 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 7b0f21a81..8055d63ae 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 c50ec486c..a66a70a1e 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 03265ccf4..75023beb6 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 55b77aec8..38d05c53e 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 4b5591c0b..b1ad2e5ca 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 652394ac5..3f94fb576 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 0a1021a79..30ae92f8e 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 b3146a1d3..42d514e61 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 fe45d5bb7..e73bfb907 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 8547d2302..592bca83c 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 bf1988d2c..ccd1ec594 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 4b8b6d470..dfdc75498 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 06d47f2f9..6bd175010 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 11f12df03..1485f3570 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 f092282c3..142bf866d 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 f8f9fcd1d..122b400bb 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'; From 898fe2db1e41ab2401f43e38146e3409d11852b3 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 19 Nov 2017 17:06:18 -0500 Subject: [PATCH 5/5] Code cleanup - Remove extraneous use statements - Format require_once --- include/contact_widgets.php | 1 - mod/admin.php | 6 +++--- mod/cal.php | 4 ++-- mod/crepair.php | 4 ++-- src/Model/GlobalContact.php | 2 +- src/Protocol/PortableContact.php | 3 --- src/Worker/Expire.php | 4 ++-- src/Worker/Notifier.php | 1 - 8 files changed, 10 insertions(+), 15 deletions(-) diff --git a/include/contact_widgets.php b/include/contact_widgets.php index 036504a4f..5108eaf72 100644 --- a/include/contact_widgets.php +++ b/include/contact_widgets.php @@ -1,6 +1,5 @@ argc > 1) diff --git a/mod/crepair.php b/mod/crepair.php index 69efad24b..754078316 100644 --- a/mod/crepair.php +++ b/mod/crepair.php @@ -5,8 +5,8 @@ use Friendica\Core\Config; use Friendica\Database\DBM; use Friendica\Object\Contact; -require_once("include/contact_selectors.php"); -require_once("mod/contacts.php"); +require_once 'include/contact_selectors.php'; +require_once 'mod/contacts.php'; function crepair_init(App $a) { if (! local_user()) { diff --git a/src/Model/GlobalContact.php b/src/Model/GlobalContact.php index e73bfb907..67fe27e8e 100644 --- a/src/Model/GlobalContact.php +++ b/src/Model/GlobalContact.php @@ -381,7 +381,7 @@ class GlobalContact if (DBM::is_result($r)) { return $r[0]['total']; } - + return 0; } diff --git a/src/Protocol/PortableContact.php b/src/Protocol/PortableContact.php index 6bd175010..59b3ad432 100644 --- a/src/Protocol/PortableContact.php +++ b/src/Protocol/PortableContact.php @@ -9,9 +9,6 @@ namespace Friendica\Protocol; -use Friendica\App; -use Friendica\Core\System; -use Friendica\Core\Cache; use Friendica\Core\Config; use Friendica\Core\Worker; use Friendica\Database\DBM; diff --git a/src/Worker/Expire.php b/src/Worker/Expire.php index 1485f3570..61326fa88 100644 --- a/src/Worker/Expire.php +++ b/src/Worker/Expire.php @@ -15,8 +15,8 @@ class Expire { public static function execute($param = '', $hook_name = '') { global $a; - require_once('include/datetime.php'); - require_once('include/items.php'); + require_once 'include/datetime.php'; + require_once 'include/items.php'; load_hooks(); diff --git a/src/Worker/Notifier.php b/src/Worker/Notifier.php index 142bf866d..f3096e41a 100644 --- a/src/Worker/Notifier.php +++ b/src/Worker/Notifier.php @@ -4,7 +4,6 @@ */ namespace Friendica\Worker; -use Friendica\App; use Friendica\Core\Config; use Friendica\Core\Worker; use Friendica\Database\DBM;