<?php
/**
* Provide a common interface for workflow conditions. Workflow conditions
* control which workflow transitions are valid for a given record.
*
* @copyright 2011 Perforce Software. All rights reserved.
* @license Please see LICENSE.txt in top-level folder of this distribution.
* @version <release>/<patch>
*/
interface Workflow_ConditionInterface
{
/**
* Get options attached to the condition.
*
* @return array condition options.
*/
public function getOptions();
/**
* Set options for this condition.
*
* @param array $options condition options to set.
*/
public function setOptions(array $options);
/**
* Evaluate if this condition is satisfied for given transition and record.
*
* There is the option of passing an array of pending values to
* consider when evaluating conditions. These would typically come
* from a request as the user makes changes to the record.
*
* As the author of a condition class, you are encouraged to check for
* these pending values to ensure the conditions are evaluated against
* the most recent data (unless you are specifically concerned with
* evaulating stored data).
*
* @param Workflow_Model_Transition $transition transition to evaluate this condition for.
* @param P4Cms_Record $record record to evaluate this condition for.
* @param array|null $pending optional - updated values to consider.
* @return boolean true if this condition is satisfied for
* transition and record, false otherwise.
*/
public function evaluate(
Workflow_Model_Transition $transition,
P4Cms_Record $record,
array $pending = null);
}