use BadMethodCallException;
use Friendica\Core\Logger;
+use Friendica\Core\System;
use Friendica\Database\Database;
use Friendica\Database\DBA;
use Friendica\Database\DBStructure;
{
$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']);
$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_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();