0 follower

CDataProvider

Package system.web
Inheritance abstract class CDataProvider » CComponent
Implements IDataProvider
Subclasses CActiveDataProvider, CArrayDataProvider, CSqlDataProvider
Since 1.1
Source Code framework/web/CDataProvider.php
CDataProvider is a base class that implements the IDataProvider interface.

Derived classes mainly need to implement three methods: fetchData, fetchKeys and calculateTotalItemCount.

Public Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
data array Returns the data items currently available. CDataProvider
id string Returns the ID that uniquely identifies the data provider. CDataProvider
itemCount integer Returns the number of data items in the current page. CDataProvider
keys array Returns the key values associated with the data items. CDataProvider
pagination CPagination|false Returns the pagination object. CDataProvider
sort CSort|false Returns the sort object. CDataProvider
totalItemCount integer Returns the total number of data items. CDataProvider

Public Methods

Hide inherited methods

MethodDescriptionDefined By
__call() Calls the named method which is not a class method. CComponent
__get() Returns a property value, an event handler list or a behavior based on its name. CComponent
__isset() Checks if a property value is null. CComponent
__set() Sets value of a component property. CComponent
__unset() Sets a component property to be null. CComponent
asa() Returns the named behavior object. CComponent
attachBehavior() Attaches a behavior to this component. CComponent
attachBehaviors() Attaches a list of behaviors to the component. CComponent
attachEventHandler() Attaches an event handler to an event. CComponent
canGetProperty() Determines whether a property can be read. CComponent
canSetProperty() Determines whether a property can be set. CComponent
detachBehavior() Detaches a behavior from the component. CComponent
detachBehaviors() Detaches all behaviors from the component. CComponent
detachEventHandler() Detaches an existing event handler. CComponent
disableBehavior() Disables an attached behavior. CComponent
disableBehaviors() Disables all behaviors attached to this component. CComponent
enableBehavior() Enables an attached behavior. CComponent
enableBehaviors() Enables all behaviors attached to this component. CComponent
evaluateExpression() Evaluates a PHP expression or callback under the context of this component. CComponent
getData() Returns the data items currently available. CDataProvider
getEventHandlers() Returns the list of attached event handlers for an event. CComponent
getId() Returns the ID that uniquely identifies the data provider. CDataProvider
getItemCount() Returns the number of data items in the current page. CDataProvider
getKeys() Returns the key values associated with the data items. CDataProvider
getPagination() Returns the pagination object. CDataProvider
getSort() Returns the sort object. CDataProvider
getTotalItemCount() Returns the total number of data items. CDataProvider
hasEvent() Determines whether an event is defined. CComponent
hasEventHandler() Checks whether the named event has attached handlers. CComponent
hasProperty() Determines whether a property is defined. CComponent
raiseEvent() Raises an event. CComponent
setData() Sets the data items for this provider. CDataProvider
setId() Sets the provider ID. CDataProvider
setKeys() Sets the data item keys for this provider. CDataProvider
setPagination() Sets the pagination for this data provider. CDataProvider
setSort() Sets the sorting for this data provider. CDataProvider
setTotalItemCount() Sets the total number of data items. CDataProvider

Protected Methods

Hide inherited methods

MethodDescriptionDefined By
calculateTotalItemCount() Calculates the total number of data items. CDataProvider
fetchData() Fetches the data from the persistent data storage. CDataProvider
fetchKeys() Fetches the data item keys from the persistent data storage. CDataProvider

Property Details

data property
public array getData(boolean $refresh=false)
public void setData(array $value)

Returns the data items currently available.

id property
public string getId()
public void setId(string $value)

Returns the ID that uniquely identifies the data provider.

itemCount property read-only
public integer getItemCount(boolean $refresh=false)

Returns the number of data items in the current page. This is equivalent to count($provider->getData()). When pagination is set false, this returns the same value as totalItemCount.

keys property
public array getKeys(boolean $refresh=false)
public void setKeys(array $value)

Returns the key values associated with the data items.

pagination property
public CPagination|false getPagination(string $className='CPagination')
public void setPagination(mixed $value)

Returns the pagination object.

sort property
public CSort|false getSort(string $className='CSort')
public void setSort(mixed $value)

Returns the sort object.

totalItemCount property
public integer getTotalItemCount(boolean $refresh=false)
public void setTotalItemCount(integer $value)

Returns the total number of data items. When pagination is set false, this returns the same value as itemCount.

Method Details

calculateTotalItemCount() method
abstract protected integer calculateTotalItemCount()
{return} integer the total number of data items.
Source Code: framework/web/CDataProvider.php#44 (show)
abstract protected function calculateTotalItemCount();

Calculates the total number of data items.

fetchData() method
abstract protected array fetchData()
{return} array list of data items
Source Code: framework/web/CDataProvider.php#34 (show)
abstract protected function fetchData();

Fetches the data from the persistent data storage.

fetchKeys() method
abstract protected array fetchKeys()
{return} array list of data item keys.
Source Code: framework/web/CDataProvider.php#39 (show)
abstract protected function fetchKeys();

Fetches the data item keys from the persistent data storage.

getData() method
public array getData(boolean $refresh=false)
$refresh boolean whether the data should be re-fetched from persistent storage.
{return} array the list of data items currently available in this data provider.
Source Code: framework/web/CDataProvider.php#165 (show)
public function getData($refresh=false)
{
    if(
$this->_data===null || $refresh)
        
$this->_data=$this->fetchData();
    return 
$this->_data;
}

Returns the data items currently available.

getId() method
public string getId()
{return} string the unique ID that uniquely identifies the data provider among all data providers.
Source Code: framework/web/CDataProvider.php#50 (show)
public function getId()
{
    return 
$this->_id;
}

Returns the ID that uniquely identifies the data provider.

getItemCount() method
public integer getItemCount(boolean $refresh=false)
$refresh boolean whether the number of data items should be re-calculated.
{return} integer the number of data items in the current page.
Source Code: framework/web/CDataProvider.php#210 (show)
public function getItemCount($refresh=false)
{
    return 
count($this->getData($refresh));
}

Returns the number of data items in the current page. This is equivalent to count($provider->getData()). When pagination is set false, this returns the same value as totalItemCount.

getKeys() method
public array getKeys(boolean $refresh=false)
$refresh boolean whether the keys should be re-calculated.
{return} array the list of key values corresponding to data. Each data item in data is uniquely identified by the corresponding key value in this array.
Source Code: framework/web/CDataProvider.php#187 (show)
public function getKeys($refresh=false)
{
    if(
$this->_keys===null || $refresh)
        
$this->_keys=$this->fetchKeys();
    return 
$this->_keys;
}

Returns the key values associated with the data items.

getPagination() method
public CPagination|false getPagination(string $className='CPagination')
$className string the pagination object class name. Parameter is available since version 1.1.13.
{return} CPagination|false the pagination object. If this is false, it means the pagination is disabled.
Source Code: framework/web/CDataProvider.php#69 (show)
public function getPagination($className='CPagination')
{
    if(
$this->_pagination===null)
    {
        
$this->_pagination=new $className;
        if((
$id=$this->getId())!='')
            
$this->_pagination->pageVar=$id.'_page';
    }
    return 
$this->_pagination;
}

Returns the pagination object.

getSort() method
public CSort|false getSort(string $className='CSort')
$className string the sorting object class name. Parameter is available since version 1.1.13.
{return} CSort|false the sorting object. If this is false, it means the sorting is disabled.
Source Code: framework/web/CDataProvider.php#117 (show)
public function getSort($className='CSort')
{
    if(
$this->_sort===null)
    {
        
$this->_sort=new $className;
        if((
$id=$this->getId())!='')
            
$this->_sort->sortVar=$id.'_sort';
    }
    return 
$this->_sort;
}

Returns the sort object.

getTotalItemCount() method
public integer getTotalItemCount(boolean $refresh=false)
$refresh boolean whether the total number of data items should be re-calculated.
{return} integer total number of possible data items.
Source Code: framework/web/CDataProvider.php#221 (show)
public function getTotalItemCount($refresh=false)
{
    if(
$this->_totalItemCount===null || $refresh)
        
$this->_totalItemCount=$this->calculateTotalItemCount();
    return 
$this->_totalItemCount;
}

Returns the total number of data items. When pagination is set false, this returns the same value as itemCount.

setData() method
public void setData(array $value)
$value array put the data items into this provider.
Source Code: framework/web/CDataProvider.php#176 (show)
public function setData($value)
{
    
$this->_data=$value;
}

Sets the data items for this provider.

setId() method
public void setId(string $value)
$value string the unique ID that uniquely identifies the data provider among all data providers.
Source Code: framework/web/CDataProvider.php#59 (show)
public function setId($value)
{
    
$this->_id=$value;
}

Sets the provider ID.

setKeys() method
public void setKeys(array $value)
$value array put the data item keys into this provider.
Source Code: framework/web/CDataProvider.php#198 (show)
public function setKeys($value)
{
    
$this->_keys=$value;
}

Sets the data item keys for this provider.

setPagination() method
public void setPagination(mixed $value)
$value mixed the pagination to be used by this data provider. This could be a CPagination object or an array used to configure the pagination object. If this is false, it means the pagination should be disabled.

You can configure this property same way as a component:
array(
    'class' => 'MyPagination',
    'pageSize' => 20,
),
Source Code: framework/web/CDataProvider.php#93 (show)
public function setPagination($value)
{
    if(
is_array($value))
    {
        if(isset(
$value['class']))
        {
            
$pagination=$this->getPagination($value['class']);
            unset(
$value['class']);
        }
        else
            
$pagination=$this->getPagination();

        foreach(
$value as $k=>$v)
            
$pagination->$k=$v;
    }
    else
        
$this->_pagination=$value;
}

Sets the pagination for this data provider.

setSort() method
public void setSort(mixed $value)
$value mixed the sorting to be used by this data provider. This could be a CSort object or an array used to configure the sorting object. If this is false, it means the sorting should be disabled.

You can configure this property same way as a component:
array(
    'class' => 'MySort',
    'attributes' => array('name', 'weight'),
),
Source Code: framework/web/CDataProvider.php#141 (show)
public function setSort($value)
{
    if(
is_array($value))
    {
        if(isset(
$value['class']))
        {
            
$sort=$this->getSort($value['class']);
            unset(
$value['class']);
        }
        else
            
$sort=$this->getSort();

        foreach(
$value as $k=>$v)
            
$sort->$k=$v;
    }
    else
        
$this->_sort=$value;
}

Sets the sorting for this data provider.

setTotalItemCount() method (available since v1.1.1)
public void setTotalItemCount(integer $value)
$value integer the total number of data items.
Source Code: framework/web/CDataProvider.php#234 (show)
public function setTotalItemCount($value)
{
    
$this->_totalItemCount=$value;
}

Sets the total number of data items. This method is provided in case when the total number cannot be determined by calculateTotalItemCount.