init
This commit is contained in:
81
vendor/yiisoft/yii2-debug/components/search/Filter.php
vendored
Normal file
81
vendor/yiisoft/yii2-debug/components/search/Filter.php
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
/**
|
||||
* @link http://www.yiiframework.com/
|
||||
* @copyright Copyright (c) 2008 Yii Software LLC
|
||||
* @license http://www.yiiframework.com/license/
|
||||
*/
|
||||
|
||||
namespace yii\debug\components\search;
|
||||
|
||||
use yii\base\Component;
|
||||
use yii\debug\components\search\matchers\MatcherInterface;
|
||||
|
||||
/**
|
||||
* Provides array filtering capabilities.
|
||||
*
|
||||
* @author Mark Jebri <mark.github@yandex.ru>
|
||||
* @since 2.0
|
||||
*/
|
||||
class Filter extends Component
|
||||
{
|
||||
/**
|
||||
* @var array rules for matching filters in the way: [:fieldName => [rule1, rule2,..]]
|
||||
*/
|
||||
protected $rules = [];
|
||||
|
||||
|
||||
/**
|
||||
* Adds data filtering rule.
|
||||
*
|
||||
* @param string $name attribute name
|
||||
* @param MatcherInterface $rule
|
||||
*/
|
||||
public function addMatcher($name, MatcherInterface $rule)
|
||||
{
|
||||
if ($rule->hasValue()) {
|
||||
$this->rules[$name][] = $rule;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies filter on a given array and returns filtered data.
|
||||
*
|
||||
* @param array $data data to filter
|
||||
* @return array filtered data
|
||||
*/
|
||||
public function filter(array $data)
|
||||
{
|
||||
$filtered = [];
|
||||
|
||||
foreach ($data as $row) {
|
||||
if ($this->passesFilter($row)) {
|
||||
$filtered[] = $row;
|
||||
}
|
||||
}
|
||||
|
||||
return $filtered;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the given data satisfies filters.
|
||||
*
|
||||
* @param array $row data
|
||||
* @return bool if data passed filtering
|
||||
*/
|
||||
private function passesFilter(array $row)
|
||||
{
|
||||
foreach ($row as $name => $value) {
|
||||
if (isset($this->rules[$name])) {
|
||||
// check all rules for a given attribute
|
||||
foreach ($this->rules[$name] as $rule) {
|
||||
/* @var $rule MatcherInterface */
|
||||
if (!$rule->match($value)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
41
vendor/yiisoft/yii2-debug/components/search/matchers/Base.php
vendored
Normal file
41
vendor/yiisoft/yii2-debug/components/search/matchers/Base.php
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
/**
|
||||
* @link http://www.yiiframework.com/
|
||||
* @copyright Copyright (c) 2008 Yii Software LLC
|
||||
* @license http://www.yiiframework.com/license/
|
||||
*/
|
||||
|
||||
namespace yii\debug\components\search\matchers;
|
||||
|
||||
use yii\base\Component;
|
||||
|
||||
/**
|
||||
* Base class for matchers that are used in a filter.
|
||||
*
|
||||
* @author Mark Jebri <mark.github@yandex.ru>
|
||||
* @since 2.0
|
||||
*/
|
||||
abstract class Base extends Component implements MatcherInterface
|
||||
{
|
||||
/**
|
||||
* @var mixed base value to check
|
||||
*/
|
||||
protected $baseValue;
|
||||
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function setValue($value)
|
||||
{
|
||||
$this->baseValue = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function hasValue()
|
||||
{
|
||||
return !empty($this->baseValue) || ($this->baseValue === '0');
|
||||
}
|
||||
}
|
||||
25
vendor/yiisoft/yii2-debug/components/search/matchers/GreaterThan.php
vendored
Normal file
25
vendor/yiisoft/yii2-debug/components/search/matchers/GreaterThan.php
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
/**
|
||||
* @link http://www.yiiframework.com/
|
||||
* @copyright Copyright (c) 2008 Yii Software LLC
|
||||
* @license http://www.yiiframework.com/license/
|
||||
*/
|
||||
|
||||
namespace yii\debug\components\search\matchers;
|
||||
|
||||
/**
|
||||
* Checks if the given value is greater than the base one.
|
||||
*
|
||||
* @author Mark Jebri <mark.github@yandex.ru>
|
||||
* @since 2.0
|
||||
*/
|
||||
class GreaterThan extends Base
|
||||
{
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function match($value)
|
||||
{
|
||||
return ($value > $this->baseValue);
|
||||
}
|
||||
}
|
||||
25
vendor/yiisoft/yii2-debug/components/search/matchers/GreaterThanOrEqual.php
vendored
Normal file
25
vendor/yiisoft/yii2-debug/components/search/matchers/GreaterThanOrEqual.php
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
/**
|
||||
* @link http://www.yiiframework.com/
|
||||
* @copyright Copyright (c) 2008 Yii Software LLC
|
||||
* @license http://www.yiiframework.com/license/
|
||||
*/
|
||||
|
||||
namespace yii\debug\components\search\matchers;
|
||||
|
||||
/**
|
||||
* Checks if the given value is greater than or equal the base one.
|
||||
*
|
||||
* @author Dmitriy Bashkarev <dmitriy@bashkarev.com>
|
||||
* @since 2.0.7
|
||||
*/
|
||||
class GreaterThanOrEqual extends Base
|
||||
{
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function match($value)
|
||||
{
|
||||
return $value >= $this->baseValue;
|
||||
}
|
||||
}
|
||||
25
vendor/yiisoft/yii2-debug/components/search/matchers/LowerThan.php
vendored
Normal file
25
vendor/yiisoft/yii2-debug/components/search/matchers/LowerThan.php
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
/**
|
||||
* @link http://www.yiiframework.com/
|
||||
* @copyright Copyright (c) 2008 Yii Software LLC
|
||||
* @license http://www.yiiframework.com/license/
|
||||
*/
|
||||
|
||||
namespace yii\debug\components\search\matchers;
|
||||
|
||||
/**
|
||||
* Checks if the given value is lower than the base one.
|
||||
*
|
||||
* @author Mark Jebri <mark.github@yandex.ru>
|
||||
* @since 2.0
|
||||
*/
|
||||
class LowerThan extends Base
|
||||
{
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function match($value)
|
||||
{
|
||||
return ($value < $this->baseValue);
|
||||
}
|
||||
}
|
||||
39
vendor/yiisoft/yii2-debug/components/search/matchers/MatcherInterface.php
vendored
Normal file
39
vendor/yiisoft/yii2-debug/components/search/matchers/MatcherInterface.php
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
/**
|
||||
* @link http://www.yiiframework.com/
|
||||
* @copyright Copyright (c) 2008 Yii Software LLC
|
||||
* @license http://www.yiiframework.com/license/
|
||||
*/
|
||||
|
||||
namespace yii\debug\components\search\matchers;
|
||||
|
||||
/**
|
||||
* MatcherInterface should be implemented by all matchers that are used in a filter.
|
||||
*
|
||||
* @author Mark Jebri <mark.github@yandex.ru>
|
||||
* @since 2.0
|
||||
*/
|
||||
interface MatcherInterface
|
||||
{
|
||||
/**
|
||||
* Checks if the value passed matches base value.
|
||||
*
|
||||
* @param mixed $value value to be matched
|
||||
* @return bool if there is a match
|
||||
*/
|
||||
public function match($value);
|
||||
|
||||
/**
|
||||
* Sets base value to match against
|
||||
*
|
||||
* @param mixed $value
|
||||
*/
|
||||
public function setValue($value);
|
||||
|
||||
/**
|
||||
* Checks if base value is set
|
||||
*
|
||||
* @return bool if base value is set
|
||||
*/
|
||||
public function hasValue();
|
||||
}
|
||||
40
vendor/yiisoft/yii2-debug/components/search/matchers/SameAs.php
vendored
Normal file
40
vendor/yiisoft/yii2-debug/components/search/matchers/SameAs.php
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
/**
|
||||
* @link http://www.yiiframework.com/
|
||||
* @copyright Copyright (c) 2008 Yii Software LLC
|
||||
* @license http://www.yiiframework.com/license/
|
||||
*/
|
||||
|
||||
namespace yii\debug\components\search\matchers;
|
||||
|
||||
use yii\helpers\VarDumper;
|
||||
|
||||
/**
|
||||
* Checks if the given value is exactly or partially same as the base one.
|
||||
*
|
||||
* @author Mark Jebri <mark.github@yandex.ru>
|
||||
* @since 2.0
|
||||
*/
|
||||
class SameAs extends Base
|
||||
{
|
||||
/**
|
||||
* @var boolean if partial match should be used.
|
||||
*/
|
||||
public $partial = false;
|
||||
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function match($value)
|
||||
{
|
||||
if (!is_scalar($value)) {
|
||||
$value = VarDumper::export($value);
|
||||
}
|
||||
if ($this->partial) {
|
||||
return mb_stripos($value, $this->baseValue, 0, \Yii::$app->charset) !== false;
|
||||
}
|
||||
|
||||
return strcmp(mb_strtoupper($this->baseValue, \Yii::$app->charset), mb_strtoupper($value, \Yii::$app->charset)) === 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user