Esempio n. 1
0
 /**
  * Installer Step 4
  */
 protected function runStep4()
 {
     $sqlFiles = array();
     $files = \fpcm\classes\database::getTableFiles();
     foreach ($files as $value) {
         $sqlFiles[substr(basename($value, '.yml'), 2)] = base64_encode(str_rot13(base64_encode($value)));
     }
     $this->view->addJsVars(array('fpcmSqlFilesCount' => count($sqlFiles), 'fpcmSqlFiles' => $sqlFiles, 'fpcmSqlFileExec' => $this->lang->translate('INSTALLER_CREATETABLES_STEP')));
 }
Esempio n. 2
0
 /**
  * Änderungen an Tabellen-Struktur vornehmen
  * @return bool
  */
 private function alterTables()
 {
     $res = true;
     if ($this->checkVersion('3.0.4')) {
         $res = $res && $this->dbcon->insert(\fpcm\classes\database::tableCronjobs, "`id`, `cjname`, `lastexec`", "7, 'dbBackup', 0");
     }
     if ($this->checkVersion('3.1.4')) {
         $res = $res && $this->dbcon->insert(\fpcm\classes\database::tableCronjobs, "`id`, `cjname`, `lastexec`", "8, 'fileindex', 0");
     }
     if ($this->checkVersion('3.1.0-rc1')) {
         $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableArticles, 'ADD', '`imagepath`', 'TEXT NOT NULL');
         $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableArticles, 'ADD INDEX', '( `title` )', '', false);
         $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableArticles, 'ADD INDEX', '( `categories` )', '', false);
         $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableArticles, 'ADD INDEX', '( `createuser` )', '', false);
         $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableArticles, 'ADD INDEX', '( `createtime` )', '', false);
         $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableArticles, 'ADD INDEX', '( `pinned` )', '', false);
         $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableArticles, 'ADD INDEX', '( `postponed` )', '', false);
         $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableArticles, 'ADD INDEX', '( `deleted` )', '', false);
         $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableArticles, 'ADD INDEX', '( `approval` )', '', false);
         $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableArticles, 'ADD INDEX', '( `draft` )', '', false);
     }
     if ($this->checkVersion('3.2.0-dev')) {
         if (method_exists($this->dbcon, 'getDbtype') && $this->dbcon->getDbtype() == 'pgsql') {
             $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableCronjobs, 'ADD', '"execinterval"', '  BIGINT', false);
         } else {
             $res = $res && $this->dbcon->alter(\fpcm\classes\database::tablePermissions, 'CHANGE', '`permissionData`', '`permissiondata` BLOB NOT NULL', false);
             $res = $res && $this->dbcon->alter(\fpcm\classes\database::tablePermissions, 'CHANGE', '`rollId`', '`rollid` bigint(20) NOT NULL', false);
             $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableCategories, 'CHANGE', '`iconPath`', '`iconpath` text NOT NULL', false);
             $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableSessions, 'CHANGE', '`userId`', '`userid` BIGINT( 20 ) NOT NULL ', false);
             $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableSessions, 'CHANGE', '`sessionId`', '`sessionid` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ', false);
             $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableCronjobs, 'ADD', '`execinterval`', '  BIGINT( 20 ) NOT NULL', false);
         }
         $rows = array('anonymizeIps' => 2419200, 'clearLogs' => 2419200, 'clearTemp' => 604800, 'fmThumbs' => 604800, 'postponedArticles' => 600, 'updateCheck' => 86400, 'dbBackup' => 604800, 'fileindex' => 86400);
         foreach ($rows as $key => $value) {
             $res = $res && $this->dbcon->update(\fpcm\classes\database::tableCronjobs, array('execinterval'), array($value, $key), "cjname = ? AND execinterval = 0");
         }
     }
     if ($this->checkVersion('3.3.0-a1') && (!method_exists($this->dbcon, 'getDbtype') || $this->dbcon->getDbtype() == 'mysql')) {
         $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableComments, 'ADD INDEX', '( `name` )', '', false);
         $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableComments, 'ADD INDEX', '( `email` )', '', false);
         $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableComments, 'ADD INDEX', '( `website` )', '', false);
         $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableComments, 'ADD INDEX', '( `private` )', '', false);
         $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableComments, 'ADD INDEX', '( `approved` )', '', false);
         $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableComments, 'ADD INDEX', '( `spammer` )', '', false);
         $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableComments, 'ADD INDEX', '( `createtime` )', '', false);
         $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableCronjobs, 'ADD UNIQUE', '( `cjname` )', '', false);
         $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableCronjobs, 'ADD INDEX', '( `lastexec` )', '', false);
     }
     if ($this->checkVersion('3.3.0-rc6') && (!method_exists($this->dbcon, 'getDbtype') || $this->dbcon->getDbtype() == 'mysql')) {
         $res = $res && $this->dbcon->alter(\fpcm\classes\database::tableConfig, 'ADD UNIQUE', '( `config_name` )', '', false);
     }
     if (method_exists($this->dbcon, 'getDbtype') && $this->checkVersion('3.3.0-rc6') && $this->dbcon->getDbtype() == 'pgsql') {
         $data = 'CREATE INDEX ' . $this->dbcon->getDbprefix() . '_comments_name ON ' . $this->dbcon->getDbprefix() . '_comments USING btree (name);' . 'CREATE INDEX ' . $this->dbcon->getDbprefix() . '_comments_email ON ' . $this->dbcon->getDbprefix() . '_comments USING btree (email);' . 'CREATE INDEX ' . $this->dbcon->getDbprefix() . '_comments_website ON ' . $this->dbcon->getDbprefix() . '_comments USING btree (website);' . 'CREATE INDEX ' . $this->dbcon->getDbprefix() . '_comments_private ON ' . $this->dbcon->getDbprefix() . '_comments USING btree (private);' . 'CREATE INDEX ' . $this->dbcon->getDbprefix() . '_comments_approved ON ' . $this->dbcon->getDbprefix() . '_comments USING btree (approved);' . 'CREATE INDEX ' . $this->dbcon->getDbprefix() . '_comments_spammer ON ' . $this->dbcon->getDbprefix() . '_comments USING btree (spammer);' . 'CREATE INDEX ' . $this->dbcon->getDbprefix() . '_comments_createtime ON ' . $this->dbcon->getDbprefix() . '_comments USING btree (createtime);' . 'CREATE UNIQUE INDEX ' . $this->dbcon->getDbprefix() . '_cronjobs_cjname ON ' . $this->dbcon->getDbprefix() . '_cronjobs USING btree (cjname);' . 'CREATE INDEX ' . $this->dbcon->getDbprefix() . '_cronjobs_lastexec ON ' . $this->dbcon->getDbprefix() . '_cronjobs USING btree (lastexec);' . 'CREATE UNIQUE INDEX ' . $this->dbcon->getDbprefix() . '_config_config_name ON ' . $this->dbcon->getDbprefix() . '_config USING btree (config_name);';
         $path = \fpcm\classes\baseconfig::$tempDir . 'indices.sql';
         file_put_contents($path, $data);
         $res = $res && $this->dbcon->execSqlFile($path);
         unlink($path);
     }
     if (!method_exists($this->dbcon, 'checkTableStructure')) {
         return $res;
     }
     $files = \fpcm\classes\database::getTableFiles();
     foreach ($files as $file) {
         $this->dbcon->checkTableStructure(basename($file, '.yml'));
     }
     if ($this->checkVersion('3.4.0-b2')) {
         $res = $res && $this->dbcon->insert(\fpcm\classes\database::tableCronjobs, "cjname, lastexec, execinterval", "'removeRevisions', 0, 2419200");
     }
     if ($this->checkVersion('3.4.0-b5')) {
         $this->dbcon->createIndex(\fpcm\classes\database::tableRevisions, 'hashsum_idx', 'hashsum');
     }
     if ($this->checkVersion('3.4.0-rc1')) {
         $this->dbcon->alter(\fpcm\classes\database::tableFiles, 'DROP', 'subfolder', '', false);
     }
     return $res;
 }