use Friendica\Model\Event;
use Friendica\Model\GContact;
use Friendica\Model\Item;
+use Friendica\Model\Mail;
use Friendica\Model\PermissionSet;
use Friendica\Model\Profile;
use Friendica\Model\User;
use Friendica\Object\Image;
+use Friendica\Util\BaseURL;
use Friendica\Util\Crypto;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\Network;
$item["entry:cid"] = defaults($item, "entry:cid", 0);
$entry = self::entry($doc, "text", $item, $owner, $item["entry:comment-allow"], $item["entry:cid"]);
- $root->appendChild($entry);
+ if (isset($entry)) {
+ $root->appendChild($entry);
+ }
}
return trim($doc->saveXML());
FROM `item` USE INDEX (`uid_wall_changed`) $sql_post_table
STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
WHERE `item`.`uid` = %d AND `item`.`wall` AND `item`.`changed` > '%s'
- $sql_extra
+ AND `item`.`visible` $sql_extra
ORDER BY `item`.`parent` ".$sort.", `item`.`created` ASC LIMIT 0, 300",
intval($owner_id),
DBA::escape($check_date),
}
$entry = self::entry($doc, $type, $item, $owner, true);
- $root->appendChild($entry);
+ if (isset($entry)) {
+ $root->appendChild($entry);
+ }
}
$atom = trim($doc->saveXML());
$ret = Item::select(Item::DELIVER_FIELDLIST, $condition);
$items = Item::inArray($ret);
if (!DBA::isResult($items)) {
- exit();
+ return '';
}
$item = $items[0];
if ($item['uid'] != 0) {
$owner = User::getOwnerDataById($item['uid']);
if (!$owner) {
- exit();
+ return '';
}
} else {
$owner = ['uid' => 0, 'nick' => 'feed-item'];
foreach ($items as $item) {
$entry = self::entry($doc, $type, $item, $owner, true, 0);
- $root->appendChild($entry);
+ if (isset($entry)) {
+ $root->appendChild($entry);
+ }
}
} else {
- $root = self::entry($doc, $type, $item, $owner, true, 0, true);
+ self::entry($doc, $type, $item, $owner, true, 0, true);
}
$atom = trim($doc->saveXML());
*/
private static function addEntryAuthor(DOMDocument $doc, $element, $contact_url, $item)
{
- $contact = Contact::getDetailsByURL($contact_url, $item["uid"]);
-
$author = $doc->createElement($element);
- XML::addElement($doc, $author, "name", $contact["name"]);
- XML::addElement($doc, $author, "uri", $contact["url"]);
- XML::addElement($doc, $author, "dfrn:handle", $contact["addr"]);
- /// @Todo
- /// - Check real image type and image size
- /// - Check which of these boths elements we should use
- $attributes = [
+ $contact = Contact::getDetailsByURL($contact_url, $item["uid"]);
+ if (!empty($contact)) {
+ XML::addElement($doc, $author, "name", $contact["name"]);
+ XML::addElement($doc, $author, "uri", $contact["url"]);
+ XML::addElement($doc, $author, "dfrn:handle", $contact["addr"]);
+
+ /// @Todo
+ /// - Check real image type and image size
+ /// - Check which of these boths elements we should use
+ $attributes = [
"rel" => "photo",
"type" => "image/jpeg",
"media:width" => 80,
"media:height" => 80,
"href" => $contact["photo"]];
- XML::addElement($doc, $author, "link", "", $attributes);
+ XML::addElement($doc, $author, "link", "", $attributes);
- $attributes = [
+ $attributes = [
"rel" => "avatar",
"type" => "image/jpeg",
"media:width" => 80,
"media:height" => 80,
"href" => $contact["photo"]];
- XML::addElement($doc, $author, "link", "", $attributes);
+ XML::addElement($doc, $author, "link", "", $attributes);
+ }
return $author;
}
* @param int $cid Contact ID of the recipient
* @param bool $single If set, the entry is created as an XML document with a single "entry" element
*
- * @return \DOMElement XML entry object
+ * @return null|\DOMElement XML entry object
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @throws \ImagickException
* @todo Find proper type-hints
$mentioned = [];
if (!$item['parent']) {
- return;
+ Logger::notice('Item without parent found.', ['type' => $type, 'item' => $item]);
+ return null;
}
if ($item['deleted']) {
}
// Add conversation data. This is used for OStatus
- $conversation_href = System::baseUrl()."/display/".$owner["nick"]."/".$item["parent"];
+ $conversation_href = System::baseUrl()."/display/".$item["parent-guid"];
$conversation_uri = $conversation_href;
if (isset($parent_item)) {
$ssl_val = intval(Config::get('system', 'ssl_policy'));
switch ($ssl_val) {
- case SSL_POLICY_FULL:
+ case BaseURL::SSL_POLICY_FULL:
$ssl_policy = 'full';
break;
- case SSL_POLICY_SELFSIGN:
+ case BaseURL::SSL_POLICY_SELFSIGN:
$ssl_policy = 'self';
break;
- case SSL_POLICY_NONE:
+ case BaseURL::SSL_POLICY_NONE:
default:
$ssl_policy = 'none';
break;
if (empty($author['avatar'])) {
Logger::log('Empty author: ' . $xml);
+ $author['avatar'] = '';
}
if (DBA::isResult($contact_old) && !$onlyfetch) {
{
Logger::log("Processing mails");
- /// @TODO Rewrite this to one statement
$msg = [];
$msg["uid"] = $importer["importer_uid"];
$msg["from-name"] = $xpath->query("dfrn:sender/dfrn:name/text()", $mail)->item(0)->nodeValue;
$msg["created"] = DateTimeFormat::utc($xpath->query("dfrn:sentdate/text()", $mail)->item(0)->nodeValue);
$msg["title"] = $xpath->query("dfrn:subject/text()", $mail)->item(0)->nodeValue;
$msg["body"] = $xpath->query("dfrn:content/text()", $mail)->item(0)->nodeValue;
- $msg["seen"] = 0;
- $msg["replied"] = 0;
-
- DBA::insert('mail', $msg);
-
- $msg["id"] = DBA::lastInsertId();
-
- // send notifications.
- /// @TODO Arange this mess
- $notif_params = [
- "type" => NOTIFY_MAIL,
- "notify_flags" => $importer["notify-flags"],
- "language" => $importer["language"],
- "to_name" => $importer["username"],
- "to_email" => $importer["email"],
- "uid" => $importer["importer_uid"],
- "item" => $msg,
- "parent" => $msg["parent-uri"],
- "source_name" => $msg["from-name"],
- "source_link" => $importer["url"],
- "source_photo" => $importer["thumb"],
- "verb" => ACTIVITY_POST,
- "otype" => "mail"
- ];
-
- notification($notif_params);
-
- Logger::log("Mail is processed, notification was sent.");
+
+ Mail::insert($msg);
}
/**
/**
* @brief Send a "poke"
*
- * @param array $item the new item record
+ * @param array $item The new item record
* @param array $importer Record of the importer user mixed with contact of the content
- * @param int $posted_id The record number of item record that was just posted
* @return void
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @todo set proper type-hints (array?)
*/
- private static function doPoke($item, $importer, $posted_id)
+ private static function doPoke(array $item, array $importer)
{
$verb = urldecode(substr($item["verb"], strpos($item["verb"], "#")+1));
if (!$verb) {
if ($Blink && Strings::compareLink($Blink, System::baseUrl() . "/profile/" . $importer["nickname"])) {
$author = DBA::selectFirst('contact', ['name', 'thumb', 'url'], ['id' => $item['author-id']]);
- $item['id'] = $posted_id;
-
$parent = Item::selectFirst(['id'], ['uri' => $item['parent-uri'], 'uid' => $importer["importer_uid"]]);
$item["parent"] = $parent['id'];
"to_email" => $importer["email"],
"uid" => $importer["importer_uid"],
"item" => $item,
- "link" => System::baseUrl()."/display/".urlencode(Item::getGuidById($posted_id)),
+ "link" => System::baseUrl()."/display/".urlencode($item['guid']),
"source_name" => $author["name"],
"source_link" => $author["url"],
"source_photo" => $author["thumb"],
}
if (stristr($item["verb"], ACTIVITY_POKE)) {
- self::doPoke($item, $importer, $posted_id);
+ $item['id'] = $posted_id;
+ self::doPoke($item, $importer);
}
}
}