Esempio n. 1
0
 public function row(array $values)
 {
     $class = $this;
     $obj = new Container();
     $key = $this->key;
     $record = function () use($class, $obj, $key) {
         $tab = $obj->assoc();
         return $class->push($key, $tab);
     };
     $purge = function () use($class, $obj, $key) {
         $tab = $obj->assoc();
         return $class->pop($key, $tab['id']);
     };
     $date = function ($f) use($obj) {
         return date('Y-m-d H:i:s', $obj->{$f});
     };
     $hydrate = function ($data) use($obj) {
         if (Arrays::isAssoc($data)) {
             foreach ($data as $k => $v) {
                 $obj->{$k} = $v;
             }
         }
         return $obj;
     };
     $display = function ($field) use($obj) {
         return \Thin\Html\Helper::display($obj->{$field});
     };
     $tab = function () use($obj) {
         return $obj->assoc();
     };
     $asset = function ($field) use($obj) {
         return '/storage/img/' . $obj->{$field};
     };
     $obj->event('record', $record)->event('purge', $purge)->event('date', $date)->event('hydrate', $hydrate)->event('tab', $tab)->event('asset', $asset)->event('display', $display);
     return $obj->populate($values);
 }
Esempio n. 2
0
 private function related(Container $obj)
 {
     $fields = array_keys($obj->assoc());
     foreach ($fields as $field) {
         if (endsWith($field, '_id')) {
             if (is_string($field)) {
                 $value = $obj->{$field};
                 if (!is_callable($value)) {
                     $fk = repl('_id', '', $field);
                     $ns = $this->ns;
                     $cb = function () use($value, $fk, $ns) {
                         $db = container()->nbm($fk, $ns);
                         return $db->find($value);
                     };
                     $obj->event($fk, $cb);
                     $setter = lcfirst(Inflector::camelize("link_{$fk}"));
                     $cb = function (Container $fkObject) use($obj, $field, $fk) {
                         $obj->{$field} = $fkObject->getId();
                         $newCb = function () use($fkObject) {
                             return $fkObject;
                         };
                         $obj->event($fk, $newCb);
                         return $obj;
                     };
                     $obj->event($setter, $cb);
                 }
             }
         }
     }
     return $obj;
 }
Esempio n. 3
0
 private function related(Container $obj)
 {
     $fields = array_keys($obj->assoc());
     foreach ($fields as $field) {
         if (fnmatch('*_id', $field)) {
             if (is_string($field)) {
                 $value = $obj->{$field};
                 if (!is_callable($value)) {
                     $fk = str_replace('_id', '', $field);
                     $ns = $this->db;
                     $cb = function () use($value, $fk, $ns) {
                         $db = jdb($ns, $fk);
                         return $db->find($value);
                     };
                     $obj->event($fk, $cb);
                     $setter = lcfirst(Inflector::camelize("link_{$fk}"));
                     $cb = function (Container $fkObject) use($obj, $field, $fk) {
                         $obj->{$field} = $fkObject->id;
                         $newCb = function () use($fkObject) {
                             return $fkObject;
                         };
                         $obj->event($fk, $newCb);
                         return $obj;
                     };
                     $obj->event($setter, $cb);
                 }
             }
         }
     }
     return $obj;
 }