mirror of
https://we.phorge.it/source/phorge.git
synced 2025-02-01 17:38:24 +01:00
ef85f49adc
Summary: This commit doesn't change license of any file. It just makes the license implicit (inherited from LICENSE file in the root directory). We are removing the headers for these reasons: - It wastes space in editors, less code is visible in editor upon opening a file. - It brings noise to diff of the first change of any file every year. - It confuses Git file copy detection when creating small files. - We don't have an explicit license header in other files (JS, CSS, images, documentation). - Using license header in every file is not obligatory: http://www.apache.org/dev/apply-license.html#new. This change is approved by Alma Chao (Lead Open Source and IP Counsel at Facebook). Test Plan: Verified that the license survived only in LICENSE file and that it didn't modify externals. Reviewers: epriestley, davidrecordon Reviewed By: epriestley CC: aran, Korvin Maniphest Tasks: T2035 Differential Revision: https://secure.phabricator.com/D3886
48 lines
1 KiB
PHP
48 lines
1 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Iterate over every object of a given type, without holding all of them in
|
|
* memory. This is useful for performing database migrations.
|
|
*
|
|
* $things = new LiskMigrationIterator(new LiskThing());
|
|
* foreach ($things as $thing) {
|
|
* // do something
|
|
* }
|
|
*
|
|
* NOTE: This only works on objects with a normal `id` column.
|
|
*
|
|
* @task storage
|
|
*/
|
|
final class LiskMigrationIterator extends PhutilBufferedIterator {
|
|
|
|
private $object;
|
|
private $cursor;
|
|
private $set;
|
|
|
|
public function __construct(LiskDAO $object) {
|
|
$this->set = new LiskDAOSet();
|
|
$this->object = $object->putInSet($this->set);
|
|
}
|
|
|
|
protected function didRewind() {
|
|
$this->cursor = 0;
|
|
}
|
|
|
|
public function key() {
|
|
return $this->current()->getID();
|
|
}
|
|
|
|
protected function loadPage() {
|
|
$this->set->clearSet();
|
|
|
|
$results = $this->object->loadAllWhere(
|
|
'id > %d ORDER BY id ASC LIMIT %d',
|
|
$this->cursor,
|
|
$this->getPageSize());
|
|
if ($results) {
|
|
$this->cursor = last($results)->getID();
|
|
}
|
|
return $results;
|
|
}
|
|
|
|
}
|