break; } } else { set_file_folder_permissions(); $manager = connectToDatabase($dbHostForm, $dbUsernameForm, $dbPassForm, null, $dbPortForm); $dbNameForm = preg_replace('/[^a-zA-Z0-9_\\-]/', '', $dbNameForm); // Drop and create the database anyways $manager->getConnection()->getSchemaManager()->dropAndCreateDatabase($dbNameForm); $manager = connectToDatabase($dbHostForm, $dbUsernameForm, $dbPassForm, $dbNameForm, $dbPortForm); $metadataList = $manager->getMetadataFactory()->getAllMetadata(); $schema = $manager->getConnection()->getSchemaManager()->createSchema(); // Create database schema $tool = new \Doctrine\ORM\Tools\SchemaTool($manager); $tool->createSchema($metadataList); $sysPath = api_get_path(SYS_PATH); finishInstallation($manager, $sysPath, $encryptPassForm, $passForm, $adminLastName, $adminFirstName, $loginForm, $emailForm, $adminPhoneForm, $languageForm, $institutionForm, $institutionUrlForm, $campusForm, $allowSelfReg, $allowSelfRegProf, $installationProfile); include 'install_files.inc.php'; } display_after_install_message($installType); // Hide the "please wait" message sent previously echo '<script>$(\'#pleasewait\').hide(\'fast\');</script>'; } elseif (@$_POST['step1'] || $badUpdatePath) { //STEP 1 : REQUIREMENTS //make sure that proposed path is set, shouldn't be necessary but... if (empty($proposedUpdatePath)) { $proposedUpdatePath = $_POST['updatePath']; } display_requirements($installType, $badUpdatePath, $proposedUpdatePath, $update_from_version_8); } else { // This is the start screen. display_language_selection();
break; case 'installPluginDisc': cbSpoofCheck('plugin'); checkCanAdminPlugins('core.admin'); installPluginDisc(); break; case 'latestVersion': latestVersion(); break; case 'fieldclass': case 'tabclass': case 'pluginclass': tabClass($option, $task, (int) cbGetParam($_REQUEST, 'user', 0)); break; case 'finishinstallation': finishInstallation($option); break; default: break; } function deleteUsers($cid, $inComprofilerOnly = false) { global $_CB_framework; $msg = null; if (!Application::MyUser()->isAuthorizedToPerformActionOnAsset('core.admin', 'com_comprofiler')) { $msg = CBTxt::T('You cannot delete a user. Only higher-level users have this power.'); } if (!$msg && is_array($cid) && count($cid)) { new cbTabs(0, 2, null, false); // loads plugins foreach ($cid as $id) {
/** * Installation command * * @param array $databaseSettings * @param string $version * @param $output * @return bool */ public function processInstallation($databaseSettings, $version, $output) { $this->setDoctrineSettings($this->getHelperSet()); $sqlFolder = $this->getInstallationPath($version); $databaseMap = $this->getDatabaseMap(); // Fixing the version if (!isset($databaseMap[$version])) { $version = $this->getVersionToInstall($version); } if (isset($databaseMap[$version])) { $dbInfo = $databaseMap[$version]; $output->writeln("<comment>Starting creation of database version </comment><info>{$version}... </info>"); $sections = $dbInfo['section']; $sectionsCount = 0; foreach ($sections as $sectionData) { if (is_array($sectionData)) { foreach ($sectionData as $dbInfo) { $databaseName = $dbInfo['name']; $dbList = $dbInfo['sql']; if (!empty($dbList)) { $output->writeln("<comment>Creating database</comment> <info>{$databaseName} ... </info>"); if (empty($dbList)) { $output->writeln("<error>No files to load.</error>"); continue; } else { // Fixing db list foreach ($dbList as &$db) { $db = $sqlFolder . $db; } $command = $this->getApplication()->find('dbal:import'); // Importing sql files. $arguments = array('command' => 'dbal:import', 'file' => $dbList); $input = new ArrayInput($arguments); $command->run($input, $output); // Getting extra information about the installation. $output->writeln("<comment>Database </comment><info>{$databaseName} </info><comment>setup process terminated successfully!</comment>"); } $sectionsCount++; } } } } if (isset($sections) && isset($sections['course'])) { //@todo fix this foreach ($sections['course'] as $courseInfo) { $databaseName = $courseInfo['name']; $output->writeln("Inserting course database in Chamilo: <info>{$databaseName}</info>"); $this->createCourse($this->getHelper('db')->getConnection(), $databaseName); $sectionsCount++; } } // Special migration for chamilo v 1.10 if (isset($sections) && isset($sections['migrations'])) { $sectionsCount = 1; require_once $this->getRootSys() . '/main/inc/lib/database.constants.inc.php'; require_once $this->getRootSys() . '/main/inc/lib/system/session.class.php'; require_once $this->getRootSys() . '/main/inc/lib/chamilo_session.class.php'; require_once $this->getRootSys() . '/main/inc/lib/api.lib.php'; require_once $this->getRootSys() . '/main/inc/lib/text.lib.php'; require_once $this->getRootSys() . '/main/inc/lib/display.lib.php'; require_once $this->getRootSys() . '/main/inc/lib/database.lib.php'; require_once $this->getRootSys() . '/main/inc/lib/custom_pages.class.php'; require_once $this->getRootSys() . '/main/install/install.lib.php'; require_once $this->getRootSys() . '/main/inc/lib/hook/interfaces/base/HookEventInterface.php'; require_once $this->getRootSys() . '/main/inc/lib/hook/interfaces/HookCreateUserEventInterface.php'; require_once $this->getRootSys() . '/main/inc/lib/hook/interfaces/base/HookManagementInterface.php'; require_once $this->getRootSys() . '/main/inc/lib/hook/HookEvent.php'; require_once $this->getRootSys() . '/main/inc/lib/hook/HookCreateUser.php'; require_once $this->getRootSys() . '/main/inc/lib/hook/HookManagement.php'; require_once $this->getRootSys() . '/main/inc/lib/model.lib.php'; require_once $this->getRootSys() . '/main/inc/lib/events.lib.php'; require_once $this->getRootSys() . '/main/inc/lib/extra_field.lib.php'; require_once $this->getRootSys() . '/main/inc/lib/extra_field_value.lib.php'; require_once $this->getRootSys() . '/main/inc/lib/urlmanager.lib.php'; $encoder = $this->getRootSys() . '/src/Chamilo/UserBundle/Security/Encoder.php'; if (file_exists($encoder)) { require_once $encoder; } require_once $this->getRootSys() . '/main/inc/lib/usermanager.lib.php'; $newInstallationPath = $this->getRootSys(); $chashPath = __DIR__ . '/../../../../'; $database = new \Database(); $database::$utcDateTimeClass = 'Chash\\DoctrineExtensions\\DBAL\\Types\\UTCDateTimeType'; $database->connect($databaseSettings, $chashPath, $newInstallationPath); $manager = $database->getManager(); $metadataList = $manager->getMetadataFactory()->getAllMetadata(); $output->writeln("<comment>Creating database structure</comment>"); $manager->getConnection()->getSchemaManager()->createSchema(); // Create database schema $tool = new \Doctrine\ORM\Tools\SchemaTool($manager); $tool->createSchema($metadataList); $portalSettings = $this->getPortalSettings(); $adminSettings = $this->getAdminSettings(); \finishInstallation($manager, $newInstallationPath, $portalSettings['encrypt_method'], $adminSettings['password'], $adminSettings['lastname'], $adminSettings['firstname'], $adminSettings['username'], $adminSettings['email'], $adminSettings['phone'], $adminSettings['language'], $portalSettings['institution'], $portalSettings['institution_url'], $portalSettings['sitename'], false, false); $output->writeln("<comment>Remember to run composer install</comment>"); } if ($sectionsCount == 0) { $output->writeln("<comment>No database section found for creation</comment>"); } $output->writeln("<comment>Check your installation status with </comment><info>chamilo:status</info>"); return true; } else { $output->writeln("<comment>Unknown version: </comment> <info>{$version}</info>"); } return false; }