/** * Configura o schema do model corrente * * @return void */ public function setSchema() { $esquema = Cache::read('Esquema.' . $this->name); if (!isset($esquema) || empty($esquema)) { $meuEsquema = isset($this->esquema) ? $this->esquema : array(); $this->esquema = array(); $this->schema(); foreach ($this->_schema as $_field => $_arrProp) { $this->esquema[$_field] = isset($meuEsquema[$_field]) ? $meuEsquema[$_field] : array(); $this->esquema[$_field]['alias'] = isset($meuEsquema[$_field]['alias']) ? $meuEsquema[$_field]['alias'] : Crypto::word($_field); $this->esquema[$_field]['type'] = isset($meuEsquema[$_field]['type']) ? $meuEsquema[$_field]['type'] : $_arrProp['type']; if (isset($_arrProp['key'])) { $this->esquema[$_field]['key'] = $_arrProp['key']; } if (isset($_arrProp['key'])) { $this->esquema[$_field]['sort'] = true; } $input = isset($meuEsquema[$_field]['input']) ? $meuEsquema[$_field]['input'] : array(); $input['label'] = isset($meuEsquema[$_field]['input']['label']) ? $meuEsquema[$_field]['input']['label'] : ucfirst(Inflector::camelize($_field)); $input['type'] = isset($meuEsquema[$_field]['input']['type']) ? $meuEsquema[$_field]['input']['type'] : 'text'; $input['div'] = isset($meuEsquema[$_field]['input']['div']) ? $meuEsquema[$_field]['input']['div'] : 'div' . Crypto::word(Inflector::camelize($this->name . '_' . $_field)) . ' div' . Crypto::word(Inflector::camelize($_field)); if (isset($_arrProp['default'])) { $input['default'] = $_arrProp['default']; } if (isset($_arrProp['null']) && $_arrProp['null'] === false) { $input['required'] = 'required'; } if (isset($_arrProp['length'])) { $input['maxlength'] = $_arrProp['length']; } if (in_array($_field, array('criado', 'modificado'))) { unset($input['required']); $input['disabled'] = 'disabled'; } if (in_array($_arrProp['type'], array('date', 'data', 'datetime')) && !isset($input['disabled'])) { $input['class'] = isset($input['class']) ? $input['class'] : ' in-data'; } if (in_array($_arrProp['type'], array('text'))) { $input['type'] = 'textarea'; } if (in_array($_arrProp['type'], array('decimal'))) { $length = isset($_arrProp['length']) ? $_arrProp['length'] : null; if (isset($length)) { $input['maxlength'] = round($input['maxlength']) + round($input['maxlength']) / 3 - 1; $length = substr($length, strpos($length, ',') + 1, strlen($length)); $this->esquema[$_field]['decimais'] = $length; } $input['class'] = isset($input['class']) ? $input['class'] : ' in-decimal'; } $this->esquema[$_field]['input'] = $input; } if (USAR_CACHE === true) { Cache::write('Esquema.' . $this->name, $this->esquema); } } else { $this->esquema = $esquema; } }