| Server IP : 213.186.33.4 / Your IP : 216.73.216.193 Web Server : Apache System : Linux webm006.cluster103.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : awebpaca ( 35430) PHP Version : 8.5.0 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/awebpaca/boutiques/app/code/core/Mage/Adminhtml/Block/Widget/ |
Upload File : |
<?php
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@magentocommerce.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/**
* Adminhtml grid widget block
*
* @category Mage
* @package Mage_Adminhtml
* @author Magento Core Team <core@magentocommerce.com>
*/
class Mage_Adminhtml_Block_Widget_Grid extends Mage_Adminhtml_Block_Widget
{
/**
* Columns array
*
* array(
* 'header' => string,
* 'width' => int,
* 'sortable' => bool,
* 'index' => string,
* //'renderer' => Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Interface,
* 'format' => string
* 'total' => string (sum, avg)
* )
* @var array
*/
protected $_columns = array();
protected $_lastColumnId;
/**
* Collection object
*
* @var Varien_Data_Collection
*/
protected $_collection = null;
/**
* Page and sorting var names
*
* @var string
*/
protected $_varNameLimit = 'limit';
protected $_varNamePage = 'page';
protected $_varNameSort = 'sort';
protected $_varNameDir = 'dir';
protected $_varNameFilter = 'filter';
protected $_defaultLimit = 20;
protected $_defaultPage = 1;
protected $_defaultSort = false;
protected $_defaultDir = 'desc';
protected $_defaultFilter = array();
/**
* Export flag
*
* @var bool
*/
protected $_isExport = false;
/**
* Empty grid text
*
* @var sting|null
*/
protected $_emptyText;
/**
* Empty grid text CSS class
*
* @var sting|null
*/
protected $_emptyTextCss = 'a-center';
/**
* Pager visibility
*
* @var boolean
*/
protected $_pagerVisibility = true;
/**
* Column headers visibility
*
* @var boolean
*/
protected $_headersVisibility = true;
/**
* Filter visibility
*
* @var boolean
*/
protected $_filterVisibility = true;
/**
* Massage block visibility
*
* @var boolean
*/
protected $_messageBlockVisibility = false;
protected $_saveParametersInSession = false;
/**
* Count totals
*
* @var boolean
*/
protected $_countTotals = false;
/**
* Count subtotals
*
* @var boolean
*/
protected $_countSubTotals = false;
/**
* Totals
*
* @var Varien_Object
*/
protected $_varTotals;
/**
* SubTotals
*
* @var array
*/
protected $_subtotals = array();
/**
* Grid export types
*
* @var array
*/
protected $_exportTypes = array();
/**
* Massaction row id field
*
* @var string
*/
protected $_massactionIdField = null;
/**
* Massaction block name
*
* @var string
*/
protected $_massactionBlockName = 'adminhtml/widget_grid_massaction';
/**
* RSS list
*
* @var array
*/
protected $_rssLists = array();
/**
* Columns view order
*
* @var array
*/
protected $_columnsOrder = array();
/**
* Columns to group by
*
* @var array
*/
protected $_groupedColumn = array();
/**
* Label for empty cell
*
* @var string
*/
protected $_emptyCellLabel = '';
public function __construct($attributes=array())
{
parent::__construct($attributes);
$this->setTemplate('widget/grid.phtml');
$this->setRowClickCallback('openGridRow');
$this->_emptyText = Mage::helper('adminhtml')->__('No records found.');
}
protected function _prepareLayout()
{
$this->setChild('export_button',
$this->getLayout()->createBlock('adminhtml/widget_button')
->setData(array(
'label' => Mage::helper('adminhtml')->__('Export'),
'onclick' => $this->getJsObjectName().'.doExport()',
'class' => 'task'
))
);
$this->setChild('reset_filter_button',
$this->getLayout()->createBlock('adminhtml/widget_button')
->setData(array(
'label' => Mage::helper('adminhtml')->__('Reset Filter'),
'onclick' => $this->getJsObjectName().'.resetFilter()',
))
);
$this->setChild('search_button',
$this->getLayout()->createBlock('adminhtml/widget_button')
->setData(array(
'label' => Mage::helper('adminhtml')->__('Search'),
'onclick' => $this->getJsObjectName().'.doFilter()',
'class' => 'task'
))
);
return parent::_prepareLayout();
}
public function getExportButtonHtml()
{
return $this->getChildHtml('export_button');
}
public function getResetFilterButtonHtml()
{
return $this->getChildHtml('reset_filter_button');
}
public function getSearchButtonHtml()
{
return $this->getChildHtml('search_button');
}
public function getMainButtonsHtml()
{
$html = '';
if($this->getFilterVisibility()){
$html.= $this->getResetFilterButtonHtml();
$html.= $this->getSearchButtonHtml();
}
return $html;
}
/**
* set collection object
*
* @param Varien_Data_Collection $collection
*/
//public function setCollection(Varien_Data_Collection $collection)
public function setCollection($collection)
{
$this->_collection = $collection;
}
/**
* get collection object
*
* @return Varien_Data_Collection
*/
public function getCollection()
{
return $this->_collection;
}
/**
* Add column to grid
*
* @param string $columnId
* @param array || Varien_Object $column
* @return Mage_Adminhtml_Block_Widget_Grid
*/
public function addColumn($columnId, $column)
{
if (is_array($column)) {
$this->_columns[$columnId] = $this->getLayout()->createBlock('adminhtml/widget_grid_column')
->setData($column)
->setGrid($this);
}
/*elseif ($column instanceof Varien_Object) {
$this->_columns[$columnId] = $column;
}*/
else {
throw new Exception(Mage::helper('adminhtml')->__('Wrong column format.'));
}
$this->_columns[$columnId]->setId($columnId);
$this->_lastColumnId = $columnId;
return $this;
}
/**
* Add column to grid after specified column.
*
* @param string $columnId
* @param array|Varien_Object $column
* @param string $after
* @return Mage_Adminhtml_Block_Widget_Grid
*/
public function addColumnAfter($columnId, $column, $after)
{
$this->addColumn($columnId, $column);
$this->addColumnsOrder($columnId, $after);
return $this;
}
/**
* Add column view order
*
* @param string $columnId
* @param string $after
* @return Mage_Adminhtml_Block_Widget_Grid
*/
public function addColumnsOrder($columnId, $after)
{
$this->_columnsOrder[$columnId] = $after;
return $this;
}
/**
* Retrieve columns order
*
* @return array
*/
public function getColumnsOrder()
{
return $this->_columnsOrder;
}
/**
* Sort columns by predefined order
*
* @return Mage_Adminhtml_Block_Widget_Grid
*/
public function sortColumnsByOrder()
{
$keys = array_keys($this->_columns);
$values = array_values($this->_columns);
foreach ($this->getColumnsOrder() as $columnId => $after) {
if (array_search($after, $keys) !== false) {
// Moving grid column
$positionCurrent = array_search($columnId, $keys);
$key = array_splice($keys, $positionCurrent, 1);
$value = array_splice($values, $positionCurrent, 1);
$positionTarget = array_search($after, $keys) + 1;
array_splice($keys, $positionTarget, 0, $key);
array_splice($values, $positionTarget, 0, $value);
$this->_columns = array_combine($keys, $values);
}
}
end($this->_columns);
$this->_lastColumnId = key($this->_columns);
return $this;
}
public function getLastColumnId()
{
return $this->_lastColumnId;
}
public function getColumnCount()
{
return count($this->getColumns());
}
/**
* Retrieve grid column by column id
*
* @param string $columnId
* @return Varien_Object || false
*/
public function getColumn($columnId)
{
if (!empty($this->_columns[$columnId])) {
return $this->_columns[$columnId];
}
return false;
}
/**
* Retrieve all grid columns
*
* @return array
*/
public function getColumns()
{
return $this->_columns;
}
protected function _setFilterValues($data)
{
foreach ($this->getColumns() as $columnId => $column) {
if (isset($data[$columnId]) && (!empty($data[$columnId]) || strlen($data[$columnId]) > 0) && $column->getFilter()) {
$column->getFilter()->setValue($data[$columnId]);
$this->_addColumnFilterToCollection($column);
}
}
return $this;
}
protected function _addColumnFilterToCollection($column)
{
if ($this->getCollection()) {
$field = ( $column->getFilterIndex() ) ? $column->getFilterIndex() : $column->getIndex();
if ($column->getFilterConditionCallback()) {
call_user_func($column->getFilterConditionCallback(), $this->getCollection(), $column);
} else {
$cond = $column->getFilter()->getCondition();
if ($field && isset($cond)) {
$this->getCollection()->addFieldToFilter($field , $cond);
}
}
}
return $this;
}
/**
* Prepare grid collection object
*
* @return this
*/
protected function _prepareCollection()
{
if ($this->getCollection()) {
$this->_preparePage();
$columnId = $this->getParam($this->getVarNameSort(), $this->_defaultSort);
$dir = $this->getParam($this->getVarNameDir(), $this->_defaultDir);
$filter = $this->getParam($this->getVarNameFilter(), null);
if (is_null($filter)) {
$filter = $this->_defaultFilter;
}
if (is_string($filter)) {
$data = $this->helper('adminhtml')->prepareFilterString($filter);
$this->_setFilterValues($data);
}
else if ($filter && is_array($filter)) {
$this->_setFilterValues($filter);
}
else if(0 !== sizeof($this->_defaultFilter)) {
$this->_setFilterValues($this->_defaultFilter);
}
if (isset($this->_columns[$columnId]) && $this->_columns[$columnId]->getIndex()) {
$dir = (strtolower($dir)=='desc') ? 'desc' : 'asc';
$this->_columns[$columnId]->setDir($dir);
$column = $this->_columns[$columnId]->getFilterIndex() ?
$this->_columns[$columnId]->getFilterIndex() : $this->_columns[$columnId]->getIndex();
$this->getCollection()->setOrder($column , $dir);
}
if (!$this->_isExport) {
$this->getCollection()->load();
$this->_afterLoadCollection();
}
}
return $this;
}
/**
* Decode URL encoded filter value recursive callback method
*
* @var string $value
*/
protected function _decodeFilter(&$value)
{
$value = $this->helper('adminhtml')->decodeFilter($value);
}
protected function _preparePage()
{
$this->getCollection()->setPageSize($this->getParam($this->getVarNameLimit(), $this->_defaultLimit));
$this->getCollection()->setCurPage($this->getParam($this->getVarNamePage(), $this->_defaultPage));
}
protected function _prepareColumns()
{
$this->sortColumnsByOrder();
return $this;
}
/**
* Prepare grid massaction block
*
* @return Mage_Adminhtml_Block_Widget_Grid
*/
protected function _prepareMassactionBlock()
{
$this->setChild('massaction', $this->getLayout()->createBlock($this->getMassactionBlockName()));
$this->_prepareMassaction();
if($this->getMassactionBlock()->isAvailable()) {
$this->_prepareMassactionColumn();
}
return $this;
}
/**
* Prepare grid massaction actions
*
* @return Mage_Adminhtml_Block_Widget_Grid
*/
protected function _prepareMassaction()
{
return $this;
}
/**
* Prepare grid massaction column
*
* @return unknown
*/
protected function _prepareMassactionColumn()
{
$columnId = 'massaction';
$massactionColumn = $this->getLayout()->createBlock('adminhtml/widget_grid_column')
->setData(array(
'index' => $this->getMassactionIdField(),
'type' => 'massaction',
'name' => $this->getMassactionBlock()->getFormFieldName(),
'align' => 'center',
'is_system' => true
));
if ($this->getNoFilterMassactionColumn()) {
$massactionColumn->setData('filter', false);
}
$massactionColumn->setSelected($this->getMassactionBlock()->getSelected())
->setGrid($this)
->setId($columnId);
$oldColumns = $this->_columns;
$this->_columns = array();
$this->_columns[$columnId] = $massactionColumn;
$this->_columns = array_merge($this->_columns, $oldColumns);
return $this;
}
protected function _prepareGrid()
{
$this->_prepareColumns();
$this->_prepareMassactionBlock();
$this->_prepareCollection();
return $this;
}
protected function _beforeToHtml()
{
$this->_prepareGrid();
return parent::_beforeToHtml();
}
protected function _afterLoadCollection()
{
return $this;
}
public function getVarNameLimit()
{
return $this->_varNameLimit;
}
public function getVarNamePage()
{
return $this->_varNamePage;
}
public function getVarNameSort()
{
return $this->_varNameSort;
}
public function getVarNameDir()
{
return $this->_varNameDir;
}
public function getVarNameFilter()
{
return $this->_varNameFilter;
}
public function setVarNameLimit($name)
{
return $this->_varNameLimit = $name;
}
public function setVarNamePage($name)
{
return $this->_varNamePage = $name;
}
public function setVarNameSort($name)
{
return $this->_varNameSort = $name;
}
public function setVarNameDir($name)
{
return $this->_varNameDir = $name;
}
public function setVarNameFilter($name)
{
return $this->_varNameFilter = $name;
}
/**
* Set visibility of column headers
*
* @param boolean $visible
*/
public function setHeadersVisibility($visible=true)
{
$this->_headersVisibility = $visible;
}
/**
* Return visibility of column headers
*
* @return boolean
*/
public function getHeadersVisibility()
{
return $this->_headersVisibility;
}
/**
* Set visibility of pager
*
* @param boolean $visible
*/
public function setPagerVisibility($visible=true)
{
$this->_pagerVisibility = $visible;
}
/**
* Return visibility of pager
*
* @return boolean
*/
public function getPagerVisibility()
{
return $this->_pagerVisibility;
}
/**
* Set visibility of filter
*
* @param boolean $visible
*/
public function setFilterVisibility($visible=true)
{
$this->_filterVisibility = $visible;
}
/**
* Return visibility of filter
*
* @return boolean
*/
public function getFilterVisibility()
{
return $this->_filterVisibility;
}
/**
* Set visibility of filter
*
* @param boolean $visible
*/
public function setMessageBlockVisibility($visible=true)
{
$this->_messageBlockVisibility = $visible;
}
/**
* Return visibility of filter
*
* @return boolean
*/
public function getMessageBlockVisibility()
{
return $this->_messageBlockVisibility;
}
public function setDefaultLimit($limit)
{
$this->_defaultLimit = $limit;
return $this;
}
public function setDefaultPage($page)
{
$this->_defaultPage = $page;
return $this;
}
public function setDefaultSort($sort)
{
$this->_defaultSort = $sort;
return $this;
}
public function setDefaultDir($dir)
{
$this->_defaultDir = $dir;
return $this;
}
public function setDefaultFilter($filter)
{
$this->_defaultFilter = $filter;
return $this;
}
/**
* Retrieve grid export types
*
* @return array
*/
public function getExportTypes()
{
return empty($this->_exportTypes) ? false : $this->_exportTypes;
}
/**
* Add new export type to grid
*
* @param string $url
* @param string $label
* @return Mage_Adminhtml_Block_Widget_Grid
*/
public function addExportType($url, $label)
{
$this->_exportTypes[] = new Varien_Object(
array(
'url' => $this->getUrl($url, array('_current'=>true)),
'label' => $label
)
);
return $this;
}
/**
* Retrieve rss lists types
*
* @return array
*/
public function getRssLists()
{
return empty($this->_rssLists) ? false : $this->_rssLists;
}
/**
* Add new rss list to grid
*
* @param string $url
* @param string $label
* @return Mage_Adminhtml_Block_Widget_Grid
*/
public function addRssList($url, $label)
{
$this->_rssLists[] = new Varien_Object(
array(
'url' => Mage::getModel('core/url')->getUrl($url),
'label' => $label
)
);
return $this;
}
/**
* Retrieve grid HTML
*
* @return string
*/
public function getHtml()
{
return $this->toHtml();
}
/**
* Retrieve file content from file container array
*
* @param array $fileData
* @return string
*/
protected function _getFileContainerContent(array $fileData)
{
$io = new Varien_Io_File();
$path = $io->dirname($fileData['value']);
$io->open(array('path' => $path));
return $io->read($fileData['value']);
}
/**
* Retrieve Headers row array for Export
*
* @return array
*/
protected function _getExportHeaders()
{
$row = array();
foreach ($this->_columns as $column) {
if (!$column->getIsSystem()) {
$row[] = $column->getExportHeader();
}
}
return $row;
}
/**
* Retrieve Totals row array for Export
*
* @return array
*/
protected function _getExportTotals()
{
$totals = $this->getTotals();
$row = array();
foreach ($this->_columns as $column) {
if (!$column->getIsSystem()) {
$row[] = ($column->hasTotalsLabel()) ? $column->getTotalsLabel() : $column->getRowFieldExport($totals);
}
}
return $row;
}
/**
* Iterate collection and call callback method per item
* For callback method first argument always is item object
*
* @param string $callback
* @param array $args additional arguments for callback method
* @return Mage_Adminhtml_Block_Widget_Grid
*/
public function _exportIterateCollection($callback, array $args)
{
$originalCollection = $this->getCollection();
$count = null;
$page = 1;
$lPage = null;
$break = false;
while ($break !== true) {
$collection = clone $originalCollection;
$collection->setPageSize(1000);
$collection->setCurPage($page);
$collection->load();
if (is_null($count)) {
$count = $collection->getSize();
$lPage = $collection->getLastPageNumber();
}
if ($lPage == $page) {
$break = true;
}
$page ++;
foreach ($collection as $item) {
call_user_func_array(array($this, $callback), array_merge(array($item), $args));
}
}
}
/**
* Write item data to csv export file
*
* @param Varien_Object $item
* @param Varien_Io_File $adapter
*/
protected function _exportCsvItem(Varien_Object $item, Varien_Io_File $adapter)
{
$row = array();
foreach ($this->_columns as $column) {
if (!$column->getIsSystem()) {
$row[] = $column->getRowFieldExport($item);
}
}
$adapter->streamWriteCsv($row);
}
/**
* Retrieve a file container array by grid data as CSV
*
* Return array with keys type and value
*
* @return array
*/
public function getCsvFile()
{
$this->_isExport = true;
$this->_prepareGrid();
$io = new Varien_Io_File();
$path = Mage::getBaseDir('var') . DS . 'export' . DS;
$name = md5(microtime());
$file = $path . DS . $name . '.csv';
$io->setAllowCreateFolders(true);
$io->open(array('path' => $path));
$io->streamOpen($file, 'w+');
$io->streamLock(true);
$io->streamWriteCsv($this->_getExportHeaders());
$this->_exportIterateCollection('_exportCsvItem', array($io));
if ($this->getCountTotals()) {
$io->streamWriteCsv($this->_getExportTotals());
}
$io->streamUnlock();
$io->streamClose();
return array(
'type' => 'filename',
'value' => $file,
'rm' => true // can delete file after use
);
}
/**
* Retrieve Grid data as CSV
*
* @return string
*/
public function getCsv()
{
$csv = '';
$this->_isExport = true;
$this->_prepareGrid();
$this->getCollection()->getSelect()->limit();
$this->getCollection()->setPageSize(0);
$this->getCollection()->load();
$this->_afterLoadCollection();
$data = array();
foreach ($this->_columns as $column) {
if (!$column->getIsSystem()) {
$data[] = '"'.$column->getExportHeader().'"';
}
}
$csv.= implode(',', $data)."\n";
foreach ($this->getCollection() as $item) {
$data = array();
foreach ($this->_columns as $column) {
if (!$column->getIsSystem()) {
$data[] = '"'.str_replace(array('"', '\\'), array('""', '\\\\'), $column->getRowFieldExport($item)).'"';
}
}
$csv.= implode(',', $data)."\n";
}
if ($this->getCountTotals())
{
$data = array();
foreach ($this->_columns as $column) {
if (!$column->getIsSystem()) {
$data[] = '"'.str_replace(array('"', '\\'), array('""', '\\\\'), $column->getRowFieldExport($this->getTotals())).'"';
}
}
$csv.= implode(',', $data)."\n";
}
return $csv;
}
public function getXml()
{
$this->_isExport = true;
$this->_prepareGrid();
$this->getCollection()->getSelect()->limit();
$this->getCollection()->setPageSize(0);
$this->getCollection()->load();
$this->_afterLoadCollection();
$indexes = array();
foreach ($this->_columns as $column) {
if (!$column->getIsSystem()) {
$indexes[] = $column->getIndex();
}
}
$xml = '<?xml version="1.0" encoding="UTF-8"?>';
$xml.= '<items>';
foreach ($this->getCollection() as $item) {
$xml.= $item->toXml($indexes);
}
if ($this->getCountTotals())
{
$xml.= $this->getTotals()->toXml($indexes);
}
$xml.= '</items>';
return $xml;
}
/**
* Write item data to Excel 2003 XML export file
*
* @param Varien_Object $item
* @param Varien_Io_File $adapter
* @param Varien_Convert_Parser_Xml_Excel $parser
*/
protected function _exportExcelItem(Varien_Object $item, Varien_Io_File $adapter, $parser = null)
{
if (is_null($parser)) {
$parser = new Varien_Convert_Parser_Xml_Excel();
}
$row = array();
foreach ($this->_columns as $column) {
if (!$column->getIsSystem()) {
$row[] = $column->getRowFieldExport($item);
}
}
$data = $parser->getRowXml($row);
$adapter->streamWrite($data);
}
/**
* Retrieve a file container array by grid data as MS Excel 2003 XML Document
*
* Return array with keys type and value
*
* @return string
*/
public function getExcelFile($sheetName = '')
{
$this->_isExport = true;
$this->_prepareGrid();
$parser = new Varien_Convert_Parser_Xml_Excel();
$io = new Varien_Io_File();
$path = Mage::getBaseDir('var') . DS . 'export' . DS;
$name = md5(microtime());
$file = $path . DS . $name . '.xml';
$io->setAllowCreateFolders(true);
$io->open(array('path' => $path));
$io->streamOpen($file, 'w+');
$io->streamLock(true);
$io->streamWrite($parser->getHeaderXml($sheetName));
$io->streamWrite($parser->getRowXml($this->_getExportHeaders()));
$this->_exportIterateCollection('_exportExcelItem', array($io, $parser));
if ($this->getCountTotals()) {
$io->streamWrite($parser->getRowXml($this->_getExportTotals()));
}
$io->streamWrite($parser->getFooterXml());
$io->streamUnlock();
$io->streamClose();
return array(
'type' => 'filename',
'value' => $file,
'rm' => true // can delete file after use
);
}
/**
* Retrieve grid data as MS Excel 2003 XML Document
*
* @param string $filename the Workbook sheet name
* @return string
*/
public function getExcel($filename = '')
{
$this->_isExport = true;
$this->_prepareGrid();
$this->getCollection()->getSelect()->limit();
$this->getCollection()->setPageSize(0);
$this->getCollection()->load();
$this->_afterLoadCollection();
$headers = array();
$data = array();
foreach ($this->_columns as $column) {
if (!$column->getIsSystem()) {
$headers[] = $column->getHeader();
}
}
$data[] = $headers;
foreach ($this->getCollection() as $item) {
$row = array();
foreach ($this->_columns as $column) {
if (!$column->getIsSystem()) {
$row[] = $column->getRowField($item);
}
}
$data[] = $row;
}
if ($this->getCountTotals())
{
$row = array();
foreach ($this->_columns as $column) {
if (!$column->getIsSystem()) {
$row[] = $column->getRowField($this->getTotals());
}
}
$data[] = $row;
}
$xmlObj = new Varien_Convert_Parser_Xml_Excel();
$xmlObj->setVar('single_sheet', $filename);
$xmlObj->setData($data);
$xmlObj->unparse();
return $xmlObj->getData();
}
public function canDisplayContainer()
{
if ($this->getRequest()->getQuery('ajax')) {
return false;
}
return true;
}
/**
* Grid url getter
*
* @deprecated after 1.3.2.3 Use getAbsoluteGridUrl() method instead
*
* @return string current grid url
*/
public function getGridUrl()
{
return $this->getCurrentUrl();
}
/**
* Grid url getter
* Version of getGridUrl() but with parameters
*
* @param array $params url parameters
* @return string current grid url
*/
public function getAbsoluteGridUrl($params = array())
{
return $this->getCurrentUrl($params);
}
/**
* Retrieve grid
*
* @param string $paramName
* @param mixed $default
* @return mixed
*/
public function getParam($paramName, $default=null)
{
$session = Mage::getSingleton('adminhtml/session');
$sessionParamName = $this->getId().$paramName;
if ($this->getRequest()->has($paramName)) {
$param = $this->getRequest()->getParam($paramName);
if ($this->_saveParametersInSession) {
$session->setData($sessionParamName, $param);
}
return $param;
}
elseif ($this->_saveParametersInSession && ($param = $session->getData($sessionParamName)))
{
return $param;
}
return $default;
}
public function setSaveParametersInSession($flag)
{
$this->_saveParametersInSession = $flag;
return $this;
}
public function getJsObjectName()
{
return $this->getId().'JsObject';
}
/**
* Deprecated since 1.1.7
*
* @return string
*/
public function getRowId($row)
{
return $this->getRowUrl($row);
}
/**
* Retrive massaction row identifier field
*
* @return string
*/
public function getMassactionIdField()
{
return $this->_massactionIdField;
}
/**
* Set massaction row identifier field
*
* @param string $idField
* @return Mage_Adminhtml_Block_Widget_Grid
*/
public function setMassactionIdField($idField)
{
$this->_massactionIdField = $idField;
return $this;
}
/**
* Retrive massaction block name
*
* @return string
*/
public function getMassactionBlockName()
{
return $this->_massactionBlockName;
}
/**
* Set massaction block name
*
* @param string $blockName
* @return Mage_Adminhtml_Block_Widget_Grid
*/
public function setMassactionBlockName($blockName)
{
$this->_massactionBlockName = $blockName;
return $this;
}
/**
* Retrive massaction block
*
* @return Mage_Adminhtml_Block_Widget_Grid_Massaction_Abstract
*/
public function getMassactionBlock()
{
return $this->getChild('massaction');
}
public function getMassactionBlockHtml()
{
return $this->getChildHtml('massaction');
}
/**
* Set empty text for grid
*
* @param string $text
* @return Mage_Adminhtml_Block_Widget_Grid
*/
public function setEmptyText($text)
{
$this->_emptyText = $text;
return $this;
}
/**
* Return empty text for grid
*
* @return string
*/
public function getEmptyText()
{
return $this->_emptyText;
}
/**
* Set empty text CSS class
*
* @param string $cssClass
* @return Mage_Adminhtml_Block_Widget_Grid
*/
public function setEmptyTextClass($cssClass)
{
$this->_emptyTextCss = $cssClass;
return $this;
}
/**
* Return empty text CSS class
*
* @return string
*/
public function getEmptyTextClass()
{
return $this->_emptyTextCss;
}
/**
* Set count totals
*
* @param boolean $visible
*/
public function setCountTotals($count=true)
{
$this->_countTotals = $count;
}
/**
* Return count totals
*
* @return boolean
*/
public function getCountTotals()
{
return $this->_countTotals;
}
/**
* Set totals
*
* @param boolean $visible
*/
public function setTotals(Varien_Object $totals)
{
$this->_varTotals = $totals;
}
/**
* Retrieve totals
*
* @return Varien_Object
*/
public function getTotals()
{
return $this->_varTotals;
}
/**
* Set subtotals
*
* @param boolean $flag
* @return Mage_Adminhtml_Block_Widget_Grid
*/
public function setCountSubTotals($flag = true)
{
$this->_countSubTotals = $flag;
return $this;
}
/**
* Return count subtotals
*
* @return boolean
*/
public function getCountSubTotals()
{
return $this->_countSubTotals;
}
/**
* Set subtotal items
*
* @param array $items
* @return Mage_Adminhtml_Block_Widget_Grid
*/
public function setSubTotals(array $items)
{
$this->_subtotals = $items;
return $this;
}
/**
* Retrieve subtotal item
*
* @param Varien_Object $item
* @return Varien_Object
*/
public function getSubTotalItem($item)
{
foreach ($this->_subtotals as $subtotalItem) {
foreach ($this->_groupedColumn as $groupedColumn) {
if ($subtotalItem->getData($groupedColumn) == $item->getData($groupedColumn)) {
return $subtotalItem;
}
}
}
return '';
}
/**
* Retrieve subtotal items
*
* @return array
*/
public function getSubTotals()
{
return $this->_subtotals;
}
/**
* Check whether subtotal should be rendered
*
* @param Varien_Object $item
* @return boolean
*/
public function shouldRenderSubTotal($item) {
return ($this->_countSubTotals && count($this->_subtotals) > 0 && count($this->getMultipleRows($item)) > 0);
}
/**
* Retrieve columns to render
*
* @return unknown
*/
public function getSubTotalColumns() {
return $this->getColumns();
}
/**
* Retrieve rowspan number
*
* @param Varien_Object $item
* @param Mage_Adminhtml_Block_Widget_Grid_Column $column
* @return integer|boolean
*/
public function getRowspan($item, $column)
{
if ($this->isColumnGrouped($column)) {
return count($this->getMultipleRows($item)) + count($this->_groupedColumn);
}
return false;
}
/**
* Enter description here...
*
* @param string|object $column
* @param string $value
* @return boolean|Mage_Adminhtml_Block_Widget_Grid
*/
public function isColumnGrouped($column, $value = null)
{
if (null === $value) {
if (is_object($column)) {
return in_array($column->getIndex(), $this->_groupedColumn);
}
return in_array($column, $this->_groupedColumn);
}
$this->_groupedColumn[] = $column;
return $this;
}
/**
* Get children of specified item
*
* @param Varien_Object $item
* @return array
*/
public function getMultipleRows($item)
{
return $item->getChildren();
}
/**
* Retrieve columns for multiple rows
*
* @param Varien_Object $item
* @return array
*/
public function getMultipleRowColumns()
{
$columns = $this->getColumns();
foreach ($this->_groupedColumn as $column) {
unset($columns[$column]);
}
return $columns;
}
/**
* Check whether should render cell
*
* @param Varien_Object $item
* @param Mage_Adminhtml_Block_Widget_Grid_Column $column
* @return boolean
*/
public function shouldRenderCell($item, $column)
{
if ($this->isColumnGrouped($column) && $item->getIsEmpty()) {
return true;
}
if (!$item->getIsEmpty()) {
return true;
}
return false;
}
/**
* Check whether should render empty cell
*
* @param Varien_Object $item
* @param Mage_Adminhtml_Block_Widget_Grid_Column $column
* @return boolean
*/
public function shouldRenderEmptyCell($item, $column)
{
return ($item->getIsEmpty() && in_array($column['index'], $this->_groupedColumn));
}
/**
* Retrieve colspan for empty cell
*
* @param Varien_Object $item
* @return integer
*/
public function getEmptyCellColspan()
{
return $this->getColumnCount() - count($this->_groupedColumn);
}
/**
* Retrieve label for empty cell
*
* @return string
*/
public function getEmptyCellLabel()
{
return $this->_emptyCellLabel;
}
/**
* Set label for empty cell
*
* @param string $label
* @return Mage_Adminhtml_Block_Widget_Grid
*/
public function setEmptyCellLabel($label)
{
$this->_emptyCellLabel = $label;
return $this;
}
}