function createField($table, $post) { /* Проверка на заполненность полей */ if (empty($post['name']) || !isset($post['title']) || !isset($post['comment']) || !isset($post['type'])) { \helpers\Msg::error('empty_post'); \helpers\Msg::error('tables.fields.not_created', $table); return false; } /* Проверка на корректность имени таблицы */ if (!$this->tablesManager->isValidTableName($table)) { \helpers\Msg::warning('tables.wrong_name', $table); \helpers\Msg::error('tables.fields.not_created', $table); return false; } $name = $post['name']; /* Проверка на корректность названия поля */ if (!$this->isValidFieldName($name)) { \helpers\Msg::warning('tables.fields.name.wrong', $name); \helpers\Msg::error('tables.fields.not_created', $table); return false; } /* Теперь можно менять структуру */ $cleaner = Cleaner::getInstance(); $title = $post['title']; $cleaner->scrub($title); $comment = $post['comment']; $cleaner->scrub($comment); $default = 'NOT NULL'; switch ($post['type']) { default: case 'text': $type = 'VARCHAR(255)'; break; case 'textarea': $type = 'TEXT'; break; case 'wysiwyg': $type = 'LONGTEXT'; break; case 'int': $type = 'INTEGER'; break; case 'float': $type = 'FLOAT'; break; case 'date': $type = 'DATE'; break; case 'time': $type = 'TIME'; break; case 'datetime': $type = 'DATETIME'; break; case 'image': $type = "enum('jpg','jpeg','png')"; $default = "NULL DEFAULT NULL"; break; case 'checkbox': $type = "enum('0','1')"; $default = "DEFAULT '0'"; break; } $q = "ALTER TABLE `{$table}` ADD `af_{$name}` {$type} {$default} COMMENT '{$title};{$comment}'"; if ($this->db->exec($q) !== false) { $this->metaWriter->updateFieldList($table); \helpers\Msg::success('tables.fields.created'); \Cache::instance()->reset(); return TRUE; } else { if ($this->debugState) { \helpers\Msg::warning($this->db->log()); } \helpers\Msg::error('db_error'); } \helpers\Msg::error('tables.fields.not_created', $table); return false; }
/** * Создаёт связь много-ко-ногим между объектом и справчником */ function createPlural($table1, $table2, $comment = '') { $cleaner = Cleaner::getInstance(); $cleaner->scrub($comment); $first = $table1 . '_id'; $second = $table2 . '_id'; $table = $this->getPluralName($table1, $table2); if (!TablesManager::getInstance()->tableExists($table)) { $q = "CREATE TABLE `{$table}` (\n\t\t\t\t\t`{$first}` int(11) NOT NULL,\n\t\t\t\t\t`{$second}` int(11) NOT NULL,\n\t\t\t\t\tUNIQUE `uni` (`{$first}`,`{$second}`)\n\t\t\t\t ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='{$comment}'"; if ($this->db->exec($q) !== false) { $this->metaWriter->updateRelationList($table1); $this->metaWriter->updateRelationList($table2); \helpers\Msg::success('tables.created'); \Cache::instance()->reset(); return true; } else { \helpers\Msg::error($f3->get('db')->log()); \helpers\Msg::error('tables.not_created'); return false; } } else { \helpers\Msg::error('tables.not_created'); \helpers\Msg::warning('tables.already_exists', $table); return false; } }