Fetch a given number of posts
This commit is contained in:
parent
d37f3de3e6
commit
10f7280bbc
3 changed files with 18 additions and 12 deletions
|
@ -767,13 +767,15 @@ class DBA
|
||||||
/**
|
/**
|
||||||
* Fills an array with data from a query
|
* Fills an array with data from a query
|
||||||
*
|
*
|
||||||
* @param object $stmt statement object
|
* @param object $stmt statement object
|
||||||
* @param bool $do_close
|
* @param bool $do_close Close database connection after last row
|
||||||
|
* @param int $count maximum number of rows to be fetched
|
||||||
|
*
|
||||||
* @return array Data array
|
* @return array Data array
|
||||||
*/
|
*/
|
||||||
public static function toArray($stmt, $do_close = true)
|
public static function toArray($stmt, $do_close = true, int $count = 0)
|
||||||
{
|
{
|
||||||
return DI::dba()->toArray($stmt, $do_close);
|
return DI::dba()->toArray($stmt, $do_close, $count);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1613,12 +1613,13 @@ class Database
|
||||||
/**
|
/**
|
||||||
* Fills an array with data from a query
|
* Fills an array with data from a query
|
||||||
*
|
*
|
||||||
* @param object $stmt statement object
|
* @param object $stmt statement object
|
||||||
* @param bool $do_close
|
* @param bool $do_close Close database connection after last row
|
||||||
|
* @param int $count maximum number of rows to be fetched
|
||||||
*
|
*
|
||||||
* @return array Data array
|
* @return array Data array
|
||||||
*/
|
*/
|
||||||
public function toArray($stmt, $do_close = true)
|
public function toArray($stmt, $do_close = true, int $count = 0)
|
||||||
{
|
{
|
||||||
if (is_bool($stmt)) {
|
if (is_bool($stmt)) {
|
||||||
return [];
|
return [];
|
||||||
|
@ -1627,6 +1628,9 @@ class Database
|
||||||
$data = [];
|
$data = [];
|
||||||
while ($row = $this->fetch($stmt)) {
|
while ($row = $this->fetch($stmt)) {
|
||||||
$data[] = $row;
|
$data[] = $row;
|
||||||
|
if (($count != 0) && (count($data) == $count)) {
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($do_close) {
|
if ($do_close) {
|
||||||
|
|
|
@ -443,17 +443,17 @@ class Post
|
||||||
$update_fields = DBStructure::getFieldsForTable('post-user', $fields);
|
$update_fields = DBStructure::getFieldsForTable('post-user', $fields);
|
||||||
if (!empty($update_fields)) {
|
if (!empty($update_fields)) {
|
||||||
$affected_count = 0;
|
$affected_count = 0;
|
||||||
$rows = DBA::selectToArray('post-view', ['post-user-id'], $condition);
|
$posts = DBA::select('post-view', ['post-user-id'], $condition);
|
||||||
$puids = array_column($rows, 'post-user-id');
|
while ($rows = DBA::toArray($posts, false, 100)) {
|
||||||
while (!empty($puids)) {
|
$puids = array_column($rows, 'post-user-id');
|
||||||
$segment = array_splice($puids, 0, 100);
|
if (!DBA::update('post-user', $update_fields, ['id' => $puids])) {
|
||||||
if (!DBA::update('post-user', $update_fields, ['id' => $segment])) {
|
|
||||||
DBA::rollback();
|
DBA::rollback();
|
||||||
Logger::notice('Updating post-user failed', ['fields' => $update_fields, 'condition' => $condition]);
|
Logger::notice('Updating post-user failed', ['fields' => $update_fields, 'condition' => $condition]);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$affected_count += DBA::affectedRows();
|
$affected_count += DBA::affectedRows();
|
||||||
}
|
}
|
||||||
|
DBA::close($posts);
|
||||||
$affected = $affected_count;
|
$affected = $affected_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue