mirror of
https://github.com/silverstripe/silverstripe-fulltextsearch
synced 2024-10-22 14:05:29 +02:00
1728a62af5
Thanks to Marco Hermo and Brett Tasker for helping with this * Bump framework/cms to ^4.0@dev * WIP Silverstripe 4 compatibility fixes * more replacements and patches to migrate this module to 4.0 * Update composer.json * remove php <5.5 from travis.yml * WIP more SS4 compatibility fixes * WIP fix solr path to use DIR, avoid hardcoded module name * WIP respect current include path * WIP Namespacing and use on SearchIndex class * Namespacing for tests * WIP add namespaces to all classes * Second push of Test changes + namespacing * WIP split Solr files with multiple classes into single file / single class. Adjust namespaces * Fix PHP errors in test * break out search components with multiple classes into individual files and change namespaces * Update namespacing for Search indexes and variants in tests * Batch fixes for tests #2 * Update _config.php to use namespace * Use root namespace in referencing Apache_Solr_Document * Migrate task names so that the name is not fully qualified
60 lines
1.2 KiB
PHP
60 lines
1.2 KiB
PHP
<?php
|
|
namespace SilverStripe\FullTextSearch\Utils;
|
|
use Iterator;
|
|
class MultipleArrayIterator implements Iterator
|
|
{
|
|
protected $arrays;
|
|
protected $active;
|
|
|
|
public function __construct()
|
|
{
|
|
$args = func_get_args();
|
|
|
|
$this->arrays = array();
|
|
foreach ($args as $arg) {
|
|
if (is_array($arg) && count($arg)) {
|
|
$this->arrays[] = $arg;
|
|
}
|
|
}
|
|
|
|
$this->rewind();
|
|
}
|
|
|
|
public function rewind()
|
|
{
|
|
$this->active = $this->arrays;
|
|
if ($this->active) {
|
|
reset($this->active[0]);
|
|
}
|
|
}
|
|
|
|
public function current()
|
|
{
|
|
return $this->active ? current($this->active[0]) : false;
|
|
}
|
|
|
|
public function key()
|
|
{
|
|
return $this->active ? key($this->active[0]) : false;
|
|
}
|
|
|
|
public function next()
|
|
{
|
|
if (!$this->active) {
|
|
return;
|
|
}
|
|
|
|
if (next($this->active[0]) === false) {
|
|
array_shift($this->active);
|
|
if ($this->active) {
|
|
reset($this->active[0]);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function valid()
|
|
{
|
|
return $this->active && (current($this->active[0]) !== false);
|
|
}
|
|
}
|