|
@@ -13,11 +13,9 @@
|
|
|
use Doctrine\ORM\EntityManager;
|
|
|
|
|
|
/* CONSTANTS */
|
|
|
-define('COURSES_HTACCESS_FILENAME', 'htaccess.dist');
|
|
|
+//define('COURSES_HTACCESS_FILENAME', 'htaccess.dist');
|
|
|
define('SYSTEM_CONFIG_FILENAME', 'configuration.dist.php');
|
|
|
|
|
|
-/* COMMON PURPOSE FUNCTIONS */
|
|
|
-
|
|
|
/**
|
|
|
* This function detects whether the system has been already installed.
|
|
|
* It should be used for prevention from second running the installation
|
|
@@ -257,11 +255,12 @@ function check_writable($folder, $suggestion = false)
|
|
|
* This function checks if the given folder is readable
|
|
|
* @param string $folder Full path to a folder
|
|
|
* @param bool $suggestion Whether to show a suggestion or not
|
|
|
+ *
|
|
|
* @return string
|
|
|
*/
|
|
|
function checkReadable($folder, $suggestion = false)
|
|
|
{
|
|
|
- if (is_writable($folder)) {
|
|
|
+ if (is_readable($folder)) {
|
|
|
return Display::label(get_lang('Readable'), 'success');
|
|
|
} else {
|
|
|
if ($suggestion) {
|
|
@@ -275,7 +274,8 @@ function checkReadable($folder, $suggestion = false)
|
|
|
/**
|
|
|
* This function is similar to the core file() function, except that it
|
|
|
* works with line endings in Windows (which is not the case of file())
|
|
|
- * @param string File path
|
|
|
+ * @param string $filename
|
|
|
+ *
|
|
|
* @return array The lines of the file returned as an array
|
|
|
*/
|
|
|
function file_to_array($filename)
|
|
@@ -286,6 +286,7 @@ function file_to_array($filename)
|
|
|
$fp = fopen($filename, 'rb');
|
|
|
$buffer = fread($fp, filesize($filename));
|
|
|
fclose($fp);
|
|
|
+
|
|
|
return explode('<br />', nl2br($buffer));
|
|
|
}
|
|
|
|
|
@@ -303,7 +304,7 @@ function set_file_folder_permissions()
|
|
|
* @param string $url_append The path from your webroot to your chamilo root
|
|
|
* @return bool Result of writing the file
|
|
|
*/
|
|
|
-function write_courses_htaccess_file($url_append)
|
|
|
+/*function write_courses_htaccess_file($url_append)
|
|
|
{
|
|
|
$content = file_get_contents(dirname(__FILE__).'/'.COURSES_HTACCESS_FILENAME);
|
|
|
$content = str_replace('{CHAMILO_URL_APPEND_PATH}', $url_append, $content);
|
|
@@ -313,7 +314,7 @@ function write_courses_htaccess_file($url_append)
|
|
|
return fclose($fp);
|
|
|
}
|
|
|
return false;
|
|
|
-}
|
|
|
+}*/
|
|
|
|
|
|
/**
|
|
|
* Write the main system config file
|
|
@@ -330,8 +331,6 @@ function write_system_config_file($path)
|
|
|
global $urlAppendPath;
|
|
|
global $languageForm;
|
|
|
global $encryptPassForm;
|
|
|
- global $installType;
|
|
|
- global $updatePath;
|
|
|
global $session_lifetime;
|
|
|
global $new_version;
|
|
|
global $new_version_stable;
|
|
@@ -521,15 +520,15 @@ function get_config_param_from_db($param = '')
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * In step 3. Tests establishing connection to the database server.
|
|
|
- * If it's a single database environment the function checks if the database exist.
|
|
|
- * If the database does not exist we check the creation permissions.
|
|
|
- * @param string $dbHostForm DB host
|
|
|
- * @param string $dbUsernameForm DB username
|
|
|
- * @param string $dbPassForm DB password
|
|
|
+ * Connect to the database and returns the entity manager
|
|
|
+ * @param string $dbHostForm DB host
|
|
|
+ * @param string $dbUsernameForm DB username
|
|
|
+ * @param string $dbPassForm DB password
|
|
|
+ * @param string $dbNameForm DB name
|
|
|
+ *
|
|
|
* @return EntityManager
|
|
|
*/
|
|
|
-function testDbConnect($dbHostForm, $dbUsernameForm, $dbPassForm, $dbNameForm)
|
|
|
+function connectToDatabase($dbHostForm, $dbUsernameForm, $dbPassForm, $dbNameForm)
|
|
|
{
|
|
|
$dbParams = array(
|
|
|
'driver' => 'pdo_mysql',
|
|
@@ -920,38 +919,10 @@ function display_requirements(
|
|
|
}
|
|
|
|
|
|
echo '<table class="table">
|
|
|
- <tr>
|
|
|
- <td class="requirements-item">'.api_get_path(CONFIGURATION_PATH).'</td>
|
|
|
- <td class="requirements-value">'.check_writable(api_get_path(CONFIGURATION_PATH)).'</td>
|
|
|
- </tr>
|
|
|
'.$oldConf.'
|
|
|
<tr>
|
|
|
- <td class="requirements-item">'.api_get_path(SYS_UPLOAD_PATH).'users/</td>
|
|
|
- <td class="requirements-value">'.check_writable(api_get_path(SYS_UPLOAD_PATH).'users/').'</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="requirements-item">'.api_get_path(SYS_UPLOAD_PATH).'sessions/</td>
|
|
|
- <td class="requirements-value">'.check_writable(api_get_path(SYS_UPLOAD_PATH).'sessions/').'</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="requirements-item">'.api_get_path(SYS_UPLOAD_PATH).'courses/</td>
|
|
|
- <td class="requirements-value">'.check_writable(api_get_path(SYS_UPLOAD_PATH).'courses/').'</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="requirements-item">'.api_get_path(SYS_ARCHIVE_PATH).'</td>
|
|
|
- <td class="requirements-value">'.check_writable(api_get_path(SYS_ARCHIVE_PATH)).'</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="requirements-item">'.api_get_path(SYS_COURSE_PATH).'</td>
|
|
|
- <td class="requirements-value">'.check_writable(api_get_path(SYS_COURSE_PATH)).' </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="requirements-item">'.api_get_path(SYS_APP_PATH).'home/</td>
|
|
|
- <td class="requirements-value">'.check_writable(api_get_path(SYS_APP_PATH).'home/').'</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="requirements-item">'.api_get_path(SYS_CSS_PATH).'</td>
|
|
|
- <td class="requirements-value">'.check_writable(api_get_path(SYS_CSS_PATH), true).'</td>
|
|
|
+ <td class="requirements-item">'.api_get_path(SYS_UPLOAD_PATH).'</td>
|
|
|
+ <td class="requirements-value">'.check_writable(api_get_path(SYS_UPLOAD_PATH)).'</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td class="requirements-item">'.api_get_path(SYS_PUBLIC_PATH).'</td>
|
|
@@ -981,18 +952,7 @@ function display_requirements(
|
|
|
<td class="requirements-item">'.get_lang('PermissionsForNewFiles').'</td>
|
|
|
<td class="requirements-value">'.$file_perm.' </td>
|
|
|
</tr>
|
|
|
- '.
|
|
|
- //'<tr>
|
|
|
- // <td class="requirements-item">chamilo/searchdb/</td>
|
|
|
- // <td class="requirements-value">'.check_writable('../searchdb/').'</td>
|
|
|
- //</tr>'.
|
|
|
- //'<tr>
|
|
|
- // <td class="requirements-item">'.session_save_path().'</td>
|
|
|
- // <td class="requirements-value">'.(is_writable(session_save_path())
|
|
|
- // ? '<strong><font color="green">'.get_lang('Writable').'</font></strong>'
|
|
|
- // : '<strong><font color="red">'.get_lang('NotWritable').'</font></strong>').'</td>
|
|
|
- //</tr>'.
|
|
|
- '';
|
|
|
+ ';
|
|
|
echo ' </table>';
|
|
|
echo ' </div>';
|
|
|
echo '</div>';
|
|
@@ -1456,7 +1416,7 @@ function display_database_settings_form(
|
|
|
$database_exists_text = '';
|
|
|
$manager = null;
|
|
|
try {
|
|
|
- $manager = testDbConnect(
|
|
|
+ $manager = connectToDatabase(
|
|
|
$dbHostForm,
|
|
|
$dbUsernameForm,
|
|
|
$dbPassForm,
|
|
@@ -1898,6 +1858,8 @@ function check_course_script_interpretation($course_dir, $course_attempt_name, $
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * Save settings values
|
|
|
+ *
|
|
|
* @param string $organizationName
|
|
|
* @param string $organizationUrl
|
|
|
* @param string $siteName
|
|
@@ -1943,6 +1905,9 @@ function installSettings(
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * Executes DB changes based in the classes defined in
|
|
|
+ * src/Chamilo/CoreBundle/Migrations/Schema/*
|
|
|
+ *
|
|
|
* @param string $chamiloVersion
|
|
|
* @param string $dbNameForm
|
|
|
* @param string $dbUsernameForm
|
|
@@ -1954,8 +1919,8 @@ function installSettings(
|
|
|
function migrate($chamiloVersion, $dbNameForm, $dbUsernameForm, $dbPassForm, $dbHostForm, $manager)
|
|
|
{
|
|
|
$debug = true;
|
|
|
- // Config doctrine migrations
|
|
|
|
|
|
+ // Config doctrine migrations
|
|
|
$db = \Doctrine\DBAL\DriverManager::getConnection(array(
|
|
|
'dbname' => $dbNameForm,
|
|
|
'user' => $dbUsernameForm,
|
|
@@ -1970,7 +1935,8 @@ function migrate($chamiloVersion, $dbNameForm, $dbUsernameForm, $dbPassForm, $db
|
|
|
|
|
|
$config = new \Doctrine\DBAL\Migrations\Configuration\Configuration($db);
|
|
|
|
|
|
- // Table name that will store migrations log (will be created automatically, default name is: doctrine_migration_versions)
|
|
|
+ // Table name that will store migrations log (will be created automatically,
|
|
|
+ // default name is: doctrine_migration_versions)
|
|
|
$config->setMigrationsTableName('version');
|
|
|
// Namespace of your migration classes, do not forget escape slashes, do not add last slash
|
|
|
$config->setMigrationsNamespace('Chamilo\CoreBundle\Migrations\Schema\V'.$chamiloVersion);
|
|
@@ -1991,6 +1957,7 @@ function migrate($chamiloVersion, $dbNameForm, $dbUsernameForm, $dbPassForm, $db
|
|
|
// Retrieve SQL queries that should be run to migrate you schema to $to version,
|
|
|
// if $to == null - schema will be migrated to latest version
|
|
|
$versions = $migration->getSql($to);
|
|
|
+
|
|
|
if ($debug) {
|
|
|
$nl = '<br>';
|
|
|
foreach ($versions as $version => $queries) {
|
|
@@ -2004,7 +1971,8 @@ function migrate($chamiloVersion, $dbNameForm, $dbUsernameForm, $dbPassForm, $db
|
|
|
}
|
|
|
|
|
|
try {
|
|
|
- $migration->migrate($to); // Execute migration!
|
|
|
+ // Execute migration!
|
|
|
+ $migration->migrate($to);
|
|
|
if ($debug) {
|
|
|
echo 'DONE'.$nl;
|
|
|
}
|
|
@@ -2016,6 +1984,10 @@ function migrate($chamiloVersion, $dbNameForm, $dbUsernameForm, $dbPassForm, $db
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ *
|
|
|
+ * After the schema was created (table creation), the function adds
|
|
|
+ * admin/platform information.
|
|
|
+ *
|
|
|
* @param EntityManager $manager
|
|
|
* @param string $sysPath
|
|
|
* @param string $encryptPassForm
|
|
@@ -2071,7 +2043,7 @@ function finishInstallation(
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- // Insert users
|
|
|
+ // Insert admin and Anonymous users.
|
|
|
|
|
|
$sql = "INSERT INTO user (user_id, lastname, firstname, username, password, auth_source, email, status, official_code, phone, creator_id, registration_date, expiration_date,active,openid,language) VALUES
|
|
|
(1, '$adminLastName','$adminFirstName','$loginForm','$passToStore','".PLATFORM_AUTH_SOURCE."','$emailForm',1,'ADMIN','$adminPhoneForm',1,NOW(),NULL,'1',NULL,'$languageForm'),
|
|
@@ -2082,7 +2054,7 @@ function finishInstallation(
|
|
|
$sql = "INSERT INTO admin VALUES(1, 1)";
|
|
|
Database::query($sql);
|
|
|
|
|
|
- // The chosen during the installation platform language should be enabled.
|
|
|
+ // Set default language
|
|
|
$sql = "UPDATE language SET available=1 WHERE dokeos_folder = '$languageForm'";
|
|
|
Database::query($sql);
|
|
|
|