Source of file DataListDataSource.php
Size: 1,627 Bytes - Last Modified: 2021-12-24T06:51:21+00:00
/var/www/docs.ssmods.com/process/src/src/DataSource/DataListDataSource.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 | <?php namespace Heyday\SilverStripeRedirects\Source\DataSource; use Heyday\SilverStripeRedirects\Source\CacheableDataSourceInterface; use Heyday\SilverStripeRedirects\Source\Redirect; use Heyday\SilverStripeRedirects\Source\TransformerInterface; use SilverStripe\ORM\DataList; class DataListDataSource implements CacheableDataSourceInterface { /** @var DataList */ protected $list; /** @var TransformerInterface */ protected $transformer; /** * @param DataList $list * @param TransformerInterface $transformer */ public function __construct(DataList $list, TransformerInterface $transformer) { $this->list = $list; $this->transformer = $transformer; } /** * In order to improve performance for a larger number of redirects, instead of a standard array being generated * an associative array (keyed on the 'from' URL) is generated which allows a direct check rather than needing * to iterate through a large list (especially considering this would be done on each page request). * * @return Redirect[] */ public function get() { $data = array(); /* @var Redirect $redirect */ foreach (array_map([$this->transformer, 'transform'], $this->list->toArray()) as $redirect) { // Format the URL so it will match the SS_HTTPRequest request URL $data[Redirect::formatUrl($redirect->getFrom())] = $redirect; } return $data; } /** * @return string */ public function getKey() { return md5($this->list->sql()); } } |