Debug.php 2.4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
<?php

namespace yii\debug\models\search;

use yii\data\ArrayDataProvider;
use yii\debug\components\search\Filter;

/**
 * Debug represents the model behind the search form about requests manifest data.
 */
Mark committed
11
class Debug extends Base
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
{
	/**
	 * @var string tag attribute input search value
	 */
	public $tag;

	/**
	 * @var string ip attribute input search value
	 */
	public $ip;

	/**
	 * @var string method attribute input search value
	 */
	public $method;

	/**
	 * @var integer ajax attribute input search value
	 */
	public $ajax;

	/**
	 * @var string url attribute input search value
	 */
	public $url;

	/**
Qiang Xue committed
39
	 * @var string status code attribute input search value
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
	 */
	public $statusCode;

	/**
	 *
	 * @var integer sql count attribute input search value
	 */
	public $sqlCount;

	/**
	 * @var array critical codes, used to determine grid row options.
	 */
	public $criticalCodes = [400, 404, 500];

	public function rules()
	{
		return [
Qiang Xue committed
57
			[['tag', 'ip', 'method', 'ajax', 'url', 'statusCode', 'sqlCount'], 'safe'],
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
		];
	}

	/**
	 * @inheritdoc
	 */
	public function attributeLabels()
	{
		return [
			'tag' => 'Tag',
			'ip' => 'Ip',
			'method' => 'Method',
			'ajax' => 'Ajax',
			'url' => 'url',
			'statusCode' => 'Status code',
			'sqlCount' => 'Total queries count',
		];
	}

	/**
	 * Returns data provider with filled models. Filter applied if needed.
Qiang Xue committed
79 80
	 * @param array $params
	 * @param array $models
81 82 83 84 85 86 87
	 * @return \yii\data\ArrayDataProvider
	 */
	public function search($params, $models)
	{
		$dataProvider = new ArrayDataProvider([
			'allModels' => $models,
			'sort' => [
Qiang Xue committed
88
				'attributes' => ['method', 'ip', 'tag', 'time', 'statusCode', 'sqlCount'],
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
			],
			'pagination' => [
				'pageSize' => 10,
			],
		]);

		if (!($this->load($params) && $this->validate())) {
			return $dataProvider;
		}

		$filter = new Filter();
		$this->addCondition($filter, 'tag', true);
		$this->addCondition($filter, 'ip', true);
		$this->addCondition($filter, 'method');
		$this->addCondition($filter, 'ajax');
		$this->addCondition($filter, 'url', true);
		$this->addCondition($filter, 'statusCode');
		$this->addCondition($filter, 'sqlCount');
		$dataProvider->allModels = $filter->filter($models);

		return $dataProvider;
	}

	/**
	 * Checks if the code is critical: 400 or greater, 500 or greater.
	 * @param integer $code
	 * @return bool
	 */
	public function isCodeCritical($code)
	{
		return in_array($code, $this->criticalCodes);
	}

}