]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Post.php
Automatically set to "seen"
[friendica.git] / src / Model / Post.php
index fe2171d29432b0854797ad32fedc96a5b2a23a2a..36e4a5f663f96c91bd9e9604dc8340a7694d7128 100644 (file)
@@ -225,7 +225,7 @@ class Post
                        $selected = array_merge(Item::DISPLAY_FIELDLIST, Item::ITEM_FIELDLIST);
 
                        if ($view == 'post-thread-view') {
-                               $selected = array_merge($selected, ['ignored', 'iid']);
+                               $selected = array_merge($selected, ['ignored']);
                        }
                }
 
@@ -422,7 +422,7 @@ class Post
        {
                $affected = 0;
 
-               Logger::info('Start Update', ['fields' => $fields, 'condition' => $condition]);
+               Logger::info('Start Update', ['fields' => $fields, 'condition' => $condition, 'uid' => local_user(),'callstack' => System::callstack(10)]);
 
                // Don't allow changes to fields that are responsible for the relation between the records
                unset($fields['id']);
@@ -442,95 +442,104 @@ class Post
 
                $update_fields = DBStructure::getFieldsForTable('post-user', $fields);
                if (!empty($update_fields)) {
-                       $rows = DBA::selectToArray('post-view', ['post-user-id'], $condition);
-                       $puids = array_column($rows, 'post-user-id');
-                       if (!DBA::update('post-user', $update_fields, ['id' => $puids])) {
-                               DBA::rollback();
-                               Logger::notice('Updating post-user failed', ['fields' => $update_fields, 'condition' => $condition]);
-                               return false;
+                       $affected_count = 0;
+                       $posts = DBA::select('post-view', ['post-user-id'], $condition);
+                       while ($rows = DBA::toArray($posts, false, 100)) {
+                               $puids = array_column($rows, 'post-user-id');
+                               if (!DBA::update('post-user', $update_fields, ['id' => $puids])) {
+                                       DBA::rollback();
+                                       Logger::notice('Updating post-user failed', ['fields' => $update_fields, 'condition' => $condition]);
+                                       return false;
+                               }
+                               $affected_count += DBA::affectedRows();
                        }
-                       $affected = DBA::affectedRows();                        
+                       DBA::close($posts);
+                       $affected = $affected_count;
                }
 
                $update_fields = DBStructure::getFieldsForTable('post-content', $fields);
                if (!empty($update_fields)) {
-                       $rows = DBA::selectToArray('post-view', ['uri-id'], $condition, ['group_by' => ['uri-id']]);
-                       $uriids = array_column($rows, 'uri-id');
-                       if (!DBA::update('post-content', $update_fields, ['uri-id' => $uriids])) {
-                               DBA::rollback();
-                               Logger::notice('Updating post-content failed', ['fields' => $update_fields, 'condition' => $condition]);
-                               return false;
+                       $affected_count = 0;
+                       $posts = DBA::select('post-view', ['uri-id'], $condition, ['group_by' => ['uri-id']]);
+                       while ($rows = DBA::toArray($posts, false, 100)) {
+                               $uriids = array_column($rows, 'uri-id');
+                               if (!DBA::update('post-content', $update_fields, ['uri-id' => $uriids])) {
+                                       DBA::rollback();
+                                       Logger::notice('Updating post-content failed', ['fields' => $update_fields, 'condition' => $condition]);
+                                       return false;
+                               }
+                               $affected_count += DBA::affectedRows();
                        }
-                       $affected = max($affected, DBA::affectedRows());
+                       DBA::close($posts);
+                       $affected = max($affected, $affected_count);
                }
 
                $update_fields = DBStructure::getFieldsForTable('post', $fields);
                if (!empty($update_fields)) {
-                       if (empty($uriids)) {
-                               $rows = DBA::selectToArray('post-view', ['uri-id'], $condition, ['group_by' => ['uri-id']]);
+                       $affected_count = 0;
+                       $posts = DBA::select('post-view', ['uri-id'], $condition, ['group_by' => ['uri-id']]);
+                       while ($rows = DBA::toArray($posts, false, 100)) {
                                $uriids = array_column($rows, 'uri-id');
+                               if (!DBA::update('post', $update_fields, ['uri-id' => $uriids])) {
+                                       DBA::rollback();
+                                       Logger::notice('Updating post failed', ['fields' => $update_fields, 'condition' => $condition]);
+                                       return false;
+                               }
+                               $affected_count += DBA::affectedRows();
                        }
-                       if (!DBA::update('post', $update_fields, ['uri-id' => $uriids])) {
-                               DBA::rollback();
-                               Logger::notice('Updating post failed', ['fields' => $update_fields, 'condition' => $condition]);
-                               return false;
-                       }
-                       $affected = max($affected, DBA::affectedRows());
+                       DBA::close($posts);
+                       $affected = max($affected, $affected_count);
                }
 
                $update_fields = Post\DeliveryData::extractFields($fields);
                if (!empty($update_fields)) {
-                       if (empty($uriids)) {
-                               $rows = DBA::selectToArray('post-view', ['uri-id'], $condition, ['group_by' => ['uri-id']]);
+                       $affected_count = 0;
+                       $posts = DBA::select('post-view', ['uri-id'], $condition, ['group_by' => ['uri-id']]);
+                       while ($rows = DBA::toArray($posts, false, 100)) {
                                $uriids = array_column($rows, 'uri-id');
+                               if (!DBA::update('post-delivery-data', $update_fields, ['uri-id' => $uriids])) {
+                                       DBA::rollback();
+                                       Logger::notice('Updating post-delivery-data failed', ['fields' => $update_fields, 'condition' => $condition]);
+                                       return false;
+                               }
+                               $affected_count += DBA::affectedRows();
                        }
-                       if (!DBA::update('post-delivery-data', $update_fields, ['uri-id' => $uriids])) {
-                               DBA::rollback();
-                               Logger::notice('Updating post-delivery-data failed', ['fields' => $update_fields, 'condition' => $condition]);
-                               return false;
-                       }
-                       $affected = max($affected, DBA::affectedRows());
+                       DBA::close($posts);
+                       $affected = max($affected, $affected_count);
                }
 
                $update_fields = DBStructure::getFieldsForTable('post-thread', $fields);
                if (!empty($update_fields)) {
-                       $rows = DBA::selectToArray('post-view', ['uri-id'], $thread_condition, ['group_by' => ['uri-id']]);
-                       $uriids = array_column($rows, 'uri-id');
-                       if (!DBA::update('post-thread', $update_fields, ['uri-id' => $uriids])) {
-                               DBA::rollback();
-                               Logger::notice('Updating post-thread failed', ['fields' => $update_fields, 'condition' => $condition]);
-                               return false;
+                       $affected_count = 0;
+                       $posts = DBA::select('post-view', ['uri-id'], $thread_condition, ['group_by' => ['uri-id']]);
+                       while ($rows = DBA::toArray($posts, false, 100)) {
+                               $uriids = array_column($rows, 'uri-id');
+                               if (!DBA::update('post-thread', $update_fields, ['uri-id' => $uriids])) {
+                                       DBA::rollback();
+                                       Logger::notice('Updating post-thread failed', ['fields' => $update_fields, 'condition' => $condition]);
+                                       return false;
+                               }
+                               $affected_count += DBA::affectedRows();
                        }
-                       $affected = max($affected, DBA::affectedRows());
+                       DBA::close($posts);
+                       $affected = max($affected, $affected_count);
                }
 
                $update_fields = DBStructure::getFieldsForTable('post-thread-user', $fields);
                if (!empty($update_fields)) {
-                       $rows = DBA::selectToArray('post-view', ['post-user-id'], $thread_condition);
-                       $thread_puids = array_column($rows, 'post-user-id');
-                       if (!DBA::update('post-thread-user', $update_fields, ['post-user-id' => $thread_puids])) {
-                               DBA::rollback();
-                               Logger::notice('Updating post-thread-user failed', ['fields' => $update_fields, 'condition' => $condition]);
-                               return false;
-                       }
-                       $affected = max($affected, DBA::affectedRows());
-               }
-
-               $update_fields = [];
-               foreach (Item::USED_FIELDLIST as $field) {
-                       if (array_key_exists($field, $fields)) {
-                               $update_fields[$field] = $fields[$field];
-                       }
-               }
-               if (!empty($update_fields)) {
-                       $rows = DBA::selectToArray('post-view', ['item-id'], $condition, []);
-                       $ids = array_column($rows, 'item-id');
-                       if (!DBA::update('item', $update_fields, ['id' => $ids])) {
-                               DBA::rollback();
-                               Logger::notice('Updating item failed', ['fields' => $update_fields, 'condition' => $condition]);
-                               return false;
+                       $affected_count = 0;
+                       $posts = DBA::select('post-view', ['post-user-id'], $thread_condition);
+                       while ($rows = DBA::toArray($posts, false, 100)) {
+                               $thread_puids = array_column($rows, 'post-user-id');
+                               if (!DBA::update('post-thread-user', $update_fields, ['post-user-id' => $thread_puids])) {
+                                       DBA::rollback();
+                                       Logger::notice('Updating post-thread-user failed', ['fields' => $update_fields, 'condition' => $condition]);
+                                       return false;
+                               }
+                               $affected_count += DBA::affectedRows();
                        }
-                       $affected = max($affected, DBA::affectedRows());
+                       DBA::close($posts);
+                       $affected = max($affected, $affected_count);
                }
 
                DBA::commit();