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
{
/**
* @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
*

View File

@ -4051,28 +4051,10 @@ class Diaspora
return;
}
$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)) {
$owner = User::getOwnerDataById($uid);
if (!$owner) {
return;
}
$owner = $r[0];
if (!$recips) {
$recips = q(

View File

@ -10,6 +10,7 @@ use Friendica\Core\System;
use Friendica\Core\Config;
use Friendica\Database\DBM;
use Friendica\Model\Contact;
use Friendica\Model\User;
use Friendica\Protocol\Diaspora;
use Friendica\Protocol\DFRN;
use Friendica\Protocol\Email;
@ -140,20 +141,11 @@ class Delivery {
}
}
$r = q("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` = %d AND `contact`.`self` = 1 LIMIT 1",
intval($uid)
);
if (!DBM::is_result($r)) {
$owner = User::getOwnerDataById($uid);
if (!$owner) {
return;
}
$owner = $r[0];
$walltowall = (($top_level && ($owner['id'] != $items[0]['contact-id'])) ? true : false);
$public_message = true;