예제 #1
0
 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;
 }
예제 #2
0
 /**
  * Создаёт связь много-ко-ногим между объектом и справчником
  */
 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;
     }
 }