]> git.mxchange.org Git - friendica.git/blobdiff - include/items.php
friend finder support functions
[friendica.git] / include / items.php
index cffd13a01e16679e6a9af92d432ebc22d8758f8c..e930ab5d25532de4bfc2be4fcbe1308a3bfb0639 100644 (file)
@@ -246,7 +246,7 @@ function get_atom_elements($feed,$item) {
        $res['uri'] = unxmlify($item->get_id());
        $res['title'] = unxmlify($item->get_title());
        $res['body'] = unxmlify($item->get_content());
-
+       $res['plink'] = unxmlify($item->get_link(0));
 
        // look for a photo. We should check media size and find the best one,
        // but for now let's just find any author photo
@@ -350,7 +350,7 @@ function get_atom_elements($feed,$item) {
                        '[youtube]$1[/youtube]', $res['body']);
 
                $res['body'] = oembed_html2bbcode($res['body']);
-       
+
                $config = HTMLPurifier_Config::createDefault();
                $config->set('Cache.DefinitionImpl', null);
 
@@ -363,7 +363,7 @@ function get_atom_elements($feed,$item) {
 
                $res['body'] = html2bbcode($res['body']);
        }
-       
+
        $allow = $item->get_item_tags(NAMESPACE_DFRN,'comment-allow');
        if($allow && $allow[0]['data'] == 1)
                $res['last-child'] = 1;
@@ -591,6 +591,7 @@ function item_store($arr,$force_parent = false) {
        $arr['object']        = ((x($arr,'object'))        ? trim($arr['object'])                : '');
        $arr['target-type']   = ((x($arr,'target-type'))   ? notags(trim($arr['target-type']))   : '');
        $arr['target']        = ((x($arr,'target'))        ? trim($arr['target'])                : '');
+       $arr['plink']         = ((x($arr,'plink'))         ? notags(trim($arr['plink']))         : '');
        $arr['allow_cid']     = ((x($arr,'allow_cid'))     ? trim($arr['allow_cid'])             : '');
        $arr['allow_gid']     = ((x($arr,'allow_gid'))     ? trim($arr['allow_gid'])             : '');
        $arr['deny_cid']      = ((x($arr,'deny_cid'))      ? trim($arr['deny_cid'])              : '');
@@ -608,6 +609,7 @@ function item_store($arr,$force_parent = false) {
        else { 
 
                // find the parent and snarf the item id and ACL's
+               // and anything else we need to inherit
 
                $r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
                        dbesc($arr['parent-uri']),
@@ -631,6 +633,7 @@ function item_store($arr,$force_parent = false) {
                        $allow_gid      = $r[0]['allow_gid'];
                        $deny_cid       = $r[0]['deny_cid'];
                        $deny_gid       = $r[0]['deny_gid'];
+                       $arr['wall']    = $r[0]['wall'];
                }
                else {
 
@@ -1128,17 +1131,31 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0) {
                        }
 
                        if(($is_reply) && is_array($contact)) {
-       
+
                                // Have we seen it? If not, import it.
        
-                               $item_id = $item->get_id();
-       
-                               $r = q("SELECT `uid`, `last-child`, `edited` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
+                               $item_id  = $item->get_id();
+                               $datarray = get_atom_elements($feed,$item);
+
+                               $r = q("SELECT `uid`, `last-child`, `edited`, `body` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
                                        dbesc($item_id),
                                        intval($importer['uid'])
                                );
-                               // FIXME update content if 'updated' changes
+
+                               // Update content if 'updated' changes
+
                                if(count($r)) {
+                                       if((x($datarray,'edited') !== false) && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) {  
+                                               $r = q("UPDATE `item` SET `body` = '%s', `edited` = '%s' WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
+                                                       dbesc($datarray['body']),
+                                                       dbesc(datetime_convert('UTC','UTC',$datarray['edited'])),
+                                                       dbesc($item_id),
+                                                       intval($importer['uid'])
+                                               );
+                                       }
+
+                                       // update last-child if it changes
+
                                        $allow = $item->get_item_tags( NAMESPACE_DFRN, 'comment-allow');
                                        if(($allow) && ($allow[0]['data'] != $r[0]['last-child'])) {
                                                $r = q("UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `parent-uri` = '%s' AND `uid` = %d",
@@ -1155,7 +1172,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0) {
                                        }
                                        continue;
                                }
-                               $datarray = get_atom_elements($feed,$item);
+
                                $force_parent = false;
                                if($contact['network'] === 'stat') {
                                        $force_parent = true;
@@ -1186,14 +1203,31 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0) {
                        }
 
                        else {
+
                                // Head post of a conversation. Have we seen it? If not, import it.
 
-                               $item_id = $item->get_id();
-                               $r = q("SELECT `uid`, `last-child`, `edited` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
+                               $item_id  = $item->get_id();
+                               $datarray = get_atom_elements($feed,$item);
+
+                               $r = q("SELECT `uid`, `last-child`, `edited`, `body` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
                                        dbesc($item_id),
                                        intval($importer['uid'])
                                );
+
+                               // Update content if 'updated' changes
+
                                if(count($r)) {
+                                       if((x($datarray,'edited') !== false) && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) {  
+                                               $r = q("UPDATE `item` SET `body` = '%s', `edited` = '%s' WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
+                                                       dbesc($datarray['body']),
+                                                       dbesc(datetime_convert('UTC','UTC',$datarray['edited'])),
+                                                       dbesc($item_id),
+                                                       intval($importer['uid'])
+                                               );
+                                       }
+
+                                       // update last-child if it changes
+
                                        $allow = $item->get_item_tags( NAMESPACE_DFRN, 'comment-allow');
                                        if($allow && $allow[0]['data'] != $r[0]['last-child']) {
                                                $r = q("UPDATE `item` SET `last-child` = %d , `changed` = '%s' WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
@@ -1205,7 +1239,6 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0) {
                                        }
                                        continue;
                                }
-                               $datarray = get_atom_elements($feed,$item);
 
                                if(activity_match($datarray['verb'],ACTIVITY_FOLLOW)) {
                                        logger('consume-feed: New follower');
@@ -1416,7 +1449,7 @@ function atom_entry($item,$type,$author,$owner,$comment = false) {
        $o .= '<updated>' . xmlify(datetime_convert('UTC','UTC',$item['edited'] . '+00:00',ATOM_TIME)) . '</updated>' . "\r\n";
        $o .= '<dfrn:env>' . base64url_encode($item['body'], true) . '</dfrn:env>' . "\r\n";
        $o .= '<content type="' . $type . '" >' . xmlify(($type === 'html') ? bbcode($item['body']) : $item['body']) . '</content>' . "\r\n";
-       $o .= '<link rel="alternate" href="' . xmlify($a->get_baseurl() . '/display/' . $owner['nickname'] . '/' . $item['id']) . '" />' . "\r\n";
+       $o .= '<link rel="alternate" type="text/html" href="' . xmlify($a->get_baseurl() . '/display/' . $owner['nickname'] . '/' . $item['id']) . '" />' . "\r\n";
        if($comment)
                $o .= '<dfrn:comment-allow>' . intval($item['last-child']) . '</dfrn:comment-allow>' . "\r\n";