project_id = $project_id; } /** * Set an user defined parameter * * @access public * @param string $name Parameter name * @param mixed $value Value */ public function setParam($name, $value) { $this->params[$name] = $value; } /** * Get an user defined parameter * * @access public * @param string $name Parameter name * @param mixed $default_value Default value * @return mixed */ public function getParam($name, $default_value = null) { return isset($this->params[$name]) ? $this->params[$name] : $default_value; } /** * Check if an action is executable (right project and required parameters) * * @access public * @param array $data Event data dictionary * @return bool True if the action is executable */ public function isExecutable(array $data) { if (isset($data['project_id']) && $data['project_id'] == $this->project_id && $this->hasRequiredParameters($data)) { return true; } return false; } /** * Check if the event data has required parameters to execute the action * * @access public * @param array $data Event data dictionary * @return bool True if all keys are there */ public function hasRequiredParameters(array $data) { foreach ($this->getEventRequiredParameters() as $parameter) { if (! isset($data[$parameter])) return false; } return true; } /** * Execute the action * * @access public * @param array $data Event data dictionary * @return bool True if the action was executed or false when not executed */ public function execute(array $data) { if ($this->isExecutable($data)) { return $this->doAction($data); } return false; } }