예제 #1
0
파일: Gear.php 프로젝트: brussens/cogear2
 /**
  * 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;
                     }
                 }
             }
         }
     }
 }
예제 #2
0
파일: Select.php 프로젝트: brussens/cogear2
 /**
  *
  * @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;
 }
예제 #3
0
 /**
  * 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;
 }
예제 #4
0
 /**
  * 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);
 }
예제 #5
0
파일: ORM.php 프로젝트: brussens/cogear2
 /**
  * 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;
 }
예제 #6
0
파일: Object.php 프로젝트: brussens/cogear2
 /**
  * Выполнение обратного вызова
  */
 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;
 }