}
}
+ if (array_key_exists('extid', $row) && is_null($row['extid'])) {
+ $row['extid'] = '';
+ }
+
return $row;
}
$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']);
}
}
*/
public static function select(array $selected = [], array $condition = [], $params = [])
{
- $timestamp = microtime(true);
- $data = self::selectView('post-view', $selected, $condition, $params);
-
- $duration = microtime(true) - $timestamp;;
- if ($duration > 0.1)
- Logger::info('Blubb', ['duration' => $duration, 'selected' => $selected, 'condition' => $condition, 'params' => $params, 'callstack' => System::callstack(20)]);
- return $data;
+ return self::selectView('post-view', $selected, $condition, $params);
}
/**
*/
public static function selectForUser($uid, array $selected = [], array $condition = [], $params = [])
{
- //Logger::info('Blubb', ['uid' => $uid, 'selected' => $selected, 'condition' => $condition, 'params' => $params]);
return self::selectViewForUser('post-view', $uid, $selected, $condition, $params);
}
{
$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 = 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', ['id'], $condition, []);
- $ids = array_column($rows, '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();