function up()
 {
     $db = DbManager::get();
     $db->exec("ALTER TABLE `datafields` CHANGE `type` `type` ENUM('bool','textline','textarea','selectbox','date','time','email','phone','radio','combo','link','selectboxmultiple') NOT NULL DEFAULT 'textline'");
     $db->exec("ALTER TABLE `datafields` ADD `is_userfilter` TINYINT UNSIGNED NOT NULL DEFAULT '0' AFTER `is_required`");
     SimpleORMap::expireTableScheme();
 }
Exemple #2
0
 function tearDown()
 {
     SimpleORMap::expireTableScheme();
     Config::set(null);
     StudipCacheFactory::setConfig(null);
     $GLOBALS['CACHING_ENABLE'] = false;
 }
 function up()
 {
     $db = DBManager::get();
     $db->exec("ALTER TABLE `resources_requests` ADD `metadate_id` VARCHAR( 32 ) NOT NULL DEFAULT '' AFTER `termin_id`");
     $db->exec("ALTER TABLE `resources_requests` DROP INDEX  `closed` , ADD INDEX  `closed` (  `closed` ,  `request_id`, `resource_id` )");
     $db->exec("ALTER TABLE `resources_requests` ADD INDEX (  `metadate_id` )");
     SimpleORMap::expireTableScheme();
 }
 public function up()
 {
     DBManager::get()->exec("\n            ALTER TABLE `pluginmarket_plugins`\n            ADD `rating` DOUBLE NULL AFTER `language` ;\n        ");
     SimpleORMap::expireTableScheme();
     foreach (MarketPlugin::findBySQL("1=1") as $plugin) {
         $plugin['rating'] = $plugin->calculateRating();
         $plugin->store();
     }
 }
 public function down()
 {
     $query = "ALTER TABLE `seminare`\n                  DROP COLUMN `is_complete`";
     DBManager::get()->exec($query);
     SimpleORMap::expireTableScheme();
     $query = "DELETE FROM `config` WHERE `field` = :field";
     $statement = DBManager::get()->prepare($query);
     $statement->bindValue(':field', 'ADMIN_COURSES_SHOW_COMPLETE');
     $statement->execute();
 }
 function down()
 {
     $db = DBManager::get();
     $db->exec("ALTER TABLE `lock_rules` CHANGE `permission` `permission` ENUM( 'tutor', 'dozent', 'admin', 'root' ) NOT NULL DEFAULT 'dozent'");
     $db->exec("ALTER TABLE `lock_rules` DROP `object_type`");
     $db->exec("ALTER TABLE `lock_rules` DROP `user_id`");
     $db->exec("ALTER TABLE `user_info` DROP `lock_rule`");
     $db->exec("ALTER TABLE `Institute` DROP `lock_rule`");
     SimpleORMap::expireTableScheme();
 }
 public function down()
 {
     $db = DBManager::get();
     $db->exec("ALTER TABLE scm CHANGE tab_name tab_name varchar(20) NOT NULL DEFAULT 'Info',\n                                   CHANGE content content text");
     $db->exec("ALTER TABLE user_info CHANGE lebenslauf lebenslauf text,\n                                         CHANGE publi publi text NOT NULL");
     $db->exec("ALTER TABLE wiki CHANGE keyword keyword varchar(128) BINARY NOT NULL DEFAULT '',\n                                    CHANGE body body text");
     $db->exec("ALTER TABLE wiki_links CHANGE from_keyword from_keyword char(128) BINARY NOT NULL DEFAULT '',\n                                          CHANGE to_keyword to_keyword char(128) BINARY NOT NULL DEFAULT ''");
     $db->exec("ALTER TABLE wiki_locks CHANGE keyword keyword varchar(128) BINARY NOT NULL DEFAULT ''");
     SimpleORMap::expireTableScheme();
 }
 function up()
 {
     $db = DBManager::get();
     $db->exec("ALTER TABLE `auth_user_md5` CHANGE `password` `password` VARBINARY( 64 ) NOT NULL DEFAULT ''");
     $hasher = UserManagement::getPwdHasher();
     $pwd_up = $db->prepare("UPDATE auth_user_md5 SET password=? WHERE user_id=?");
     foreach($db->query("SELECT user_id,password FROM auth_user_md5 WHERE auth_plugin='standard' AND password <> ''") as $row) {
         $new_pwd = $hasher->HashPassword($row['password']);
         $pwd_up->execute(array($new_pwd, $row['user_id']));
     }
     SimpleORMap::expireTableScheme();
 }
 function up()
 {
     $this->tryExecute("ALTER TABLE personal_notifications ADD INDEX (html_id)");
     $this->tryExecute("ALTER TABLE personal_notifications ADD INDEX (url(256))");
     $this->tryExecute("ALTER TABLE admission_seminar_user CHANGE status status ENUM('awaiting','accepted') NOT NULL");
     $this->tryExecute("ALTER TABLE ex_termine DROP INDEX autor_id");
     $this->tryExecute("ALTER TABLE ex_termine ADD INDEX (date)");
     $this->tryExecute("ALTER TABLE termine ADD INDEX (date)");
     $this->tryExecute("ALTER TABLE termin_related_groups DROP INDEX `unique`");
     $this->tryExecute("ALTER TABLE termin_related_groups DROP INDEX termin_id");
     $this->tryExecute("ALTER TABLE termin_related_groups DROP INDEX statusgruppe_id");
     $this->tryExecute("ALTER TABLE termin_related_groups CHANGE statusgruppe_id statusgruppe_id VARCHAR(32) NOT NULL");
     $this->tryExecute("ALTER TABLE termin_related_groups ADD PRIMARY KEY( termin_id, statusgruppe_id)");
     SimpleORMap::expireTableScheme();
 }
 function up()
 {
     DBManager::get()->exec("\n\t        CREATE TABLE IF NOT EXISTS `fleximport_processes` (\n                `process_id` varchar(32) NOT NULL DEFAULT '',\n                `name` varchar(100) NOT NULL DEFAULT '',\n                `description` TEXT NULL,\n                `triggered_by_cronjob` tinyint(11) DEFAULT NULL,\n                `chdate` int(11) NOT NULL,\n                `mkdate` int(11) NOT NULL,\n                PRIMARY KEY (`process_id`)\n            );\n\t    ");
     DBManager::get()->exec("\n            ALTER TABLE `fleximport_tables` ADD `process_id` VARCHAR(32) NULL AFTER `table_id`;\n        ");
     $statement = DBManager::get()->prepare("\n            SELECT COUNT(*) as number\n            FROM fleximport_tables\n        ");
     $statement->execute();
     if ($statement->fetch(PDO::FETCH_COLUMN, 0) > 0) {
         $process = new FleximportProcess();
         $process['name'] = "Import";
         $process['triggered_by_cronjob'] = 1;
         $process->store();
         $statement = DBManager::get()->prepare("\n                UPDATE `fleximport_tables`\n                SET process_id = :process_id\n            ");
         $statement->execute(array('process_id' => $process->getId()));
     }
     DBManager::get()->exec("\n            ALTER TABLE `fleximport_tables` CHANGE `source` \n                `source` enum('csv_upload','csv_weblink','csv_studipfile','database','extern','sqlview') NOT NULL DEFAULT 'csv_upload';\n        ");
     SimpleORMap::expireTableScheme();
 }
 function up()
 {
     $db = DbManager::get();
     $db->exec("ALTER TABLE `message` DROP `chat_id`, DROP `readed`");
     $db->exec("ALTER TABLE `message_user` DROP `confirmed_read`");
     try {
         $db->exec("ALTER TABLE `message_user` DROP COLUMN `dont_delete`");
     } catch (Exception $e) {
     }
     $db->exec("ALTER TABLE `user_info` DROP `guestbook`");
     $db->exec("DROP TABLE object_rate");
     $db->exec("DROP TABLE object_user");
     $db->exec("DROP TABLE px_topics");
     $db->exec("DROP TABLE rss_feeds");
     $db->exec("DELETE FROM user_visibility_settings WHERE plugin IS NOT NULL");
     $db->exec("DELETE FROM user_visibility_settings WHERE identifier = 'plugins'");
     SimpleORMap::expireTableScheme();
 }
 public function up()
 {
     $db = DBManager::get();
     // Setup new table
     $db->exec("\n            CREATE TABLE IF NOT EXISTS `pluginmarket_plugin_usages` (\n  `usage_id` varchar(32) NOT NULL,\n  `plugin_id` varchar(32) NOT NULL,\n  `user_id` varchar(32) NOT NULL,\n  `name` varchar(128) NOT NULL,\n  `approved` tinyint(4) NOT NULL DEFAULT 0,\n  `chdate` int(11) NOT NULL,\n  `mkdate` int(11) NOT NULL,\n  PRIMARY KEY (`usage_id`),\n  KEY (`plugin_id`),\n  KEY (`user_id`),\n  KEY (`name`)\n) ENGINE=MyISAM\n        ");
     SimpleORMap::expireTableScheme();
     $stmt = $db->query("SELECT * FROM pluginmarket_plugins");
     while ($plugin = $stmt->fetch(PDO::FETCH_ASSOC)) {
         $hits = preg_split("/(?:\n|,|\t)/", $plugin['in_use']);
         $hits = array_map('trim', $hits);
         $hits = array_filter($hits);
         foreach ($hits as $hit) {
             MarketPluginUsage::create(array('plugin_id' => $plugin['plugin_id'], 'user_id' => $plugin['user_id'], 'name' => $hit));
         }
     }
     // Modify old table
     $db->exec("ALTER TABLE pluginmarket_plugins DROP COLUMN in_use");
 }
Exemple #13
0
 function up()
 {
     $query = "ALTER TABLE `scm`\n                  ADD COLUMN `position` INT(11) UNSIGNED NOT NULL DEFAULT 0";
     DBManager::get()->exec($query);
     $query = "UPDATE scm\n                  SET position = :position\n                  WHERE range_id = :range_id AND scm_id = :scm_id";
     $update_statement = DBManager::get()->prepare($query);
     $query = "SELECT range_id, scm_id FROM scm ORDER BY range_id ASC, mkdate ASC";
     $statement = DBManager::get()->query($query);
     $last_range = null;
     foreach ($statement as $row) {
         if ($row['range_id'] != $last_range) {
             $position = 0;
             $last_range = $row['range_id'];
         } else {
             $position += 1;
         }
         $update_statement->bindValue(':position', $position, PDO::PARAM_INT);
         $update_statement->bindValue(':range_id', $row['range_id']);
         $update_statement->bindValue(':scm_id', $row['scm_id']);
         $update_statement->execute();
     }
     // Expire orm cache, so the change can take effect
     SimpleORMap::expireTableScheme();
 }
 public function down()
 {
     $query = "ALTER TABLE `datafields` DROP COLUMN `system`";
     DBManager::get()->exec($query);
     SimpleORMap::expireTableScheme();
 }
 public function down()
 {
     DBManager::get()->exec("DROP TABLE scm_tabs");
     SimpleORMap::expireTableScheme();
 }
 public function up()
 {
     $db = DBManager::get();
     $db->exec("ALTER  TABLE `scm_tabs` DROP PRIMARY KEY, ADD PRIMARY KEY(scm_id, range_id);");
     SimpleORMap::expireTableScheme();
 }
 function up()
 {
     $db = DBManager::get();
     // assign conditions to admission rules
     $db->exec("CREATE TABLE IF NOT EXISTS `admission_condition` (\n                `rule_id` VARCHAR(32) NOT NULL ,\n                `filter_id` VARCHAR(32) NOT NULL ,\n                `mkdate` INT NOT NULL DEFAULT 0,\n            PRIMARY KEY (`rule_id`, `filter_id`) )\n            ENGINE = MyISAM");
     // "chance adjustment" in seat distribution
     $db->exec("CREATE TABLE IF NOT EXISTS `admissionfactor` (\n                `list_id` VARCHAR(32) NOT NULL ,\n                `name` VARCHAR(255) NOT NULL ,\n                `factor` DECIMAL(5,2) NOT NULL DEFAULT 1,\n                `owner_id` VARCHAR(32) NOT NULL ,\n                `mkdate` INT NOT NULL DEFAULT 0,\n                `chdate` INT NOT NULL DEFAULT 0,\n            PRIMARY KEY (`list_id`) )\n            ENGINE = MyISAM");
     // available admission rules.
     $db->exec("CREATE TABLE IF NOT EXISTS `admissionrules` (\n          `id` int(11) NOT NULL AUTO_INCREMENT,\n          `ruletype` VARCHAR(255) UNIQUE NOT NULL,\n          `active` TINYINT(1) NOT NULL DEFAULT 0,\n          `mkdate` INT(11) NOT NULL DEFAULT 0,\n          PRIMARY KEY (`id`)\n        ) ENGINE = MyISAM");
     // Create entries for default admission rule types.
     $db->exec("INSERT IGNORE INTO `admissionrules`\n            (`ruletype`, `active`, `mkdate`) VALUES\n                ('ConditionalAdmission', 1, UNIX_TIMESTAMP()),\n                ('LimitedAdmission', 1, UNIX_TIMESTAMP()),\n                ('LockedAdmission', 1, UNIX_TIMESTAMP()),\n                ('PasswordAdmission', 1, UNIX_TIMESTAMP()),\n                ('TimedAdmission', 1, UNIX_TIMESTAMP()),\n                ('ParticipantRestrictedAdmission', 1, UNIX_TIMESTAMP());");
     // Admission rules can be available globally or only at selected institutes.
     $db->exec("CREATE TABLE IF NOT EXISTS `admissionrule_inst` (\n          `rule_id` VARCHAR(32) NOT NULL,\n          `institute_id` VARCHAR(32) NOT NULL,\n          `mkdate` INT(11) NOT NULL DEFAULT 0,\n          PRIMARY KEY (`rule_id`, `institute_id`)\n        ) ENGINE = MyISAM");
     // admission rules specifying conditions for access
     $db->exec("CREATE TABLE IF NOT EXISTS `conditionaladmissions` (\n                `rule_id` VARCHAR(32) NOT NULL ,\n                `message` TEXT NULL ,\n                `start_time` INT NOT NULL DEFAULT 0,\n                `end_time` INT NOT NULL DEFAULT 0,\n                `mkdate` INT NOT NULL DEFAULT 0,\n                `conditions_stopped` TINYINT(1) NOT NULL DEFAULT 0 ,\n                `chdate` INT NOT NULL DEFAULT 0,\n            PRIMARY KEY (`rule_id`) )\n            ENGINE = MyISAM");
     // assign course sets to factor lists
     $db->exec("CREATE TABLE IF NOT EXISTS `courseset_factorlist` (\n                `set_id` VARCHAR(32) NOT NULL ,\n                `factorlist_id` VARCHAR(32) NOT NULL ,\n                `mkdate` INT NOT NULL DEFAULT 0 ,\n            PRIMARY KEY (`set_id`, `factorlist_id`) )\n            ENGINE = MyISAM");
     // assign course sets to institutes
     $db->exec("CREATE TABLE IF NOT EXISTS `courseset_institute` (\n                `set_id` VARCHAR(32) NOT NULL ,\n                `institute_id` VARCHAR(32) NOT NULL ,\n                `mkdate` INT NULL ,\n                `chdate` INT NULL ,\n            PRIMARY KEY (`set_id`, `institute_id`),\n            INDEX `institute_id` (`institute_id`,`set_id`))\n            ENGINE = MyISAM");
     // assign admission rules to course sets
     $db->exec("CREATE TABLE IF NOT EXISTS `courseset_rule` (\n                `set_id` VARCHAR(32) NOT NULL ,\n                `rule_id` VARCHAR(32) NOT NULL ,\n                `type` VARCHAR(255) NULL ,\n                `mkdate` INT NULL ,\n            PRIMARY KEY (`set_id`, `rule_id`),\n            INDEX `type` (`type`,`set_id`))\n            ENGINE = MyISAM");
     // sets of courses with common admission rules
     $db->exec("CREATE TABLE IF NOT EXISTS `coursesets` (\n                `set_id` VARCHAR(32) NOT NULL ,\n                `user_id` VARCHAR(32) NOT NULL ,\n                `name` VARCHAR(255) NOT NULL ,\n                `infotext` TEXT NOT NULL ,\n                `algorithm` VARCHAR(255) NOT NULL ,\n                `algorithm_run` TINYINT(1) NOT NULL DEFAULT 0 ,\n                `private` TINYINT(1) NOT NULL DEFAULT 0,\n                `mkdate` INT NOT NULL DEFAULT 0,\n                `chdate` INT NOT NULL DEFAULT 0,\n            PRIMARY KEY (`set_id`) ,\n            INDEX `set_user` (`user_id`, `set_id`) )\n            ENGINE = MyISAM");
     // admission rules with max number of courses to register for
     $db->exec("CREATE TABLE IF NOT EXISTS `limitedadmissions` (\n                `rule_id` VARCHAR(32) NOT NULL ,\n                `message` TEXT NOT NULL ,\n                `start_time` INT NOT NULL DEFAULT 0,\n                `end_time` INT NOT NULL DEFAULT 0,\n                `maxnumber` INT NOT NULL DEFAULT 0,\n                `mkdate` INT NOT NULL DEFAULT 0,\n                `chdate` INT NOT NULL DEFAULT 0,\n            PRIMARY KEY (`rule_id`) )\n            ENGINE = MyISAM");
     // admission rules that completely lock access to courses
     $db->exec("CREATE TABLE IF NOT EXISTS `lockedadmissions` (\n                `rule_id` VARCHAR(32) NOT NULL ,\n                `message` TEXT NOT NULL ,\n                `mkdate` INT NOT NULL DEFAULT 0,\n                `chdate` INT NOT NULL DEFAULT 0,\n            PRIMARY KEY (`rule_id`) )\n            ENGINE = MyISAM");
     // admission rules that specify a password for course access
     $db->exec("CREATE TABLE IF NOT EXISTS `passwordadmissions` (\n                `rule_id` VARCHAR(32) NOT NULL ,\n                `message` TEXT NULL ,\n                `start_time` INT NOT NULL DEFAULT 0,\n                `end_time` INT NOT NULL DEFAULT 0,\n                `password` VARCHAR(255) NULL ,\n                `mkdate` INT NOT NULL DEFAULT 0,\n                `chdate` INT NOT NULL DEFAULT 0,\n            PRIMARY KEY (`rule_id`) )\n            ENGINE = MyISAM");
     // priorities for course assignment
     $db->exec("CREATE TABLE IF NOT EXISTS `priorities` (\n                `user_id` VARCHAR(32) NOT NULL ,\n                `set_id` VARCHAR(32) NOT NULL ,\n                `seminar_id` VARCHAR(32) NOT NULL ,\n                `priority` INT NOT NULL DEFAULT 0,\n                `mkdate` INT NOT NULL DEFAULT 0,\n                `chdate` INT NOT NULL DEFAULT 0,\n            PRIMARY KEY (`user_id`, `set_id`, `seminar_id`) ,\n            INDEX `user_rule_priority` (`user_id` ASC, `priority` ASC, `set_id` ASC) )\n            ENGINE = MyISAM");
     // assign courses to course sets
     $db->exec("CREATE TABLE IF NOT EXISTS `seminar_courseset` (\n                `set_id` VARCHAR(32) NOT NULL ,\n                `seminar_id` VARCHAR(32) NOT NULL ,\n                `mkdate` INT NOT NULL DEFAULT 0 ,\n            PRIMARY KEY (`set_id`, `seminar_id`),\n            INDEX `seminar_id` (`seminar_id`, `set_id` ) )\n            ENGINE = MyISAM");
     // admission rules concerning time
     $db->exec("CREATE TABLE IF NOT EXISTS `timedadmissions` (\n                `rule_id` VARCHAR(32) NOT NULL ,\n                `message` TEXT NOT NULL ,\n                `start_time` INT NOT NULL DEFAULT 0,\n                `end_time` INT NOT NULL DEFAULT 0,\n                `mkdate` INT NOT NULL DEFAULT 0,\n                `chdate` INT NOT NULL DEFAULT 0,\n            PRIMARY KEY (`rule_id`) ,\n            INDEX `start_time` (`start_time` ASC) ,\n            INDEX `end_time` (`end_time` ASC) ,\n            INDEX `start_end` (`start_time` ASC, `end_time` ASC) )\n            ENGINE = MyISAM");
     $db->exec("CREATE TABLE IF NOT EXISTS `participantrestrictedadmissions` (\n        `rule_id` varchar(32),\n        `message` text NOT NULL,\n        `distribution_time` int(11) NOT NULL DEFAULT 0,\n        `mkdate` int(11) NOT NULL DEFAULT 0,\n        `chdate` int(11) NOT NULL DEFAULT 0,\n        PRIMARY KEY (`rule_id`)\n        ) ENGINE=MyISAM");
     // assign users to lists with different factor in seat distribution
     $db->exec("CREATE TABLE IF NOT EXISTS `user_factorlist` (\n                `list_id` VARCHAR(32) NULL ,\n                `user_id` VARCHAR(32) NULL ,\n                `mkdate` INT NULL ,\n            PRIMARY KEY (`list_id`, `user_id`) )\n            ENGINE = MyISAM");
     // filters for users
     $db->exec("CREATE TABLE IF NOT EXISTS `userfilter` (\n                `filter_id` VARCHAR(32) NOT NULL ,\n                `mkdate` INT NOT NULL DEFAULT 0,\n                `chdate` INT NOT NULL DEFAULT 0,\n            PRIMARY KEY (`filter_id`) )\n            ENGINE = MyISAM");
     // several fields form a user filter
     $db->exec("CREATE TABLE IF NOT EXISTS `userfilter_fields` (\n                `field_id` VARCHAR(32) NOT NULL ,\n                `filter_id` VARCHAR(32) NOT NULL ,\n                `type` VARCHAR(255) NOT NULL ,\n                `value` VARCHAR(255) NOT NULL ,\n                `compare_op` VARCHAR(255) NOT NULL ,\n                `mkdate` INT NOT NULL DEFAULT 0,\n                `chdate` INT NOT NULL DEFAULT 0,\n            PRIMARY KEY (`field_id`) )\n            ENGINE = MyISAM");
     // user defined max number of courses to register for
     $db->exec("CREATE TABLE IF NOT EXISTS `userlimits` (\n                `rule_id` VARCHAR(32) NOT NULL ,\n                `user_id` VARCHAR(32) NOT NULL ,\n                `maxnumber` INT NULL ,\n                `mkdate` INT NULL ,\n                `chdate` INT NULL ,\n            PRIMARY KEY (`rule_id`, `user_id`) )\n            ENGINE = MyISAM");
     $cs_insert = $db->prepare("INSERT INTO coursesets (set_id,user_id,name,infotext,algorithm,private,mkdate,chdate)\n                                   VALUES (?,?,?,?,'',?,?,?)");
     $cs_i_insert = $db->prepare("INSERT INTO courseset_institute (set_id,institute_id,mkdate,chdate) VALUES (?,?,UNIX_TIMESTAMP(),UNIX_TIMESTAMP())");
     $cs_r_insert = $db->prepare("INSERT INTO courseset_rule (set_id,rule_id,type,mkdate) VALUES (?,?,?,UNIX_TIMESTAMP())");
     $s_cs_insert = $db->prepare("INSERT INTO seminar_courseset (set_id,seminar_id,mkdate) VALUES (?,?,UNIX_TIMESTAMP())");
     $password_insert = $db->prepare("INSERT INTO passwordadmissions (rule_id,message,password,mkdate,chdate) VALUES (?,'Das Passwort ist falsch',?,UNIX_TIMESTAMP(),UNIX_TIMESTAMP())");
     $locked_insert = $db->prepare("INSERT INTO lockedadmissions (rule_id,message,mkdate,chdate) VALUES (?,'Die Anmeldung ist gesperrt',UNIX_TIMESTAMP(),UNIX_TIMESTAMP())");
     $hasher = new PasswordHash(8, false);
     $user_id = $GLOBALS['user']->id;
     //mit pw wandeln
     $pw_admission = $db->fetchAll("SELECT seminar_id, name, passwort, institut_id, chdate FROM seminare WHERE admission_type = 0 AND Lesezugriff = 2");
     foreach ($pw_admission as $course) {
         $new_pwd = $hasher->HashPassword($course['passwort']);
         $rule_id = md5(uniqid('passwordadmissions', 1));
         $password_insert->execute(array($rule_id, $new_pwd));
         $set_id = md5(uniqid('coursesets', 1));
         $name = 'Anmeldung mit Passwort: ' . $course['name'];
         $info = 'Erzeugt durch Migration 128 ' . strftime('%X %x');
         $cs_insert->execute(array($set_id, $user_id, $name, $info, 1, $course['chdate'], $course['chdate']));
         $cs_r_insert->execute(array($set_id, $rule_id, 'PasswordAdmission'));
         $s_cs_insert->execute(array($set_id, $course['seminar_id']));
     }
     //ein globales set für alle gesperrten
     $locked_set_id = md5(uniqid('coursesets', 1));
     $name = 'Anmeldung gesperrt (global)';
     $info = '';
     $cs_insert->execute(array($locked_set_id, '', $name, $info, 1, time(), time()));
     $locked_rule_id = md5(uniqid('lockedadmissions', 1));
     $locked_insert->execute(array($locked_rule_id));
     $cs_r_insert->execute(array($locked_set_id, $locked_rule_id, 'LockedAdmission'));
     //locked wandeln
     $locked_admission = $db->fetchAll("SELECT seminar_id, name, institut_id FROM seminare WHERE admission_type = 3");
     foreach ($locked_admission as $course) {
         $s_cs_insert->execute(array($locked_set_id, $course['seminar_id']));
     }
     // Lade Daten des aktuellen Semesters.
     $semester = Semester::findCurrent();
     $now = time();
     $preserve_waitlists = array();
     //gruppierte wandeln
     $grouped_admission = $db->fetchAll("SELECT seminar_id, seminare.name, start_time, duration_time, institut_id, admission_type, admission_starttime,\n            admission_endtime, admission_endtime_sem, admission_group.name as a_name, admission_group, admission_group.chdate\n            FROM seminare INNER JOIN admission_group ON group_id = admission_group\n            WHERE admission_type IN (1, 2) ORDER BY admission_group, admission_starttime, VeranstaltungsNummer");
     foreach ($grouped_admission as $course) {
         if ($group_id != $course['admission_group']) {
             $group_id = $course['admission_group'];
             $group_type = $course['admission_type'];
             $group_inst = array($course['institut_id']);
             $group_name = $course['a_name'] ?: ++$g;
             /*
              * Check, ob Anmeldeverfahren in der Vergangenheit schon
              * abgeschlossen wurde. Hier extra ausführlich, damit es
              * verständlich bleibt.
              */
             // Veranstaltungen, die (auch implizit) im aktuellen oder kommenden Semestern liegen.
             if (($course['start_time'] + $course['duration_time'] >= $semester->beginn || $course['duration_time'] == -1) && ($course['admission_disable_waitlist'] == 0 || $course['admission_starttime'] > $now || $course['admission_endtime'] > $now || $course['admission_endtime_sem'] > $now || $course['admission_endtime_sem'] == -1)) {
                 // Erzeuge ein Anmeldeset mit den vorhandenen Einstellungen der Veranstaltung.
                 $cs = $this->buildCourseset($course, true);
                 $cs->setName('Beschränkte Teilnehmeranzahl: Gruppe ' . $group_name)->setInfoText('Erzeugt durch Migration 128 ' . strftime('%X %x'))->addInstitute($course['institut_id'])->setPrivate(true)->setUserId($user_id)->store();
                 $set_id = $cs->getId();
                 // Losen oder Anmeldezeitraum vorbei => sperren.
                 // Veranstaltungen in vergangenen Semestern werden einfach gesperrt.
             } else {
                 $group_type = 3;
                 $rule_id = md5(uniqid('lockedadmissions', 1));
                 $locked_insert->execute(array($rule_id));
                 $set_id = md5(uniqid('coursesets', 1));
                 $name = 'Anmeldung gesperrt: Gruppe ' . $group_name;
                 $info = 'Erzeugt durch Migration 128 ' . strftime('%X %x');
                 $cs_insert->execute(array($set_id, $user_id, $name, $info, 1, $course['chdate'], $course['chdate']));
                 $cs_i_insert->execute(array($set_id, $course['institut_id']));
                 $cs_r_insert->execute(array($set_id, $rule_id, 'LockedAdmission'));
             }
         }
         // Veranstaltung mit Losverfahren
         if ($group_type == 1) {
             // Losliste übernehmen
             $db->execute("INSERT INTO priorities (user_id, set_id, seminar_id, priority, mkdate, chdate)\n                 SELECT user_id, ?, seminar_id, 1, mkdate, UNIX_TIMESTAMP()\n                 FROM admission_seminar_user WHERE status = 'claiming' AND seminar_id = ?", array($set_id, $course['seminar_id']));
             // Chronologische Anmeldung
         } else {
             if ($group_type == 2) {
                 $preserve_waitlists[] = $course['seminar_id'];
             }
         }
         // weitere Einrichtungen zuordnen
         if ($group_type != 3 && !in_array($course['institut_id'], $group_inst)) {
             $cs_i_insert->execute(array($set_id, $course['institut_id']));
             $group_inst[] = $course['institut_id'];
         }
         $s_cs_insert->execute(array($set_id, $course['seminar_id']));
     }
     $admission = $db->fetchAll("SELECT seminar_id, seminare.name, start_time, duration_time, institut_id, admission_type, admission_starttime, admission_endtime, admission_endtime_sem\n            FROM seminare left join admission_group on(group_id=admission_group) WHERE admission_type in (1, 2) AND group_id is null");
     foreach ($admission as $course) {
         /*
          * Check, ob Anmeldeverfahren in der Vergangenheit schon
          * abgeschlossen wurde. Hier extra ausführlich, damit es
          * verständlich bleibt.
          */
         // Veranstaltungen, die (auch implizit) im aktuellen oder kommenden Semestern liegen.
         if (($course['start_time'] + $course['duration_time'] >= $semester->beginn || $course['duration_time'] == -1) && ($course['admission_disable_waitlist'] == 0 || $course['admission_starttime'] > $now || $course['admission_endtime'] > $now || $course['admission_endtime_sem'] > $now || $course['admission_endtime_sem'] == -1)) {
             // Erzeuge ein Anmeldeset mit den vorhandenen Einstellungen der Veranstaltung.
             $cs = $this->buildCourseset($course, false);
             $cs->setName('Beschränkte Teilnehmeranzahl: ' . $course['name'])->setInfoText('Erzeugt durch Migration 128 ' . strftime('%X %x'))->setPrivate(true)->setUserId($user_id)->store();
             $set_id = $cs->getId();
             // Veranstaltung mit Losverfahren
             if ($course['admission_type'] == 1) {
                 // Losliste übernehmen
                 $db->execute("INSERT INTO priorities (user_id, set_id, seminar_id, priority, mkdate, chdate)\n                     SELECT user_id, ?, seminar_id, 1, mkdate, UNIX_TIMESTAMP()\n                     FROM admission_seminar_user WHERE status = 'claiming' AND seminar_id = ?", array($set_id, $course['seminar_id']));
                 // Chronologische Anmeldung
             } else {
                 $preserve_waitlists[] = $course['seminar_id'];
             }
             // Losen oder Anmeldezeitraum vorbei => sperren.
             // Veranstaltungen in vergangenen Semestern werden einfach gesperrt.
         } else {
             $set_id = $locked_set_id;
         }
         $s_cs_insert->execute(array($set_id, $course['seminar_id']));
     }
     $db->exec("UPDATE seminare SET Lesezugriff=1,Schreibzugriff=1 WHERE Lesezugriff=3");
     $db->exec("UPDATE seminare SET Lesezugriff=1,Schreibzugriff=1 WHERE Lesezugriff=2");
     // Übernehme Veranstaltungen ohne Anmeldeverfahren, aber mit Anmeldezeitraum in der Zukunft.
     $now = time();
     $admission = $db->fetchAll("SELECT `seminar_id`,`seminare`.`name`,`institut_id`,`admission_starttime`,`admission_endtime_sem`\n            FROM `seminare` WHERE `admission_type`=0 AND (`admission_starttime`>:now OR `admission_endtime_sem`>:now)", array('now' => $now));
     foreach ($admission as $course) {
         // Erzeuge ein Anmeldeset mit den vorhandenen Einstellungen der Veranstaltung.
         $cs = new CourseSet();
         $rule = new TimedAdmission();
         if ($course['admission_starttime'] != -1) {
             $rule->setStartTime($course['admission_starttime']);
         }
         if ($course['admission_endtime_sem'] != -1) {
             $rule->setEndTime($course['admission_endtime_sem']);
         }
         $cs->setName('Anmeldezeitraum: ' . $course['name'])->setInfoText('Erzeugt durch Migration 128 ' . strftime('%X %x'))->addCourse($course['seminar_id'])->addAdmissionRule($rule)->setPrivate(true)->setUserId($user_id)->store();
     }
     //Warte und Anmeldelisten löschen
     $db->exec("DELETE FROM admission_seminar_user WHERE status = 'claiming'");
     $db->execute("DELETE FROM admission_seminar_user WHERE status = 'awaiting' AND seminar_id NOT IN(?)", array($preserve_waitlists));
     $db->exec("DROP TABLE admission_seminar_studiengang");
     $db->exec("DROP TABLE admission_group");
     $db->exec("ALTER TABLE `seminare` DROP `Passwort`");
     $db->exec("ALTER TABLE `seminare` DROP `admission_endtime`");
     $db->exec("ALTER TABLE `seminare` DROP `admission_type`");
     $db->exec("ALTER TABLE `seminare` DROP `admission_selection_take_place`");
     $db->exec("ALTER TABLE `seminare` DROP `admission_group`");
     $db->exec("ALTER TABLE `seminare` DROP `admission_starttime`");
     $db->exec("ALTER TABLE `seminare` DROP `admission_endtime_sem`");
     $db->exec("ALTER TABLE `seminare` DROP `admission_enable_quota`");
     $db->exec("ALTER TABLE  `seminare` ADD  `admission_waitlist_max` INT UNSIGNED NOT NULL DEFAULT  '0'");
     $db->exec("ALTER TABLE  `seminare` ADD  `admission_disable_waitlist_move` TINYINT UNSIGNED NOT NULL DEFAULT '0'");
     $db->exec("ALTER TABLE `seminar_user` DROP `admission_studiengang_id`");
     $db->exec("ALTER TABLE `admission_seminar_user` DROP `studiengang_id`");
     try {
         $db->exec("ALTER TABLE `seminar_user` DROP INDEX `Seminar_id`");
         $db->exec("ALTER TABLE `seminar_user` DROP INDEX `user_id`");
     } catch (PDOException $e) {
     }
     $db->exec("ALTER TABLE `seminar_user` ADD INDEX (`user_id`, `Seminar_id`, `status`)");
     SimpleORMap::expireTableScheme();
     // Insert global configuration: who may edit course sets?
     $db->exec("INSERT IGNORE INTO `config`\n            (`config_id`, `parent_id`, `field`, `value`, `is_default`,\n             `type`, `range`, `section`, `position`, `mkdate`, `chdate`,\n             `description`, `comment`, `message_template`)\n        VALUES\n            (MD5('ALLOW_DOZENT_COURSESET_ADMIN'), '',\n            'ALLOW_DOZENT_COURSESET_ADMIN', '0', '1', 'boolean', 'global',\n            'coursesets', '0', UNIX_TIMESTAMP(), UNIX_TIMESTAMP(),\n            'Sollen Lehrende einrichtungsweite Anmeldesets anlegen und bearbeiten dürfen?',\n            '', '')");
     // Insert global configuration: who may edit course sets?
     $db->exec("INSERT IGNORE INTO `config`\n            (`config_id`, `parent_id`, `field`, `value`, `is_default`,\n             `type`, `range`, `section`, `position`, `mkdate`, `chdate`,\n             `description`, `comment`, `message_template`)\n        VALUES\n            (MD5('ENABLE_COURSESET_FCFS'), '',\n            'ENABLE_COURSESET_FCFS', '0', '1', 'boolean', 'global',\n            'coursesets', '0', UNIX_TIMESTAMP(), UNIX_TIMESTAMP(),\n            'Soll first-come-first-served (Windhundverfahren) bei der Anmeldung erlaubt sein?',\n            '', '')");
 }
 public function down()
 {
     $query = "ALTER TABLE `opengraphdata`\n                  DROP PRIMARY KEY,\n                  DROP INDEX `url`,\n                  DROP COLUMN `opengraph_id`,\n                  ADD PRIMARY KEY (`url`)";
     DBManager::get()->exec($query);
     SimpleORMap::expireTableScheme();
 }
 function up()
 {
     SimpleORMap::expireTableScheme();
 }
 function down()
 {
     DBManager::get()->exec("\n\t        ALTER TABLE `fleximport_mapped_items`\n\t        CHANGE `table_id` `import_type` VARCHAR(200) NOT NULL DEFAULT '0'\n\t    ");
     SimpleORMap::expireTableScheme();
 }
 function down()
 {
     $db = DBManager::get();
     $db->exec("DROP TABLE `webservice_access_rules` ");
     SimpleORMap::expireTableScheme();
 }