public function performChecks() { if (!isset($this->options)) { return; } $test = AJXP_Utils::cleanDibiDriverParameters($this->options["SQL_DRIVER"]); if (!count($test)) { throw new Exception("Please define an SQL connexion in the core configuration"); } }
public function installSQLTables($param) { $p = AJXP_Utils::cleanDibiDriverParameters(isset($param) && isset($param["SQL_DRIVER"]) ? $param["SQL_DRIVER"] : $this->sqlDriver); return AJXP_Utils::runCreateTablesQuery($p, $this->getBaseDir() . "/create.sql"); }
public function upgradeDB() { $confDriver = ConfService::getConfStorageImpl(); $authDriver = ConfService::getAuthDriverImpl(); $logger = AJXP_Logger::getInstance(); if (is_a($confDriver, "sqlConfDriver")) { $conf = AJXP_Utils::cleanDibiDriverParameters($confDriver->getOption("SQL_DRIVER")); if (!is_array($conf) || !isset($conf["driver"])) { return "Nothing to do"; } switch ($conf["driver"]) { case "sqlite": case "sqlite3": $ext = ".sqlite"; break; case "postgre": $ext = ".pgsql"; break; case "mysql": $ext = is_file($this->workingFolder . "/" . $this->dbUpgrade . ".mysql") ? ".mysql" : ".sql"; break; default: return "ERROR!, DB driver " . $conf["driver"] . " not supported yet in __FUNCTION__"; } $file = $this->dbUpgrade . $ext; if (!is_file($this->workingFolder . "/" . $file)) { return "Nothing to do."; } $sqlInstructions = file_get_contents($this->workingFolder . "/" . $file); $parts = array_map("trim", explode("/* SEPARATOR */", $sqlInstructions)); $results = array(); $errors = array(); dibi::connect($conf); dibi::begin(); foreach ($parts as $sqlPart) { if (empty($sqlPart)) { continue; } try { dibi::nativeQuery($sqlPart); $results[] = $sqlPart; } catch (DibiException $e) { $errors[] = $sqlPart . " (" . $e->getMessage() . ")"; } } dibi::commit(); dibi::disconnect(); if (!count($errors)) { return "Database successfully upgraded"; } else { return "Database upgrade failed. <br>The following statements were executed : <br>" . implode("<br>", $results) . ",<br><br> The following statements failed : <br>" . implode("<br>", $errors) . "<br><br> You should manually upgrade your DB."; } } }
/** * Helpers to test SQL connection and send a test email. * @param $action * @param $httpVars * @param $fileVars * @throws Exception */ public function testConnexions($action, $httpVars, $fileVars) { $data = array(); AJXP_Utils::parseStandardFormParameters($httpVars, $data, null, "DRIVER_OPTION_"); if ($action == "boot_test_sql_connexion") { $p = AJXP_Utils::cleanDibiDriverParameters($data["db_type"]); if ($p["driver"] == "sqlite3") { $dbFile = AJXP_VarsFilter::filter($p["database"]); if (!file_exists(dirname($dbFile))) { mkdir(dirname($dbFile), 0755, true); } } // Should throw an exception if there was a problem. dibi::connect($p); dibi::disconnect(); echo 'SUCCESS:Connexion established!'; } else { if ($action == "boot_test_mailer") { $mailerPlug = AJXP_PluginsService::findPluginById("mailer.phpmailer-lite"); $mailerPlug->loadConfigs(array("MAILER" => $data["MAILER_ENABLE"]["MAILER_SYSTEM"])); $mailerPlug->sendMail(array("adress" => $data["MAILER_ENABLE"]["MAILER_ADMIN"]), "Pydio Test Mail", "Body of the test", array("adress" => $data["MAILER_ENABLE"]["MAILER_ADMIN"])); echo 'SUCCESS:Mail sent to the admin adress, please check it is in your inbox!'; } } }
public function installSQLTables($param) { $p = AJXP_Utils::cleanDibiDriverParameters($param["SQL_DRIVER"]); $res = AJXP_Utils::runCreateTablesQuery($p, $this->getBaseDir() . "/create.sql"); // SET DB VERSION if (defined('AJXP_VERSION_DB') && AJXP_VERSION_DB != "##DB_VERSION##") { dibi::connect($p); dibi::query("UPDATE [ajxp_version] SET [db_build]=%i", intval(AJXP_VERSION_DB)); dibi::disconnect(); } return $res; }
public function testSQLConnexion($httpVars) { $p = AJXP_Utils::cleanDibiDriverParameters($httpVars["SQL_CUSTOM_DRIVER"]); if ($p["driver"] == "sqlite3") { $dbFile = AJXP_VarsFilter::filter($p["database"]); if (!file_exists(dirname($dbFile))) { mkdir(dirname($dbFile), 0755, true); } } // Should throw an exception if there was a problem. dibi::connect($p); $cTableName = $httpVars["SQL_CUSTOM_TABLE"]; $cUserField = $httpVars["SQL_CUSTOM_TABLE_USER_FIELD"]; $cUserValue = $httpVars["SQL_CUSTOM_TABLE_TEST_USER"]; $res = dibi::query("SELECT COUNT(*) FROM [" . $cTableName . "] WHERE [" . $cUserField . "]=%s", $cUserValue); $found = intval($res->fetchSingle()) > 0; if (!$found) { throw new Exception("Could connect to the DB but could not find user " . $cUserValue); } dibi::disconnect(); echo "SUCCESS:Connexion established and user {$cUserValue} found in DB"; }
rename(AJXP_INSTALL_PATH . "/conf/bootstrap_context.php" . ".new-" . date("Ymd"), AJXP_INSTALL_PATH . "/conf/bootstrap_context.php"); } // FORCE bootstrap_context copy, otherwise it won't reboot if (is_file(AJXP_INSTALL_PATH . "/conf/bootstrap_repositories.php" . ".new-" . date("Ymd"))) { rename(AJXP_INSTALL_PATH . "/conf/bootstrap_repositories.php", AJXP_INSTALL_PATH . "/conf/bootstrap_repositories.php.pre-update"); rename(AJXP_INSTALL_PATH . "/conf/bootstrap_repositories.php" . ".new-" . date("Ymd"), AJXP_INSTALL_PATH . "/conf/bootstrap_repositories.php"); } echo "The bootstrap_context and bootstrap_repositories files were replaced by the new version, the .pre-update version is kept."; $dbInst = "\n/* SEPARATOR */\nALTER TABLE ajxp_user_rights ADD INDEX (login), ADD INDEX (repo_uuid);\n/* SEPARATOR */\nCREATE TABLE IF NOT EXISTS `ajxp_changes` (\n `seq` int(20) NOT NULL AUTO_INCREMENT,\n `repository_identifier` TEXT NOT NULL,\n `node_id` bigint(20) NOT NULL,\n `type` enum('create','delete','path','content') NOT NULL,\n `source` text NOT NULL,\n `target` text NOT NULL,\n PRIMARY KEY (`seq`),\n KEY `node_id` (`node_id`,`type`)\n);\n/* SEPARATOR */\nCREATE TABLE IF NOT EXISTS `ajxp_index` (\n `node_id` int(20) NOT NULL AUTO_INCREMENT,\n `node_path` text NOT NULL,\n `bytesize` bigint(20) NOT NULL,\n `md5` varchar(32) NOT NULL,\n `mtime` int(11) NOT NULL,\n `repository_identifier` text NOT NULL,\n PRIMARY KEY (`node_id`)\n);\n/* SEPARATOR */\nDROP TRIGGER IF EXISTS `LOG_DELETE`;\n/* SEPARATOR */\nCREATE TRIGGER `LOG_DELETE` AFTER DELETE ON `ajxp_index`\nFOR EACH ROW INSERT INTO ajxp_changes (repository_identifier, node_id,source,target,type)\n VALUES (old.repository_identifier, old.node_id, old.node_path, 'NULL', 'delete');\n/* SEPARATOR */\nDROP TRIGGER IF EXISTS `LOG_INSERT`;\n/* SEPARATOR */\nCREATE TRIGGER `LOG_INSERT` AFTER INSERT ON `ajxp_index`\nFOR EACH ROW INSERT INTO ajxp_changes (repository_identifier, node_id,source,target,type)\n VALUES (new.repository_identifier, new.node_id, 'NULL', new.node_path, 'create');\n/* SEPARATOR */\nDROP TRIGGER IF EXISTS `LOG_UPDATE`;\n/* SEPARATOR */\nCREATE TRIGGER `LOG_UPDATE` AFTER UPDATE ON `ajxp_index`\nFOR EACH ROW INSERT INTO ajxp_changes (repository_identifier, node_id,source,target,type)\n VALUES (new.repository_identifier, new.node_id, old.node_path, new.node_path, CASE old.node_path = new.node_path WHEN true THEN 'content' ELSE 'path' END);\n/* SEPARATOR */\nCREATE TABLE `ajxp_log2` LIKE `ajxp_log.back`;\n/* SEPARATOR */\nINSERT `ajxp_log.back` SELECT * FROM `ajxp_log`;\n/* SEPARATOR */\nCREATE TABLE `ajxp_log2` LIKE `ajxp_log`;\n/* SEPARATOR */\nINSERT `ajxp_log2` SELECT * FROM `ajxp_log`;\n/* SEPARATOR */\nALTER TABLE `ajxp_log2` ADD `source` VARCHAR( 255 ) NOT NULL AFTER `user` , ADD INDEX ( `source` ) ;\n/* SEPARATOR */\nUPDATE `ajxp_log2` INNER JOIN ajxp_log ON ajxp_log2.id=ajxp_log.id SET ajxp_log2.source = ajxp_log.message, ajxp_log2.message = SUBSTRING_INDEX(SUBSTRING_INDEX(ajxp_log.params, '\t', 1), '\t', -1),ajxp_log2.params = SUBSTRING_INDEX(SUBSTRING_INDEX(ajxp_log.params, '\t', 2), '\t', -1);\n/* SEPARATOR */\nDROP TABLE `ajxp_log`;\n/* SEPARATOR */\nRENAME TABLE `ajxp_log2` TO `ajxp_log`;\n"; $confDriver = ConfService::getConfStorageImpl(); $authDriver = ConfService::getAuthDriverImpl(); $logger = AJXP_Logger::getInstance(); if (is_a($confDriver, "sqlConfDriver")) { $test = $confDriver->getOption("SQL_DRIVER"); if (!isset($test["driver"])) { $test = AJXP_Utils::cleanDibiDriverParameters($confDriver->getOption("SQL_DRIVER")); } if (is_array($test) && isset($test["driver"]) && $test["driver"] == "mysql") { echo "Upgrading MYSQL database ..."; $parts = array_map("trim", explode("/* SEPARATOR */", $dbInst)); $results = array(); $errors = array(); require_once AJXP_BIN_FOLDER . "/dibi.compact.php"; dibi::connect($test); dibi::begin(); foreach ($parts as $sqlPart) { if (empty($sqlPart)) { continue; } try { dibi::nativeQuery($sqlPart);
/** * Install SQL table using a dibi driver data * @param $param array("SQL_DRIVER" => $dibiDriverData) * @return mixed */ public function installSQLTables($param) { $base = basename($this->getBaseDir()); if ($base == "core.mailer") { $p = AJXP_Utils::cleanDibiDriverParameters($param["SQL_DRIVER"]); return AJXP_Utils::runCreateTablesQuery($p, $this->getBaseDir() . "/create.sql"); } return true; }