]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Item.php
Better not check too strict
[friendica.git] / src / Model / Item.php
index 87ea80005eedb72bdaf6a9184664ee20d0d45a20..3086a869be8dfaefb3a5df454dc2b4eabc555253 100644 (file)
@@ -107,7 +107,7 @@ class Item extends BaseObject
         */
        private static function indexToActivity($index)
        {
-               if (!isset(self::ACTIVITIES[$index])) {
+               if (is_null($index) || !array_key_exists($index, self::ACTIVITIES)) {
                        return '';
                }
 
@@ -192,12 +192,12 @@ class Item extends BaseObject
                                $row['target'] = '';
                        }
                        // Build the tag string out of the term entries
-                       if (array_key_exists('tag', $row)) {
+                       if (array_key_exists('tag', $row) && empty($row['tag'])) {
                                $row['tag'] = Term::tagTextFromItemId($row['internal-iid']);
                        }
 
                        // Build the file string out of the term entries
-                       if (array_key_exists('file', $row)) {
+                       if (array_key_exists('file', $row) && empty($row['file'])) {
                                $row['file'] = Term::fileTextFromItemId($row['internal-iid']);
                        }
                }
@@ -711,13 +711,24 @@ class Item extends BaseObject
                // We cannot simply expand the condition to check for origin entries
                // The condition needn't to be a simple array but could be a complex condition.
                // And we have to execute this query before the update to ensure to fetch the same data.
-               $items = dba::select('item', ['id', 'origin', 'uri', 'plink', 'iaid', 'icid'], $condition);
+               $items = dba::select('item', ['id', 'origin', 'uri', 'plink', 'iaid', 'icid', 'tag', 'file'], $condition);
 
                $content_fields = [];
                foreach (array_merge(self::CONTENT_FIELDLIST, self::MIXED_CONTENT_FIELDLIST) as $field) {
                        if (isset($fields[$field])) {
                                $content_fields[$field] = $fields[$field];
-                               unset($fields[$field]);
+                               if (in_array($field, self::CONTENT_FIELDLIST)) {
+                                       unset($fields[$field]);
+                               } else {
+                                       $fields[$field] = null;
+                               }
+                       }
+               }
+
+               $author_owner_fields = ['author-name', 'author-avatar', 'author-link', 'owner-name', 'owner-avatar', 'owner-link'];
+               foreach ($author_owner_fields as $field) {
+                       if (isset($fields[$field])) {
+                               $fields[$field] = null;
                        }
                }
 
@@ -752,7 +763,7 @@ class Item extends BaseObject
                        if (!empty($item['plink'])) {
                                $content_fields['plink'] = $item['plink'];
                        }
-                       if ((self::activityToIndex($item['verb']) >= 0) || !empty($item['iaid'])) {
+                       if (!empty($item['iaid']) || (!empty($content_fields['verb']) && (self::activityToIndex($content_fields['verb']) >= 0))) {
                                self::updateActivity($content_fields, ['uri' => $item['uri']]);
 
                                if (empty($item['iaid'])) {
@@ -768,6 +779,12 @@ class Item extends BaseObject
                                                        dba::delete('item-content', ['id' => $item['icid']]);
                                                }
                                        }
+                               } elseif (!empty($item['icid'])) {
+                                       dba::update('item', ['icid' => null], ['id' => $item['id']]);
+
+                                       if (!dba::exists('item', ['icid' => $item['icid']])) {
+                                               dba::delete('item-content', ['id' => $item['icid']]);
+                                       }
                                }
                        } else {
                                self::updateContent($content_fields, ['uri' => $item['uri']]);
@@ -789,10 +806,16 @@ class Item extends BaseObject
 
                        if (!empty($tags)) {
                                Term::insertFromTagFieldByItemId($item['id'], $tags);
+                               if (!empty($item['tag'])) {
+                                       dba::update('item', ['tag' => ''], ['id' => $item['id']]);
+                               }
                        }
 
                        if (!empty($files)) {
                                Term::insertFromFileFieldByItemId($item['id'], $files);
+                               if (!empty($item['file'])) {
+                                       dba::update('item', ['file' => ''], ['id' => $item['id']]);
+                               }
                        }
 
                        self::updateThread($item['id']);