]> git.mxchange.org Git - friendica.git/commitdiff
Fix: In the contact search you had been able to delete your own contact
authorMichael <heluecht@pirati.ca>
Sat, 17 Mar 2018 06:17:32 +0000 (06:17 +0000)
committerMichael <heluecht@pirati.ca>
Sat, 17 Mar 2018 06:17:32 +0000 (06:17 +0000)
mod/contacts.php
mod/dirfind.php
src/Model/Contact.php

index d77192e02426c73cc26db567fdbecafa4211e607..cd9021c17ec2cd4edde1b6c9b1997f92bb840f89 100644 (file)
@@ -45,6 +45,14 @@ function contacts_init(App $a)
        }
 
        if (DBM::is_result($contact)) {
+               if ($contact['self']) {
+                       if (($a->argc == 3) && intval($a->argv[1]) && ($a->argv[2] == "posts")) {
+                               goaway('profile/' . $contact['nick']);
+                       } else {
+                               goaway('profile/' . $contact['nick'] . '?tab=profile');
+                       }
+               }
+
                $a->data['contact'] = $contact;
 
                if (($a->data['contact']['network'] != "") && ($a->data['contact']['network'] != NETWORK_DFRN)) {
@@ -940,6 +948,13 @@ function _contact_detail_for_template($rr)
                $sparkle = '';
        }
 
+       if ($rr['self']) {
+               $dir_icon = 'images/larrow.gif';
+               $alt_text = L10n::t('This is you');
+               $url = $rr['url'];
+               $sparkle = '';
+       }
+
        return [
                'img_hover' => L10n::t('Visit %s\'s profile [%s]', $rr['name'], $rr['url']),
                'edit_hover' => L10n::t('Edit contact'),
index 9db4eeb7b61d629f75436dd3856cb88274df014c..52e7c2aa02b267225171f38e0405f7688490e098 100644 (file)
@@ -15,6 +15,7 @@ use Friendica\Model\Profile;
 use Friendica\Network\Probe;
 use Friendica\Protocol\PortableContact;
 use Friendica\Util\Network;
+use Friendica\Database\DBM;
 
 require_once 'mod/contacts.php';
 
@@ -113,32 +114,28 @@ function dirfind_content(App $a, $prefix = "") {
 
                        /// @TODO These 2 SELECTs are not checked on validity with DBM::is_result()
                        $count = q("SELECT count(*) AS `total` FROM `gcontact`
-                                       LEFT JOIN `contact` ON `contact`.`nurl` = `gcontact`.`nurl`
-                                               AND `contact`.`network` = `gcontact`.`network`
-                                               AND `contact`.`uid` = %d AND NOT `contact`.`blocked`
-                                               AND NOT `contact`.`pending` AND `contact`.`rel` IN ('%s', '%s')
-                                       WHERE (`contact`.`id` > 0 OR (NOT `gcontact`.`hide` AND `gcontact`.`network` IN ('%s', '%s', '%s') AND
-                                       ((`gcontact`.`last_contact` >= `gcontact`.`last_failure`) OR (`gcontact`.`updated` >= `gcontact`.`last_failure`)))) AND
-                                       (`gcontact`.`url` LIKE '%s' OR `gcontact`.`name` LIKE '%s' OR `gcontact`.`location` LIKE '%s' OR
-                                               `gcontact`.`addr` LIKE '%s' OR `gcontact`.`about` LIKE '%s' OR `gcontact`.`keywords` LIKE '%s') $extra_sql",
-                                       intval(local_user()), dbesc(CONTACT_IS_SHARING), dbesc(CONTACT_IS_FRIEND),
+                                       LEFT JOIN `contact` ON `contact`.`nurl` = `gcontact`.`nurl` AND `contact`.`uid` = 0
+                                       WHERE NOT `gcontact`.`hide` AND `gcontact`.`network` IN ('%s', '%s', '%s') AND
+                                               ((`gcontact`.`last_contact` >= `gcontact`.`last_failure`) OR
+                                               (`gcontact`.`updated` >= `gcontact`.`last_failure`)) AND
+                                               (`gcontact`.`url` LIKE '%s' OR `gcontact`.`name` LIKE '%s' OR
+                                               `gcontact`.`location` LIKE '%s' OR `gcontact`.`addr` LIKE '%s' OR
+                                               `gcontact`.`about` LIKE '%s' OR `gcontact`.`keywords` LIKE '%s') $extra_sql",
                                        dbesc(NETWORK_DFRN), dbesc($ostatus), dbesc($diaspora),
                                        dbesc(escape_tags($search2)), dbesc(escape_tags($search2)), dbesc(escape_tags($search2)),
                                        dbesc(escape_tags($search2)), dbesc(escape_tags($search2)), dbesc(escape_tags($search2)));
 
-                       $results = q("SELECT `contact`.`id` AS `cid`, `gcontact`.`url`, `gcontact`.`name`, `gcontact`.`photo`, `gcontact`.`network`, `gcontact`.`keywords`, `gcontact`.`addr`
+                       $results = q("SELECT `gcontact`.`nurl`
                                        FROM `gcontact`
-                                       LEFT JOIN `contact` ON `contact`.`nurl` = `gcontact`.`nurl`
-                                               AND `contact`.`network` = `gcontact`.`network`
-                                               AND `contact`.`uid` = %d AND NOT `contact`.`blocked`
-                                               AND NOT `contact`.`pending` AND `contact`.`rel` IN ('%s', '%s')
-                                       WHERE (`contact`.`id` > 0 OR (NOT `gcontact`.`hide` AND `gcontact`.`network` IN ('%s', '%s', '%s') AND
-                                       ((`gcontact`.`last_contact` >= `gcontact`.`last_failure`) OR (`gcontact`.`updated` >= `gcontact`.`last_failure`)))) AND
-                                       (`gcontact`.`url` LIKE '%s' OR `gcontact`.`name` LIKE '%s' OR `gcontact`.`location` LIKE '%s' OR
-                                               `gcontact`.`addr` LIKE '%s' OR `gcontact`.`about` LIKE '%s' OR `gcontact`.`keywords` LIKE '%s') $extra_sql
+                                       LEFT JOIN `contact` ON `contact`.`nurl` = `gcontact`.`nurl` AND `contact`.`uid` = 0
+                                       WHERE NOT `gcontact`.`hide` AND `gcontact`.`network` IN ('%s', '%s', '%s') AND
+                                               ((`gcontact`.`last_contact` >= `gcontact`.`last_failure`) OR
+                                               (`gcontact`.`updated` >= `gcontact`.`last_failure`)) AND
+                                               (`gcontact`.`url` LIKE '%s' OR `gcontact`.`name` LIKE '%s' OR
+                                               `gcontact`.`location` LIKE '%s' OR `gcontact`.`addr` LIKE '%s' OR
+                                               `gcontact`.`about` LIKE '%s' OR `gcontact`.`keywords` LIKE '%s') $extra_sql
                                                GROUP BY `gcontact`.`nurl`
                                                ORDER BY `gcontact`.`updated` DESC LIMIT %d, %d",
-                                       intval(local_user()), dbesc(CONTACT_IS_SHARING), dbesc(CONTACT_IS_FRIEND),
                                        dbesc(NETWORK_DFRN), dbesc($ostatus), dbesc($diaspora),
                                        dbesc(escape_tags($search2)), dbesc(escape_tags($search2)), dbesc(escape_tags($search2)),
                                        dbesc(escape_tags($search2)), dbesc(escape_tags($search2)), dbesc(escape_tags($search2)),
@@ -148,14 +145,14 @@ function dirfind_content(App $a, $prefix = "") {
                        $j->items_page = $perpage;
                        $j->page = $a->pager['page'];
                        foreach ($results AS $result) {
-                               if (PortableContact::alternateOStatusUrl($result["url"])) {
+                               if (PortableContact::alternateOStatusUrl($result["nurl"])) {
                                        continue;
                                }
 
-                               $result = Contact::getDetailsByURL($result["url"], local_user(), $result);
+                               $result = Contact::getDetailsByURL($result["nurl"], local_user());
 
                                if ($result["name"] == "") {
-                                       $urlparts = parse_url($result["url"]);
+                                       $urlparts = parse_url($result["nurl"]);
                                        $result["name"] = end(explode("/", $urlparts["path"]));
                                }
 
@@ -204,11 +201,10 @@ function dirfind_content(App $a, $prefix = "") {
                                if ($jj->cid > 0) {
                                        $connlnk = "";
                                        $conntxt = "";
-                                       $contact = q("SELECT * FROM `contact` WHERE `id` = %d",
-                                                       intval($jj->cid));
-                                       if ($contact) {
-                                               $photo_menu = Contact::photoMenu($contact[0]);
-                                               $details = _contact_detail_for_template($contact[0]);
+                                       $contact = dba::selectFirst('contact', [], ['id' => $jj->cid]);
+                                       if (DBM::is_result($contact)) {
+                                               $photo_menu = Contact::photoMenu($contact);
+                                               $details = _contact_detail_for_template($contact);
                                                $alt_text = $details['alt_text'];
                                        } else {
                                                $photo_menu = [];
index ae9c40e6ec0a24b2255c044da950dfb1c2f3c054..f0a1e529293c3de32318d90ffd29a6be925e54ce 100644 (file)
@@ -514,7 +514,7 @@ class Contact extends BaseObject
                }
 
                $sparkle = false;
-               if ($contact['network'] === NETWORK_DFRN) {
+               if (($contact['network'] === NETWORK_DFRN) && !$contact['self']) {
                        $sparkle = true;
                        $profile_link = System::baseUrl() . '/redir/' . $contact['id'];
                } else {
@@ -531,18 +531,21 @@ class Contact extends BaseObject
                        $profile_link = $profile_link . '?url=profile';
                }
 
-               if (in_array($contact['network'], [NETWORK_DFRN, NETWORK_DIASPORA])) {
+               if (in_array($contact['network'], [NETWORK_DFRN, NETWORK_DIASPORA]) && !$contact['self']) {
                        $pm_url = System::baseUrl() . '/message/new/' . $contact['id'];
                }
 
-               if ($contact['network'] == NETWORK_DFRN) {
+               if (($contact['network'] == NETWORK_DFRN) && !$contact['self']) {
                        $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';
+
+               if (!$contact['self']) {
+                       $contact_drop_link = System::baseUrl() . '/contacts/' . $contact['id'] . '/drop?confirm=1';
+               }
 
                /**
                 * Menu array: