X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fdfrn.php;h=bc62de6ed9e60333262a48917b4b5a4cb550ac87;hb=0cd9db9cb7f4c96f597e37590a536eaae123238d;hp=7e4d7af2bcceabe423bbe911fab8739b9eca6b2b;hpb=86cae070f2a048e553c545caec54be72c1c14da5;p=friendica.git diff --git a/include/dfrn.php b/include/dfrn.php index 7e4d7af2bc..bc62de6ed9 100644 --- a/include/dfrn.php +++ b/include/dfrn.php @@ -245,7 +245,7 @@ class dfrn { /// @TODO This hook can't work anymore // call_hooks('atom_feed', $atom); - if (!dbm::is_result($items) OR $onlyheader) { + if (!dbm::is_result($items) || $onlyheader) { $atom = trim($doc->saveXML()); call_hooks('atom_feed_end', $atom); @@ -284,6 +284,62 @@ class dfrn { return $atom; } + /** + * @brief Generate an atom entry for a given item id + * + * @param int $item_id The item id + * + * @return string DFRN feed entry + */ + public static function itemFeed($item_id) { + $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, + `contact`.`name`, `contact`.`network`, `contact`.`photo`, `contact`.`url`, + `contact`.`name-date`, `contact`.`uri-date`, `contact`.`avatar-date`, + `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`, + `sign`.`signed_text`, `sign`.`signature`, `sign`.`signer` + FROM `item` + STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id` + AND (NOT `contact`.`blocked` OR `contact`.`pending`) + LEFT JOIN `sign` ON `sign`.`iid` = `item`.`id` + WHERE `item`.`id` = %d AND `item`.`visible` AND NOT `item`.`moderated` AND `item`.`parent` != 0 + AND `item`.`wall` AND NOT `item`.`private`", + intval($item_id) + ); + + if (!dbm::is_result($r)) { + killme(); + } + + $item = $r[0]; + + $r = q("SELECT `contact`.*, `user`.`nickname`, `user`.`timezone`, `user`.`page-flags`, `user`.`account-type` + FROM `contact` INNER JOIN `user` ON `user`.`uid` = `contact`.`uid` + WHERE `contact`.`self` AND `user`.`uid` = %d LIMIT 1", + intval($item['uid']) + ); + + if (!dbm::is_result($r)) { + killme(); + } + + $owner = $r[0]; + + $doc = new DOMDocument('1.0', 'utf-8'); + $doc->formatOutput = true; + + $alternatelink = $owner['url']; + + $root = self::add_header($doc, $owner, 'dfrn:owner', $alternatelink, true); + + $type = 'html'; + + $entry = self::entry($doc, $type, $item, $owner, true); + $root->appendChild($entry); + + $atom = trim($doc->saveXML()); + return $atom; + } + /** * @brief Create XML text for DFRN mails * @@ -508,7 +564,7 @@ class dfrn { $attributes = array(); - if (!$public OR !$hidewall) { + if (!$public || !$hidewall) { $attributes = array("dfrn:updated" => $namdate); } @@ -519,7 +575,7 @@ class dfrn { $attributes = array("rel" => "photo", "type" => "image/jpeg", "media:width" => 175, "media:height" => 175, "href" => $owner['photo']); - if (!$public OR !$hidewall) { + if (!$public || !$hidewall) { $attributes["dfrn:updated"] = $picdate; } @@ -921,7 +977,7 @@ class dfrn { if (count($tags)) { foreach ($tags as $t) { - if (($type != 'html') OR ($t[0] != "@")) { + if (($type != 'html') || ($t[0] != "@")) { xml::add_element($doc, $entry, "category", "", array("scheme" => "X-DFRN:".$t[0].":".$t[1], "term" => $t[2])); } } @@ -940,7 +996,7 @@ class dfrn { intval($owner["uid"]), dbesc(normalise_link($mention))); - if (dbm::is_result($r) AND ($r[0]["forum"] OR $r[0]["prv"])) { + if (dbm::is_result($r) && ($r[0]["forum"] || $r[0]["prv"])) { xml::add_element($doc, $entry, "link", "", array("rel" => "mentioned", "ostatus:object-type" => ACTIVITY_OBJ_GROUP, "href" => $mention)); @@ -1323,7 +1379,7 @@ class dfrn { $contact["avatar-date"] = $attributes->textContent; } } - if (($width > 0) AND ($href != "")) { + if (($width > 0) && ($href != "")) { $avatarlist[$width] = $href; } } @@ -1332,7 +1388,7 @@ class dfrn { $author["avatar"] = current($avatarlist); } - if (dbm::is_result($r) AND !$onlyfetch) { + if (dbm::is_result($r) && !$onlyfetch) { logger("Check if contact details for contact " . $r[0]["id"] . " (" . $r[0]["nick"] . ") have to be updated.", LOGGER_DEBUG); $poco = array("url" => $contact["url"]); @@ -1774,7 +1830,7 @@ class dfrn { $relocate["poll"] = $xpath->query("dfrn:poll/text()", $relocation)->item(0)->nodeValue; $relocate["sitepubkey"] = $xpath->query("dfrn:sitepubkey/text()", $relocation)->item(0)->nodeValue; - if (($relocate["avatar"] == "") AND ($relocate["photo"] != "")) { + if (($relocate["avatar"] == "") && ($relocate["photo"] != "")) { $relocate["avatar"] = $relocate["photo"]; } @@ -1922,7 +1978,7 @@ class dfrn { } // update last-child if it changes - if ($item["last-child"] AND ($item["last-child"] != $current["last-child"])) { + if ($item["last-child"] && ($item["last-child"] != $current["last-child"])) { $r = q("UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `parent-uri` = '%s' AND `uid` = %d", dbesc(datetime_convert()), dbesc($item["parent-uri"]), @@ -2206,7 +2262,7 @@ class dfrn { $title = $attributes->textContent; } } - if (($rel != "") AND ($href != "")) { + if (($rel != "") && ($href != "")) { switch ($rel) { case "alternate": $item["plink"] = $href; @@ -2254,7 +2310,7 @@ class dfrn { ); // Is there an existing item? - if (dbm::is_result($current) AND edited_timestamp_is_newer($current[0], $item) AND + if (dbm::is_result($current) && edited_timestamp_is_newer($current[0], $item) && (datetime_convert("UTC","UTC",$item["edited"]) < $current[0]["edited"])) { logger("Item ".$item["uri"]." already existed.", LOGGER_DEBUG); return; @@ -2328,7 +2384,7 @@ class dfrn { } $notice_info = $xpath->query("statusnet:notice_info", $entry); - if ($notice_info AND ($notice_info->length > 0)) { + if ($notice_info && ($notice_info->length > 0)) { foreach ($notice_info->item(0)->attributes AS $attributes) { if ($attributes->name == "source") { $item["app"] = strip_tags($attributes->textContent); @@ -2378,9 +2434,9 @@ class dfrn { } } - if (($term != "") AND ($scheme != "")) { + if (($term != "") && ($scheme != "")) { $parts = explode(":", $scheme); - if ((count($parts) >= 4) AND (array_shift($parts) == "X-DFRN")) { + if ((count($parts) >= 4) && (array_shift($parts) == "X-DFRN")) { $termhash = array_shift($parts); $termurl = implode(":", $parts); @@ -2440,7 +2496,7 @@ class dfrn { $item["contact-id"] = $owner["contact-id"]; } - if (($item["network"] != $owner["network"]) AND ($owner["network"] != "")) { + if (($item["network"] != $owner["network"]) && ($owner["network"] != "")) { $item["network"] = $owner["network"]; } @@ -2448,7 +2504,7 @@ class dfrn { $item["contact-id"] = $author["contact-id"]; } - if (($item["network"] != $author["network"]) AND ($author["network"] != "")) { + if (($item["network"] != $author["network"]) && ($author["network"] != "")) { $item["network"] = $author["network"]; } @@ -2548,7 +2604,7 @@ class dfrn { ); } - if ($posted_id AND $parent AND ($entrytype == DFRN_REPLY_RC)) { + if ($posted_id && $parent && ($entrytype == DFRN_REPLY_RC)) { logger("Notifying followers about comment ".$posted_id, LOGGER_DEBUG); proc_run(PRIORITY_HIGH, "include/notifier.php", "comment-import", $posted_id); } @@ -2613,7 +2669,7 @@ class dfrn { $when = datetime_convert("UTC", "UTC", "now", "Y-m-d H:i:s"); } - if (!$uri OR !$importer["id"]) { + if (!$uri || !$importer["id"]) { return false; }