From 4181eb37f58b21bd03700b1711879df89a57a0b2 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 24 Apr 2020 11:55:46 +0000 Subject: [PATCH] More joins replaced by view calls --- mod/poco.php | 5 +---- src/Worker/Directory.php | 14 ++++---------- static/dbview.config.php | 25 +++++++++++++++++++++---- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/mod/poco.php b/mod/poco.php index f04ec4279..edbe73dce 100644 --- a/mod/poco.php +++ b/mod/poco.php @@ -81,10 +81,7 @@ function poco_init(App $a) { } if (!$system_mode && !$global) { - $user = DBA::fetchFirst("SELECT `user`.`uid`, `user`.`nickname` FROM `user` - INNER JOIN `profile` ON `user`.`uid` = `profile`.`uid` - WHERE `user`.`nickname` = ? AND NOT `profile`.`hide-friends`", - $nickname); + $user = DBA::selectFirst('owner-view', ['uid', 'nickname'], ['nickname' => $nickname, 'hide-friends' => false]); if (!DBA::isResult($user)) { throw new \Friendica\Network\HTTPException\NotFoundException(); } diff --git a/src/Worker/Directory.php b/src/Worker/Directory.php index ff844ca39..6c6d26f26 100644 --- a/src/Worker/Directory.php +++ b/src/Worker/Directory.php @@ -61,16 +61,10 @@ class Directory } private static function updateAll() { - $r = q("SELECT `url` FROM `contact` - INNER JOIN `profile` ON `profile`.`uid` = `contact`.`uid` - INNER JOIN `user` ON `user`.`uid` = `contact`.`uid` - WHERE `contact`.`self` AND `profile`.`net-publish` AND - NOT `user`.`account_expired` AND `user`.`verified`"); - - if (DBA::isResult($r)) { - foreach ($r AS $user) { - Worker::add(PRIORITY_LOW, 'Directory', $user['url']); - } + $users = DBA::select('owner-view', ['url'], ['net-publish' => true, 'account_expired' => false, 'verified' => true]); + while ($user = DBA::fetch($users)) { + Worker::add(PRIORITY_LOW, 'Directory', $user['url']); } + DBA::close($users); } } diff --git a/static/dbview.config.php b/static/dbview.config.php index 0d44df031..0fd4048ca 100755 --- a/static/dbview.config.php +++ b/static/dbview.config.php @@ -105,9 +105,9 @@ return [ "avatar-date" => ["contact", "avatar-date"], "term-date" => ["contact", "term-date"], "last-item" => ["contact", "last-item"], - "lastitem_date" => ["contact", "last-item"], + "lastitem_date" => ["contact", "last-item"], /// @todo Replaces all uses of "lastitem_date" with "last-item" "priority" => ["contact", "priority"], - "blocked" => ["contact", "blocked"], + "blocked" => ["contact", "blocked"], /// @todo Check if "blocked" from contact or from the users table "block_reason" => ["contact", "block_reason"], "readonly" => ["contact", "readonly"], "writable" => ["contact", "writable"], @@ -133,8 +133,9 @@ return [ "ffi_keyword_blacklist" => ["ffi_keyword_blacklist"], "email" => ["user", "email"], "uprvkey" => ["user", "prvkey"], + "upubkey" => ["user", "pubkey"], "timezone" => ["user", "timezone"], - "nickname" => ["user", "nickname"], + "nickname" => ["user", "nickname"], /// @todo Remove duplicate "sprvkey" => ["user", "sprvkey"], "spubkey" => ["user", "spubkey"], "page-flags" => ["user", "page-flags"], @@ -145,12 +146,28 @@ return [ "login_date" => ["user", "login_date"], "register_date" => ["user", "register_date"], "verified" => ["user", "verified"], + "expire" => ["user", "expire"], + "expire_notification_sent" => ["user", "expire_notification_sent"], "account_removed" => ["user", "account_removed"], "account_expired" => ["user", "account_expired"], "account_expires_on" => ["user", "account_expires_on"], + "publish" => ["profile", "publish"], + "net-publish" => ["profile", "net-publish"], + "hide-friends" => ["profile", "hide-friends"], + "prv_keywords" => ["profile", "prv_keywords"], + "pub_keywords" => ["profile", "pub_keywords"], + "address" => ["profile", "address"], + "locality" => ["profile", "locality"], + "region" => ["profile", "region"], + "postal-code" => ["profile", "postal-code"], + "country-name" => ["profile", "country-name"], + "homepage" => ["profile", "homepage"], + "xmpp" => ["profile", "xmpp"], + "dob" => ["profile", "dob"], ], "query" => "FROM `user` - INNER JOIN `contact` ON `contact`.`uid` = `user`.`uid` AND `contact`.`self`" + INNER JOIN `contact` ON `contact`.`uid` = `user`.`uid` AND `contact`.`self` + INNER JOIN `profile` ON `profile`.`uid` = `user`.`uid`" ] ];