Centralize owner data fetch

This commit is contained in:
Hypolite Petovan 2017-12-17 16:22:39 -05:00
parent e37cf8fea2
commit df02238659
3 changed files with 36 additions and 31 deletions

View file

@ -33,6 +33,37 @@ require_once 'include/text.php';
*/ */
class User class User
{ {
/**
* @brief Get owner data by user id
*
* @param int $uid
* @return boolean|array
*/
public static function getOwnerDataById($uid) {
$r = dba::p("SELECT
`contact`.*,
`user`.`prvkey` AS `uprvkey`,
`user`.`timezone`,
`user`.`nickname`,
`user`.`sprvkey`,
`user`.`spubkey`,
`user`.`page-flags`,
`user`.`account-type`,
`user`.`prvnets`
FROM `contact`
INNER JOIN `user`
ON `user`.`uid` = `contact`.`uid`
WHERE `contact`.`uid` = ?
AND `contact`.`self` = 1
LIMIT 1",
$uid
);
if (!DBM::is_result($r)) {
return false;
}
return $r[0];
}
/** /**
* @brief Returns the default group for a given user and network * @brief Returns the default group for a given user and network
* *

View file

@ -4051,28 +4051,10 @@ class Diaspora
return; return;
} }
$r = dba::p("SELECT $owner = User::getOwnerDataById($uid);
`contact`.*, if (!$owner) {
`user`.`prvkey` AS `uprvkey`,
`user`.`timezone`,
`user`.`nickname`,
`user`.`sprvkey`,
`user`.`spubkey`,
`user`.`page-flags`,
`user`.`account-type`,
`user`.`prvnets`
FROM `contact`
INNER JOIN `user`
ON `user`.`uid` = `contact`.`uid`
WHERE `contact`.`uid` = ?
AND `contact`.`self` = 1
LIMIT 1",
$uid
);
if (!DBM::is_result($r)) {
return; return;
} }
$owner = $r[0];
if (!$recips) { if (!$recips) {
$recips = q( $recips = q(

View file

@ -10,6 +10,7 @@ use Friendica\Core\System;
use Friendica\Core\Config; use Friendica\Core\Config;
use Friendica\Database\DBM; use Friendica\Database\DBM;
use Friendica\Model\Contact; use Friendica\Model\Contact;
use Friendica\Model\User;
use Friendica\Protocol\Diaspora; use Friendica\Protocol\Diaspora;
use Friendica\Protocol\DFRN; use Friendica\Protocol\DFRN;
use Friendica\Protocol\Email; use Friendica\Protocol\Email;
@ -140,20 +141,11 @@ class Delivery {
} }
} }
$r = q("SELECT `contact`.*, `user`.`prvkey` AS `uprvkey`, $owner = User::getOwnerDataById($uid);
`user`.`timezone`, `user`.`nickname`, `user`.`sprvkey`, `user`.`spubkey`, if (!$owner) {
`user`.`page-flags`, `user`.`account-type`, `user`.`prvnets`
FROM `contact` INNER JOIN `user` ON `user`.`uid` = `contact`.`uid`
WHERE `contact`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1",
intval($uid)
);
if (!DBM::is_result($r)) {
return; return;
} }
$owner = $r[0];
$walltowall = (($top_level && ($owner['id'] != $items[0]['contact-id'])) ? true : false); $walltowall = (($top_level && ($owner['id'] != $items[0]['contact-id'])) ? true : false);
$public_message = true; $public_message = true;