/** * Construct file model. */ public function __construct() { parent::__construct('File'); $this->addField('path', tr('Path'), DataType::string()); $this->addField('name', tr('Name'), DataType::string()); $this->addField('type', tr('Type'), DataType::enum(array('directory', 'file'))); $this->addField('size', tr('Size'), DataType::integer(DataType::UNSIGNED)); $this->addField('modified', tr('Modified'), DataType::dateTime()); $this->addField('created', tr('Created'), DataType::dateTime()); }
/** * {@inheritdoc} */ public function before() { parent::before(); if (isset($this->request->cookies['data-table-per-page'])) { $this->object->rowsPerPage = intval($this->request->cookies['data-table-per-page']); } if (isset($this->request->cookies['data-table-density'])) { $this->object->density = $this->request->cookies['data-table-density']; } else { $this->object->density = 'medium'; } $tableSettings = new Form('tableSettings'); $tableSettings->addField('perPage', DataType::integer(DataType::UNSIGNED)); $tableSettings->__set('perPage', $this->object->rowsPerPage); $tableSettings->addField('density', DataType::enum(array('low', 'medium', 'high'))); $tableSettings->__set('density', $this->object->density); $this->viewData['tableSettings'] = $tableSettings; }
/** * Convert output of SHOW COLUMN to DataType. * @param array $row Row result. * @throws TypeException If type unsupported. * @return DataType The type. */ private function toDataType($row) { $null = (isset($row['Null']) and $row['Null'] != 'NO'); $default = null; if (isset($row['Default'])) { $default = $row['Default']; } if (preg_match('/enum\\((.+)\\)/i', $row['Type'], $matches) === 1) { preg_match_all('/\'([^\']+)\'/', $matches[1], $matches); $values = $matches[1]; return DataType::enum($values, $null, $default); } preg_match('/ *([^ (]+) *(\\(([0-9]+)\\))? *(unsigned)? *?/i', $row['Type'], $matches); $actualType = strtolower($matches[1]); $length = isset($matches[3]) ? intval($matches[3]) : 0; $intFlags = 0; if (isset($matches[4])) { $intFlags |= DataType::UNSIGNED; } if (strpos($row['Extra'], 'auto_increment') !== false) { $intFlags |= DataType::AUTO_INCREMENT; } switch ($actualType) { case 'bigint': $intFlags |= DataType::BIG; return DataType::integer($intFlags, $null, isset($default) ? intval($default) : null); case 'smallint': $intFlags |= DataType::SMALL; return DataType::integer($intFlags, $null, isset($default) ? intval($default) : null); case 'tinyint': $intFlags |= DataType::TINY; return DataType::integer($intFlags, $null, isset($default) ? intval($default) : null); case 'int': return DataType::integer($intFlags, $null, isset($default) ? intval($default) : null); case 'double': return DataType::float($null, isset($default) ? floatval($default) : null); case 'varchar': return DataType::string($length, $null, $default); case 'blob': return DataType::binary($null, $default); case 'date': return DataType::date($null, isset($default) ? strtotime($default . ' UTC') : null); case 'datetime': return DataType::dateTime($null, isset($default) ? strtotime($default . ' UTC') : null); case 'text': return DataType::text($null, $default); } throw new TypeException(tr('Unsupported MySQL type for column: %1', $row['Field'])); }