ZendDbSchema
Schema management for Zend Framework
 All Classes Namespaces Functions Pages
Type.php
1 <?php
30  extends Zend_Validate_Abstract
31 {
32  const NAME_EMPTY = 'columnTypeEmpty';
33  const INVALID = 'columnTypeInvalid';
34 
38  protected $_messageTemplates = array(
39  self::NAME_EMPTY => "Column type can not be empty",
40  self::INVALID => "Column type %value% is not a valid type"
41  );
42 
46  protected $_columnTypes = array(
47  'TINYINT',
48  'SMALLINT',
49  'MEDIUMINT',
50  'INT',
51  'INTEGER',
52  'BIGINT',
53  'FLOAT',
54  'DOUBLE',
55  'DECIMAL',
56  'PRECISION',
57  'REAL',
58  'NUMERIC',
59 
60  'CHAR',
61  'VARCHAR',
62  'TINYTEXT',
63  'TINYBLOB',
64  'TEXT',
65  'BLOB',
66  'MEDIUMTEXT',
67  'MEDIUMBLOB',
68  'LONGTEXT',
69  'LONGBLOB',
70 
71  'DATE',
72  'DATETIME',
73  'TIMESTAMP',
74  'TIME',
75  'YEAR',
76 
77  'ENUM',
78  'SET',
79 
80  'BINARY',
81  'VARBINARY',
82  );
83 
90  public function isValid($value)
91  {
92  $schema = null;
93  if ($value instanceof ZendDbSchema_Db_Schema_Table_Column) {
94  $schema = $value;
95  $value = $schema->__get('type');
96  }
97  if (empty($value)) {
98  $this->_error(self::NAME_EMPTY);
99  return false;
100  }
101  if ($schema && $schema->isDirty('type')) {
102  if (!in_array(strtoupper($value), $this->_columnTypes)) {
103  $this->_error(self::INVALID, $value);
104  return false;
105  }
106  }
107  return true;
108  }
109 }