public function decorateRepresentation(\Extool\Representation\Representation &$rep) { $this->parse(); $pieces = explode('/', $this->resource); $rep->setName(ucfirst(array_pop($pieces))); foreach ($this->table_fields as $table_name => $fields) { $table = new \Extool\Representation\Table($table_name); $table->setFields($fields); $rep->addTable($table); $model = new \Extool\Representation\Model($table_name); $model->setCriteria($fields); $model->addTable($table); // Generate four views for each table $view = new \Extool\Representation\View($table_name); $view->setFields($fields); $rep->addPublicView($view); $rep->addPublicModel($model); $view->setAccess('admin'); $rep->addAdminView($view); $rep->addAdminModel($model); // Create new model for the list views $model = new \Extool\Representation\Model($table_name . ' List'); $model->setCriteria($fields); $model->addTable($table); $view = new \Extool\Representation\View($table_name . ' List'); $view->setType('list'); $view->setFields($fields); $rep->addPublicView($view); $rep->addPublicModel($model); $view->setAccess('admin'); $rep->addAdminView($view); $rep->addAdminModel($model); } }
private function getTables() { if (!isset($this->tables)) { $this->tables = array(); preg_match_all('/table\\s+(\\w+)\\s*\\((.+)\\)/sU', $this->raw_plan, $matches); foreach ($matches[1] as $i => $table) { $fields = trim($matches[2][$i]); $fields = explode("\n", $fields); $extool_fields = new \Extool\Representation\Fields(); foreach ($fields as $field) { $title = $this->makeFieldTitle($field); $type = $this->getFieldType($field); if ($type == 'keyint') { $extool_fields->addField($title, 'integer'); $extool_fields->setKey($title); } else { $extool_fields->addField($title, $type); } } $table = new \Extool\Representation\Table($table); $table->setFields($extool_fields); $this->tables[$table->name] = $table; } } return $this->tables; }
public function decorateRepresentation(\Extool\Representation\Representation &$rep) { $this->parse(); $pieces = explode('/', $this->resource); $resource_name = ucfirst(preg_replace('/\\..*/', '', array_pop($pieces))); $rep->setName($resource_name); $fields = $this->determineFields(); $data = new \Extool\Representation\Data($fields); $data->setData($this->keyed_data); $rep->addData($data, $resource_name); $table = new \Extool\Representation\Table($resource_name); $table->setFields($fields); $rep->addTable($table); $model = new \Extool\Representation\Model($resource_name); $model->setCriteria($fields); $model->addTable($table); $view = new \Extool\Representation\View($resource_name); $view->setFields($fields); $rep->addPublicView($view); $rep->addPublicModel($model); $view->setAccess('admin'); $rep->addAdminView($view); $rep->addAdminModel($model); // Create new model for the list views $model = new \Extool\Representation\Model($resource_name . ' List'); $model->setCriteria($fields); $model->addTable($table); $view = new \Extool\Representation\View($resource_name . ' List'); $view->setType('list'); $view->setFields($fields); $rep->addPublicView($view); $rep->addPublicModel($model); $view->setAccess('admin'); $rep->addAdminView($view); $rep->addAdminModel($model); }