/utils/class.atktriggerlistener.inc
PHP | 92 lines | 25 code | 4 blank | 63 comment | 3 complexity | dd2e9fc8b374ba89c9e7beaa0b14e2f2 MD5 | raw file
Possible License(s): LGPL-2.0, LGPL-2.1, MPL-2.0-no-copyleft-exception, LGPL-3.0
- <?php
- /**
- * This file is part of the Achievo ATK distribution.
- * Detailed copyright and licensing information can be found
- * in the doc/COPYRIGHT and doc/LICENSE files which should be
- * included in the distribution.
- *
- * @package atk
- * @subpackage utils
- *
- * @copyright (c)2005 Ibuildings.nl BV
- * @license http://www.achievo.org/atk/licensing ATK Open Source License
- *
- * @version $Revision: 4362 $
- * $Id$
- */
- /**
- * The atkTriggerListener base class for handling trigger events on records.
- *
- * The most useful purpose of the atkTriggerListener is to serve as a base
- * class for custom trigger listeners. Extend this class and implement
- * postUpdate, preDelete etc. functions that will automatically be called
- * when such a trigger occurs. For more flexibility, override only
- * the notify($trigger, $record) method which catches every trigger.
- * Using atkNode::addListener you can add listeners that catch evens such as
- * records updates and additions.
- * This is much like the classic atk postUpdate/postAdd triggers, only much
- * more flexible.
- *
- * @author Martin Roest <martin@ibuildings.nl>
- * @author Peter C. Verhage <peter@achievo.org>
- * @package atk
- * @subpackage utils
- */
- class atkTriggerListener
- {
- /**
- * The owning node of the listener.
- * @access private
- * @var atkNode
- */
- var $m_node = NULL;
- /**
- * Base constructor.
- *
- * @return atkTriggerListener
- */
- function atkTriggerListener()
- {
- }
- /**
- * Set the owning node of the listener.
- *
- * When using atkNode::addListener to add a listener to a node it is not
- * necessary to call this method as addListener will do that for you.
- *
- * @param atkNode $node The node to set as owner
- */
- function setNode(&$node)
- {
- $this->m_node = &$node;
- }
- /**
- * Notify the listener of any action on a record.
- *
- * This method is called by the framework for each action called on a
- * node. Depending on the actionfilter passed in the constructor, the
- * call is forwarded to the actionPerformed($action, $record) method.
- *
- * @param String $trigger The trigger being performed
- * @param array $record The record on which the trigger is performed
- * @param string $mode The mode (add/update)
- * @return boolean Result of operation.
- */
- function notify($trigger, &$record, $mode=NULL)
- {
- if (method_exists($this, $trigger))
- {
- atkdebug("Call listener ".get_class($this)." for trigger $trigger on ".$this->m_node->atkNodeType()." (".$this->m_node->primaryKey($record).")");
- return $this->$trigger($record, $mode);
- }
- else
- {
- return true;
- }
- }
- }
- ?>