PHP Classes

File: Grid/Mass/Actions.php

Recommend this page to a friend!
  Classes of Filipe Sá   Zend Framework Data Grid   Grid/Mass/Actions.php   Download  
File: Grid/Mass/Actions.php
Role: Class source
Content type: text/plain
Description: Class source
Class: Zend Framework Data Grid
Display and edit data from a database in a grid
Author: By
Last change:
Date: 13 years ago
Size: 6,834 bytes
 

Contents

Class file image Download
<?php

/**
 * LICENSE
 *
 * This source file is subject to the new BSD license
 * It is available through the world-wide-web at this URL:
 * http://www.petala-azul.com/bsd.txt
 * 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 geral@petala-azul.com so we can send you a copy immediately.
 *
 * @package Bvb_Grid
 * @author Bento Vilas Boas <geral@petala-azul.com>
 * @copyright 2010 ZFDatagrid
 * @license http://www.petala-azul.com/bsd.txt New BSD License
 * @version $Id$
 * @link http://zfdatagrid.com
 */
class Bvb_Grid_Mass_Actions {

   
/**
     * Mass Actions
     *
     * @var array
     */
   
protected $_massActions = array();
   
/**
     * Columns that should be return when submiting the form
     *
     * @var array
     */
   
protected $_fields = array();
   
/**
     * The defaulf separator for mass actions post values
     * @var string
     */
   
protected $_recordSeparator = ',';
   
/**
     * The defaulf separator for multiple fields values
     * @var string
     */
   
protected $_multipleFieldsSeparator = '-';
   
/**
     *
     * @var string|bool
     */
   
protected $_decorator = false;
   
/**
     *
     * @var string
     */
   
protected $_submitAttributes = array();

   
/**
     * Checks if there are any mass actions registered
     *
     * @return bool
     */
   
public function hasMassActions()
    {
        return
count($this->_massActions) > 0;
    }

   
/**
     * Returns the active mass options
     *
     * @return array
     */
   
public function getMassActionsOptions()
    {
        if (!
$this->hasMassActions()) {
            return array();
        }

        return (array)
$this->_massActions;
    }

   
/**
     * Defines mass actions, overriden any previous
     *
     * @param array $options Options to be made available to user
     *
     * @return Bvb_Grid
     */
   
public function setMassActions(array $options)
    {
       
$this->clearMassActions();

       
$this->addMassActions($options);

        return
$this;
    }

   
/**
     * Clears all mass actions previously defined
     *
     * @return Bvb_Grid
     */
   
public function clearMassActions()
    {
       
$this->_massActions = array();
        return
$this;
    }

   
/**
     * Adds a new mass action and clears all previous
     *
     * @param type $url Url to post the results
     * @param type $caption Caption for the select option
     * @param type $confirm Confirmation message when submiting
     * @param type $fields Fields to be used
     *
     * @return Bvb_Grid
     */
   
public function setMassAction($url, $caption, $confirm='')
    {
       
$options = array('url' => $url, 'caption' => $caption, 'confirm' => $confirm);

       
$this->setMassActions($options);

        return
$this;
    }

   
/**
     * Adds a new mass action
     *
     * @param type $url Url to post the results
     * @param type $caption Caption for the select option
     * @param type $confirm Confirmation message when submiting
     *
     * @return Bvb_Grid
     */
   
public function addMassAction($url, $caption, $confirm='')
    {
       
$options = array();
       
$options[] = array('url' => $url, 'caption' => $caption, 'confirm' => $confirm);

       
$this->addMassActions($options);
        return
$this;
    }

   
/**
     * Adds a new mass action option
     *
     * @param array $options Options to be made available to user
     *
     * @return Bvb_Grid
     */
   
public function addMassActions(array $options)
    {

        foreach (
$options as $value) {
            if (!isset(
$value['url']) || !isset($value['caption'])) {
                throw new
Bvb_Grid_Exception('Options url and caption are required for each action');
            }
        }

       
$this->_massActions = array_merge($options, $this->_massActions);
        return
$this;
    }

   
/**
     * Defines which fields should be posted.
     *
     * @param mixed $fields Fields to be used as post ids
     * @return Bvb_Grid
     */
   
public function setFields($fields)
    {
       
$this->_fields = (array) $fields;

        return
$this;
    }

   
/**
     * Defines the separator for multiple primary keys or fields for mass actions post values
     *
     * @param string $separator Separator to be used
     *
     * @return Bvb_Grid
     */
   
public function setMultipleFieldsSeparator($separator)
    {

        if (
0 == strlen($separator)) {
            throw new
Bvb_Grid_Exception('Please provide a Mass Actions separator');
        }

       
$this->_multipleFieldsSeparator = (string) $separator;

        return
$this;
    }

   
/**
     * Returns the current Mass Action separator for multiple fields
     *
     * @return string
     */
   
public function getMultipleFieldsSeparator()
    {
        return
$this->_multipleFieldsSeparator;
    }

   
/**
     * Defines the separator for primary keys or fields for mass actions post values
     *
     * @param string $separator Separator to be used in post fields
     *
     * @return Bvb_Grid
     */
   
public function setMassActionsSeparator($separator)
    {

        if (
0 == strlen($separator)) {
            throw new
Bvb_Grid_Exception('Please provide a Mass Actions separator');
        }

       
$this->_recordSeparator = (string) $separator;

        return
$this;
    }

   
/**
     * Returns the current Mass Action separator for post values
     *
     * @return string
     */
   
public function getMassActionsSeparator()
    {
        return
$this->_recordSeparator;
    }

   
/**
     * Returns current decorator
     *
     * @return string
     */
   
public function getDecorator()
    {
        return
$this->_decorator;
    }

   
/**
     * Set's decorator
     *
     * @param string $value
     * @return string
     */
   
public function setDecorator($value)
    {
        return
$this->_decorator = $value;
    }

   
/**
     * Returns current fields
     *
     * @return array
     */
   
public function getFields()
    {
        return
$this->_fields;
    }

   
/**
     * Returns current separator
     *
     * @return string
     */
   
public function getRecordSeparator()
    {
        return
$this->_recordSeparator;
    }

   
/**
     * Defines attributes to be applyied to submit input for mass actions
     *
     * @param array $attributes
     *
     * @return Bvb_Grid_Mass_Actions
     */
   
public function setSubmitAttributes(array $attributes)
    {
       
$this->_submitAttributes = $attributes;
        return
$this;
    }

   
/**
     * Returns current attributes for submit button for mass actions
     *
     * @return array
     */
   
public function getSumitAttributes()
    {
        return
$this->_submitAttributes;
    }

}