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); }
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; }
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; }