| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | <?php/** * Base class for a context reaction. */class context_reaction {  var $plugin;  var $title;  var $description;  /**   * Clone our references when we're being cloned.   *   * PHP 5.3 performs 'shallow' clones when clone()'ing objects, meaning that   * any objects or arrays referenced by this object will not be copied, the   * cloned object will just reference our objects/arrays instead. By iterating   * over our properties and serializing and unserializing them, we force PHP to   * copy them.   */  function __clone() {    foreach ($this as $key => $val) {      if (is_object($val) || (is_array($val))) {        $this->{$key} = unserialize(serialize($val));      }    }  }  /**   * Constructor. Do not override.   */  function __construct($plugin, $info) {    $this->plugin = $plugin;    $this->title = isset($info['title']) ? $info['title'] : $plugin;    $this->description = isset($info['description']) ? $info['description'] : '';  }  function options_form($context) {    return array();  }  /**   * Options form submit handler.   */  function options_form_submit($values) {    return $values;  }  /**   * Settings form. Provide variable settings for your reaction.   */  function settings_form() {    return array();  }  /**   * Public method that is called from hooks or other integration points with   * Drupal. Note that it is not implemented in the base class, allowing   * extending classes to change the function signature if necessary.   *   * function execute($value) {   *   foreach ($this->get_contexts($value) as $context) {   *     $this->condition_met($context, $value);   *   }   * }   */  /**   * Retrieve active contexts that have values for this reaction.   */  function get_contexts() {    $contexts = array();    foreach (context_active_contexts() as $context) {      if ($this->fetch_from_context($context)) {        $contexts[$context->name] = $context;      }    }    return $contexts;  }  /**   * Retrieve options from the context provided.   */  function fetch_from_context($context) {    return isset($context->reactions[$this->plugin]) ? $context->reactions[$this->plugin] : array();  }}
 |