/** * Initialize */ public function init() { parent::init(); foreach (cogear()->gears as $gear) { if (is_array($gear->access)) { foreach ($gear->access as $rule => $rights) { $name = $gear->gear . '.' . $rule; // Array of user roles if (is_array($rights)) { if (in_array(role(), $rights)) { $this->rights->{$name} = TRUE; } else { $this->rights->{$name} = FALSE; } } else { if (is_string($rights)) { $callback = new Callback(array($gear, $rights)); if ($callback->check()) { $this->rights->{$name} = $callback; } } elseif (is_bool($rights)) { $this->rights->{$name} = $rights; } } } } } }
/** * * @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; }
/** * Выполнение обратного вызова */ public function exec(Callback $callback) { if (!$callback->check()) { return event('404'); } if (!event('router.exec', $this, $callback)->check()) { return FALSE; } $gear = $callback->getCallback(0); $gear_name = $gear->gear; $method = $callback->getCallback(1); event('callback.before', $this); $event = $gear_name . '.' . $method; hook($event, array($gear, 'request')); event($event, $gear, $method, $callback->getArgs()); $callback->run(); event('callback.after', $this); return TRUE; }