]> git.mxchange.org Git - friendica.git/blobdiff - include/items.php
Merge pull request #351 from annando/master
[friendica.git] / include / items.php
index 5d9c36d94f1120b8befcfb71472051503b59a6d6..a0dd1c8159fc0a61130d7079541cba5c27960ca0 100755 (executable)
@@ -446,6 +446,8 @@ function get_atom_elements($feed,$item) {
                $res['body'] = $purifier->purify($res['body']);
 
                $res['body'] = @html2bbcode($res['body']);
+
+
        }
        elseif(! $have_real_body) {
 
@@ -814,6 +816,12 @@ function item_store($arr,$force_parent = false) {
                        if($r[0]['private'])
                                $arr['private'] = 1;
 
+                       // Edge case. We host a public forum that was originally posted to privately.
+                       // The original author commented, but as this is a comment, the permissions
+                       // weren't fixed up so it will still show the comment as private unless we fix it here. 
+
+                       if((intval($r[0]['forum_mode']) == 1) && (! $r[0]['private']))
+                               $arr['private'] = 0;
                }
                else {
 
@@ -1258,6 +1266,12 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) {
                return 3;
        }
 
+       if($contact['term-date'] != '0000-00-00 00:00:00') {
+               logger("dfrn_deliver: $url back from the dead - removing mark for death");
+               require_once('include/Contact.php');
+               unmark_for_death($contact);
+       }
+
        $res = parse_xml_string($xml);
 
        return $res->status; 
@@ -3395,32 +3409,41 @@ function drop_item($id,$interactive = true) {
 function first_post_date($uid,$wall = false) {
        $r = q("select id, created from item 
                where uid = %d and wall = %d and deleted = 0 and visible = 1 AND moderated = 0 
+               and id = parent
                order by created asc limit 1",
                intval($uid),
                intval($wall ? 1 : 0)
        );
        if(count($r)) {
-               logger('first_post_date: ' . $r[0]['id'] . ' ' . $r[0]['created'], LOGGER_DATA);
-               return substr($r[0]['created'],0,10);
+//             logger('first_post_date: ' . $r[0]['id'] . ' ' . $r[0]['created'], LOGGER_DATA);
+               return substr(datetime_convert('',date_default_timezone_get(),$r[0]['created']),0,10);
        }
        return false;
 }
 
 function posted_dates($uid,$wall) {
-       $dnow = datetime_convert('','','now','Y-m-d');
+       $dnow = datetime_convert('',date_default_timezone_get(),'now','Y-m-d');
 
        $dthen = first_post_date($uid,$wall);
        if(! $dthen)
                return array();
 
+       // If it's near the end of a long month, backup to the 28th so that in 
+       // consecutive loops we'll always get a whole month difference.
+
+       if(intval(substr($dnow,8)) > 28)
+               $dnow = substr($dnow,0,8) . '28';
+       if(intval(substr($dthen,8)) > 28)
+               $dnow = substr($dthen,0,8) . '28';
+
        $ret = array();
        while($dnow >= $dthen) {
-               $start_month = datetime_convert('','','first day of ' . $dnow,'Y-m-d');
-               $end_month = datetime_convert('','','last day of ' . $dnow,'Y-m-d');
+               $dstart = substr($dnow,0,8) . '01';
+               $dend = substr($dnow,0,8) . get_dim(intval($dnow),intval(substr($dnow,5)));
+               $start_month = datetime_convert('','',$dstart,'Y-m-d');
+               $end_month = datetime_convert('','',$dend,'Y-m-d');
                $str = day_translate(datetime_convert('','',$dnow,'F Y'));
                $ret[] = array($str,$end_month,$start_month);
-               if($start_month < $dthen)
-                       break;
                $dnow = datetime_convert('','',$dnow . ' -1 month', 'Y-m-d');
        }
        return $ret;
@@ -3429,6 +3452,12 @@ function posted_dates($uid,$wall) {
 
 function posted_date_widget($url,$uid,$wall) {
        $o = '';
+
+       // For former Facebook folks that left because of "timeline"
+
+       if($wall && intval(get_pconfig($uid,'system','no_wall_archive_widget')))
+               return $o;
+
        $ret = posted_dates($uid,$wall);
        if(! count($ret))
                return $o;