/** * Return the Tabs Model * @return \Zbase\Models\Ui\Tabs */ public function tabs() { if (!$this->tabs instanceof \Zbase\Models\Ui\Tabs) { $className = zbase_model_name('ui.tabs', null, '\\Zbase\\Models\\Ui\\Tabs'); $this->tabs = new $className(); } return $this->tabs; }
/** * Return an instance of a Model * @param string $modelName * @param string $default * @return object */ function zbase_model($modelName, $default = null) { $modelName = zbase_model_name($modelName); if (!empty($modelName)) { $enable = zbase_value_get($modelName, 'enable', false); $modelName = zbase_value_get($modelName, 'model', $default); if (!empty($modelName) && !empty($enable)) { $model = new $modelName(); return $model; } } return null; }
/** * UI Factory * @param array $configuration * @return \Zbase\Ui\UiInterface */ public static function factory($configuration) { // $configuration = zbase_data_get($configuration); if (!is_array($configuration)) { $configuration = zbase_data_get($configuration); if (empty($configuration)) { return null; } } $type = !empty($configuration['type']) ? $configuration['type'] : 'ui'; $prefix = ''; if (!empty(preg_match('/component./', $type))) { $prefix = '\\Component'; $type = zbase_string_camel_case(str_replace('component.', '', $type)); } if (!empty(preg_match('/data./', $type))) { $prefix = '\\Data'; $type = zbase_string_camel_case(str_replace('data.', '', $type)); } $id = !empty($configuration['id']) ? $configuration['id'] : null; if (is_null($id)) { throw new Exceptions\ConfigNotFoundException('Index:id is not set on Ui Factory'); } if (!empty($type)) { $className = zbase_model_name(null, 'class.ui.' . strtolower($type), '\\Zbase\\Ui' . $prefix . '\\' . ucfirst($type)); $element = new $className($configuration); return $element; } return null; }
/** * Element Factory * @param array $configuration * @return \Zbase\Ui\Form\Element */ public static function factory($configuration) { /** * Load a widget */ if (!empty($configuration['widget'])) { if (!empty($configuration['validations'])) { $widget = zbase()->widget($configuration['widget'], [], true)->setAttribute('validations', $configuration['validations']); } else { $widget = zbase()->widget($configuration['widget'], [], true); } return $widget; } if (!empty($configuration['ui'])) { $ui = \Zbase\Ui\Ui::factory($configuration['ui']); if ($ui->enabled()) { return $ui; } return null; } $type = !empty($configuration['type']) ? $configuration['type'] : 'text'; $id = !empty($configuration['id']) ? $configuration['id'] : null; if (is_null($id)) { throw new Exceptions\ConfigNotFoundException('Index:id is not set on Form Element Factory'); } if (!empty($type)) { $className = zbase_model_name(null, 'class.ui.form.type.' . strtolower($type), '\\Zbase\\Ui\\Form\\Type\\' . ucfirst($type)); $element = new $className($configuration); if ($element->enabled()) { $element->prepare(); return $element; } } return null; }
/** * Return Module * @param string $name * @param Module|array $config * @return null|\Zbase\Module\ModuleInterface */ public function module($name, $config = null) { if ($config instanceof \Zbase\Module\ModuleInterface) { return $config; } if (!empty($this->modules[$name])) { if (!$this->modules[$name] instanceof \Zbase\Module\ModuleInterface) { $moduleClassname = !empty($this->modules[$name]['class']) ? $this->modules[$name]['class'] : zbase_model_name('module', 'class.module', \Zbase\Module\Module::class); $module = new $moduleClassname(); // if($module->isEnable() && $module->hasAccess()) // { // $module->setConfiguration($this->modules[$name]); // $this->modules[$name] = $module; // } // else // { // unset($this->modules[$name]); // } $module->setConfiguration($this->modules[$name]); $this->modules[$name] = $module; } if (!empty($this->modules[$name]) && $this->modules[$name] instanceof \Zbase\Module\ModuleInterface) { return $this->modules[$name]; } } return null; }
/** * @proxy $this->orderStatusText * @return string */ public function emailVerifiedText() { $status = zbase_model_name('', 'class.ui.boolean', \Zbase\Ui\Data\Boolean::class); $status = new $status(['value' => $this->isEmailVerified(), 'id' => 'emailVerified' . $this->id()]); return $status->render(); }