More joins replaced by view calls

This commit is contained in:
Michael 2020-04-24 11:55:46 +00:00
parent 02aed490e2
commit 4181eb37f5
3 changed files with 26 additions and 18 deletions

View File

@ -81,10 +81,7 @@ function poco_init(App $a) {
} }
if (!$system_mode && !$global) { if (!$system_mode && !$global) {
$user = DBA::fetchFirst("SELECT `user`.`uid`, `user`.`nickname` FROM `user` $user = DBA::selectFirst('owner-view', ['uid', 'nickname'], ['nickname' => $nickname, 'hide-friends' => false]);
INNER JOIN `profile` ON `user`.`uid` = `profile`.`uid`
WHERE `user`.`nickname` = ? AND NOT `profile`.`hide-friends`",
$nickname);
if (!DBA::isResult($user)) { if (!DBA::isResult($user)) {
throw new \Friendica\Network\HTTPException\NotFoundException(); throw new \Friendica\Network\HTTPException\NotFoundException();
} }

View File

@ -61,16 +61,10 @@ class Directory
} }
private static function updateAll() { private static function updateAll() {
$r = q("SELECT `url` FROM `contact` $users = DBA::select('owner-view', ['url'], ['net-publish' => true, 'account_expired' => false, 'verified' => true]);
INNER JOIN `profile` ON `profile`.`uid` = `contact`.`uid` while ($user = DBA::fetch($users)) {
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']); Worker::add(PRIORITY_LOW, 'Directory', $user['url']);
} }
} DBA::close($users);
} }
} }

View File

@ -105,9 +105,9 @@ return [
"avatar-date" => ["contact", "avatar-date"], "avatar-date" => ["contact", "avatar-date"],
"term-date" => ["contact", "term-date"], "term-date" => ["contact", "term-date"],
"last-item" => ["contact", "last-item"], "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"], "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"], "block_reason" => ["contact", "block_reason"],
"readonly" => ["contact", "readonly"], "readonly" => ["contact", "readonly"],
"writable" => ["contact", "writable"], "writable" => ["contact", "writable"],
@ -133,8 +133,9 @@ return [
"ffi_keyword_blacklist" => ["ffi_keyword_blacklist"], "ffi_keyword_blacklist" => ["ffi_keyword_blacklist"],
"email" => ["user", "email"], "email" => ["user", "email"],
"uprvkey" => ["user", "prvkey"], "uprvkey" => ["user", "prvkey"],
"upubkey" => ["user", "pubkey"],
"timezone" => ["user", "timezone"], "timezone" => ["user", "timezone"],
"nickname" => ["user", "nickname"], "nickname" => ["user", "nickname"], /// @todo Remove duplicate
"sprvkey" => ["user", "sprvkey"], "sprvkey" => ["user", "sprvkey"],
"spubkey" => ["user", "spubkey"], "spubkey" => ["user", "spubkey"],
"page-flags" => ["user", "page-flags"], "page-flags" => ["user", "page-flags"],
@ -145,12 +146,28 @@ return [
"login_date" => ["user", "login_date"], "login_date" => ["user", "login_date"],
"register_date" => ["user", "register_date"], "register_date" => ["user", "register_date"],
"verified" => ["user", "verified"], "verified" => ["user", "verified"],
"expire" => ["user", "expire"],
"expire_notification_sent" => ["user", "expire_notification_sent"],
"account_removed" => ["user", "account_removed"], "account_removed" => ["user", "account_removed"],
"account_expired" => ["user", "account_expired"], "account_expired" => ["user", "account_expired"],
"account_expires_on" => ["user", "account_expires_on"], "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` "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`"
] ]
]; ];