/** * * @return type */ public function render() { if ($this->callback) { $callback = new Callback($this->callback); if ($callback->check()) { $this->options->values = $callback->run(array($this->form)); } } $this->prepareOptions(); $code[] = HTML::open_tag('select', $this->options); foreach ($this->values as $key => $value) { $attributes = array(); if ($this->value instanceof Core_ArrayObject) { $this->value = $this->value->toArray(); } if (is_array($this->value)) { if (in_array($key, $this->value)) { $attributes['selected'] = 'selected'; } } elseif ($key == $this->value) { $attributes['selected'] = 'selected'; } $attributes['value'] = $key; $code[] = HTML::paired_tag('option', $value, $attributes); } $code[] = HTML::close_tag('select'); $code = implode("\n", $code); if ($this->wrapper) { $tpl = new Template($this->wrapper); $tpl->assign($this->options); $tpl->code = $code; $code = $tpl->render(); } return $code; }
/** * Magic __call method * * @param string $name * @param array $array */ public function __call($name, $args) { $callback = new Callback(array(cogear(), $name)); if ($callback->check()) { return $callback->run($args); } return NULL; }
/** * Magic __call method * * @param string $name * @param array $args * @return mixed */ public function __call($name, $args) { if (is_object($this->object)) { $callback = new Callback(array($this->object, $name)); if ($callback->check()) { return $callback->run($args); } } return parent::__call($name, $args); }
/** * Filter data * * @param object $data * @param int $type * @return object */ public function filterData($data, $type = 0) { // Fullfill filters switch ($type) { case self::FILTER_IN: $filters = $this->filters_in; break; case self::FILTER_OUT: default: $filters = $this->filters_out; } // Set scope to $this foreach ($filters as $field => $filter) { foreach ($filter as $key => $callback) { if (!is_array($callback) && method_exists($this, $callback)) { $callback = new Callback(array($this, $callback)); } else { $callback = new Callback($callback); } if ($callback->check()) { !empty($data[$field]) && ($data[$field] = $callback->run(array($data[$field]))); } } } return $data; }
/** * Shortcut for access rule check * * @param string $rule * @paramN … * @return boolean */ function access() { $args = func_get_args(); $callback = new Callback(array(cogear()->access, 'check')); return $callback->run($args); }