| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308 | 
							- <?php
 
- /**
 
-  * @file Styles.inc
 
-  * Base class for Styles.
 
-  */
 
- class StylesDefault {
 
-   // The variables passed from our theme.
 
-   public $variables = array();
 
-   // The object passed from our theme.
 
-   public $object = array();
 
-   // Any effects to apply when displaying content matching this style.
 
-   public $effects = array();
 
-   // The final rendered output for this item.
 
-   public $output;
 
-   public $prefix;
 
-   public $suffix;
 
-   public $wrapperType = 'div';
 
-   public $classes = array('styles');
 
-   public $id;
 
-   private $_id = 0;
 
-   public function __construct($object = NULL, $effects = NULL, $variables = NULL) {
 
-     // @TODO: This is not great IMO, the ->object and ->variables props already have everything
 
-     // we shouldn't be duplicating it in different methods / properties.
 
-     if (isset($variables)) {
 
-       $properties = (array) $variables;
 
-       $this->magicSet($properties);
 
-       $this->setVariables($variables);
 
-     }
 
-     // If we are passed an array, then set the object properties from its keys.
 
-     if (isset($object)) {
 
-       $properties = (array) $object;
 
-       $this->magicSet($properties);
 
-       $this->setObject($object);
 
-     }
 
-     if (isset($effects)) {
 
-       $this->setEffects($effects);
 
-     }
 
-   }
 
-   /**
 
-    * Converts a string in the form with_underscores to withUnderscores
 
-    * @param string $str
 
-    * @return string
 
-    */
 
-   protected function _toCamelCase($str) {
 
-     $parts = explode("_", $str);
 
-     $out = array_shift($parts);
 
-     foreach ($parts as $part) {
 
-       $out .= ucfirst($part);
 
-     }
 
-     return $out;
 
-   }
 
-   /**
 
-    * Given an array of k/v pairs calls set$key
 
-    * @param array $properties
 
-    */
 
-   protected function magicSet($properties) {
 
-     $methods = get_class_methods($this);
 
-     foreach ($properties as $key => $value) {
 
-       $propName = "set_{$key}";
 
-       $function = $this->_toCamelCase($propName);
 
-       if (in_array($function, $methods)) {
 
-         $this->$function($value);
 
-       }
 
-     }
 
-   }
 
-   /**
 
-    * Display the rendered output.
 
-    *
 
-    * @param boolean $reset
 
-    *  Optional; if TRUE, the rebuild the output.
 
-    * @return
 
-    *  A fully themed snippet of HTML for output.
 
-    */
 
-   public function display($reset = FALSE) {
 
-     return $this->render($reset);
 
-   }
 
-   /**
 
-    * Build the output for display.
 
-    *
 
-    * @param boolean $reset
 
-    *  Optional; if TRUE, the rebuild the output.
 
-    * @return
 
-    *  A fully themed snippet of HTML for output.
 
-    */
 
-   public function render($reset = FALSE) {
 
-     // If we need to reset, then set the output to NULL.
 
-     if ($reset) {
 
-       $this->setOutput(NULL);
 
-     }
 
-     // Have we already rendered the output?
 
-     $output = $this->getOutput();
 
-     // We need to render the output the first time around, or if reset.
 
-     if (!isset($output)) {
 
-       // First, we get the array of callable class methods for this object.
 
-       // These may each be called by effects called for by the style.
 
-       // @TODO: Should we have a proper array of allowable effects, rather
 
-       // than our current lazy method of allowing all class functions?
 
-       $methods = get_class_methods($this);
 
-       // Loop through and apply each effect.
 
-       foreach ($this->getEffects() as $effect) {
 
-         // What is the effect?
 
-         $effectName = $effect['name'];
 
-         if ($effectName && in_array($effectName, $methods)) {
 
-           // Apply the effect with its settings.
 
-           $this->$effectName($effect['settings']);
 
-         }
 
-         else {
 
-           // Ouch. We have an invalid effect. Flag for bug reporting.
 
-           $variables = $this->getVariables();
 
-           $styleName = $variables['style']['name'];
 
-           watchdog('styles', 'Effect %effect_name not found for %style_name display formatter style of the %class_name class.', array('%effect_name' => $effectName, '%style_name' => $styleName, '%class_name' => $this->getClassName()), WATCHDOG_WARNING);
 
-         }
 
-       }
 
-       // Now the output will have been fully built.
 
-       $output = $this->getOutput();
 
-     }
 
-     return $output;
 
-   }
 
-   public function getClassName() {
 
-     return get_called_class();
 
-   }
 
-   public function _get($variable) {
 
-     if (function_exists('get_' . $variable)) {
 
-       return $this->{'get_' . $variable}();
 
-     }
 
-     else {
 
-       return $this->get($variable);
 
-     }
 
-   }
 
-   public function _set($variable, $value) {
 
-     if (function_exists('set_' . $variable)) {
 
-       return $this->{'set_' . $variable}($value);
 
-     }
 
-     else {
 
-       return $this->set($variable, $value);
 
-     }
 
-   }
 
-   public function arrayPush($variable, $element) {
 
-     $array = (array) $this->_get($variable);
 
-     array_push($array, $element);
 
-     return $this->_set($variable, $array);
 
-   }
 
-   public function arrayPop($variable) {
 
-     $array = (array) $this->_get($variable);
 
-     array_pop($array);
 
-     return $this->_set($variable, $array);
 
-   }
 
-   public function arrayUnshift($variable, $element) {
 
-     $array = (array) $this->_get($variable);
 
-     array_unshift($array, $element);
 
-     return $this->_set($variable, $array);
 
-   }
 
-   public function arrayShift($variable) {
 
-     $array = (array) $this->_get($variable);
 
-     array_shift($array);
 
-     return $this->_set($variable, $array);
 
-   }
 
-   /**
 
-    * Add an effect to the end of the array.
 
-    *
 
-    * An effect is an array with at least a 'name' key, which corresponds to the
 
-    * class function to be called during the rendering process. It will usually
 
-    * also contain an array of 'effects' to apply.
 
-    */
 
-   public function addEffect($effect) {
 
-     return $this->pushEffect($effect);
 
-   }
 
-   public function pushEffect($effect) {
 
-     $effectName = $effect['name'];
 
-     if (method_exists($this, $effectName)) {
 
-       $effects = $this->getEffects();
 
-       array_push($effects, $effect);
 
-       return $this->setEffects($effects);
 
-     }
 
-     else {
 
-       $variables = $this->getVariables();
 
-       $styleName = $variables['style']['label'];
 
-       watchdog('styles', 'Effect %effect_name not found for %style_name display formatter style of the %class_name class.', array('%effect_name' => $effectName, '%style_name' => $styleName, '%class_name' => $this->getClassName()), WATCHDOG_WARNING);
 
-     }
 
-   }
 
-   public function popEffect() {
 
-     $effects = $this->getEffects();
 
-     $effect = array_pop($effects);
 
-     $this->setEffects($effects);
 
-     return $effect;
 
-   }
 
-   public function unshiftEffect($effect) {
 
-     $effectName = $effect['name'];
 
-     if (method_exists($this, $effectName)) {
 
-       $effects = $this->getEffects();
 
-       array_unshift($effects, $effect);
 
-       return $this->setEffects($effects);
 
-     }
 
-     else {
 
-       $variables = $this->getVariables();
 
-       $styleName = $variables['style']['label'];
 
-       watchdog('styles', 'Effect %effect_name not found for %style_name display formatter style of the %class_name class.', array('%effect_name' => $effectName, '%style_name' => $this->getName(), '%class_name' => $this->getClassName()), WATCHDOG_WARNING);
 
-     }
 
-   }
 
-   public function shiftEffect() {
 
-     $effects = $this->getEffects();
 
-     $effect = array_shift($effects);
 
-     $this->setEffects($effects);
 
-     return $effect;
 
-   }
 
-   public function getObject() {
 
-     return $this->get('object');
 
-   }
 
-   public function setObject($value) {
 
-     return $this->set('object', $value);
 
-   }
 
-   public function getVariables() {
 
-     return $this->get('variables');
 
-   }
 
-   public function setVariables($value) {
 
-     return $this->set('variables', $value);
 
-   }
 
-   public function getEffects() {
 
-     return $this->get('effects');
 
-   }
 
-   public function setEffects($value) {
 
-     return $this->set('effects', $value);
 
-   }
 
-   public function getWrapperType() {
 
-     return $this->get('wrapperType');
 
-   }
 
-   public function setWrapperType($value) {
 
-     return $this->set('wrapperType', $value);
 
-   }
 
-   public function getClasses() {
 
-     $classes = $this->get('classes');
 
-     return is_array($classes) ? implode(' ', $classes) : $classes;
 
-   }
 
-   public function setClasses($value) {
 
-     return $this->set('classes', $value);
 
-   }
 
-   public function getId() {
 
-     return $this->get('id');
 
-   }
 
-   public function setId($value) {
 
-     return $this->set('id', $value);
 
-   }
 
-   public function getOutput() {
 
-     return $this->get('output');
 
-   }
 
-   public function setOutput($value) {
 
-     return $this->set('output', $value);
 
-   }
 
-   public function getPrefix() {
 
-     $prefix = $this->get('prefix');
 
-     if (!isset($prefix)) {
 
-       $wrapperType = $this->getWrapperType();
 
-       $id = $this->getId();
 
-       $_id = $this->_id++;
 
-       $classes = $this->getClasses();
 
-       $prefix = "<$wrapperType id=\"styles-$id-$_id\" class=\"$classes\">";
 
-     }
 
-     return $prefix;
 
-   }
 
-   public function setPrefix($value) {
 
-     return $this->set('prefix', $value);
 
-   }
 
-   public function getSuffix() {
 
-     $suffix = $this->get('suffix');
 
-     if (!isset($suffix)) {
 
-       $wrapperType = $this->getWrapperType();
 
-       $suffix = "</$wrapperType>";
 
-     }
 
-     return $suffix;
 
-   }
 
-   public function setSuffix($value) {
 
-     return $this->set('suffix', $value);
 
-   }
 
-   public function get($variable) {
 
-     return isset($this->{$variable}) ? $this->{$variable} : NULL;
 
-   }
 
-   public function set($variable, $value) {
 
-     return $this->{$variable} = $value;
 
-   }
 
- }
 
 
  |