Skip to content
Snippets Groups Projects
ParameterBag.php 1.39 KiB
Newer Older
jaapjansma's avatar
jaapjansma committed
<?php

namespace Civi\ActionProvider\Parameter;

use \Civi\ActionProvider\Parameter\ParameterBagInterface;

class ParameterBag implements ParameterBagInterface, \IteratorAggregate {
jaapjansma's avatar
jaapjansma committed
	protected $parameters = array();
jaapjansma's avatar
jaapjansma committed
	/**
	 * Get the parameter.
	 */
	public function getParameter($name) {
		if (isset($this->parameters[$name])) {
			return $this->parameters[$name];
		}
		return null;
jaapjansma's avatar
jaapjansma committed
	/**
	 * Tests whether the parameter with the name exists.
	 */
	public function doesParameterExists($name) {
		if (isset($this->parameters[$name])) {
jaapjansma's avatar
jaapjansma committed
			return true;
		}
		return false;
	}
jaapjansma's avatar
jaapjansma committed
	/**
jaapjansma's avatar
jaapjansma committed
	 */
	public function setParameter($name, $value) {
		$this->parameters[$name] = $value;
	}
jaapjansma's avatar
jaapjansma committed
	public function getIterator() {
    return new \ArrayIterator($this->parameters);
  }
	/**
	 * Converts the object to an array.
	 * @return array
	 */
	public function toArray() {
		return $this->parameters;
	}
jaapjansma's avatar
jaapjansma committed

  /**
   * @param array $data
   *
   * @return \Civi\ActionProvider\Parameter\ParameterBag
   */
	public function fromArray($data, SpecificationBag $specificationBag=null) {
jaapjansma's avatar
jaapjansma committed
	  foreach($data as $key => $val) {
      $spec = null;
      if ($specificationBag) {
        $spec = $specificationBag->getSpecificationByName($key);
      }
      if ($spec && $spec->isMultiple() && !is_array($val)) {
        $val = explode(",", $val);
      }
jaapjansma's avatar
jaapjansma committed
	    $this->setParameter($key, $val);
    }
	  return $this;
  }
jaapjansma's avatar
jaapjansma committed
}