use Friendica\Model\ItemURI;
use Friendica\Model\Mail;
use Friendica\Model\Notification;
+use Friendica\Model\Photo;
use Friendica\Model\Post;
use Friendica\Model\Profile;
use Friendica\Model\Tag;
DI::config()->set('system', 'site_pubkey', $res['pubkey']);
}
- $rp = q(
- "SELECT `resource-id` , `scale`, type FROM `photo`
- WHERE `profile` = 1 AND `uid` = %d ORDER BY scale;",
- $uid
- );
+ $profilephotos = Photo::selectToArray(['resource-id' , 'scale'], ['profile' => true, 'uid' => $uid], ['order' => ['scale']]);
+
$photos = [];
$ext = Images::supportedTypes();
- foreach ($rp as $p) {
+ foreach ($profilephotos as $p) {
$photos[$p['scale']] = DI::baseUrl().'/photo/'.$p['resource-id'].'-'.$p['scale'].'.'.$ext[$p['type']];
}
$attributes = ["rel" => "photo", "type" => "image/jpeg",
"media:width" => Proxy::PIXEL_SMALL, "media:height" => Proxy::PIXEL_SMALL,
- "href" => User::getAvatarUrlForId($owner['uid'], Proxy::SIZE_SMALL)];
+ "href" => User::getAvatarUrl($owner, Proxy::SIZE_SMALL)];
if (!$public || !$hide) {
$attributes["dfrn:updated"] = $picdate;
XML::addElement($doc, $author, "poco:note", $profile["about"]);
XML::addElement($doc, $author, "poco:preferredUsername", $profile["nickname"]);
- $savetz = date_default_timezone_get();
- date_default_timezone_set($profile["timezone"]);
- XML::addElement($doc, $author, "poco:utcOffset", date("P"));
- date_default_timezone_set($savetz);
+ XML::addElement($doc, $author, "poco:utcOffset", DateTimeFormat::timezoneNow($profile["timezone"], "P"));
if (trim($profile["homepage"]) != "") {
$urls = $doc->createElement("poco:urls");
$cid = Contact::getIdForURL($url);
$note = $xpath->evaluate('string(dfrn:note[1]/text())', $suggestion);
- return FContact::addSuggestion($importer['importer_uid'], $cid, $importer['id'], $note);
+ return self::addSuggestion($importer['importer_uid'], $cid, $importer['id'], $note);
+ }
+
+ /**
+ * Suggest a given contact to a given user from a given contact
+ *
+ * @param integer $uid
+ * @param integer $cid
+ * @param integer $from_cid
+ * @return bool Was the adding successful?
+ */
+ private static function addSuggestion(int $uid, int $cid, int $from_cid, string $note = '')
+ {
+ $owner = User::getOwnerDataById($uid);
+ $contact = Contact::getById($cid);
+ $from_contact = Contact::getById($from_cid);
+
+ if (DBA::exists('contact', ['nurl' => Strings::normaliseLink($contact['url']), 'uid' => $uid])) {
+ return false;
+ }
+
+ // Quit if we already have an introduction for this person
+ if (DBA::exists('intro', ['uid' => $uid, 'suggest-cid' => $cid])) {
+ return false;
+ }
+
+ $suggest = [];
+ $suggest['uid'] = $uid;
+ $suggest['cid'] = $from_cid;
+ $suggest['url'] = $contact['url'];
+ $suggest['name'] = $contact['name'];
+ $suggest['photo'] = $contact['photo'];
+ $suggest['request'] = $contact['request'];
+ $suggest['title'] = '';
+ $suggest['body'] = $note;
+
+ $hash = Strings::getRandomHex();
+ $fields = ['uid' => $suggest['uid'], 'suggest-cid' => $cid, 'contact-id' => $suggest['cid'],
+ 'note' => $suggest['body'], 'hash' => $hash, 'datetime' => DateTimeFormat::utcNow(), 'blocked' => false];
+ DBA::insert('intro', $fields);
+
+ notification([
+ 'type' => Notification\Type::SUGGEST,
+ 'otype' => Notification\ObjectType::INTRO,
+ 'verb' => Activity::REQ_FRIEND,
+ 'uid' => $owner['uid'],
+ 'cid' => $from_contact['uid'],
+ 'item' => $suggest,
+ 'link' => DI::baseUrl().'/notifications/intros',
+ ]);
+
+ return true;
}
/**
}
// update contact
- $r = q(
- "SELECT `photo`, `url` FROM `contact` WHERE `id` = %d AND `uid` = %d",
- intval($importer["id"]),
- intval($importer["importer_uid"])
- );
+ $old = Contact::selectFirst(['photo', 'url'], ['id' => $importer["id"], 'uid' => $importer["importer_uid"]]);
- if (!DBA::isResult($r)) {
- Logger::log("Query failed to execute, no result returned in " . __FUNCTION__);
+ if (!DBA::isResult($old)) {
+ Logger::notice("Query failed to execute, no result returned in " . __FUNCTION__);
return false;
}
- $old = $r[0];
-
// Update the contact table. We try to find every entry.
$fields = ['name' => $relocate["name"], 'avatar' => $relocate["avatar"],
'url' => $relocate["url"], 'nurl' => Strings::normaliseLink($relocate["url"]),