]> git.mxchange.org Git - friendica.git/commitdiff
Some easy to replace "q" calls have been replaced by "DBA" calls (#5632)
authorMichael Vogel <icarus@dabo.de>
Sun, 19 Aug 2018 12:46:11 +0000 (14:46 +0200)
committerHypolite Petovan <mrpetovan@eml.cc>
Sun, 19 Aug 2018 12:46:10 +0000 (12:46 +0000)
* Some easy to replace "q" calls have been replaced by "DBA" calls

* Simplified the GUID creation

* And one in the API ...

* And OStatus has got some DBA calls more

* Just some more replaced database calls

* The event query is now simplified

* Events are now shown again

* subthread is now using the DBA calls as well

* Some more replaced database calls

* And some more replaced database calls and prevented notices

* Better use gravity

* Some more replaced database stuff

* Some more replaced database calls in DFRN.php

* The gcontact class now has got the new DBA functions as well

* The Contact class is now changed to new database functions as well

* Small correction

* We can now delete without cascade

* One more functionality is safe for future changes

21 files changed:
boot.php
include/api.php
include/enotify.php
include/items.php
include/security.php
include/text.php
mod/network.php
mod/subthread.php
src/Model/Contact.php
src/Model/Event.php
src/Model/GContact.php
src/Model/Item.php
src/Model/Mail.php
src/Model/Profile.php
src/Model/User.php
src/Module/Login.php
src/Network/Probe.php
src/Protocol/DFRN.php
src/Protocol/Diaspora.php
src/Protocol/OStatus.php
src/Worker/CronJobs.php

index 9b18361b0606450f7cc3f9700cabbef98a2aa9b8..e92be51a9fd67f083d114be9b08081a42e8f9842 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -883,13 +883,9 @@ function feed_birthday($uid, $tz)
                $tz = 'UTC';
        }
 
-       $p = q(
-               "SELECT `dob` FROM `profile` WHERE `is-default` = 1 AND `uid` = %d LIMIT 1",
-               intval($uid)
-       );
-
-       if (DBA::isResult($p)) {
-               $tmp_dob = substr($p[0]['dob'], 5);
+       $profile = DBA::selectFirst('profile', ['dob'], ['is-default' => true, 'uid' => $uid]);
+       if (DBA::isResult($profile)) {
+               $tmp_dob = substr($profile['dob'], 5);
                if (intval($tmp_dob)) {
                        $y = DateTimeFormat::timezoneNow($tz, 'Y');
                        $bd = $y . '-' . $tmp_dob . ' 00:00';
index 45a5d718417964a8a8f02eb87a4f25197727ca24..7450d650eb4f90ed7b31d0aaa4dba261e400815d 100644 (file)
@@ -631,37 +631,37 @@ function api_get_user(App $a, $contact_id = null)
 
        // if the contact wasn't found, fetch it from the contacts with uid = 0
        if (!DBA::isResult($uinfo)) {
-               $r = [];
-
-               if ($url != "") {
-                       $r = q("SELECT * FROM `contact` WHERE `uid` = 0 AND `nurl` = '%s' LIMIT 1", DBA::escape(normalise_link($url)));
+               if ($url == "") {
+                       throw new BadRequestException("User not found.");
                }
 
-               if (DBA::isResult($r)) {
-                       $network_name = ContactSelector::networkToName($r[0]['network'], $r[0]['url']);
+               $contact = DBA::selectFirst('contact', [], ['uid' => 0, 'nurl' => normalise_link($url)]);
+
+               if (DBA::isResult($contact)) {
+                       $network_name = ContactSelector::networkToName($contact['network'], $contact['url']);
 
                        // If no nick where given, extract it from the address
-                       if (($r[0]['nick'] == "") || ($r[0]['name'] == $r[0]['nick'])) {
-                               $r[0]['nick'] = api_get_nick($r[0]["url"]);
+                       if (($contact['nick'] == "") || ($contact['name'] == $contact['nick'])) {
+                               $contact['nick'] = api_get_nick($contact["url"]);
                        }
 
                        $ret = [
-                               'id' => $r[0]["id"],
-                               'id_str' => (string) $r[0]["id"],
-                               'name' => $r[0]["name"],
-                               'screen_name' => (($r[0]['nick']) ? $r[0]['nick'] : $r[0]['name']),
-                               'location' => ($r[0]["location"] != "") ? $r[0]["location"] : $network_name,
-                               'description' => $r[0]["about"],
-                               'profile_image_url' => $r[0]["micro"],
-                               'profile_image_url_https' => $r[0]["micro"],
-                               'profile_image_url_profile_size' => $r[0]["thumb"],
-                               'profile_image_url_large' => $r[0]["photo"],
-                               'url' => $r[0]["url"],
+                               'id' => $contact["id"],
+                               'id_str' => (string) $contact["id"],
+                               'name' => $contact["name"],
+                               'screen_name' => (($contact['nick']) ? $contact['nick'] : $contact['name']),
+                               'location' => ($contact["location"] != "") ? $contact["location"] : $network_name,
+                               'description' => $contact["about"],
+                               'profile_image_url' => $contact["micro"],
+                               'profile_image_url_https' => $contact["micro"],
+                               'profile_image_url_profile_size' => $contact["thumb"],
+                               'profile_image_url_large' => $contact["photo"],
+                               'url' => $contact["url"],
                                'protected' => false,
                                'followers_count' => 0,
                                'friends_count' => 0,
                                'listed_count' => 0,
-                               'created_at' => api_date($r[0]["created"]),
+                               'created_at' => api_date($contact["created"]),
                                'favourites_count' => 0,
                                'utc_offset' => 0,
                                'time_zone' => 'UTC',
@@ -676,12 +676,12 @@ function api_get_user(App $a, $contact_id = null)
                                'follow_request_sent' => false,
                                'statusnet_blocking' => false,
                                'notifications' => false,
-                               'statusnet_profile_url' => $r[0]["url"],
+                               'statusnet_profile_url' => $contact["url"],
                                'uid' => 0,
-                               'cid' => Contact::getIdForURL($r[0]["url"], api_user(), true),
-                               'pid' => Contact::getIdForURL($r[0]["url"], 0, true),
+                               'cid' => Contact::getIdForURL($contact["url"], api_user(), true),
+                               'pid' => Contact::getIdForURL($contact["url"], 0, true),
                                'self' => 0,
-                               'network' => $r[0]["network"],
+                               'network' => $contact["network"],
                        ];
 
                        return $ret;
@@ -4340,12 +4340,8 @@ function check_acl_input($acl_string)
        foreach ($cid_array as $cid) {
                $cid = str_replace("<", "", $cid);
                $cid = str_replace(">", "", $cid);
-               $contact = q(
-                       "SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d",
-                       intval($cid),
-                       intval(api_user())
-               );
-               $contact_not_found |= !DBA::isResult($contact);
+               $condition = ['id' => $cid, 'uid' => api_user()];
+               $contact_not_found |= !DBA::exists('contact', $condition);
        }
        return $contact_not_found;
 }
@@ -4527,7 +4523,7 @@ function post_photo_item($hash, $allow_cid, $deny_cid, $allow_gid, $deny_gid, $f
 {
        // get data about the api authenticated user
        $uri = Item::newURI(intval(api_user()));
-       $owner_record = q("SELECT * FROM `contact` WHERE `uid`= %d AND `self` LIMIT 1", intval(api_user()));
+       $owner_record = DBA::selectFirst('contact', [], ['uid' => api_user(), 'self' => true]);
 
        $arr = [];
        $arr['guid']          = System::createGUID(32);
@@ -4537,13 +4533,13 @@ function post_photo_item($hash, $allow_cid, $deny_cid, $allow_gid, $deny_gid, $f
        $arr['type']          = 'photo';
        $arr['wall']          = 1;
        $arr['resource-id']   = $hash;
-       $arr['contact-id']    = $owner_record[0]['id'];
-       $arr['owner-name']    = $owner_record[0]['name'];
-       $arr['owner-link']    = $owner_record[0]['url'];
-       $arr['owner-avatar']  = $owner_record[0]['thumb'];
-       $arr['author-name']   = $owner_record[0]['name'];
-       $arr['author-link']   = $owner_record[0]['url'];
-       $arr['author-avatar'] = $owner_record[0]['thumb'];
+       $arr['contact-id']    = $owner_record['id'];
+       $arr['owner-name']    = $owner_record['name'];
+       $arr['owner-link']    = $owner_record['url'];
+       $arr['owner-avatar']  = $owner_record['thumb'];
+       $arr['author-name']   = $owner_record['name'];
+       $arr['author-link']   = $owner_record['url'];
+       $arr['author-avatar'] = $owner_record['thumb'];
        $arr['title']         = "";
        $arr['allow_cid']     = $allow_cid;
        $arr['allow_gid']     = $allow_gid;
@@ -4559,7 +4555,7 @@ function post_photo_item($hash, $allow_cid, $deny_cid, $allow_gid, $deny_gid, $f
                        ];
 
        // adds link to the thumbnail scale photo
-       $arr['body'] = '[url=' . System::baseUrl() . '/photos/' . $owner_record[0]['nick'] . '/image/' . $hash . ']'
+       $arr['body'] = '[url=' . System::baseUrl() . '/photos/' . $owner_record['nick'] . '/image/' . $hash . ']'
                                . '[img]' . System::baseUrl() . '/photo/' . $hash . '-' . "2" . '.'. $typetoext[$filetype] . '[/img]'
                                . '[/url]';
 
@@ -5830,11 +5826,11 @@ function api_friendica_profile_show($type)
        }
 
        // return settings, authenticated user and profiles data
-       $self = q("SELECT `nurl` FROM `contact` WHERE `uid`= %d AND `self` LIMIT 1", intval(api_user()));
+       $self = DBA::selectFirst('contact', ['nurl'], ['uid' => api_user(), 'self' => true]);
 
        $result = ['multi_profiles' => $multi_profiles ? true : false,
                                        'global_dir' => $directory,
-                                       'friendica_owner' => api_get_user($a, $self[0]['nurl']),
+                                       'friendica_owner' => api_get_user($a, $self['nurl']),
                                        'profiles' => $profiles];
        return api_format_data("friendica_profiles", $type, ['$result' => $result]);
 }
index a1ac2e94947f1d2783a64023c1368c53bec5e133..0ef3c56765e413610a0d1542cb4bcf2c48502e60 100644 (file)
@@ -125,14 +125,9 @@ function notification($params)
 
                // Check to see if there was already a tag notify or comment notify for this post.
                // If so don't create a second notification
-               $p = q("SELECT `id` FROM `notify` WHERE `type` IN (%d, %d, %d) AND `link` = '%s' AND `uid` = %d LIMIT 1",
-                       intval(NOTIFY_TAGSELF),
-                       intval(NOTIFY_COMMENT),
-                       intval(NOTIFY_SHARE),
-                       DBA::escape($params['link']),
-                       intval($params['uid'])
-               );
-               if ($p && count($p)) {
+               $condition = ['type' => [NOTIFY_TAGSELF, NOTIFY_COMMENT, NOTIFY_SHARE],
+                       'link' => $params['link'], 'uid' => $params['uid']];
+               if (DBA::exists('notify', $condition)) {
                        L10n::popLang();
                        return;
                }
@@ -446,9 +441,7 @@ function notification($params)
                do {
                        $dups = false;
                        $hash = random_string();
-                       $r = q("SELECT `id` FROM `notify` WHERE `hash` = '%s' LIMIT 1",
-                               DBA::escape($hash));
-                       if (DBA::isResult($r)) {
+                       if (DBA::exists('notify', ['hash' => $hash])) {
                                $dups = true;
                        }
                } while ($dups == true);
@@ -478,33 +471,14 @@ function notification($params)
                }
 
                // create notification entry in DB
-               q("INSERT INTO `notify` (`hash`, `name`, `url`, `photo`, `date`, `uid`, `link`, `iid`, `parent`, `type`, `verb`, `otype`, `name_cache`)
-                       values('%s', '%s', '%s', '%s', '%s', %d, '%s', %d, %d, %d, '%s', '%s', '%s')",
-                       DBA::escape($datarray['hash']),
-                       DBA::escape($datarray['name']),
-                       DBA::escape($datarray['url']),
-                       DBA::escape($datarray['photo']),
-                       DBA::escape($datarray['date']),
-                       intval($datarray['uid']),
-                       DBA::escape($datarray['link']),
-                       intval($datarray['iid']),
-                       intval($datarray['parent']),
-                       intval($datarray['type']),
-                       DBA::escape($datarray['verb']),
-                       DBA::escape($datarray['otype']),
-                       DBA::escape($datarray["name_cache"])
-               );
+               $fields = ['hash' => $datarray['hash'], 'name' => $datarray['name'], 'url' => $datarray['url'],
+                       'photo' => $datarray['photo'], 'date' => $datarray['date'], 'uid' => $datarray['uid'],
+                       'link' => $datarray['link'], 'iid' => $datarray['iid'], 'parent' => $datarray['parent'],
+                       'type' => $datarray['type'], 'verb' => $datarray['verb'], 'otype' => $datarray['otype'],
+                       'name_cache' => $datarray["name_cache"]];
+               DBA::insert('notify', $fields);
 
-               $r = q("SELECT `id` FROM `notify` WHERE `hash` = '%s' AND `uid` = %d LIMIT 1",
-                       DBA::escape($hash),
-                       intval($params['uid'])
-               );
-               if ($r) {
-                       $notify_id = $r[0]['id'];
-               } else {
-                       L10n::popLang();
-                       return False;
-               }
+               $notify_id = DBA::lastInsertId();
 
                // we seem to have a lot of duplicate comment notifications due to race conditions, mostly from forums
                // After we've stored everything, look again to see if there are any duplicates and if so remove them
@@ -529,12 +503,10 @@ function notification($params)
                $itemlink = System::baseUrl().'/notify/view/'.$notify_id;
                $msg = replace_macros($epreamble, ['$itemlink' => $itemlink]);
                $msg_cache = format_notification_message($datarray['name_cache'], strip_tags(BBCode::convert($msg)));
-               q("UPDATE `notify` SET `msg` = '%s', `msg_cache` = '%s' WHERE `id` = %d AND `uid` = %d",
-                       DBA::escape($msg),
-                       DBA::escape($msg_cache),
-                       intval($notify_id),
-                       intval($params['uid'])
-               );
+
+               $fields = ['msg' => $msg, 'msg_cache' => $msg_cache];
+               $condition = ['id' => $notify_id, 'uid' => $params['uid']];
+               DBA::update('notify', $fields, $condition);
        }
 
        // send email notification if notification preferences permit
@@ -548,21 +520,12 @@ function notification($params)
                        $id_for_parent = $params['parent']."@".$hostname;
 
                        // Is this the first email notification for this parent item and user?
-
-                       $r = q("SELECT `id` FROM `notify-threads` WHERE `master-parent-item` = %d AND `receiver-uid` = %d LIMIT 1",
-                               intval($params['parent']),
-                               intval($params['uid']));
-
-                       // If so, create the record of it and use a message-id smtp header.
-
-                       if (!$r) {
+                       if (!DBA::exists('notify-threads', ['master-parent-item' => $params['parent'], 'receiver-uid' => $params['uid']])) {
                                logger("notify_id:".intval($notify_id).", parent: ".intval($params['parent'])."uid: ".intval($params['uid']), LOGGER_DEBUG);
-                               q("INSERT INTO `notify-threads` (`notify-id`, `master-parent-item`, `receiver-uid`, `parent-item`)
-                                       values(%d, %d, %d, %d)",
-                                       intval($notify_id),
-                                       intval($params['parent']),
-                                       intval($params['uid']),
-                                       0);
+
+                               $fields = ['notify-id' => $notify_id, 'master-parent-item' => $params['parent'],
+                                       'receiver-uid' => $params['uid'], 'parent-item' => 0];
+                               DBA::insert('notify-threads', $fields);
 
                                $additional_mail_header .= "Message-ID: <${id_for_parent}>\n";
                                $log_msg = "include/enotify: No previous notification found for this parent:\n".
@@ -571,7 +534,7 @@ function notification($params)
                        } else {
                                // If not, just "follow" the thread.
                                $additional_mail_header .= "References: <${id_for_parent}>\nIn-Reply-To: <${id_for_parent}>\n";
-                               logger("There's already a notification for this parent:\n".print_r($r, true), LOGGER_DEBUG);
+                               logger("There's already a notification for this parent.", LOGGER_DEBUG);
                        }
                }
 
index 7045a2953a58911237128dc9f3919ed27f7a3dec..610729bbbe094db6b7d4afa9eb512ff5519c5089 100644 (file)
@@ -288,25 +288,30 @@ function consume_feed($xml, array $importer, array $contact, &$hub, $datedir = 0
 
 function subscribe_to_hub($url, array $importer, array $contact, $hubmode = 'subscribe')
 {
-       $a = BaseObject::getApp();
-       $r = null;
-
-       if (!empty($importer)) {
-               $r = q("SELECT `nickname` FROM `user` WHERE `uid` = %d LIMIT 1",
-                       intval($importer['uid'])
-               );
-       }
-
        /*
         * Diaspora has different message-ids in feeds than they do
         * through the direct Diaspora protocol. If we try and use
         * the feed, we'll get duplicates. So don't.
         */
-       if ((!DBA::isResult($r)) || $contact['network'] === Protocol::DIASPORA) {
+       if ($contact['network'] === Protocol::DIASPORA) {
+               return;
+       }
+
+       // Without an importer we don't have a user id - so we quit
+       if (empty($importer)) {
+               return;
+       }
+
+       $a = BaseObject::getApp();
+
+       $user = DBA::selectFirst('user', ['nickname'], ['uid' => $importer['uid']]);
+
+       // No user, no nickname, we quit
+       if (!DBA::isResult($user)) {
                return;
        }
 
-       $push_url = System::baseUrl() . '/pubsub/' . $r[0]['nickname'] . '/' . $contact['id'];
+       $push_url = System::baseUrl() . '/pubsub/' . $user['nickname'] . '/' . $contact['id'];
 
        // Use a single verify token, even if multiple hubs
        $verify_token = ((strlen($contact['hub-verify'])) ? $contact['hub-verify'] : random_string());
index 141738e4bc523e23ec33f21099e2ac5389a2ff25..2063bdd16253d56b19343e62c02ba01520cd60ac 100644 (file)
@@ -299,11 +299,7 @@ function permissions_sql($owner_id, $remote_verified = false, $groups = null)
                 */
 
                if (!$remote_verified) {
-                       $r = q("SELECT id FROM contact WHERE id = %d AND uid = %d AND blocked = 0 LIMIT 1",
-                               intval($remote_user),
-                               intval($owner_id)
-                       );
-                       if (DBA::isResult($r)) {
+                       if (DBA::exists('contact', ['id' => $remote_user, 'uid' => $owner_id, 'blocked' => false])) {
                                $remote_verified = true;
                                $groups = Group::getIdsByContactId($remote_user);
                        }
index a9a11f76f2a8aae0d51a1b484ad31d83990d3589..d251824e2ba6197c61e29dd20dde382a3fd275b5 100644 (file)
@@ -1459,26 +1459,6 @@ function return_bytes($size_str) {
        }
 }
 
-
-/**
- * @return string
- */
-function generate_user_guid() {
-       $found = true;
-       do {
-               $guid = System::createGUID(32);
-               $x = q("SELECT `uid` FROM `user` WHERE `guid` = '%s' LIMIT 1",
-                       DBA::escape($guid)
-               );
-               if (!DBA::isResult($x)) {
-                       $found = false;
-               }
-       } while ($found == true);
-
-       return $guid;
-}
-
-
 /**
  * @param string $s
  * @param boolean $strip_padding
index bda4ae610758227829f03506933146ceb3962e2c..c630beb25f42c6a9e16b59fe4953a46da624645e 100644 (file)
@@ -771,7 +771,7 @@ function networkThreadedView(App $a, $update, $parent)
                        FROM `item` $sql_post_table
                        STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
                                AND (NOT `contact`.`blocked` OR `contact`.`pending`)
-                               AND (`item`.`parent-uri` != `item`.`uri`
+                               AND (`item`.`gravity` != %d
                                        OR `contact`.`uid` = `item`.`uid` AND `contact`.`self`
                                        OR `contact`.`rel` IN (%d, %d) AND NOT `contact`.`readonly`)
                        LEFT JOIN `user-item` ON `user-item`.`iid` = `item`.`id` AND `user-item`.`uid` = %d
@@ -780,6 +780,7 @@ function networkThreadedView(App $a, $update, $parent)
                        AND NOT `item`.`moderated` AND $sql_extra4
                        $sql_extra3 $sql_extra $sql_range $sql_nets
                        ORDER BY `order_date` DESC LIMIT 100",
+                       intval(GRAVITY_PARENT),
                        intval(Contact::SHARING),
                        intval(Contact::FRIEND),
                        intval(local_user()),
@@ -791,7 +792,7 @@ function networkThreadedView(App $a, $update, $parent)
                        STRAIGHT_JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
                                AND (NOT `contact`.`blocked` OR `contact`.`pending`)
                        STRAIGHT_JOIN `item` ON `item`.`id` = `thread`.`iid`
-                               AND (`item`.`parent-uri` != `item`.`uri`
+                               AND (`item`.`gravity` != %d
                                        OR `contact`.`uid` = `item`.`uid` AND `contact`.`self`
                                        OR `contact`.`rel` IN (%d, %d) AND NOT `contact`.`readonly`)
                        LEFT JOIN `user-item` ON `user-item`.`iid` = `item`.`id` AND `user-item`.`uid` = %d
@@ -800,6 +801,7 @@ function networkThreadedView(App $a, $update, $parent)
                        AND (`user-item`.`hidden` IS NULL OR NOT `user-item`.`hidden`)
                        $sql_extra2 $sql_extra3 $sql_range $sql_extra $sql_nets
                        ORDER BY `order_date` DESC $pager_sql",
+                       intval(GRAVITY_PARENT),
                        intval(Contact::SHARING),
                        intval(Contact::FRIEND),
                        intval(local_user()),
index 7c448d0af78a0792e212b53b8b5005a1d1582752..1153f2147d7c5efcb11f2f71b141fda086640253 100644 (file)
@@ -40,15 +40,12 @@ function subthread_content(App $a) {
 
        if (!$item['wall']) {
                // The top level post may have been written by somebody on another system
-               $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
-                       intval($item['contact-id']),
-                       intval($item['uid'])
-               );
-               if (!DBA::isResult($r)) {
+               $contact = DBA::selectFirst('contact', [], ['id' => $item['contact-id'], 'uid' => $item['uid']]);
+               if (!DBA::isResult($contact)) {
                        return;
                }
-               if (!$r[0]['self']) {
-                       $remote_owner = $r[0];
+               if (!$contact['self']) {
+                       $remote_owner = $contact;
                }
        }
 
@@ -79,18 +76,11 @@ function subthread_content(App $a) {
        if (local_user() && (local_user() == $owner_uid)) {
                $contact = $owner;
        } else {
-               $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
-                       intval($_SESSION['visitor_id']),
-                       intval($owner_uid)
-               );
-
-               if (DBA::isResult($r)) {
-                       $contact = $r[0];
+               $contact = DBA::selectFirst('contact', [], ['id' => $_SESSION['visitor_id'], 'uid' => $owner_uid]);
+               if (!DBA::isResult($contact)) {
+                       return;
                }
        }
-       if (!$contact) {
-               return;
-       }
 
        $uri = Item::newURI($owner_uid);
 
index 0d3f7e8789b40bbf2c4f502ab49e037aebd13229..f8bfe3f0b8132af619446cfb5e21380ca30628ab 100644 (file)
@@ -1386,22 +1386,14 @@ class Contact extends BaseObject
                // the poll url is more reliable than the profile url, as we may have
                // indirect links or webfinger links
 
-               $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `poll` IN ('%s', '%s') AND `network` = '%s' AND NOT `pending` LIMIT 1",
-                       intval($uid),
-                       DBA::escape($ret['poll']),
-                       DBA::escape(normalise_link($ret['poll'])),
-                       DBA::escape($ret['network'])
-               );
-
-               if (!DBA::isResult($r)) {
-                       $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' AND `network` = '%s' AND NOT `pending` LIMIT 1",
-                               intval($uid),
-                               DBA::escape(normalise_link($url)),
-                               DBA::escape($ret['network'])
-                       );
+               $condition = ['uid' => $uid, 'poll' => [$ret['poll'], normalise_link($ret['poll'])], 'network' => $ret['network'], 'pending' => false];
+               $contact = DBA::selectFirst('contact', ['id', 'rel'], $condition);
+               if (!DBA::isResult($contact)) {
+                       $condition = ['uid' => $uid, 'nurl' => normalise_link($url), 'network' => $ret['network'], 'pending' => false];
+                       $contact = DBA::selectFirst('contact', ['id', 'rel'], $condition);
                }
 
-               if (($ret['network'] === Protocol::DFRN) && !DBA::isResult($r)) {
+               if (($ret['network'] === Protocol::DFRN) && !DBA::isResult($contact)) {
                        if ($interactive) {
                                if (strlen($a->urlpath)) {
                                        $myaddr = bin2hex(System::baseUrl() . '/profile/' . $a->user['nickname']);
@@ -1463,14 +1455,14 @@ class Contact extends BaseObject
                        $writeable = 1;
                }
 
-               if (DBA::isResult($r)) {
+               if (DBA::isResult($contact)) {
                        // update contact
-                       $new_relation = (($r[0]['rel'] == self::FOLLOWER) ? self::FRIEND : self::SHARING);
+                       $new_relation = (($contact['rel'] == self::FOLLOWER) ? self::FRIEND : self::SHARING);
 
                        $fields = ['rel' => $new_relation, 'subhub' => $subhub, 'readonly' => false];
-                       DBA::update('contact', $fields, ['id' => $r[0]['id']]);
+                       DBA::update('contact', $fields, ['id' => $contact['id']]);
                } else {
-                       $new_relation = ((in_array($ret['network'], [Protocol::MAIL])) ? self::FRIEND : self::SHARING);
+                       $new_relation = (in_array($ret['network'], [Protocol::MAIL]) ? self::FRIEND : self::SHARING);
 
                        // create contact record
                        DBA::insert('contact', [
@@ -1517,12 +1509,9 @@ class Contact extends BaseObject
 
                Worker::add(PRIORITY_HIGH, "OnePoll", $contact_id, "force");
 
-               $r = q("SELECT `contact`.*, `user`.* FROM `contact` INNER JOIN `user` ON `contact`.`uid` = `user`.`uid`
-                       WHERE `user`.`uid` = %d AND `contact`.`self` LIMIT 1",
-                       intval($uid)
-               );
+               $owner = User::getOwnerDataById($uid);
 
-               if (DBA::isResult($r)) {
+               if (DBA::isResult($owner)) {
                        if (in_array($contact['network'], [Protocol::OSTATUS, Protocol::DFRN])) {
                                // create a follow slap
                                $item = [];
@@ -1533,9 +1522,9 @@ class Contact extends BaseObject
                                $item['guid'] = '';
                                $item['tag'] = '';
                                $item['attach'] = '';
-                               $slap = OStatus::salmon($item, $r[0]);
+                               $slap = OStatus::salmon($item, $owner);
                                if (!empty($contact['notify'])) {
-                                       Salmon::slapper($r[0], $contact['notify'], $slap);
+                                       Salmon::slapper($owner, $contact['notify'], $slap);
                                }
                        } elseif ($contact['network'] == Protocol::DIASPORA) {
                                $ret = Diaspora::sendShare($a->user, $contact);
@@ -1672,10 +1661,8 @@ class Contact extends BaseObject
 
                                }
                        } elseif (DBA::isResult($user) && in_array($user['page-flags'], [self::PAGE_SOAPBOX, self::PAGE_FREELOVE, self::PAGE_COMMUNITY])) {
-                               q("UPDATE `contact` SET `pending` = 0 WHERE `uid` = %d AND `url` = '%s' AND `pending` LIMIT 1",
-                                               intval($importer['uid']),
-                                               DBA::escape($url)
-                               );
+                               $condition = ['uid' => $importer['uid'], 'url' => $url, 'pending' => true];
+                               DBA::update('contact', ['pending' => false], $condition);
                        }
                }
        }
@@ -1724,10 +1711,9 @@ class Contact extends BaseObject
                                 */
 
                                // Check for duplicates
-                               $s = q("SELECT `id` FROM `event` WHERE `uid` = %d AND `cid` = %d AND `start` = '%s' AND `type` = '%s' LIMIT 1",
-                                       intval($rr['uid']), intval($rr['id']), DBA::escape(DateTimeFormat::utc($nextbd)), DBA::escape('birthday'));
-
-                               if (DBA::isResult($s)) {
+                               $condition = ['uid' => $rr['uid'], 'cid' => $rr['id'],
+                                       'start' => DateTimeFormat::utc($nextbd), 'type' => 'birthday'];
+                               if (DBA::exists('event', $condition)) {
                                        continue;
                                }
 
@@ -1741,7 +1727,6 @@ class Contact extends BaseObject
                                        intval(0)
                                );
 
-
                                // update bdyear
                                q("UPDATE `contact` SET `bdyear` = '%s', `bd` = '%s' WHERE `uid` = %d AND `id` = %d", DBA::escape(substr($nextbd, 0, 4)),
                                        DBA::escape($nextbd), intval($rr['uid']), intval($rr['id'])
index 91579faa199b459b6549a85968263e01fdea0510..992b77badabaf8042907aae3df0b7d5af4eb0353 100644 (file)
@@ -550,10 +550,13 @@ class Event extends BaseObject
                $fmt = L10n::t('l, F j');
                foreach ($event_result as $event) {
                        $item = Item::selectFirst(['plink', 'author-name', 'author-avatar', 'author-link'], ['id' => $event['itemid']]);
-                       if (DBA::isResult($item)) {
-                               $event = array_merge($event, $item);
+                       if (!DBA::isResult($item)) {
+                               // Using default values when no item had been found
+                               $item = ['plink' => '', 'author-name' => '', 'author-avatar' => '', 'author-link' => ''];
                        }
 
+                       $event = array_merge($event, $item);
+
                        $start = $event['adjust'] ? DateTimeFormat::local($event['start'], 'c')  : DateTimeFormat::utc($event['start'], 'c');
                        $j     = $event['adjust'] ? DateTimeFormat::local($event['start'], 'j')  : DateTimeFormat::utc($event['start'], 'j');
                        $day   = $event['adjust'] ? DateTimeFormat::local($event['start'], $fmt) : DateTimeFormat::utc($event['start'], $fmt);
index eb93c55ce6498a88e4b1219f9be0eada23540ea5..6f068889eebe2e96b910cd35b5e5585e231e379c 100644 (file)
@@ -98,33 +98,8 @@ class GContact
                        return;
                }
 
-               $r = q(
-                       "SELECT * FROM `glink` WHERE `cid` = %d AND `uid` = %d AND `gcid` = %d AND `zcid` = %d LIMIT 1",
-                       intval($cid),
-                       intval($uid),
-                       intval($gcid),
-                       intval($zcid)
-               );
-
-               if (!DBA::isResult($r)) {
-                       q(
-                               "INSERT INTO `glink` (`cid`, `uid`, `gcid`, `zcid`, `updated`) VALUES (%d, %d, %d, %d, '%s') ",
-                               intval($cid),
-                               intval($uid),
-                               intval($gcid),
-                               intval($zcid),
-                               DBA::escape(DateTimeFormat::utcNow())
-                       );
-               } else {
-                       q(
-                               "UPDATE `glink` SET `updated` = '%s' WHERE `cid` = %d AND `uid` = %d AND `gcid` = %d AND `zcid` = %d",
-                               DBA::escape(DateTimeFormat::utcNow()),
-                               intval($cid),
-                               intval($uid),
-                               intval($gcid),
-                               intval($zcid)
-                       );
-               }
+               $condition = ['cid' => $cid, 'uid' => $uid, 'gcid' => $gcid, 'zcid' => $zcid];
+               DBA::update('glink', ['updated' => DateTimeFormat::utcNow()], $condition, true);
        }
 
        /**
@@ -175,24 +150,19 @@ class GContact
                }
 
                if (!isset($gcontact['network'])) {
-                       $r = q(
-                               "SELECT `network` FROM `contact` WHERE `uid` = 0 AND `nurl` = '%s' AND `network` != '' AND `network` != '%s' LIMIT 1",
-                               DBA::escape(normalise_link($gcontact['url'])),
-                               DBA::escape(Protocol::STATUSNET)
-                       );
-                       if (DBA::isResult($r)) {
-                               $gcontact['network'] = $r[0]["network"];
+                       $condition = ["`uid` = 0 AND `nurl` = ? AND `network` != '' AND `network` != ?",
+                               normalise_link($gcontact['url']), Protocol::STATUSNET];
+                       $contact = DBA::selectFirst('contact', ['network'], $condition);
+                       if (DBA::isResult($contact)) {
+                               $gcontact['network'] = $contact["network"];
                        }
 
                        if (($gcontact['network'] == "") || ($gcontact['network'] == Protocol::OSTATUS)) {
-                               $r = q(
-                                       "SELECT `network`, `url` FROM `contact` WHERE `uid` = 0 AND `alias` IN ('%s', '%s') AND `network` != '' AND `network` != '%s' LIMIT 1",
-                                       DBA::escape($gcontact['url']),
-                                       DBA::escape(normalise_link($gcontact['url'])),
-                                       DBA::escape(Protocol::STATUSNET)
-                               );
-                               if (DBA::isResult($r)) {
-                                       $gcontact['network'] = $r[0]["network"];
+                               $condition = ["`uid` = 0 AND `alias` IN (?, ?) AND `network` != '' AND `network` != ?",
+                                       $gcontact['url'], normalise_link($gcontact['url']), Protocol::STATUSNET];
+                               $contact = DBA::selectFirst('contact', ['network'], $condition);
+                               if (DBA::isResult($contact)) {
+                                       $gcontact['network'] = $contact["network"];
                                }
                        }
                }
@@ -200,23 +170,20 @@ class GContact
                $gcontact['server_url'] = '';
                $gcontact['network'] = '';
 
-               $x = q(
-                       "SELECT * FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
-                       DBA::escape(normalise_link($gcontact['url']))
-               );
-
-               if (DBA::isResult($x)) {
-                       if (!isset($gcontact['network']) && ($x[0]["network"] != Protocol::STATUSNET)) {
-                               $gcontact['network'] = $x[0]["network"];
+               $fields = ['network', 'updated', 'server_url', 'url', 'addr'];
+               $gcnt = DBA::selectFirst('gcontact', $fields, ['nurl' => normalise_link($gcontact['url'])]);
+               if (DBA::isResult($gcnt)) {
+                       if (!isset($gcontact['network']) && ($gcnt["network"] != Protocol::STATUSNET)) {
+                               $gcontact['network'] = $gcnt["network"];
                        }
                        if ($gcontact['updated'] <= NULL_DATE) {
-                               $gcontact['updated'] = $x[0]["updated"];
+                               $gcontact['updated'] = $gcnt["updated"];
                        }
-                       if (!isset($gcontact['server_url']) && (normalise_link($x[0]["server_url"]) != normalise_link($x[0]["url"]))) {
-                               $gcontact['server_url'] = $x[0]["server_url"];
+                       if (!isset($gcontact['server_url']) && (normalise_link($gcnt["server_url"]) != normalise_link($gcnt["url"]))) {
+                               $gcontact['server_url'] = $gcnt["server_url"];
                        }
                        if (!isset($gcontact['addr'])) {
-                               $gcontact['addr'] = $x[0]["addr"];
+                               $gcontact['addr'] = $gcnt["addr"];
                        }
                }
 
@@ -689,20 +656,17 @@ class GContact
                }
 
                DBA::lock('gcontact');
-               $r = q(
-                       "SELECT `id`, `last_contact`, `last_failure`, `network` FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
-                       DBA::escape(normalise_link($contact["url"]))
-               );
-
-               if (DBA::isResult($r)) {
-                       $gcontact_id = $r[0]["id"];
+               $fields = ['id', 'last_contact', 'last_failure', 'network'];
+               $gcnt = DBA::selectFirst('gcontact', $fields, ['nurl' => normalise_link($contact["url"])]);
+               if (DBA::isResult($gcnt)) {
+                       $gcontact_id = $gcnt["id"];
 
                        // Update every 90 days
-                       if (in_array($r[0]["network"], [Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS, ""])) {
-                               $last_failure_str = $r[0]["last_failure"];
-                               $last_failure = strtotime($r[0]["last_failure"]);
-                               $last_contact_str = $r[0]["last_contact"];
-                               $last_contact = strtotime($r[0]["last_contact"]);
+                       if (in_array($gcnt["network"], [Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS, ""])) {
+                               $last_failure_str = $gcnt["last_failure"];
+                               $last_failure = strtotime($gcnt["last_failure"]);
+                               $last_contact_str = $gcnt["last_contact"];
+                               $last_contact = strtotime($gcnt["last_contact"]);
                                $doprobing = (((time() - $last_contact) > (90 * 86400)) && ((time() - $last_failure) > (90 * 86400)));
                        }
                } else {
@@ -728,15 +692,11 @@ class GContact
                                intval($contact["generation"])
                        );
 
-                       $r = q(
-                               "SELECT `id`, `network` FROM `gcontact` WHERE `nurl` = '%s' ORDER BY `id` LIMIT 2",
-                               DBA::escape(normalise_link($contact["url"]))
-                       );
-
-                       if (DBA::isResult($r)) {
-                               $gcontact_id = $r[0]["id"];
-
-                               $doprobing = in_array($r[0]["network"], [Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS, ""]);
+                       $condition = ['nurl' => normalise_link($contact["url"])];
+                       $cnt = DBA::selectFirst('gcontact', ['id', 'network'], $condition, ['order' => ['id']]);
+                       if (DBA::isResult($cnt)) {
+                               $gcontact_id = $cnt["id"];
+                               $doprobing = in_array($cnt["network"], [Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS, ""]);
                        }
                }
                DBA::unlock();
index b9c88bca8650111f6703a8c6762ea70ac9270aaf..2f4fcd21c0a5660cd1924bfe74ea4c7967d6498d 100644 (file)
@@ -111,7 +111,7 @@ class Item extends BaseObject
         * @param string $activity activity string
         * @return integer Activity index
         */
-       private static function activityToIndex($activity)
+       public static function activityToIndex($activity)
        {
                $index = array_search($activity, self::ACTIVITIES);
 
@@ -2456,6 +2456,12 @@ class Item extends BaseObject
                }
        }
 
+       /**
+        * This function is only used for the old Friendica app on Android that doesn't like paths with guid
+        * @param string $guid item guid
+        * @param int    $uid  user id
+        * @return array with id and nick of the item with the given guid
+        */
        public static function getIdAndNickByGuid($guid, $uid = 0)
        {
                $nick = "";
@@ -2467,28 +2473,28 @@ class Item extends BaseObject
 
                // Does the given user have this item?
                if ($uid) {
-                       /// @todo This query has to be abstracted for the "uri-id" changes
-                       $item = DBA::fetchFirst("SELECT `item`.`id`, `user`.`nickname` FROM `item`
-                               INNER JOIN `user` ON `user`.`uid` = `item`.`uid`
-                               WHERE `item`.`visible` AND NOT `item`.`deleted` AND NOT `item`.`moderated`
-                                       AND `item`.`guid` = ? AND `item`.`uid` = ?", $guid, $uid);
+                       $item = self::selectFirst(['id'], ['guid' => $guid, 'uid' => $uid]);
                        if (DBA::isResult($item)) {
-                               $id = $item["id"];
-                               $nick = $item["nickname"];
+                               $user = DBA::selectFirst('user', ['nickname'], ['uid' => $uid]);
+                               if (!DBA::isResult($user)) {
+                                       return;
+                               }
+                               $id = $item['id'];
+                               $nick = $user['nickname'];
                        }
                }
 
                // Or is it anywhere on the server?
                if ($nick == "") {
-                       /// @todo This query has to be abstracted for the "uri-id" changes
-                       $item = DBA::fetchFirst("SELECT `item`.`id`, `user`.`nickname` FROM `item`
-                               INNER JOIN `user` ON `user`.`uid` = `item`.`uid`
-                               WHERE `item`.`visible` AND NOT `item`.`deleted` AND NOT `item`.`moderated`
-                                       AND NOT `item`.`private` AND `item`.`wall`
-                                       AND `item`.`guid` = ?", $guid);
+                       $condition = ["`guid` = ? AND `uid` != 0", $guid];
+                       $item = self::selectFirst(['id', 'uid'], $condition);
                        if (DBA::isResult($item)) {
-                               $id = $item["id"];
-                               $nick = $item["nickname"];
+                               $user = DBA::selectFirst('user', ['nickname'], ['uid' => $item['uid']]);
+                               if (!DBA::isResult($user)) {
+                                       return;
+                               }
+                               $id = $item['id'];
+                               $nick = $user['nickname'];
                        }
                }
                return ["nick" => $nick, "id" => $id];
@@ -3177,8 +3183,7 @@ class Item extends BaseObject
                        return;
                }
 
-               // Using dba::delete at this time could delete the associated item entries
-               $result = DBA::e("DELETE FROM `thread` WHERE `iid` = ?", $itemid);
+               $result = DBA::delete('thread', ['iid' => $itemid], ['cascade' => false]);
 
                logger("deleteThread: Deleted thread for item ".$itemid." - ".print_r($result, true), LOGGER_DEBUG);
 
index 37ebd123aa46082abf5fc297ea95950c20870e2f..24a174b6b58251df7c5dd674c4ad75d207c50b46 100644 (file)
@@ -56,13 +56,11 @@ class Mail
 
                if (strlen($replyto)) {
                        $reply = true;
-                       $r = q("SELECT `convid` FROM `mail` WHERE `uid` = %d AND (`uri` = '%s' OR `parent-uri` = '%s') LIMIT 1",
-                               intval(local_user()),
-                               DBA::escape($replyto),
-                               DBA::escape($replyto)
-                       );
-                       if (DBA::isResult($r)) {
-                               $convid = $r[0]['convid'];
+                       $condition = ["`uid` = ? AND (`uri` = ? OR `parent-uri` = ?)",
+                               local_user(), $replyto, $replyto];
+                       $mail = DBA::selectFirst('mail', ['convid'], $condition);
+                       if (DBA::isResult($mail)) {
+                               $convid = $mail['convid'];
                        }
                }
 
index b6400a596cc5e5784d646c3a1b41723be06cfcb8..f6e116fa79867b94a9cbb58d5bc0541446898155 100644 (file)
@@ -124,12 +124,10 @@ class Profile
                // fetch user tags if this isn't the default profile
 
                if (!$pdata['is-default']) {
-                       $x = q(
-                               "SELECT `pub_keywords` FROM `profile` WHERE `uid` = %d AND `is-default` = 1 LIMIT 1",
-                               intval($pdata['profile_uid'])
-                       );
-                       if ($x && count($x)) {
-                               $pdata['pub_keywords'] = $x[0]['pub_keywords'];
+                       $condition = ['uid' => $pdata['profile_uid'], 'is-default' => true];
+                       $profile = DBA::selectFirst('profile', ['pub_keywords'], $condition);
+                       if (DBA::isResult($profile)) {
+                               $pdata['pub_keywords'] = $profile['pub_keywords'];
                        }
                }
 
@@ -641,37 +639,26 @@ class Profile
                $bd_format = L10n::t('g A l F d'); // 8 AM Friday January 18
                $classtoday = '';
 
-               $s = DBA::p(
-                       "SELECT `event`.*
-                       FROM `event`
-                       INNER JOIN `item`
-                               ON `item`.`uid` = `event`.`uid`
-                               AND `item`.`parent-uri` = `event`.`uri`
-                       WHERE `event`.`uid` = ?
-                       AND `event`.`type` != 'birthday'
-                       AND `event`.`start` < ?
-                       AND `event`.`start` >= ?
-                       AND `item`.`author-id` = ?
-                       AND (`item`.`verb` = ? OR `item`.`verb` = ?)
-                       AND `item`.`visible`
-                       AND NOT `item`.`deleted`
-                       ORDER BY  `event`.`start` ASC",
-                       local_user(),
-                       DateTimeFormat::utc('now + 7 days'),
-                       DateTimeFormat::utc('now - 1 days'),
-                       public_contact(),
-                       ACTIVITY_ATTEND,
-                       ACTIVITY_ATTENDMAYBE
-               );
+               $condition = ["`uid` = ? AND `type` != 'birthday' AND `start` < ? AND `start` >= ?",
+                       local_user(), DateTimeFormat::utc('now + 7 days'), DateTimeFormat::utc('now - 1 days')];
+               $s = DBA::select('event', [], $condition, ['order' => ['start']]);
 
                $r = [];
 
                if (DBA::isResult($s)) {
                        $istoday = false;
+                       $total = 0;
 
                        while ($rr = DBA::fetch($s)) {
+                               $condition = ['parent-uri' => $rr['uri'], 'uid' => $rr['uid'], 'author-id' => public_contact(),
+                                       'activity' => [Item::activityToIndex(ACTIVITY_ATTEND), Item::activityToIndex(ACTIVITY_ATTENDMAYBE)],
+                                       'visible' => true, 'deleted' => false];
+                               if (!Item::exists($condition)) {
+                                       continue;
+                               }
+
                                if (strlen($rr['summary'])) {
-                                       $total ++;
+                                       $total++;
                                }
 
                                $strt = DateTimeFormat::convert($rr['start'], $rr['adjust'] ? $a->timezone : 'UTC', 'UTC', 'Y-m-d');
index 46ffc138404650b30f0119320a85b5d2ad1dad95..502bc4c97c1339e45e4eaa8403a9c5fcffa7bc5b 100644 (file)
@@ -493,7 +493,7 @@ class User
                $spubkey = $sres['pubkey'];
 
                $insert_result = DBA::insert('user', [
-                       'guid'     => generate_user_guid(),
+                       'guid'     => System::createGUID(32),
                        'username' => $username,
                        'password' => $new_password_encoded,
                        'email'    => $email,
index 3f9d6998c782fcdaa3aac6e87661bff9159dc653..b9e51da4caf22478d3177bbfb43fce961e03fa85 100644 (file)
@@ -211,11 +211,9 @@ class Login extends BaseModule
 
                if (isset($_SESSION) && x($_SESSION, 'authenticated')) {
                        if (x($_SESSION, 'visitor_id') && !x($_SESSION, 'uid')) {
-                               $r = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1",
-                                       intval($_SESSION['visitor_id'])
-                               );
-                               if (DBA::isResult($r)) {
-                                       self::getApp()->contact = $r[0];
+                               $contact = DBA::selectFirst('contact', [], ['id' => $_SESSION['visitor_id']]);
+                               if (DBA::isResult($contact)) {
+                                       self::getApp()->contact = $contact;
                                }
                        }
 
index 76c48c3d2de6c5b50bc6fb471ed3a546b62f72cf..6e4996de54e54398a1f72bdf457a973364ad15c1 100644 (file)
@@ -1595,18 +1595,19 @@ class Probe
                        return false;
                }
 
-               $x = q("SELECT `prvkey` FROM `user` WHERE `uid` = %d LIMIT 1", intval($uid));
+               $user = DBA::selectFirst('user', ['prvkey'], ['uid' => $uid]);
 
-               $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d AND `server` != '' LIMIT 1", intval($uid));
+               $condition = ["`uid` = ? AND `server` != ''", $uid];
+               $mailacct = DBA::selectFirst('mailacct', ['pass', 'user'], $condition);
 
-               if (!DBA::isResult($x) || !DBA::isResult($r)) {
+               if (!DBA::isResult($user) || !DBA::isResult($mailacct)) {
                        return false;
                }
 
-               $mailbox = Email::constructMailboxName($r[0]);
+               $mailbox = Email::constructMailboxName($mailacct);
                $password = '';
-               openssl_private_decrypt(hex2bin($r[0]['pass']), $password, $x[0]['prvkey']);
-               $mbox = Email::connect($mailbox, $r[0]['user'], $password);
+               openssl_private_decrypt(hex2bin($mailacct['pass']), $password, $user['prvkey']);
+               $mbox = Email::connect($mailbox, $mailacct['user'], $password);
                if (!$mbox) {
                        return false;
                }
@@ -1659,7 +1660,6 @@ class Probe
                if (!empty($mbox)) {
                        imap_close($mbox);
                }
-
                return $data;
        }
 
index 2802e20301f627ed8c4fc24988be78892af9d8df..31c12405f65aecd9c0bd9b3bf682663ab2aeff9c 100644 (file)
@@ -1056,13 +1056,10 @@ class DFRN
                }
 
                foreach ($mentioned as $mention) {
-                       $r = q(
-                               "SELECT `forum`, `prv` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s'",
-                               intval($owner["uid"]),
-                               DBA::escape(normalise_link($mention))
-                       );
+                       $condition = ['uid' => $owner["uid"], 'nurl' => normalise_link($mention)];
+                       $contact = DBA::selectFirst('contact', ['forum', 'prv'], $condition);
 
-                       if (DBA::isResult($r) && ($r[0]["forum"] || $r[0]["prv"])) {
+                       if (DBA::isResult($contact) && ($contact["forum"] || $contact["prv"])) {
                                XML::addElement(
                                        $doc,
                                        $entry,
@@ -1232,14 +1229,11 @@ class DFRN
                $final_dfrn_id = '';
 
                if ($perm) {
-                       if ((($perm == 'rw') && (! intval($contact['writable'])))
-                               || (($perm == 'r') && (intval($contact['writable'])))
+                       if ((($perm == 'rw') && !intval($contact['writable']))
+                               || (($perm == 'r') && intval($contact['writable']))
                        ) {
-                               q(
-                                       "update contact set writable = %d where id = %d",
-                                       intval(($perm == 'rw') ? 1 : 0),
-                                       intval($contact['id'])
-                               );
+                               DBA::update('contact', ['writable' => ($perm == 'rw')], ['id' => $contact['id']]);
+
                                $contact['writable'] = (string) 1 - intval($contact['writable']);
                        }
                }
@@ -1480,15 +1474,9 @@ class DFRN
        private static function birthdayEvent($contact, $birthday)
        {
                // Check for duplicates
-               $r = q(
-                       "SELECT `id` FROM `event` WHERE `uid` = %d AND `cid` = %d AND `start` = '%s' AND `type` = '%s' LIMIT 1",
-                       intval($contact['uid']),
-                       intval($contact['id']),
-                       DBA::escape(DateTimeFormat::utc($birthday)),
-                       DBA::escape('birthday')
-               );
-
-               if (DBA::isResult($r)) {
+               $condition = ['uid' => $contact['uid'], 'cid' => $contact['id'],
+                       'start' => DateTimeFormat::utc($birthday), 'type' => 'birthday'];
+               if (DBA::exists('event', $condition)) {
                        return;
                }
 
@@ -1910,13 +1898,6 @@ class DFRN
 
                // Does our member already have a friend matching this description?
 
-               $r = q(
-                       "SELECT `id` FROM `contact` WHERE `name` = '%s' AND `nurl` = '%s' AND `uid` = %d LIMIT 1",
-                       DBA::escape($suggest["name"]),
-                       DBA::escape(normalise_link($suggest["url"])),
-                       intval($suggest["uid"])
-               );
-
                /*
                 * The valid result means the friend we're about to send a friend
                 * suggestion already has them in their contact, which means no further
@@ -1924,37 +1905,29 @@ class DFRN
                 *
                 * @see https://github.com/friendica/friendica/pull/3254#discussion_r107315246
                 */
-               if (DBA::isResult($r)) {
+               $condition = ['name' => $suggest["name"], 'nurl' => normalise_link($suggest["url"]),
+                       'uid' => $suggest["uid"]];
+               if (DBA::exists('contact', $condition)) {
                        return false;
                }
 
                // Do we already have an fcontact record for this person?
 
                $fid = 0;
-               $r = q(
-                       "SELECT `id` FROM `fcontact` WHERE `url` = '%s' AND `name` = '%s' AND `request` = '%s' LIMIT 1",
-                       DBA::escape($suggest["url"]),
-                       DBA::escape($suggest["name"]),
-                       DBA::escape($suggest["request"])
-               );
-               if (DBA::isResult($r)) {
-                       $fid = $r[0]["id"];
+               $condition = ['url' => $suggest["url"], 'name' => $suggest["name"], 'request' => $suggest["request"]];
+               $fcontact = DBA::selectFirst('fcontact', ['id'], $condition);
+               if (DBA::isResult($fcontact)) {
+                       $fid = $fcontact["id"];
 
-                       // OK, we do. Do we already have an introduction for this person ?
-                       $r = q(
-                               "SELECT `id` FROM `intro` WHERE `uid` = %d AND `fid` = %d LIMIT 1",
-                               intval($suggest["uid"]),
-                               intval($fid)
-                       );
-
-                       /*
-                        * The valid result means the friend we're about to send a friend
-                        * suggestion already has them in their contact, which means no further
-                        * action is required.
-                        *
-                        * @see https://github.com/friendica/friendica/pull/3254#discussion_r107315246
-                        */
-                       if (DBA::isResult($r)) {
+                       // OK, we do. Do we already have an introduction for this person?
+                       if (DBA::exists('intro', ['uid' => $suggest["uid"], 'fid' => $fid])) {
+                               /*
+                                * The valid result means the friend we're about to send a friend
+                                * suggestion already has them in their contact, which means no further
+                                * action is required.
+                                *
+                                * @see https://github.com/friendica/friendica/pull/3254#discussion_r107315246
+                                */
                                return false;
                        }
                }
@@ -1967,18 +1940,15 @@ class DFRN
                                DBA::escape($suggest["request"])
                        );
                }
-               $r = q(
-                       "SELECT `id` FROM `fcontact` WHERE `url` = '%s' AND `name` = '%s' AND `request` = '%s' LIMIT 1",
-                       DBA::escape($suggest["url"]),
-                       DBA::escape($suggest["name"]),
-                       DBA::escape($suggest["request"])
-               );
+
+               $condition = ['url' => $suggest["url"], 'name' => $suggest["name"], 'request' => $suggest["request"]];
+               $fcontact = DBA::selectFirst('fcontact', ['id'], $condition);
 
                /*
                 * If no record in fcontact is found, below INSERT statement will not
                 * link an introduction to it.
                 */
-               if (!DBA::isResult($r)) {
+               if (!DBA::isResult($fcontact)) {
                        // Database record did not get created. Quietly give up.
                        killme();
                }
@@ -2646,13 +2616,10 @@ class DFRN
                                        $ev["guid"]    = $item["guid"];
                                        $ev["plink"]   = $item["plink"];
 
-                                       $r = q(
-                                               "SELECT `id` FROM `event` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
-                                               DBA::escape($item["uri"]),
-                                               intval($importer["importer_uid"])
-                                       );
-                                       if (DBA::isResult($r)) {
-                                               $ev["id"] = $r[0]["id"];
+                                       $condition = ['uri' => $item["uri"], 'uid' => $importer["importer_uid"]];
+                                       $event = DBA::selectFirst('event', ['id'], $condition);
+                                       if (DBA::isResult($event)) {
+                                               $ev["id"] = $event["id"];
                                        }
 
                                        $event_id = Event::store($ev);
@@ -3035,23 +3002,21 @@ class DFRN
                        return false;
                }
 
-               $u = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
-                       intval($uid)
-               );
-               if (!DBA::isResult($u)) {
+               $user = DBA::selectFirst('user', ['page-flags', 'nickname'], ['uid' => $uid]);
+               if (!DBA::isResult($user)) {
                        return false;
                }
 
-               $community_page = ($u[0]['page-flags'] == Contact::PAGE_COMMUNITY);
-               $prvgroup = ($u[0]['page-flags'] == Contact::PAGE_PRVGROUP);
+               $community_page = ($user['page-flags'] == Contact::PAGE_COMMUNITY);
+               $prvgroup = ($user['page-flags'] == Contact::PAGE_PRVGROUP);
 
-               $link = normalise_link(System::baseUrl() . '/profile/' . $u[0]['nickname']);
+               $link = normalise_link(System::baseUrl() . '/profile/' . $user['nickname']);
 
                /*
                 * Diaspora uses their own hardwired link URL in @-tags
                 * instead of the one we supply with webfinger
                 */
-               $dlink = normalise_link(System::baseUrl() . '/u/' . $u[0]['nickname']);
+               $dlink = normalise_link(System::baseUrl() . '/u/' . $user['nickname']);
 
                $cnt = preg_match_all('/[\@\!]\[url\=(.*?)\](.*?)\[\/url\]/ism', $item['body'], $matches, PREG_SET_ORDER);
                if ($cnt) {
index 40e2780f829eab7acf5f49177223621bc5faadfd..8decec0d024feeb5833f56dca94fe6363b679898 100644 (file)
@@ -970,13 +970,10 @@ class Diaspora
                logger("contact id is ".$contact_id." - pcontact id is ".$pcontact_id, LOGGER_DEBUG);
 
                if ($pcontact_id != 0) {
-                       $r = q(
-                               "SELECT `addr` FROM `contact` WHERE `id` = %d AND `addr` != ''",
-                               intval($pcontact_id)
-                       );
+                       $contact = DBA::selectFirst('contact', ['addr'], ['id' => $pcontact_id]);
 
-                       if (DBA::isResult($r)) {
-                               return strtolower($r[0]["addr"]);
+                       if (DBA::isResult($contact) && !empty($contact["addr"])) {
+                               return strtolower($contact["addr"]);
                        }
                }
 
@@ -1788,12 +1785,7 @@ class Diaspora
 
                DBA::lock('mail');
 
-               $r = q(
-                       "SELECT `id` FROM `mail` WHERE `guid` = '%s' AND `uid` = %d LIMIT 1",
-                       DBA::escape($msg_guid),
-                       intval($importer["uid"])
-               );
-               if (DBA::isResult($r)) {
+               if (DBA::exists('mail', ['guid' => $msg_guid, 'uid' => $importer["uid"]])) {
                        logger("duplicate message already delivered.", LOGGER_DEBUG);
                        return false;
                }
@@ -1868,16 +1860,8 @@ class Diaspora
                        return false;
                }
 
-               $conversation = null;
-
-               $c = q(
-                       "SELECT * FROM `conv` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
-                       intval($importer["uid"]),
-                       DBA::escape($guid)
-               );
-               if ($c)
-                       $conversation = $c[0];
-               else {
+               $conversation = DBA::selectFirst('conv', [], ['uid' => $importer["uid"], 'guid' => $guid]);
+               if (!DBA::isResult($conversation)) {
                        $r = q(
                                "INSERT INTO `conv` (`uid`, `guid`, `creator`, `created`, `updated`, `subject`, `recips`)
                                VALUES (%d, '%s', '%s', '%s', '%s', '%s', '%s')",
@@ -1890,15 +1874,7 @@ class Diaspora
                                DBA::escape($participants)
                        );
                        if ($r) {
-                               $c = q(
-                                       "SELECT * FROM `conv` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
-                                       intval($importer["uid"]),
-                                       DBA::escape($guid)
-                               );
-                       }
-
-                       if ($c) {
-                               $conversation = $c[0];
+                               $conversation = DBA::selectFirst('conv', [], ['uid' => $importer["uid"], 'guid' => $guid]);
                        }
                }
                if (!$conversation) {
@@ -2049,14 +2025,10 @@ class Diaspora
 
                $conversation = null;
 
-               $c = q(
-                       "SELECT * FROM `conv` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
-                       intval($importer["uid"]),
-                       DBA::escape($conversation_guid)
-               );
-               if ($c) {
-                       $conversation = $c[0];
-               } else {
+               $condition = ['uid' => $importer["uid"], 'guid' => $conversation_guid];
+               $conversation = DBA::selectFirst('conv', [], $condition);
+
+               if (!DBA::isResult($conversation)) {
                        logger("conversation not available.");
                        return false;
                }
@@ -2075,12 +2047,7 @@ class Diaspora
 
                DBA::lock('mail');
 
-               $r = q(
-                       "SELECT `id` FROM `mail` WHERE `guid` = '%s' AND `uid` = %d LIMIT 1",
-                       DBA::escape($guid),
-                       intval($importer["uid"])
-               );
-               if (DBA::isResult($r)) {
+               if (DBA::exists('mail', ['guid' => $guid, 'uid' => $importer["uid"]])) {
                        logger("duplicate message already delivered.", LOGGER_DEBUG);
                        return false;
                }
@@ -2363,10 +2330,10 @@ class Diaspora
                                // If we are now friends, we are sending a share message.
                                // Normally we needn't to do so, but the first message could have been vanished.
                                if (in_array($contact["rel"], [Contact::FRIEND])) {
-                                       $u = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($importer["uid"]));
-                                       if ($u) {
+                                       $user = DBA::selectFirst('user', [], ['uid' => $importer["uid"]]);
+                                       if (DBA::isResult($user)) {
                                                logger("Sending share message to author ".$author." - Contact: ".$contact["id"]." - User: ".$importer["uid"], LOGGER_DEBUG);
-                                               $ret = self::sendShare($u[0], $contact);
+                                               $ret = self::sendShare($user, $contact);
                                        }
                                }
                                return true;
@@ -2485,10 +2452,10 @@ class Diaspora
                                intval($contact_record["id"])
                        );
 
-                       $u = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($importer["uid"]));
-                       if ($u) {
+                       $user = DBA::selectFirst('user', [], ['uid' => $importer["uid"]]);
+                       if (DBA::isResult($user)) {
                                logger("Sending share message (Relation: ".$new_relation.") to author ".$author." - Contact: ".$contact_record["id"]." - User: ".$importer["uid"], LOGGER_DEBUG);
-                               $ret = self::sendShare($u[0], $contact_record);
+                               $ret = self::sendShare($user, $contact_record);
 
                                // Send the profile data, maybe it weren't transmitted before
                                self::sendProfile($importer["uid"], [$contact_record]);
@@ -3830,19 +3797,13 @@ class Diaspora
                logger("Got relayable data ".$type." for item ".$item["guid"]." (".$item["id"].")", LOGGER_DEBUG);
 
                // fetch the original signature
-
-               $r = q(
-                       "SELECT `signed_text`, `signature`, `signer` FROM `sign` WHERE `iid` = %d LIMIT 1",
-                       intval($item["id"])
-               );
-
-               if (!$r) {
+               $fields = ['signed_text', 'signature', 'signer'];
+               $signature = DBA::selectFirst('sign', $fields, ['iid' => $item["id"]]);
+               if (!DBA::isResult($signature)) {
                        logger("Couldn't fetch signatur for item ".$item["guid"]." (".$item["id"].")", LOGGER_DEBUG);
                        return false;
                }
 
-               $signature = $r[0];
-
                // Old way - is used by the internal Friendica functions
                /// @todo Change all signatur storing functions to the new format
                if ($signature['signed_text'] && $signature['signature'] && $signature['signer']) {
@@ -3923,17 +3884,11 @@ class Diaspora
        {
                $myaddr = self::myHandle($owner);
 
-               $r = q(
-                       "SELECT * FROM `conv` WHERE `id` = %d AND `uid` = %d LIMIT 1",
-                       intval($item["convid"]),
-                       intval($item["uid"])
-               );
-
-               if (!DBA::isResult($r)) {
+               $cnv = DBA::selectFirst('conv', [], ['id' => $item["convid"], 'uid' => $item["uid"]]);
+               if (!DBA::isResult($cnv)) {
                        logger("conversation not found.");
                        return;
                }
-               $cnv = $r[0];
 
                $conv = [
                        "author" => $cnv["creator"],
@@ -4168,12 +4123,12 @@ class Diaspora
                        return false;
                }
 
-               $r = q("SELECT `prvkey` FROM `user` WHERE `uid` = %d LIMIT 1", intval($contact['uid']));
-               if (!DBA::isResult($r)) {
+               $user = DBA::selectFirst('user', ['prvkey'], ['uid' => $contact["uid"]]);
+               if (!DBA::isResult($user)) {
                        return false;
                }
 
-               $contact["uprvkey"] = $r[0]['prvkey'];
+               $contact["uprvkey"] = $user['prvkey'];
 
                $item = Item::selectFirst([], ['id' => $post_id]);
                if (!DBA::isResult($item)) {
index 971a91fa1244642d6e6ece4d9a889d577bd07a05..7052205e1706b57f55689a15865bbb40998efed9 100644 (file)
@@ -1597,12 +1597,9 @@ class OStatus
                }
 
                if (!DBA::isResult($r)) {
-                       $r = q(
-                               "SELECT * FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
-                               DBA::escape(normalise_link($url))
-                       );
+                       $gcontact = DBA::selectFirst('gcontact', [], ['nurl' => normalise_link($url)]);
                        if (DBA::isResult($r)) {
-                               $contact = $r[0];
+                               $contact = $gcontact;
                                $contact["uid"] = -1;
                                $contact["success_update"] = $contact["updated"];
                        }
@@ -1803,14 +1800,11 @@ class OStatus
                        $item['follow'] = $contact['alias'];
                }
 
-               $r = q(
-                       "SELECT `id` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s'",
-                       intval($owner['uid']),
-                       DBA::escape(normalise_link($contact["url"]))
-               );
+               $condition = ['uid' => $owner['uid'], 'nurl' => normalise_link($contact["url"])];
+               $user_contact = DBA::selectFirst('contact', ['id'], $condition);
 
-               if (DBA::isResult($r)) {
-                       $connect_id = $r[0]['id'];
+               if (DBA::isResult($user_contact)) {
+                       $connect_id = $user_contact['id'];
                } else {
                        $connect_id = 0;
                }
index a3916ad973f0dce20230023247bab9feaa790937..950dd71af6035f99a7daf62b84332e1533be2bfa 100644 (file)
@@ -275,10 +275,6 @@ class CronJobs
                        }
                }
 
-               // Set the parent if it wasn't set. (Shouldn't happen - but does sometimes)
-               // This call is very "cheap" so we can do it at any time without a problem
-               q("UPDATE `item` INNER JOIN `item` AS `parent` ON `parent`.`uri` = `item`.`parent-uri` AND `parent`.`uid` = `item`.`uid` SET `item`.`parent` = `parent`.`id` WHERE `item`.`parent` = 0");
-
                // There was an issue where the nick vanishes from the contact table
                q("UPDATE `contact` INNER JOIN `user` ON `contact`.`uid` = `user`.`uid` SET `nick` = `nickname` WHERE `self` AND `nick`=''");