/** * @covers BehEh\Sulphur\Filterable::doesNotPass */ public function testDoesNotPass() { $this->assertTrue($this->filterable->doesNotPass('Title', function ($field, $value) { return strlen($value) <= 3; })); $this->assertTrue($this->filterable->doesNotPass('Title', function ($field, $value) { return $field === 'State'; })); $this->assertTrue($this->filterable->doesNotPass('Icon', function ($field, $value) { return $value === '12'; })); $this->assertTrue($this->filterable->doesNotPass('foo', function ($field, $value) { return $value !== null; })); $this->assertFalse($this->filterable->doesNotPass('Title', function ($field, $value) { return strlen($value) > 5; })); $this->assertFalse($this->filterable->doesNotPass('Title', function ($field, $value) { return $field === 'Title'; })); $this->assertFalse($this->filterable->doesNotPass('Icon', function ($field, $value) { return $value === 12; })); $this->assertFalse($this->filterable->doesNotPass('foo', function ($field, $value) { return $value === null; })); }
public function filterby() { // Get a list of filterable classes $classes = Filterable::getFilteredClasses(); $results = ArrayList::create(); $get_vars = $this->owner->request->getVars(); $filter_ids = array(); if (isset($get_vars["filter"])) { // First trim uneeded characters from string $filter_vars = trim($get_vars["filter"], " :;\t\n\r\v"); // Now explode the filters stored in our filter var $filter_vars = explode(";", $filter_vars); // Now get the filter options we need to filter objects by foreach ($filter_vars as $single_var) { $key_value = explode(":", $single_var); $filter_option = FilterOption::get()->filter(array("Parent.URLSegment:nocase" => $key_value[0], "URLSegment:nocase" => $key_value[1]))->first(); if ($filter_option && $results->exists()) { foreach ($results as $result) { if (!$result->Filters()->find("ID", $filter_option->ID)) { $results->remove($result); } } } elseif ($filter_option) { foreach ($classes as $class) { $list = $class::get()->filter("Filters.ID:ExactMatch", $filter_option->ID); if ($list->exists()) { $results->merge($list); } } } } } else { foreach ($classes as $class) { $list = $class::get(); if ($list->exists()) { $results->merge($list); } } } $results = new PaginatedList($results, $this->owner->request); $data = array('Results' => $results); $this->owner->extend("updateFilterBy", $data); $template = $this->owner->ClassName ? $this->owner->ClassName : "Page"; return $this->owner->customise($data)->renderWith(array("{$template}_filterby", "FilterBy", "Page")); }
public function __construct() { parent::__construct(); $this->_CI =& get_instance(); }
public function __construct($heading) { $this->setHeading($heading); parent::__construct(); }