Example #1
0
    public static function install()
    {
        SystemEvent::raise(SystemEvent::INFO, "Creating project related tables...", __METHOD__);
        $tableName = 'project';
        $sql = <<<EOT
DROP TABLE IF EXISTS {$tableName}NEW;
CREATE TABLE IF NOT EXISTS {$tableName}NEW (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  releaselabel TEXT NOT NULL DEFAULT '',
  datecreation DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  datecheckedforchanges DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  deploymentbuilder TEXT NOT NULL DEFAULT '',
  description TEXT DEFAULT '',
  integrationbuilder TEXT NOT NULL DEFAULT '',
  optionreleasepackage TINYINT UNSIGNED NOT NULL DEFAULT 0,
  scmcheckchangestimeout MEDIUMINT UNSIGNED NOT NULL DEFAULT 30,
  scmconnectortype VARCHAR(20) NOT NULL DEFAULT '',
  scmpassword VARCHAR(255) NOT NULL DEFAULT '',
  scmremoterepository VARCHAR(255) NOT NULL DEFAULT '',
  scmusername VARCHAR(255) NOT NULL DEFAULT '',
  scmenvvars VARCHAR(255) NOT NULL DEFAULT '',
  specialtasks TEXT NOT NULL DEFAULT '',
  statsnumbuilds INTEGER UNSIGNED NOT NULL DEFAULT 0,
  status TINYINT UNSIGNED NOT NULL DEFAULT 0,
  title VARCHAR(255) NOT NULL DEFAULT '',
  visits INTEGER UNSIGNED NOT NULL DEFAULT 0,
  workdir VARCHAR(255) NOT NULL DEFAULT '',
  avatar VARCHAR(255) NOT NULL DEFAULT ''
);
EOT;
        if (!Database::setupTable($tableName, $sql)) {
            SystemEvent::raise(SystemEvent::ERROR, "Problems setting up project table.", __METHOD__);
            return false;
        }
        if (!Project_User::install()) {
            return false;
        }
        //
        // Upgrade Project_Build tables
        //
        $tables = Database::getTables();
        $dummyProject = new Project();
        $dummyProject->setAutoSave(false);
        // Never save this dummy project
        foreach ($tables as $table) {
            if (preg_match('/^(projectbuild)(\\d+)$/', $table, $matches)) {
                $dummyProject->setId($matches[2]);
                if (!Project_Build::install($dummyProject)) {
                    return false;
                }
            } elseif (preg_match('/^(projectlog)(\\d+)$/', $table, $matches)) {
                $dummyProject->setId($matches[2]);
                if (!Project_Log::install($dummyProject)) {
                    return false;
                }
            }
        }
        $dummyProject = null;
        unset($dummyProject);
        SystemEvent::raise(SystemEvent::INFO, "All project related tables created.", __METHOD__);
        return true;
    }