X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FPost.php;h=aae847664db2093efee10ebc45575a2fa44a39ad;hb=a24febb8b656217a7cd88db205007420cb64485e;hp=ff86dc6f2dd752b49300f3e3aa11dc2f1d6d621b;hpb=9e1f03ca11ec5efc48c6f503ce16ea5df39c59af;p=friendica.git diff --git a/src/Model/Post.php b/src/Model/Post.php index ff86dc6f2d..aae847664d 100644 --- a/src/Model/Post.php +++ b/src/Model/Post.php @@ -1,6 +1,6 @@ $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']); @@ -441,78 +460,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-user-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-user-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-user-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-user-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-user-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_count = 0; + $posts = DBA::select('post-user-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();