My favorites | Sign in
yii
Project Home Downloads Issues Source
Checkout   Browse   Changes    
 
1
2
3
4
5
6
7
8
9
10
11
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
/**
* CFilterWidget class file.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.yiiframework.com/
* @copyright Copyright &copy; 2008-2011 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/

/**
* CFilterWidget is the base class for widgets that can also be used as filters.
*
* Derived classes may need to override the following methods:
* <ul>
* <li>{@link CWidget::init()} : called when this is object is used as a widget and needs initialization.</li>
* <li>{@link CWidget::run()} : called when this is object is used as a widget.</li>
* <li>{@link filter()} : the filtering method called when this object is used as an action filter.</li>
* </ul>
*
* CFilterWidget provides all properties and methods of {@link CWidget} and {@link CFilter}.
*
* @property boolean $isFilter Whether this widget is used as a filter.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @version $Id$
* @package system.web.widgets
* @since 1.0
*/
class CFilterWidget extends CWidget implements IFilter
{
/**
* @var boolean whether to stop the action execution when this widget is used as a filter.
* This property should be changed only in {@link CWidget::init} method.
* Defaults to false, meaning the action should be executed.
*/
public $stopAction=false;

private $_isFilter;

/**
* Constructor.
* @param CBaseController $owner owner/creator of this widget. It could be either a widget or a controller.
*/
public function __construct($owner=null)
{
parent::__construct($owner);
$this->_isFilter=($owner===null);
}

/**
* @return boolean whether this widget is used as a filter.
*/
public function getIsFilter()
{
return $this->_isFilter;
}

/**
* Performs the filtering.
* The default implementation simply calls {@link init()},
* {@link CFilterChain::run()} and {@link run()} in order
* Derived classes may want to override this method to change this behavior.
* @param CFilterChain $filterChain the filter chain that the filter is on.
*/
public function filter($filterChain)
{
$this->init();
if(!$this->stopAction)
{
$filterChain->run();
$this->run();
}
}
}

Change log

r3527 by qiang.xue on Dec 31, 2011   Diff
1.1.9 release.
Go to: 
Sign in to write a code review

Older revisions

r3515 by mdomba on Dec 28, 2011   Diff
removed 1.0.x reference from
documentation
r3426 by alexander.makarow on Oct 24, 2011   Diff
Documented component accessors with
@property for significantly better IDE
autocomplete
r2799 by qiang.xue on Jan 1, 2011   Diff
changed copyright year.
All revisions of this file

File info

Size: 2168 bytes, 75 lines

File properties

svn:keywords
Id
Powered by Google Project Hosting