Removing "log.class.php" using monolog in order to debug code

skala
Julio Montoya 13 years ago
parent c4eb71fb2a
commit 6a4477262c
  1. 104
      main/inc/global.inc.php
  2. 6
      main/inc/lib/database.lib.php
  3. 222
      main/inc/lib/log.class.php
  4. 16
      main/inc/lib/mail.lib.inc.php
  5. 30
      main/inc/lib/main_api.lib.php
  6. 90
      main/install/db_main.sql
  7. 36
      main/install/i_database.class.php
  8. 34
      main/install/index.php
  9. 16
      main/install/install.class.php
  10. 9
      main/install/install.lib.php
  11. 21
      main/install/install_db.inc.php
  12. 16
      main/install/update-configuration.inc.php
  13. 2
      main/install/update-db-1.6.x-1.8.0.inc.php
  14. 5
      main/install/update-db-1.8.0-1.8.2.inc.php
  15. 4
      main/install/update-db-1.8.2-1.8.3.inc.php
  16. 4
      main/install/update-db-1.8.3-1.8.4.inc.php
  17. 6
      main/install/update-db-1.8.4-1.8.5.inc.php
  18. 30
      main/install/update-db-1.8.5-1.8.6.inc.php
  19. 35
      main/install/update-db-1.8.6-1.8.6.1.inc.php
  20. 54
      main/install/update-db-1.8.6.1-1.8.6.2.inc.php
  21. 77
      main/install/update-db-1.8.6.2-1.8.7.inc.php
  22. 132
      main/install/update-db-1.8.7-1.8.8.inc.php
  23. 288
      main/install/update-db-1.8.8-1.9.0.inc.php
  24. 10
      main/install/update-db-1.9.0-1.10.0.inc.php
  25. 85
      main/install/update-db-scorm-1.6.x-1.8.0.inc.php
  26. 25
      main/install/update-files-1.6.x-1.8.0.inc.php
  27. 2
      main/install/update-files-1.8.3-1.8.4.inc.php
  28. 66
      main/install/update-files-1.8.4-1.8.5.inc.php
  29. 11
      main/install/update-files-1.8.5-1.8.6.inc.php
  30. 2
      main/install/update-files-1.8.6-1.8.6.1.inc.php
  31. 9
      main/install/update-files-1.8.6.1-1.8.6.2.inc.php
  32. 2
      main/install/update-files-1.8.6.2-1.8.7.inc.php
  33. 2
      main/install/update-files-1.8.7-1.8.8.inc.php
  34. 2
      main/install/update-files-1.8.8-1.9.0.inc.php

@ -49,12 +49,13 @@ if (file_exists($main_configuration_file_path)) {
}
//Redirects to the main/install/ page
/*
if (!$already_installed) {
$global_error_code = 2;
// The system has not been installed yet.
require $includePath.'/global_error_message.inc.php';
die();
}
}*/
// Ensure that _configuration is in the global scope before loading
// main_api.lib.php. This is particularly helpful for unit tests
@ -117,6 +118,7 @@ use Silex\Application;
$app = new Application();
$app['configuration_file'] = $main_configuration_file_path;
$app['conf'] = $_configuration;
//require_once __DIR__.'/../../resources/config/prod.php';
require_once __DIR__.'/../../resources/config/dev.php';
@ -187,58 +189,45 @@ $app['twig'] = $app->share($app->extend('twig', function($twig, $app) {
}));
//Setting Doctrine service provider (DBAL)
$app->register(new Silex\Provider\DoctrineServiceProvider(), array(
'db.options' => array(
'driver' => 'pdo_mysql',
'dbname' => $_configuration['main_database'],
'user' => $_configuration['db_user'],
'password' => $_configuration['db_password'],
'host' => $_configuration['db_host'],
)
));
//Setting Doctrine ORM
$app->register(new Dflydev\Silex\Provider\DoctrineOrm\DoctrineOrmServiceProvider, array(
"orm.proxies_dir" => $app['db.orm.proxies_dir'],
"orm.em.options" => array(
"mappings" => array(
array(
"type" => "annotation",
"namespace" => "Entity",
"path" => api_get_path(INCLUDE_PATH).'Entity',
)
if (isset($_configuration['main_database'])) {
$app->register(new Silex\Provider\DoctrineServiceProvider(), array(
'db.options' => array(
'driver' => 'pdo_mysql',
'dbname' => $_configuration['main_database'],
'user' => $_configuration['db_user'],
'password' => $_configuration['db_password'],
'host' => $_configuration['db_host'],
)
));
//Setting Doctrine ORM
$app->register(new Dflydev\Silex\Provider\DoctrineOrm\DoctrineOrmServiceProvider, array(
"orm.proxies_dir" => $app['db.orm.proxies_dir'],
"orm.em.options" => array(
"mappings" => array(
array(
"type" => "annotation",
"namespace" => "Entity",
"path" => api_get_path(INCLUDE_PATH).'Entity',
)
),
),
),
));
//Setting Doctrine2 extensions
));
$timestampableListener = new \Gedmo\Timestampable\TimestampableListener();
$app['db.event_manager']->addEventSubscriber($timestampableListener);
$sluggableListener = new \Gedmo\Sluggable\SluggableListener();
$app['db.event_manager']->addEventSubscriber($sluggableListener);
//Setting Doctrine2 extensions
$sortableListener = new \Gedmo\Sortable\SortableListener();
$app['db.event_manager']->addEventSubscriber($sortableListener);
$timestampableListener = new \Gedmo\Timestampable\TimestampableListener();
$app['db.event_manager']->addEventSubscriber($timestampableListener);
$sluggableListener = new \Gedmo\Sluggable\SluggableListener();
$app['db.event_manager']->addEventSubscriber($sluggableListener);
//Testing with another silex service provider
/*
// Register Doctrine ORM
$app->register(new Nutwerk\Provider\DoctrineORMServiceProvider(), array(
'db.orm.proxies_dir' => $app['db.orm.proxies_dir'],
'db.orm.proxies_namespace' => 'DoctrineProxy',
'db.orm.cache' =>
!$app['debug'] && extension_loaded('apc') ? new ApcCache() : new ArrayCache(),
'db.orm.auto_generate_proxies' => true,
'db.orm.entities' => array(array(
'type' => 'annotation', // entity definition
'path' => api_get_path(INCLUDE_PATH).'Entity',
'namespace' => 'Entity', // your classes namespace
)),
));*/
$sortableListener = new \Gedmo\Sortable\SortableListener();
$app['db.event_manager']->addEventSubscriber($sortableListener);
}
//Creating Chamilo service provider
use Silex\ServiceProviderInterface;
@ -257,7 +246,7 @@ class ChamiloServiceProvider implements ServiceProviderInterface {
//Registering Chamilo service provider
$app->register(new ChamiloServiceProvider(), array());
//Controllers
//Controllers as services
$app->register(new Silex\Provider\ServiceControllerServiceProvider());
$app['pages.controller'] = $app->share(function() use ($app) {
@ -265,11 +254,12 @@ $app['pages.controller'] = $app->share(function() use ($app) {
});
//Manage error messages
/*
$app->error(function (\Exception $e, $code) use ($app) {
if ($app['debug']) {
//return;
}
if (isset($code)) {
switch ($code) {
case 404:
@ -289,13 +279,12 @@ $app->error(function (\Exception $e, $code) use ($app) {
$response = $app['template']->render_layout('error.tpl');
return new Response($response);
});
*
*/
/*
use Symfony\Component\HttpKernel\Debug\ErrorHandler;
ErrorHandler::register();
*/
use Symfony\Component\HttpFoundation\RedirectResponse;
//Filters
$app->before(function() use ($app) {
@ -305,7 +294,7 @@ $app->before(function() use ($app) {
}
if (!file_exists($app['configuration_file'])) {
$app->abort(500, "Chamilo has not been installed"); //error 2
return new RedirectResponse(api_get_path(WEB_CODE_PATH).'install');
}
//$app['request']->getSession()->start();
});
@ -349,11 +338,6 @@ require_once $lib_path.'online.inc.php';
/* DATABASE CONNECTION */
// @todo: this shouldn't be done here. It should be stored correctly during installation.
if (empty($_configuration['statistics_database']) && $already_installed) {
$_configuration['statistics_database'] = $_configuration['main_database'];
}
global $database_connection;
// Connect to the server database and select the main chamilo database.
if (!($conn_return = @Database::connect(
@ -363,11 +347,11 @@ if (!($conn_return = @Database::connect(
'password' => $_configuration['db_password'],
'persistent' => $_configuration['db_persistent_connection'] // When $_configuration['db_persistent_connection'] is set, it is expected to be a boolean type.
)))) {
$app->abort(500, "Database is unavailable"); //error 3
//$app->abort(500, "Database is unavailable"); //error 3
}
if (!$_configuration['db_host']) {
$app->abort(500, "Database is unavailable"); //error 3
//$app->abort(500, "Database is unavailable"); //error 3
}
@ -393,7 +377,7 @@ if (!empty($_configuration['multiple_access_urls'])) {
Database::query("set session sql_mode='';");
if (!Database::select_db($_configuration['main_database'], $database_connection)) {
$app->abort(500, "Database is unavailable"); //error 3
//$app->abort(500, "Database is unavailable"); //error 3
}
/* Initialization of the default encodings */

@ -1003,11 +1003,11 @@ class Database {
*/
private static function format_table_name($database, $table) {
global $_configuration;
if ($_configuration['single_database']) {
/*if ($_configuration['single_database']) {
$table_name = '`'.$database.'`.`'.$table.'`';
} else {
} else {*/
$table_name = '`'.$database.$_configuration['db_glue'].$table.'`';
}
//}
return $table_name;
}

@ -1,222 +0,0 @@
<?php
use Monolog\Logger;
/**
* Since static constructors do not exist in php the line below serves as a
* substitute.
*
* Log is used by install which do not use autoload at the moment. If it becomes
* the case then the line below may/should be moved to the main autoloading
* function.
*/
Log::register_autoload();
/**
* Provides access to the main log - i.e. stderr - and allows to register events.
* It is a facade to the monolog library:
*
* Log::error('message');
* Log::warning('message');
* ...
*
*
* Note:
* This class uses a static approach which has the benefit of being simpler but do
* no allow as much freedom as using an object approche. Another approach could be
*
* Chamilo::log()->error('message');
* Chamilo::log()->warning('message');
*
* To somewhat alleviate this issue the user can register a different logger if hew
* wants.
*
* @license see /license.txt
* @author Laurent Opprecht <laurent@opprecht.info> for the Univesity of Geneva
*/
class Log
{
public static function register_autoload()
{
static $has_run = false;
if ($has_run) {
return true;
}
$directory = api_get_path(SYS_PATH) . 'vendor';
if (!class_exists('Doctrine\Common\ClassLoader', false)) {
require_once $directory . '/doctrine/common/lib/Doctrine/Common/ClassLoader.php';
}
$loader = new Doctrine\Common\ClassLoader('Monolog', $directory);
$loader->register();
$has_run = true;
}
/**
*
* @return \Monolog\Logger
*/
public static function default_logger()
{
$name = 'chamilo';
$result = new Logger($name);
$handler = new Monolog\Handler\StreamHandler('php://stderr');
$handler->setFormatter(new Monolog\Formatter\LineFormatter('[%datetime%] [%level_name%] [%channel%] %message%' . PHP_EOL, 'Y-m-d H:i:s')); //%context% %extra%
$result->pushHandler($handler);
return $result;
}
private static $logger = null;
/**
*
* @return \Monolog\Logger
*/
public static function logger()
{
if (empty(self::$logger)) {
self::$logger = self::default_logger();
}
return self::$logger;
}
public static function set_logger($value)
{
self::$logger = $value;
}
/**
* Returns the
* @param type $index
* @return type
*/
public static function frame($index)
{
$result = debug_backtrace();
return isset($result[$index]) ? $result[$index] : array();
}
public static function write($level, $message, $context = array())
{
/*
* Note that the same could be done with a monolog processor.
*/
if (!isset($context['file'])) {
$trace = debug_backtrace();
$trace = $trace[1];
$context['file'] = $trace['file'];
$context['line'] = $trace['line'];
}
$file = $context['file'];
$root = realpath(api_get_path(SYS_PATH));
$file = str_replace($root, '', $file);
$file = trim($file, DIRECTORY_SEPARATOR);
$line = $context['line'];
$line = str_pad($line, 4, ' ', STR_PAD_LEFT);
$message = "[$file:$line] " . $message;
self::logger()->addRecord($level, $message, $context);
}
/**
* Adds a log record at the DEBUG level.
*
* This method allows to have an easy ZF compatibility.
*
* @param string $message The log message
* @param array $context The log context
* @return Boolean Whether the record has been processed
*/
public static function debug($message, array $context = array())
{
return self::write(Logger::DEBUG, $message, $context);
}
/**
* Adds a log record at the INFO level.
*
* This method allows to have an easy ZF compatibility.
*
* @param string $message The log message
* @param array $context The log context
* @return Boolean Whether the record has been processed
*/
public static function info($message, array $context = array())
{
return self::write(Logger::INFO, self::message($message), $context);
}
/**
* Adds a log record at the INFO level.
*
* This method allows to have an easy ZF compatibility.
*
* @param string $message The log message
* @param array $context The log context
* @return Boolean Whether the record has been processed
*/
public static function notice($message, array $context = array())
{
return self::write(Logger::INFO, $message, $context);
}
/**
* Adds a log record at the WARNING level.
*
* This method allows to have an easy ZF compatibility.
*
* @param string $message The log message
* @param array $context The log context
* @return Boolean Whether the record has been processed
*/
public static function warning($message, array $context = array())
{
return self::write(Logger::WARNING, $message, $context);
}
/**
* Adds a log record at the ERROR level.
*
* This method allows to have an easy ZF compatibility.
*
* @param string $message The log message
* @param array $context The log context
* @return Boolean Whether the record has been processed
*/
public static function error($message, array $context = array())
{
return self::write(Logger::ERROR, $message, $context);
}
/**
* Adds a log record at the CRITICAL level.
*
* This method allows to have an easy ZF compatibility.
*
* @param string $message The log message
* @param array $context The log context
* @return Boolean Whether the record has been processed
*/
public static function crit($message, array $context = array())
{
return self::write(Logger::CRITICAL, $message, $context);
}
/**
* Adds a log record at the ALERT level.
*
* This method allows to have an easy ZF compatibility.
*
* @param string $message The log message
* @param array $context The log context
* @return Boolean Whether the record has been processed
*/
public static function alert($message, array $context = array())
{
return self::write(Logger::ALERT, $message, $context);
}
}

@ -1,16 +0,0 @@
<?php
/* For licensing terms, see /license.txt */
/**
*
* @package chamilo.library
*/
/**
* Code
*/
require_once api_get_path(LIBRARY_PATH).'phpmailer/class.phpmailer.php';
// A regular expression for testing against valid email addresses.
// It should actually be revised for using the complete RFC3696 description:
// http://tools.ietf.org/html/rfc3696#section-3
//$regexp_rfc3696 = "^[0-9a-z_\.+-]+@(([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-z][0-9a-z-]*[0-9a-z]\.)+[a-z]{2,3})$"; // Deprecated, 13-OCT-2010.

@ -505,10 +505,10 @@ function api_get_path($path_type, $path = null) {
// Always load root_web modifications for multiple url features
global $_configuration;
//default $_configuration['root_web'] configuration
$root_web = $_configuration['root_web'];
$root_web = isset($_configuration['root_web']) ? $_configuration['root_web'] : null;
// Configuration data for already installed system.
$root_sys = $_configuration['root_sys'];
$root_sys = isset($_configuration['root_sys']) ? $_configuration['root_sys'] : realpath(dirname(__FILE__).'/../../../');
$load_new_config = false;
// To avoid that the api_get_access_url() function fails since global.inc.php also calls the main_api.lib.php
@ -520,20 +520,27 @@ function api_get_path($path_type, $path = null) {
$load_new_config = true;
}
}
if (!$is_this_function_initialized) {
global $_configuration;
$root_rel = $_configuration['url_append'];
$code_folder = $_configuration['code_append'];
$course_folder = $_configuration['course_folder'];
$root_rel = isset($_configuration['url_append']) ? $_configuration['url_append'] : null;
//$code_folder = $_configuration['code_append'];
$code_folder = 'main/';
$course_folder = isset($_configuration['course_folder']) ? $_configuration['course_folder'] : null;
// Support for the installation process.
// Developers might use the function api_get_path() directly or indirectly (this is difficult to be traced), at the moment when
// configuration has not been created yet. This is why this function should be upgraded to return correct results in this case.
if (defined('SYSTEM_INSTALLATION') && SYSTEM_INSTALLATION) {
if (($pos = strpos(($requested_page_rel = api_get_self()), 'main/install')) !== false) {
//if (defined('SYSTEM_INSTALLATION') && SYSTEM_INSTALLATION) {
if (empty($root_web)) {
$pos = strpos(($requested_page_rel = api_get_self()), 'index.php');
$pos_install = strpos(($requested_page_rel = api_get_self()), 'main/install');
if ($pos_install) {
$pos = $pos_install;
}
//if (() !== false) {
$root_rel = substr($requested_page_rel, 0, $pos);
// See http://www.mediawiki.org/wiki/Manual:$wgServer
$server_protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http';
@ -552,15 +559,18 @@ function api_get_path($path_type, $path = null) {
$root_sys = str_replace('\\', '/', realpath(dirname(__FILE__).'/../../../')).'/';
$code_folder = 'main/';
$course_folder = 'courses/';
}
//}
// Here we give up, so we don't touch anything.
}
// Dealing with trailing slashes.
$root_web = api_add_trailing_slash($root_web);
$root_sys = api_add_trailing_slash($root_sys);
$root_rel = api_add_trailing_slash($root_rel);
$code_folder = api_add_trailing_slash($code_folder);
$course_folder = api_add_trailing_slash($course_folder);
// Web server base and system server base.
@ -578,6 +588,7 @@ function api_get_path($path_type, $path = null) {
$paths[REL_COURSE_PATH] = $root_rel.$course_folder;
$paths[REL_CODE_PATH] = $root_rel.$code_folder;
$paths[WEB_CODE_PATH] = $root_web.$code_folder;
$paths[SYS_CODE_PATH] = $root_sys.$code_folder;
// Now we can switch into api_get_path() "terminology".
@ -6618,7 +6629,6 @@ function api_mail_html($recipient_name, $recipient_email, $subject, $body, $send
$reply_to_mail = $extra_headers['reply_to']['mail'];
$reply_to_name = $extra_headers['reply_to']['name'];
}
//var_dump(array($reply_to_mail => $reply_to_name));
try {
$message = \Swift_Message::newInstance()
->setSubject($subject)

@ -13,11 +13,6 @@
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table user
--
DROP TABLE IF EXISTS user;
CREATE TABLE IF NOT EXISTS user (
user_id int unsigned NOT NULL auto_increment,
@ -52,9 +47,6 @@ CREATE TABLE IF NOT EXISTS user (
);
ALTER TABLE user ADD INDEX (status);
--
-- Dumping data for table user
--
/*!40000 ALTER TABLE user DISABLE KEYS */;
LOCK TABLES user WRITE;
@ -165,11 +157,11 @@ CREATE TABLE IF NOT EXISTS course (
);
ALTER TABLE course ADD INDEX idx_course_category_code (category_code);
ALTER TABLE course ADD INDEX idx_course_directory (directory(10));
--
-- Dumping data for table course
--
/*!40000 ALTER TABLE course DISABLE KEYS */;
LOCK TABLES course WRITE;
UNLOCK TABLES;
@ -489,8 +481,6 @@ CREATE TABLE IF NOT EXISTS session (
ALTER TABLE session ADD INDEX idx_id_coach (id_coach);
ALTER TABLE session ADD INDEX idx_id_session_admin_id (session_admin_id);
-- --------------------------------------------------------
--
-- Table structure for table session_rel_course
--
@ -505,7 +495,7 @@ CREATE TABLE IF NOT EXISTS session_rel_course (
ALTER TABLE session_rel_course ADD INDEX idx_session_rel_course_course_id (course_id);
-- --------------------------------------------------------
--
-- Table structure for table session_rel_course_rel_user
@ -525,7 +515,7 @@ CREATE TABLE IF NOT EXISTS session_rel_course_rel_user (
ALTER TABLE session_rel_course_rel_user ADD INDEX idx_session_rel_course_rel_user_id_user (id_user);
ALTER TABLE session_rel_course_rel_user ADD INDEX idx_session_rel_course_rel_user_course_id (course_id);
-- --------------------------------------------------------
--
-- Table structure for table session_rel_user
@ -1315,11 +1305,6 @@ CREATE TABLE IF NOT EXISTS shared_survey (
UNIQUE KEY id (survey_id)
);
-- --------------------------------------------------------
--
-- Table structure for shared_survey_question
--
DROP TABLE IF EXISTS shared_survey_question;
CREATE TABLE IF NOT EXISTS shared_survey_question (
@ -1335,11 +1320,6 @@ CREATE TABLE IF NOT EXISTS shared_survey_question (
PRIMARY KEY (question_id)
);
-- --------------------------------------------------------
--
-- Table structure for shared_survey_question_option
--
DROP TABLE IF EXISTS shared_survey_question_option;
CREATE TABLE IF NOT EXISTS shared_survey_question_option (
@ -1352,12 +1332,6 @@ CREATE TABLE IF NOT EXISTS shared_survey_question_option (
);
-- --------------------------------------------------------
--
-- Table structure for templates (User's FCKEditor templates)
--
DROP TABLE IF EXISTS templates;
CREATE TABLE IF NOT EXISTS templates (
id int NOT NULL auto_increment,
@ -1370,16 +1344,6 @@ CREATE TABLE IF NOT EXISTS templates (
PRIMARY KEY (id)
);
--
-- --------------------------------------------------------
--
-- Table structure of openid_association (keep info on openid servers)
--
DROP TABLE IF EXISTS openid_association;
CREATE TABLE IF NOT EXISTS openid_association (
id int NOT NULL auto_increment,
@ -1392,11 +1356,8 @@ CREATE TABLE IF NOT EXISTS openid_association (
created bigint NOT NULL,
PRIMARY KEY (id)
);
--
-- --------------------------------------------------------
--
-- Tables for gradebook
--
DROP TABLE IF EXISTS gradebook_category;
CREATE TABLE IF NOT EXISTS gradebook_category (
id int NOT NULL auto_increment,
@ -1570,12 +1531,6 @@ CREATE TABLE IF NOT EXISTS gradebook_linkeval_log (
PRIMARY KEY (id)
);
--
-- --------------------------------------------------------
--
-- Tables for the access URL feature
--
DROP TABLE IF EXISTS access_url;
CREATE TABLE IF NOT EXISTS access_url(
id int unsigned NOT NULL auto_increment,
@ -2409,18 +2364,6 @@ INSERT INTO system_template (title, comment, image, content) VALUES
</body>
');
--
-- --------------------------------------------------------
--
-- Tables for reservation
--
--
-- Table structure for table reservation category
--
DROP TABLE IF EXISTS reservation_category;
CREATE TABLE IF NOT EXISTS reservation_category (
id int unsigned NOT NULL auto_increment,
@ -2429,10 +2372,6 @@ CREATE TABLE IF NOT EXISTS reservation_category (
PRIMARY KEY ( id )
);
--
-- Table structure for table reservation category_rights
--
DROP TABLE IF EXISTS reservation_category_rights;
CREATE TABLE IF NOT EXISTS reservation_category_rights (
id int unsigned NOT NULL auto_increment,
@ -2442,9 +2381,6 @@ CREATE TABLE IF NOT EXISTS reservation_category_rights (
PRIMARY KEY ( id )
);
--
-- Table structure for table item reservation
--
DROP TABLE IF EXISTS reservation_item;
CREATE TABLE IF NOT EXISTS reservation_item (
id int unsigned NOT NULL auto_increment,
@ -2458,7 +2394,7 @@ CREATE TABLE IF NOT EXISTS reservation_item (
PRIMARY KEY ( id )
);
-- --------------------------------------------------------
--
-- Table structure for table reservation item_rights
@ -2475,7 +2411,7 @@ CREATE TABLE IF NOT EXISTS reservation_item_rights (
PRIMARY KEY ( item_id , class_id )
);
-- --------------------------------------------------------
--
-- Table structure for main reservation table
@ -2500,8 +2436,6 @@ CREATE TABLE IF NOT EXISTS reservation_main (
PRIMARY KEY ( id )
);
-- --------------------------------------------------------
--
-- Table structure for reservation subscription table
--
@ -2517,8 +2451,6 @@ CREATE TABLE IF NOT EXISTS reservation_subscription (
PRIMARY KEY ( dummy )
);
-- ---------------------------------------------------------
--
-- Table structure for table user_rel_user
--
@ -2566,15 +2498,15 @@ CREATE TABLE IF NOT EXISTS user_api_key (
);
ALTER TABLE user_api_key ADD INDEX idx_user_api_keys_user (user_id);
--
-- Table structure for table message
--
-- status: 0 read, 1 unread, 3 deleted, 5 pending invitation, 6 accepted invitation, 7 invitation denied
DROP TABLE IF EXISTS message;
CREATE TABLE IF NOT EXISTS message(
id bigint unsigned not null auto_increment,
user_sender_id int unsigned not null,
user_receiver_id int unsigned not null,
msg_status tinyint unsigned not null default 0, -- 0 read, 1 unread, 3 deleted, 5 pending invitation, 6 accepted invitation, 7 invitation denied
msg_status tinyint unsigned not null default 0,
send_date datetime not null default '0000-00-00 00:00:00',
title varchar(255) not null,
content text not null,
@ -2632,8 +2564,6 @@ ALTER TABLE gradebook_certificate ADD INDEX idx_gradebook_certificate_category_i
ALTER TABLE gradebook_certificate ADD INDEX idx_gradebook_certificate_user_id(user_id);
ALTER TABLE gradebook_certificate ADD INDEX idx_gradebook_certificate_category_id_user_id(cat_id,user_id);
--
-- Tables structure for search tool
--

@ -1,8 +1,8 @@
<?php
/**
* Install database. Provides access to the Database class and allows to add
* hooks for logging, testing, etc during installation.
* Install database. Provides access to the Database class and allows to add
* hooks for logging, testing, etc during installation.
*
* @license see /license.txt
* @author Laurent Opprecht <laurent@opprecht.info> for the Univesity of Geneva
@ -24,19 +24,21 @@ class iDatabase extends Database
static function select_db($database_name, $connection = null)
{
global $app;
if (self::is_logging()) {
Log::notice(__FUNCTION__ . ' ' . $database_name, Log::frame(1));
$app['monolog']->addInfo(__FUNCTION__ . ' ' . $database_name);
}
return parent::select_db($database_name, $connection);
}
static function query($query, $connection = null, $file = null, $line = null)
{
global $app;
if (self::is_logging()) {
$query = str_replace("\n", '', $query);
Log::notice(__FUNCTION__ . ' ' . $query, Log::frame(1));
//$query = str_replace("\n", '', $query);
//$app['monolog']->addInfo(__FUNCTION__ . ' ' . $query);
}
$result = parent::query($query, $connection, $file, $line);
if (empty($result)) {
@ -45,29 +47,9 @@ class iDatabase extends Database
$file = $caller['file'];
$line = $caller['line'];
$message = " sql: $query \n file: $file \n line:$line";
Log::error($message);
$app['monolog']->addError($message);
}
return $result;
}
/**
* Returns true if the table exists in the database, false otherwise.
* @param string $database
* @param string table
* @return boolean
*/
static
function table_exists($database, $table)
{
$tables = mysql_list_tables($db);
while (list ($temp) = mysql_fetch_array($tables)) {
if (strtolower($temp) == strtolower($table)) {
return true;
}
}
return false;
}
}

@ -25,23 +25,9 @@ define('FORM_FIELD_DISPLAY_LENGTH', 40);
define('DATABASE_FORM_FIELD_DISPLAY_LENGTH', 25);
define('MAX_FORM_FIELD_LENGTH', 80);
/* PHP VERSION CHECK */
// Including necessary libraries.
require_once '../inc/lib/main_api.lib.php';
api_check_php_version('../inc/');
/* INITIALIZATION SECTION */
ob_implicit_flush(true);
session_start();
//Composer autoloader
require_once __DIR__.'../../../vendor/autoload.php';
require_once '../inc/global.inc.php';
require_once 'install.lib.php';
require_once 'install.class.php';
require_once 'i_database.class.php';
// This value is use in database::query in order to prompt errors in the error log (course databases)
@ -126,13 +112,13 @@ if (!empty($_POST['old_version'])) {
require_once __DIR__.'/version.php';
// A protection measure for already installed systems.
if (is_already_installed_system()) {
// The system has already been installed, so block re-installation.
$global_error_code = 6;
require '../inc/global_error_message.inc.php';
die();
header("Location: ".api_get_path(WEB_PATH));
exit;
}
/* STEP 1 : INITIALIZES FORM VARIABLES IF IT IS THE FIRST VISIT */
@ -740,12 +726,13 @@ if (@$_POST['step2']) {
<div id="pleasewait" class="warning-message">'.get_lang('PleaseWaitThisCouldTakeAWhile').'</div>
</div>';
// Push the web server to send these strings before we start the real
// installation process
flush();
ob_flush();
$app['monolog']->addInfo("installType: $installType");
if ($installType == 'update') {
require_once api_get_path(LIBRARY_PATH).'fileUpload.lib.php';
@ -762,8 +749,7 @@ if (@$_POST['step2']) {
if (empty($my_old_version)) { $my_old_version = '1.8.6.2'; } //we guess
$_configuration['main_database'] = $dbNameForm;
//$urlAppendPath = get_config_param('urlAppend');
Log::notice('Starting migration process from old version: '.$my_old_version.' ('.time().')');
$app['monolog']->addInfo('Starting migration process from old version: '.$my_old_version.' ('.time().')');
if (isset($userPasswordCrypted)) {
if ($userPasswordCrypted == '1') {
@ -780,7 +766,7 @@ if (@$_POST['step2']) {
$singleDbForm = isset($_configuration['single_database']) ? $_configuration['single_database'] : false;
}
Log::notice("singledbForm: '$singleDbForm'");
$app['monolog']->addInfo("singledbForm: '$singleDbForm'");
Database::query("SET storage_engine = MYISAM;");
@ -791,6 +777,8 @@ if (@$_POST['step2']) {
Database::query("SET NAMES 'utf8';");
}
$app['monolog']->addInfo("my_old_version $my_old_version");
switch ($my_old_version) {
case '1.6':
case '1.6.0':
@ -892,4 +880,4 @@ if (@$_POST['step2']) {
</div><!-- wrapper end-->
<footer></footer>
</body>
</html>
</html>

@ -1,16 +0,0 @@
<?php
/**
* Description of install
*
* @license see /license.txt
* @author Laurent Opprecht <laurent@opprecht.info> for the Univesity of Geneva
*/
class Install
{
static function message($message)
{
echo '<div>' . $message . '</div>';
}
}

@ -717,11 +717,11 @@ function parse_sql_queries($sql_text) {
//UTF8 fix see #5678
if (strpos(strtolower($this_sql_query), 'create table') === false) {
Database::query($this_sql_query);
iDatabase::query($this_sql_query);
} else {
//$this_sql_query .= substr($this_sql_query, strlen($this_sql_query), strlen($this_sql_query)-1);
$this_sql_query .= ' DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci ';
Database::query($this_sql_query);
iDatabase::query($this_sql_query);
}
}
}
@ -2134,9 +2134,6 @@ function compare_setting_values($current_value, $wanted_value) {
}
/* Executed only before create_course_tables() */
function drop_course_tables() {
$list = CourseManager::get_course_tables();
@ -2146,8 +2143,6 @@ function drop_course_tables() {
}
}
/**
* Creates all the necessary tables for a new course
*/

@ -66,21 +66,21 @@ if (empty($mysqlUserDb) || $mysqlUserDb == 'mysql' || $mysqlUserDb == $dbPrefixF
if (!defined('CLI_INSTALLATION')) {
$result = Database::query("SHOW VARIABLES LIKE 'datadir'") or die(Database::error());
$mysqlRepositorySys = Database::fetch_array($result);
$mysqlRepositorySys = $mysqlRepositorySys['Value'];
$create_database = true;
if (database_exists($mysqlMainDb)) {
$create_database = false;
}
}
//Create database
if ($create_database) {
$charset_clause = ' DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci';
$sql = "CREATE DATABASE IF NOT EXISTS `$mysqlMainDb` $charset_clause";
$sql = "CREATE DATABASE IF NOT EXISTS `$mysqlMainDb` $charset_clause";
Database::query($sql) or die(Database::error());
}
}
}
$mysqlStatsDb = $mysqlMainDb;
@ -95,7 +95,7 @@ if (!defined('CLI_INSTALLATION')) {
}
}
Database::select_db($mysqlMainDb) or die(Database::error());
iDatabase::select_db($mysqlMainDb) or die(Database::error());
$installation_settings = array();
$installation_settings['{ORGANISATIONNAME}'] = $institutionForm;
@ -116,18 +116,23 @@ $installation_settings['{HASHFUNCTIONMODE}'] = $encryptPassForm;
load_main_database($installation_settings);
$app['monolog']->addInfo("drop_course_tables");
drop_course_tables();
$app['monolog']->addInfo("create_course_tables");
create_course_tables();
$app['monolog']->addInfo("loading db_stats.sql");
load_database_script('db_stats.sql');
$track_countries_table = "track_c_countries";
$app['monolog']->addInfo("fill_track_countries_table");
fill_track_countries_table($track_countries_table);
load_database_script('db_user.sql');
$app['monolog']->addInfo("locking_settings");
locking_settings();
update_dir_and_files_permissions();

@ -2,20 +2,20 @@
/* For licensing terms, see /license.txt */
/**
*
*
* Chamilo LMS
*
* Only updates the main/inc/conf/configuration.php file with the new version use only from 1.8.8.1 to 1.8.8.2 (with no DB changes)
*
* Only updates the main/inc/conf/configuration.php file with the new version use only from 1.8.8.1 to 1.8.8.2 (with no DB changes)
* @package chamilo.install
*/
if (defined('SYSTEM_INSTALLATION')) {
Log::notice("Starting " . basename(__FILE__));
$app['monolog']->addInfo("Starting " . basename(__FILE__));
// Edit the configuration file
$file = file(api_get_path(CONFIGURATION_PATH) . 'configuration.php');
$fh = fopen(api_get_path(CONFIGURATION_PATH) . 'configuration.php', 'w');
$found_version_old = false;
$found_stable_old = false;
$found_version = false;
@ -47,7 +47,7 @@ if (defined('SYSTEM_INSTALLATION')) {
$line = '$_configuration[\'software_url\'] = \'' . $software_url . '\';' . "\r\n";
} elseif (stripos($line, '$userPasswordCrypted') !== false) {
//$line = '$userPasswordCrypted = \'' . ($userPasswordCrypted) . '\';' . "\r\n";
$line = '$_configuration[\'password_encryption\'] = \'' .$userPasswordCrypted.'\';' . "\r\n";
$line = '$_configuration[\'password_encryption\'] = \'' .$userPasswordCrypted.'\';' . "\r\n";
} elseif (stripos($line, '?>') !== false) {
$ignore = true;
}
@ -55,7 +55,7 @@ if (defined('SYSTEM_INSTALLATION')) {
fwrite($fh, $line);
}
}
if (!$found_version) {
fwrite($fh, '$_configuration[\'system_version\'] = \'' . $new_version . '\';' . "\r\n");
}
@ -67,7 +67,7 @@ if (defined('SYSTEM_INSTALLATION')) {
}
if (!$found_software_url) {
fwrite($fh, '$_configuration[\'software_url\'] = \'' . $software_url . '\';' . "\r\n");
}
}
fwrite($fh, '?>');
fclose($fh);
} else {

@ -18,8 +18,6 @@
* @todo use database library
*/
Log::notice('Entering file');
// Check if we come from index.php or update_courses.php - otherwise display error msg
if (defined('SYSTEM_INSTALLATION')) {

@ -17,7 +17,6 @@
* - reorganise code into functions
* @todo use database library
*/
Log::notice('Entering file');
// Check if we come from index.php or update_courses.php - otherwise display error msg
if (defined('SYSTEM_INSTALLATION')) {
@ -185,8 +184,8 @@ if (defined('SYSTEM_INSTALLATION')) {
*/
if (!$singleDbForm) { // otherwise just use the main one
Database::select_db($row_course['db_name']);
}
Log::notice('Course db ' . $row_course['db_name']);
}
$app['monolog']->addInfo('Course db ' . $row_course['db_name']);
foreach ($c_q_list as $query) {
if ($singleDbForm) {

@ -16,7 +16,6 @@
* - reorganise code into functions
* @todo use database library
*/
Log::notice('Entering file');
// Check if we come from index.php or update_courses.php - otherwise display error msg
if (defined('SYSTEM_INSTALLATION')) {
@ -184,8 +183,7 @@ if (defined('SYSTEM_INSTALLATION')) {
if (!$singleDbForm) { //otherwise just use the main one
Database::select_db($row_course['db_name']);
}
Log::notice('Course db ' . $row_course['db_name']);
foreach ($c_q_list as $query) {
if ($singleDbForm) { //otherwise just use the main one
$query = preg_replace('/^(UPDATE|ALTER TABLE|CREATE TABLE|DROP TABLE|INSERT INTO|DELETE FROM)\s+(\w*)(.*)$/', "$1 $prefix{$row_course['db_name']}_$2$3", $query);

@ -16,7 +16,6 @@
* - reorganise code into functions
* @todo use database library
*/
Log::notice('Entering file');
// Check if we come from index.php or update_courses.php - otherwise display error msg
if (defined('SYSTEM_INSTALLATION')) {
@ -184,8 +183,7 @@ if (defined('SYSTEM_INSTALLATION')) {
if (!$singleDbForm) { //otherwise just use the main one
Database::select_db($row_course['db_name']);
}
Log::notice('Course db ' . $row_course['db_name']);
foreach ($c_q_list as $query) {
if ($singleDbForm) {
$query = preg_replace('/^(UPDATE|ALTER TABLE|CREATE TABLE|DROP TABLE|INSERT INTO|DELETE FROM)\s+(\w*)(.*)$/', "$1 $prefix{$row_course['db_name']}_$2$3", $query);

@ -16,8 +16,6 @@
* - reorganise code into functions
* @todo use database library
*/
Log::notice('Entering file');
$old_file_version = '1.8.4';
$new_file_version = '1.8.5';
@ -30,7 +28,7 @@ if (defined('SYSTEM_INSTALLATION')) {
'.get_lang('PleasGoBackToStep1').'.
<p><button type="submit" class="back" name="step1" value="&lt; '.get_lang('Back').'">'.get_lang('Back').'</button></p>
</td></tr></table></form></body></html>';
exit ();
exit();
}
$_configuration['db_glue'] = get_config_param('dbGlu');
@ -191,7 +189,7 @@ if (defined('SYSTEM_INSTALLATION')) {
if (!$singleDbForm) { //otherwise just use the main one
Database::select_db($row_course['db_name']);
}
Log::notice('Course db ' . $row_course['db_name']);
$app['monolog']->addInfo('Course db ' . $row_course['db_name']);
foreach ($c_q_list as $query) {
if ($singleDbForm) {

@ -17,7 +17,7 @@
* - reorganise code into functions
* @todo use database library
*/
Log::notice('Entering file');
$app['monolog']->addInfo('Entering file');
$old_file_version = '1.8.5';
$new_file_version = '1.8.6';
@ -84,18 +84,18 @@ if (defined('SYSTEM_INSTALLATION')) {
* without a database name
*/
if (strlen($dbNameForm) > 40) {
Log::error('Database name ' . $dbNameForm . ' is too long, skipping');
$app['monolog']->addError('Database name ' . $dbNameForm . ' is too long, skipping');
} elseif (!in_array($dbNameForm, $dblist)) {
Log::error('Database ' . $dbNameForm . ' was not found, skipping');
$app['monolog']->addError('Database ' . $dbNameForm . ' was not found, skipping');
} else {
iDatabase::select_db($dbNameForm);
foreach ($m_q_list as $query) {
if ($only_test) {
Log::notice("iDatabase::query($dbNameForm,$query)");
$app['monolog']->addInfo("iDatabase::query($dbNameForm,$query)");
} else {
$res = iDatabase::query($query);
if ($log) {
Log::notice("In $dbNameForm, executed: $query");
$app['monolog']->addInfo("In $dbNameForm, executed: $query");
}
}
}
@ -103,7 +103,7 @@ if (defined('SYSTEM_INSTALLATION')) {
}
require_once '../inc/lib/image.lib.php'; //this library has been created
// in 1.8.8, which makes this inclusion retroactively necessary in
// in 1.8.8, which makes this inclusion retroactively necessary in
// updates from 1.8.5
// Filling the access_url_rel_user table with access_url_id by default = 1
$query = "SELECT user_id FROM $dbNameForm.user";
@ -1023,18 +1023,18 @@ if (defined('SYSTEM_INSTALLATION')) {
* without a database name
*/
if (strlen($dbStatsForm) > 40) {
Log::error('Database name ' . $dbStatsForm . ' is too long, skipping');
$app['monolog']->addError('Database name ' . $dbStatsForm . ' is too long, skipping');
} elseif (!in_array($dbStatsForm, $dblist)) {
Log::error('Database ' . $dbStatsForm . ' was not found, skipping');
$app['monolog']->addError('Database ' . $dbStatsForm . ' was not found, skipping');
} else {
iDatabase::select_db($dbStatsForm);
foreach ($s_q_list as $query) {
if ($only_test) {
Log::notice("iDatabase::query($dbStatsForm,$query)");
$app['monolog']->addInfo("iDatabase::query($dbStatsForm,$query)");
} else {
$res = iDatabase::query($query);
if ($log) {
Log::notice("In $dbStatsForm, executed: $query");
$app['monolog']->addInfo("In $dbStatsForm, executed: $query");
}
}
}
@ -1049,9 +1049,9 @@ if (defined('SYSTEM_INSTALLATION')) {
* without a database name
*/
if (strlen($dbUserForm) > 40) {
Log::error('Database name ' . $dbUserForm . ' is too long, skipping');
$app['monolog']->addError('Database name ' . $dbUserForm . ' is too long, skipping');
} elseif (!in_array($dbUserForm, $dblist)) {
Log::error('Database ' . $dbUserForm . ' was not found, skipping');
$app['monolog']->addError('Database ' . $dbUserForm . ' was not found, skipping');
} else {
iDatabase::select_db($dbUserForm);
foreach ($u_q_list as $query) {
@ -1105,7 +1105,7 @@ if (defined('SYSTEM_INSTALLATION')) {
if (!$singleDbForm) { //otherwise just use the main one
iDatabase::select_db($row_course['db_name']);
}
Log::notice('Course db ' . $row_course['db_name']);
$app['monolog']->addInfo('Course db ' . $row_course['db_name']);
foreach ($c_q_list as $query) {
if ($singleDbForm) { //otherwise just use the main one
@ -1113,11 +1113,11 @@ if (defined('SYSTEM_INSTALLATION')) {
}
if ($only_test) {
Log::notice("iDatabase::query(" . $row_course['db_name'] . ",$query)");
$app['monolog']->addInfo("iDatabase::query(" . $row_course['db_name'] . ",$query)");
} else {
$res = iDatabase::query($query);
if ($log) {
Log::notice("In " . $row_course['db_name'] . ", executed: $query");
$app['monolog']->addInfo("In " . $row_course['db_name'] . ", executed: $query");
}
}
}

@ -16,7 +16,6 @@
* - reorganise code into functions
* @todo use database library
*/
Log::notice('Entering file');
$old_file_version = '1.8.6';
$new_file_version = '1.8.6.1';
@ -83,18 +82,18 @@ if (defined('SYSTEM_INSTALLATION')) {
* without a database name
*/
if (strlen($dbNameForm) > 40) {
Log::error('Database name '.$dbNameForm.' is too long, skipping');
$app['monolog']->addError('Database name '.$dbNameForm.' is too long, skipping');
} elseif (!in_array($dbNameForm,$dblist)) {
Log::error('Database '.$dbNameForm.' was not found, skipping');
$app['monolog']->addError('Database '.$dbNameForm.' was not found, skipping');
} else {
iDatabase::select_db($dbNameForm);
foreach($m_q_list as $query) {
if ($only_test){
Log::notice("iDatabase::query($dbNameForm,$query)");
$app['monolog']->addInfo("iDatabase::query($dbNameForm,$query)");
} else {
$res = iDatabase::query($query);
if ($log) {
Log::notice("In $dbNameForm, executed: $query");
$app['monolog']->addInfo("In $dbNameForm, executed: $query");
}
}
}
@ -112,18 +111,18 @@ if (defined('SYSTEM_INSTALLATION')) {
* without a database name
*/
if (strlen($dbStatsForm) > 40) {
Log::error('Database name '.$dbStatsForm.' is too long, skipping');
$app['monolog']->addError('Database name '.$dbStatsForm.' is too long, skipping');
} elseif (!in_array($dbStatsForm,$dblist)) {
Log::error('Database '.$dbStatsForm.' was not found, skipping');
$app['monolog']->addError('Database '.$dbStatsForm.' was not found, skipping');
} else {
iDatabase::select_db($dbStatsForm);
foreach ($s_q_list as $query) {
if ($only_test) {
Log::notice("iDatabase::query($dbStatsForm,$query)");
$app['monolog']->addInfo("iDatabase::query($dbStatsForm,$query)");
} else {
$res = iDatabase::query($query);
if ($log) {
Log::notice("In $dbStatsForm, executed: $query");
$app['monolog']->addInfo("In $dbStatsForm, executed: $query");
}
}
}
@ -138,15 +137,15 @@ if (defined('SYSTEM_INSTALLATION')) {
* without a database name
*/
if (strlen($dbUserForm) > 40) {
Log::error('Database name '.$dbUserForm.' is too long, skipping');
$app['monolog']->addError('Database name '.$dbUserForm.' is too long, skipping');
} elseif (!in_array($dbUserForm, $dblist)) {
Log::error('Database '.$dbUserForm.' was not found, skipping');
$app['monolog']->addError('Database '.$dbUserForm.' was not found, skipping');
} else {
iDatabase::select_db($dbUserForm);
foreach ($u_q_list as $query) {
if ($only_test) {
Log::notice("iDatabase::query($dbUserForm,$query)");
Log::notice("In $dbUserForm, executed: $query");
$app['monolog']->addInfo("iDatabase::query($dbUserForm,$query)");
$app['monolog']->addInfo("In $dbUserForm, executed: $query");
} else {
$res = iDatabase::query($query);
}
@ -167,9 +166,9 @@ if (defined('SYSTEM_INSTALLATION')) {
if (count($c_q_list) > 0) {
// Get the courses list
if (strlen($dbNameForm) > 40) {
Log::error('Database name '.$dbNameForm.' is too long, skipping');
$app['monolog']->addError('Database name '.$dbNameForm.' is too long, skipping');
} elseif (!in_array($dbNameForm, $dblist)) {
Log::error('Database '.$dbNameForm.' was not found, skipping');
$app['monolog']->addError('Database '.$dbNameForm.' was not found, skipping');
} else {
iDatabase::select_db($dbNameForm);
$res = iDatabase::query("SELECT code,db_name,directory,course_language FROM course WHERE target_course_code IS NULL ORDER BY code");
@ -192,7 +191,7 @@ if (defined('SYSTEM_INSTALLATION')) {
if (!$singleDbForm) { //otherwise just use the main one
iDatabase::select_db($row_course['db_name']);
}
Log::notice('Course db ' . $row_course['db_name']);
$app['monolog']->addInfo('Course db ' . $row_course['db_name']);
foreach ($c_q_list as $query) {
if ($singleDbForm) {
@ -200,11 +199,11 @@ if (defined('SYSTEM_INSTALLATION')) {
}
if ($only_test) {
Log::notice("iDatabase::query(".$row_course['db_name'].",$query)");
$app['monolog']->addInfo("iDatabase::query(".$row_course['db_name'].",$query)");
} else {
$res = iDatabase::query($query);
if ($log) {
Log::notice("In ".$row_course['db_name'].", executed: $query");
$app['monolog']->addInfo("In ".$row_course['db_name'].", executed: $query");
}
}
}

@ -16,8 +16,6 @@
* - reorganise code into functions
* @todo use database library
*/
Log::notice('Entering file');
$old_file_version = '1.8.6.1';
$new_file_version = '1.8.6.2';
@ -83,18 +81,18 @@ if (defined('SYSTEM_INSTALLATION')) {
* without a database name
*/
if (strlen($dbNameForm) > 40) {
Log::error('Database name '.$dbNameForm.' is too long, skipping');
$app['monolog']->addError('Database name '.$dbNameForm.' is too long, skipping');
} elseif (!in_array($dbNameForm,$dblist)) {
Log::error('Database '.$dbNameForm.' was not found, skipping');
$app['monolog']->addError('Database '.$dbNameForm.' was not found, skipping');
} else {
iDatabase::select_db($dbNameForm);
foreach ($m_q_list as $query) {
if ($only_test) {
Log::notice("iDatabase::query($dbNameForm,$query)");
$app['monolog']->addInfo("iDatabase::query($dbNameForm,$query)");
} else {
$res = iDatabase::query($query);
if ($log) {
Log::notice("In $dbNameForm, executed: $query");
$app['monolog']->addInfo("In $dbNameForm, executed: $query");
}
}
}
@ -113,7 +111,7 @@ if (defined('SYSTEM_INSTALLATION')) {
$res = iDatabase::query($sql);
if ($res === false) {
Log::error('Could not query session course coaches table: '.iDatabase::error());
$app['monolog']->addError('Could not query session course coaches table: '.iDatabase::error());
} else {
// For each coach found, add him as a course coach in the
// session_rel_course_rel_user table
@ -135,7 +133,7 @@ if (defined('SYSTEM_INSTALLATION')) {
$rs_coachs = iDatabase::query($sql_ins);
if ($rs_coachs === false) {
Log::error('Could not move course coach to new table: '.iDatabase::error());
$app['monolog']->addError('Could not move course coach to new table: '.iDatabase::error());
}
}
@ -147,7 +145,7 @@ if (defined('SYSTEM_INSTALLATION')) {
$rs_chk_id1 = iDatabase::query($sql);
if ($rs_chk_id1 === false) {
Log::error('Could not query settings_current ids table: '.iDatabase::error());
$app['monolog']->addError('Could not query settings_current ids table: '.iDatabase::error());
} else {
$i = 1;
while ($row_id1 = iDatabase::fetch_array($rs_chk_id1)) {
@ -164,7 +162,7 @@ if (defined('SYSTEM_INSTALLATION')) {
$rs_chk_id2 = iDatabase::query($sql);
if ($rs_chk_id2 === false) {
Log::error('Could not query settings_current ids table: '.iDatabase::error());
$app['monolog']->addError('Could not query settings_current ids table: '.iDatabase::error());
} else {
$i = 1;
while ($row_id2 = iDatabase::fetch_array($rs_chk_id2)) {
@ -188,18 +186,18 @@ if (defined('SYSTEM_INSTALLATION')) {
* without a database name
*/
if (strlen($dbNameForm) > 40) {
Log::error('Database name '.$dbNameForm.' is too long, skipping');
$app['monolog']->addError('Database name '.$dbNameForm.' is too long, skipping');
} elseif (!in_array($dbNameForm,$dblist)) {
Log::error('Database '.$dbNameForm.' was not found, skipping');
$app['monolog']->addError('Database '.$dbNameForm.' was not found, skipping');
} else {
iDatabase::select_db($dbNameForm);
foreach ($m_q_list as $query) {
if ($only_test) {
Log::notice("iDatabase::query($dbNameForm,$query)");
$app['monolog']->addInfo("iDatabase::query($dbNameForm,$query)");
} else {
$res = iDatabase::query($query);
if ($log) {
Log::notice("In $dbNameForm, executed: $query");
$app['monolog']->addInfo("In $dbNameForm, executed: $query");
}
}
}
@ -216,18 +214,18 @@ if (defined('SYSTEM_INSTALLATION')) {
* without a database name
*/
if (strlen($dbStatsForm) > 40) {
Log::error('Database name '.$dbStatsForm.' is too long, skipping');
$app['monolog']->addError('Database name '.$dbStatsForm.' is too long, skipping');
} elseif (!in_array($dbStatsForm, $dblist)) {
Log::error('Database '.$dbStatsForm.' was not found, skipping');
$app['monolog']->addError('Database '.$dbStatsForm.' was not found, skipping');
} else {
iDatabase::select_db($dbStatsForm);
foreach ($s_q_list as $query) {
if ($only_test) {
Log::notice("iDatabase::query($dbStatsForm,$query)");
$app['monolog']->addInfo("iDatabase::query($dbStatsForm,$query)");
} else {
$res = iDatabase::query($query);
if ($log) {
Log::notice("In $dbStatsForm, executed: $query");
$app['monolog']->addInfo("In $dbStatsForm, executed: $query");
}
}
}
@ -242,15 +240,15 @@ if (defined('SYSTEM_INSTALLATION')) {
* without a database name
*/
if (strlen($dbUserForm) > 40) {
Log::error('Database name '.$dbUserForm.' is too long, skipping');
$app['monolog']->addError('Database name '.$dbUserForm.' is too long, skipping');
} elseif (!in_array($dbUserForm,$dblist)) {
Log::error('Database '.$dbUserForm.' was not found, skipping');
$app['monolog']->addError('Database '.$dbUserForm.' was not found, skipping');
} else {
iDatabase::select_db($dbUserForm);
foreach ($u_q_list as $query) {
if ($only_test){
Log::notice("iDatabase::query($dbUserForm,$query)");
Log::notice("In $dbUserForm, executed: $query");
$app['monolog']->addInfo("iDatabase::query($dbUserForm,$query)");
$app['monolog']->addInfo("In $dbUserForm, executed: $query");
} else {
$res = iDatabase::query($query);
}
@ -271,9 +269,9 @@ if (defined('SYSTEM_INSTALLATION')) {
if (count($c_q_list) > 0) {
// Get the courses list
if (strlen($dbNameForm) > 40) {
Log::error('Database name '.$dbNameForm.' is too long, skipping');
$app['monolog']->addError('Database name '.$dbNameForm.' is too long, skipping');
} elseif (!in_array($dbNameForm, $dblist)) {
Log::error('Database '.$dbNameForm.' was not found, skipping');
$app['monolog']->addError('Database '.$dbNameForm.' was not found, skipping');
} else {
iDatabase::select_db($dbNameForm);
$res = iDatabase::query("SELECT code,db_name,directory,course_language FROM course WHERE target_course_code IS NULL ORDER BY code");
@ -296,7 +294,7 @@ if (defined('SYSTEM_INSTALLATION')) {
if (!$singleDbForm) { //otherwise just use the main one
iDatabase::select_db($row_course['db_name']);
}
Log::notice('Course db ' . $row_course['db_name']);
$app['monolog']->addInfo('Course db ' . $row_course['db_name']);
foreach ($c_q_list as $query) {
if ($singleDbForm) {
@ -304,11 +302,11 @@ if (defined('SYSTEM_INSTALLATION')) {
}
if ($only_test) {
Log::error("iDatabase::query(".$row_course['db_name'].",$query)");
$app['monolog']->addError("iDatabase::query(".$row_course['db_name'].",$query)");
} else {
$res = iDatabase::query($query);
if ($log) {
Log::error("In ".$row_course['db_name'].", executed: $query");
$app['monolog']->addError("In ".$row_course['db_name'].", executed: $query");
}
}
}
@ -326,7 +324,7 @@ if (defined('SYSTEM_INSTALLATION')) {
$rs_sel = iDatabase::query($sql_sel);
if ($rs_sel === false) {
Log::error('Could not query course_description ids table: '.iDatabase::error());
$app['monolog']->addError('Could not query course_description ids table: '.iDatabase::error());
} else {
if (iDatabase::num_rows($rs_sel) > 0) {
while ($row_ids = iDatabase::fetch_array($rs_sel)) {

@ -17,7 +17,6 @@
* - reorganise code into functions
* @todo use database library
*/
Log::notice('Entering file');
$old_file_version = '1.8.6.2';
$new_file_version = '1.8.7';
@ -84,21 +83,21 @@ if (defined('SYSTEM_INSTALLATION')) {
* without a database name
*/
if (strlen($dbNameForm) > 40) {
Log::error('Database name ' . $dbNameForm . ' is too long, skipping');
$app['monolog']->addError('Database name ' . $dbNameForm . ' is too long, skipping');
} elseif (!in_array($dbNameForm, $dblist)) {
Log::error('Database ' . $dbNameForm . ' was not found, skipping');
$app['monolog']->addError('Database ' . $dbNameForm . ' was not found, skipping');
} else {
iDatabase::select_db($dbNameForm);
foreach ($m_q_list as $query) {
if ($only_test) {
Log::notice("Database::query($dbNameForm,$query)");
$app['monolog']->addInfo("Database::query($dbNameForm,$query)");
} else {
$res = iDatabase::query($query);
if ($log) {
Log::notice("In $dbNameForm, executed: $query");
$app['monolog']->addInfo("In $dbNameForm, executed: $query");
}
if ($res === false) {
Log::error('Error in ' . $query . ': ' . iDatabase::error());
$app['monolog']->addError('Error in ' . $query . ': ' . iDatabase::error());
}
}
}
@ -107,13 +106,13 @@ if (defined('SYSTEM_INSTALLATION')) {
$query = "ALTER TABLE `" . $table . "` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;";
$res = iDatabase::query($query);
if ($res === false) {
Log::error('Error in ' . $query . ': ' . iDatabase::error());
$app['monolog']->addError('Error in ' . $query . ': ' . iDatabase::error());
}
}
$query = "ALTER DATABASE `" . $dbNameForm . "` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;";
$res = Database::query($query);
if ($res === false) {
Log::error('Error in ' . $query . ': ' . iDatabase::error());
$app['monolog']->addError('Error in ' . $query . ': ' . iDatabase::error());
}
}
}
@ -222,18 +221,18 @@ if (defined('SYSTEM_INSTALLATION')) {
* without a database name
*/
if (strlen($dbNameForm) > 40) {
Log::error('Database name ' . $dbNameForm . ' is too long, skipping');
$app['monolog']->addError('Database name ' . $dbNameForm . ' is too long, skipping');
} elseif (!in_array($dbNameForm, $dblist)) {
Log::error('Database ' . $dbNameForm . ' was not found, skipping');
$app['monolog']->addError('Database ' . $dbNameForm . ' was not found, skipping');
} else {
iDatabase::select_db($dbNameForm);
foreach ($m_q_list as $query) {
if ($only_test) {
Log::notice("Database::query($dbNameForm,$query)");
$app['monolog']->addInfo("Database::query($dbNameForm,$query)");
} else {
$res = iDatabase::query($query);
if ($log) {
Log::notice("In $dbNameForm, executed: $query");
$app['monolog']->addInfo("In $dbNameForm, executed: $query");
}
}
}
@ -249,22 +248,22 @@ if (defined('SYSTEM_INSTALLATION')) {
* without a database name
*/
if (strlen($dbStatsForm) > 40) {
Log::error('Database name ' . $dbStatsForm . ' is too long, skipping');
$app['monolog']->addError('Database name ' . $dbStatsForm . ' is too long, skipping');
} elseif (!in_array($dbStatsForm, $dblist)) {
Log::error('Database ' . $dbStatsForm . ' was not found, skipping');
$app['monolog']->addError('Database ' . $dbStatsForm . ' was not found, skipping');
} else {
iDatabase::select_db($dbStatsForm);
foreach ($s_q_list as $query) {
if ($only_test) {
Log::notice("Database::query($dbStatsForm,$query)");
$app['monolog']->addInfo("Database::query($dbStatsForm,$query)");
} else {
$res = iDatabase::query($query);
if ($log) {
Log::notice("In $dbStatsForm, executed: $query");
$app['monolog']->addInfo("In $dbStatsForm, executed: $query");
}
if ($res === false) {
Log::error('Error in ' . $query . ': ' . iDatabase::error());
$app['monolog']->addError('Error in ' . $query . ': ' . iDatabase::error());
}
}
}
@ -273,13 +272,13 @@ if (defined('SYSTEM_INSTALLATION')) {
$query = "ALTER TABLE `" . $table . "` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;";
$res = iDatabase::query($query);
if ($res === false) {
Log::error('Error in ' . $query . ': ' . iDatabase::error());
$app['monolog']->addError('Error in ' . $query . ': ' . iDatabase::error());
}
}
$query = "ALTER DATABASE `" . $dbStatsForm . "` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;";
$res = iDatabase::query($query);
if ($res === false) {
Log::error('Error in ' . $query . ': ' . iDatabase::error());
$app['monolog']->addError('Error in ' . $query . ': ' . iDatabase::error());
}
@ -298,7 +297,7 @@ if (defined('SYSTEM_INSTALLATION')) {
$question_id = $row['question_id'];
$answer = $row['answer'];
$exe_id = $row['exe_id'];
if(empty($answer)){
continue;
}
@ -339,19 +338,19 @@ if (defined('SYSTEM_INSTALLATION')) {
* without a database name
*/
if (strlen($dbUserForm) > 40) {
Log::error('Database name ' . $dbUserForm . ' is too long, skipping');
$app['monolog']->addError('Database name ' . $dbUserForm . ' is too long, skipping');
} elseif (!in_array($dbUserForm, $dblist)) {
Log::error('Database ' . $dbUserForm . ' was not found, skipping');
$app['monolog']->addError('Database ' . $dbUserForm . ' was not found, skipping');
} else {
iDatabase::select_db($dbUserForm);
foreach ($u_q_list as $query) {
if ($only_test) {
Log::notice("Database::query($dbUserForm,$query)");
Log::notice("In $dbUserForm, executed: $query");
$app['monolog']->addInfo("Database::query($dbUserForm,$query)");
$app['monolog']->addInfo("In $dbUserForm, executed: $query");
} else {
$res = iDatabase::query($query);
if ($res === false) {
Log::error('Error in ' . $query . ': ' . iDatabase::error());
$app['monolog']->addError('Error in ' . $query . ': ' . iDatabase::error());
}
}
}
@ -360,13 +359,13 @@ if (defined('SYSTEM_INSTALLATION')) {
$query = "ALTER TABLE `" . $table . "` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;";
$res = iDatabase::query($query);
if ($res === false) {
Log::error('Error in ' . $query . ': ' . iDatabase::error());
$app['monolog']->addError('Error in ' . $query . ': ' . iDatabase::error());
}
}
$query = "ALTER DATABASE `" . $dbUserForm . "` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;";
$res = iDatabase::query($query);
if ($res === false) {
Log::error('Error in ' . $query . ': ' . iDatabase::error());
$app['monolog']->addError('Error in ' . $query . ': ' . iDatabase::error());
}
}
}
@ -383,9 +382,9 @@ if (defined('SYSTEM_INSTALLATION')) {
if (count($c_q_list) > 0) {
// Get the courses list
if (strlen($dbNameForm) > 40) {
Log::error('Database name ' . $dbNameForm . ' is too long, skipping');
$app['monolog']->addError('Database name ' . $dbNameForm . ' is too long, skipping');
} elseif (!in_array($dbNameForm, $dblist)) {
Log::error('Database ' . $dbNameForm . ' was not found, skipping');
$app['monolog']->addError('Database ' . $dbNameForm . ' was not found, skipping');
} else {
iDatabase::select_db($dbNameForm);
$res = iDatabase::query("SELECT code,db_name,directory,course_language FROM course WHERE target_course_code IS NULL ORDER BY code");
@ -417,14 +416,14 @@ if (defined('SYSTEM_INSTALLATION')) {
}
if ($only_test) {
Log::notice("Database::query(" . $row_course['db_name'] . ",$query)");
$app['monolog']->addInfo("Database::query(" . $row_course['db_name'] . ",$query)");
} else {
$res = iDatabase::query($query);
if ($log) {
Log::notice("In " . $row_course['db_name'] . ", executed: $query");
$app['monolog']->addInfo("In " . $row_course['db_name'] . ", executed: $query");
}
if ($res === false) {
Log::error('Error in ' . $query . ': ' . iDatabase::error());
$app['monolog']->addError('Error in ' . $query . ': ' . iDatabase::error());
}
}
}
@ -435,13 +434,13 @@ if (defined('SYSTEM_INSTALLATION')) {
$query = "ALTER TABLE `" . $table . "` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;";
$res = iDatabase::query($query);
if ($res === false) {
Log::error('Error in ' . $query . ': ' . iDatabase::error());
$app['monolog']->addError('Error in ' . $query . ': ' . iDatabase::error());
}
}
$query = "ALTER DATABASE `" . $row_course['db_name'] . "` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;";
$res = iDatabase::query($query);
if ($res === false) {
Log::error('Error in ' . $query . ': ' . iDatabase::error());
$app['monolog']->addError('Error in ' . $query . ': ' . iDatabase::error());
}
}
$t_student_publication = $row_course['db_name'] . ".student_publication";
@ -457,7 +456,7 @@ if (defined('SYSTEM_INSTALLATION')) {
$rs_insert_user = iDatabase::query($sql_insert_user);
if ($rs_insert_user === false) {
Log::error('Could not query insert_user_id table: ' . iDatabase::error());
$app['monolog']->addError('Could not query insert_user_id table: ' . iDatabase::error());
} else {
if (iDatabase::num_rows($rs_insert_user) > 0) {
while ($row_ids = iDatabase::fetch_array($rs_insert_user)) {
@ -517,9 +516,9 @@ if (defined('SYSTEM_INSTALLATION')) {
if (count($c_q_list) > 0) {
// Get the courses list
if (strlen($dbNameForm) > 40) {
Log::error('Database name ' . $dbNameForm . ' is too long, skipping');
$app['monolog']->addError('Database name ' . $dbNameForm . ' is too long, skipping');
} elseif (!in_array($dbNameForm, $dblist)) {
Log::error('Database ' . $dbNameForm . ' was not found, skipping');
$app['monolog']->addError('Database ' . $dbNameForm . ' was not found, skipping');
} else {
iDatabase::select_db($dbNameForm);
$res = iDatabase::query("SELECT code,db_name,directory,course_language FROM course WHERE target_course_code IS NULL");
@ -550,11 +549,11 @@ if (defined('SYSTEM_INSTALLATION')) {
$query = preg_replace('/^(UPDATE|ALTER TABLE|CREATE TABLE|DROP TABLE|INSERT INTO|DELETE FROM)\s+(\w*)(.*)$/', "$1 $prefix$2$3", $query);
}
if ($only_test) {
Log::notice("Database::query(" . $row['db_name'] . ",$query)");
$app['monolog']->addInfo("Database::query(" . $row['db_name'] . ",$query)");
} else {
$res = iDatabase::query($query);
if ($log) {
Log::notice("In " . $row['db_name'] . ", executed: $query");
$app['monolog']->addInfo("In " . $row['db_name'] . ", executed: $query");
}
}
}

@ -16,8 +16,6 @@
* - reorganise code into functions
* @todo use database library
*/
Log::notice('Entering file');
$old_file_version = '1.8.7';
$new_file_version = '1.8.8';
@ -83,21 +81,21 @@ if (defined('SYSTEM_INSTALLATION')) {
* without a database name
*/
if (strlen($dbNameForm) > 40) {
Log::error('Database name '.$dbNameForm.' is too long, skipping');
$app['monolog']->addError('Database name '.$dbNameForm.' is too long, skipping');
} elseif (!in_array($dbNameForm, $dblist)) {
Log::error('Database '.$dbNameForm.' was not found, skipping');
$app['monolog']->addError('Database '.$dbNameForm.' was not found, skipping');
} else {
iDatabase::select_db($dbNameForm);
foreach ($m_q_list as $query){
if ($only_test) {
Log::notice("iDatabase::query($dbNameForm,$query)");
$app['monolog']->addInfo("iDatabase::query($dbNameForm,$query)");
} else {
$res = iDatabase::query($query);
if ($log) {
Log::notice("In $dbNameForm, executed: $query");
$app['monolog']->addInfo("In $dbNameForm, executed: $query");
}
if ($res === false) {
Log::error('Error in '.$query.': '.iDatabase::error());
$app['monolog']->addError('Error in '.$query.': '.iDatabase::error());
}
}
}
@ -140,22 +138,22 @@ if (defined('SYSTEM_INSTALLATION')) {
* without a database name
*/
if (strlen($dbStatsForm) > 40) {
Log::error('Database name '.$dbStatsForm.' is too long, skipping');
$app['monolog']->addError('Database name '.$dbStatsForm.' is too long, skipping');
} elseif (!in_array($dbStatsForm, $dblist)){
Log::error('Database '.$dbStatsForm.' was not found, skipping');
$app['monolog']->addError('Database '.$dbStatsForm.' was not found, skipping');
} else {
iDatabase::select_db($dbStatsForm);
foreach ($s_q_list as $query) {
if ($only_test) {
Log::notice("iDatabase::query($dbStatsForm,$query)");
$app['monolog']->addInfo("iDatabase::query($dbStatsForm,$query)");
} else {
$res = iDatabase::query($query);
if ($log) {
Log::notice("In $dbStatsForm, executed: $query");
$app['monolog']->addInfo("In $dbStatsForm, executed: $query");
}
if ($res === false) {
Log::error('Error in '.$query.': '.iDatabase::error());
$app['monolog']->addError('Error in '.$query.': '.iDatabase::error());
}
}
}
@ -173,19 +171,19 @@ if (defined('SYSTEM_INSTALLATION')) {
* without a database name
*/
if (strlen($dbUserForm) > 40) {
Log::error('Database name '.$dbUserForm.' is too long, skipping');
$app['monolog']->addError('Database name '.$dbUserForm.' is too long, skipping');
} elseif (!in_array($dbUserForm,$dblist)) {
Log::error('Database '.$dbUserForm.' was not found, skipping');
$app['monolog']->addError('Database '.$dbUserForm.' was not found, skipping');
} else {
iDatabase::select_db($dbUserForm);
foreach ($u_q_list as $query) {
if ($only_test) {
Log::notice("iDatabase::query($dbUserForm,$query)");
Log::notice("In $dbUserForm, executed: $query");
$app['monolog']->addInfo("iDatabase::query($dbUserForm,$query)");
$app['monolog']->addInfo("In $dbUserForm, executed: $query");
} else {
$res = iDatabase::query($query);
if ($res === false) {
Log::error('Error in '.$query.': '.iDatabase::error());
$app['monolog']->addError('Error in '.$query.': '.iDatabase::error());
}
}
}
@ -204,9 +202,9 @@ if (defined('SYSTEM_INSTALLATION')) {
if (count($c_q_list) > 0) {
// Get the courses list
if (strlen($dbNameForm) > 40) {
Log::error('Database name '.$dbNameForm.' is too long, skipping');
$app['monolog']->addError('Database name '.$dbNameForm.' is too long, skipping');
} elseif(!in_array($dbNameForm, $dblist)) {
Log::error('Database '.$dbNameForm.' was not found, skipping');
$app['monolog']->addError('Database '.$dbNameForm.' was not found, skipping');
} else {
iDatabase::select_db($dbNameForm);
$res = iDatabase::query("SELECT code,db_name,directory,course_language FROM course WHERE target_course_code IS NULL ORDER BY code");
@ -229,7 +227,7 @@ if (defined('SYSTEM_INSTALLATION')) {
if (!$singleDbForm) { // otherwise just use the main one
iDatabase::select_db($row_course['db_name']);
}
Log::notice('Course db ' . $row_course['db_name']);
$app['monolog']->addInfo('Course db ' . $row_course['db_name']);
foreach ($c_q_list as $query) {
if ($singleDbForm) {
@ -237,121 +235,121 @@ if (defined('SYSTEM_INSTALLATION')) {
}
if ($only_test) {
Log::notice("iDatabase::query(".$row_course['db_name'].",$query)");
$app['monolog']->addInfo("iDatabase::query(".$row_course['db_name'].",$query)");
} else {
$res = iDatabase::query($query);
if ($log) {
Log::notice("In ".$row_course['db_name'].", executed: $query");
$app['monolog']->addInfo("In ".$row_course['db_name'].", executed: $query");
}
if ($res === false) {
Log::error('Error in '.$query.': '.iDatabase::error());
$app['monolog']->addError('Error in '.$query.': '.iDatabase::error());
}
}
}
}
$table_lp_item_view = $row_course['db_name'].".lp_item_view";
$table_lp_view = $row_course['db_name'].".lp_view";
$table_lp_item = $row_course['db_name'].".lp_item";
$table_lp_item = $row_course['db_name'].".lp_item";
if ($singleDbForm) {
$table_lp_item_view = "$prefix{$row_course['db_name']}_lp_item_view";
$table_lp_view = "$prefix{$row_course['db_name']}_lp_view";
$table_lp_item = "$prefix{$row_course['db_name']}_lp_item";
}
$table_lp_item = "$prefix{$row_course['db_name']}_lp_item";
}
// Filling the track_e_exercices.orig_lp_item_view_id field in order to have better traceability in exercises included in a LP see #3188
$query = "SELECT DISTINCT path as exercise_id, lp_item_id, lp_view_id, user_id, v.lp_id
$query = "SELECT DISTINCT path as exercise_id, lp_item_id, lp_view_id, user_id, v.lp_id
FROM $table_lp_item_view iv INNER JOIN $table_lp_view v ON v.id = iv.lp_view_id INNER JOIN $table_lp_item i ON i.id = lp_item_id
WHERE item_type = 'quiz'";
$result = iDatabase::query($query);
if (iDatabase::num_rows($result) > 0) {
while ($row = iDatabase::fetch_array($result,'ASSOC')) {
$sql = "SELECT exe_id FROM $dbStatsForm.track_e_exercices
WHERE exe_user_id = {$row['user_id']} AND
exe_cours_id = '{$row_course['code']}' AND
while ($row = iDatabase::fetch_array($result,'ASSOC')) {
$sql = "SELECT exe_id FROM $dbStatsForm.track_e_exercices
WHERE exe_user_id = {$row['user_id']} AND
exe_cours_id = '{$row_course['code']}' AND
exe_exo_id = {$row['exercise_id']} AND
orig_lp_id = {$row['lp_id']} AND
orig_lp_id = {$row['lp_id']} AND
orig_lp_item_id = {$row['lp_item_id']} ";
$sub_result = iDatabase::query($sql);
$exe_list = array();
while ($sub_row = iDatabase::fetch_array($sub_result,'ASSOC')) {
$exe_list[] = $sub_row['exe_id'];
$exe_list[] = $sub_row['exe_id'];
}
$sql = "SELECT iv.id, iv.view_count
FROM $table_lp_item_view iv INNER JOIN $table_lp_view v ON v.id = iv.lp_view_id INNER JOIN $table_lp_item i ON i.id = lp_item_id
WHERE item_type = 'quiz' AND user_id = {$row['user_id']} AND path = {$row['exercise_id']} ";
$sub_result = iDatabase::query($sql);
$lp_item_view_id_list = array();
while ($sub_row = iDatabase::fetch_array($sub_result,'ASSOC')) {
$lp_item_view_id_list[] = $sub_row['id'];
}
$lp_item_view_id_list[] = $sub_row['id'];
}
$i = 0;
foreach($exe_list as $exe_id) {
$lp_item_view_id = $lp_item_view_id_list[$i];
$update = "UPDATE $dbNameForm.track_e_exercices SET orig_lp_item_view_id = '$lp_item_view_id' WHERE exe_id = $exe_id ";
iDatabase::query($update);
foreach($exe_list as $exe_id) {
$lp_item_view_id = $lp_item_view_id_list[$i];
$update = "UPDATE $dbNameForm.track_e_exercices SET orig_lp_item_view_id = '$lp_item_view_id' WHERE exe_id = $exe_id ";
iDatabase::query($update);
$i++;
}
}
}
}
}
}
}
//Adding notifications options
$sql = "INSERT INTO $dbNameForm.user_field (field_type, field_variable, field_display_text, field_visible, field_changeable, field_default_value) values (4, 'mail_notify_invitation', 'MailNotifyInvitation',1,1,'1') ";
$result = iDatabase::query($sql);
$id = iDatabase::insert_id();
$sql = "INSERT INTO $dbNameForm.user_field_options (field_id, option_value, option_display_text, option_order) values ($id, '1', 'AtOnce',1) ";
$result = iDatabase::query($sql);
$sql = "INSERT INTO $dbNameForm.user_field_options (field_id, option_value, option_display_text, option_order) values ($id, '8', 'Daily',2) ";
$result = iDatabase::query($sql);
$sql = "INSERT INTO $dbNameForm.user_field_options (field_id, option_value, option_display_text, option_order) values ($id, '0', 'No',3) ";
$result = iDatabase::query($sql);
$result = iDatabase::query($sql);
$sql = "INSERT INTO $dbNameForm.user_field (field_type, field_variable, field_display_text, field_visible, field_changeable, field_default_value) values (4, 'mail_notify_message', 'MailNotifyMessage',1,1,'1')";
$result = iDatabase::query($sql);
$id = iDatabase::insert_id();
$sql = "INSERT INTO $dbNameForm.user_field_options (field_id, option_value, option_display_text, option_order) values ($id, '1', 'AtOnce',1) ";
$result = iDatabase::query($sql);
$sql = "INSERT INTO $dbNameForm.user_field_options (field_id, option_value, option_display_text, option_order) values ($id, '8', 'Daily',2) ";
$result = iDatabase::query($sql);
$sql = "INSERT INTO $dbNameForm.user_field_options (field_id, option_value, option_display_text, option_order) values ($id, '0', 'No',3) ";
$result = iDatabase::query($sql);
$sql = "INSERT INTO $dbNameForm.user_field (field_type, field_variable, field_display_text, field_visible, field_changeable, field_default_value) values (4, 'mail_notify_group_message','MailNotifyGroupMessage',1,1,'1') ";
$result = iDatabase::query($sql);
$id = iDatabase::insert_id();
$sql = "INSERT INTO $dbNameForm.user_field_options (field_id, option_value, option_display_text, option_order) values ($id, '1', 'AtOnce',1) ";
$result = iDatabase::query($sql);
$sql = "INSERT INTO $dbNameForm.user_field_options (field_id, option_value, option_display_text, option_order) values ($id, '8', 'Daily',2) ";
$result = iDatabase::query($sql);
$sql = "INSERT INTO $dbNameForm.user_field_options (field_id, option_value, option_display_text, option_order) values ($id, '0', 'No',3) ";
$result = iDatabase::query($sql);
//Fixing table access_url_rel_course if the platform have courses that were created in Dok€os 1.8.5
if (!isset($_configuration['multiple_access_urls']) || $_configuration['multiple_access_urls'] == false) {
$sql = "SELECT code FROM $dbNameForm.course";
$result = iDatabase::query($sql);
while ($row = iDatabase::fetch_array($result)) {
//Adding course to default URL just in case
$sql = "INSERT INTO $dbNameForm.access_url_rel_course SET course_code = '".iDatabase::escape_string($row['code'])."', access_url_id = '1' ";
$sql = "INSERT INTO $dbNameForm.access_url_rel_course SET course_code = '".iDatabase::escape_string($row['code'])."', access_url_id = '1' ";
iDatabase::query($sql);
}
}
}
}
}
@ -362,9 +360,9 @@ if (defined('SYSTEM_INSTALLATION')) {
if (count($c_q_list) > 0) {
// Get the courses list
if (strlen($dbNameForm) > 40) {
Log::error('Database name '.$dbNameForm.' is too long, skipping');
$app['monolog']->addError('Database name '.$dbNameForm.' is too long, skipping');
} elseif (!in_array($dbNameForm, $dblist)) {
Log::error('Database '.$dbNameForm.' was not found, skipping');
$app['monolog']->addError('Database '.$dbNameForm.' was not found, skipping');
} else {
iDatabase::select_db($dbNameForm);
$res = iDatabase::query("SELECT code,db_name,directory,course_language FROM course WHERE target_course_code IS NULL");
@ -391,11 +389,11 @@ if (defined('SYSTEM_INSTALLATION')) {
$query = preg_replace('/^(UPDATE|ALTER TABLE|CREATE TABLE|DROP TABLE|INSERT INTO|DELETE FROM)\s+(\w*)(.*)$/', "$1 $prefix$2$3", $query);
}
if ($only_test) {
Log::notice("iDatabase::query(".$row['db_name'].",$query)");
$app['monolog']->addInfo("iDatabase::query(".$row['db_name'].",$query)");
} else {
$res = iDatabase::query($query);
if ($log) {
Log::notice("In ".$row['db_name'].", executed: $query");
$app['monolog']->addInfo("In ".$row['db_name'].", executed: $query");
}
}
}

@ -16,7 +16,6 @@
* - reorganise code into functions
* @todo use database library
*/
Log::notice('Entering file');
$old_file_version = '1.8.8';
$new_file_version = '1.9.0';
@ -34,7 +33,7 @@ if (defined('SYSTEM_INSTALLATION')) {
}
$_configuration['db_glue'] = get_config_param('dbGlu');
if ($singleDbForm) {
$_configuration['table_prefix'] = get_config_param('courseTablePrefix');
$_configuration['main_database'] = get_config_param('mainDbName');
@ -57,25 +56,25 @@ if (defined('SYSTEM_INSTALLATION')) {
// that we want to change the main databases as well...
$only_test = false;
if (defined('SYSTEM_INSTALLATION')) {
if ($singleDbForm) {
$dbStatsForm = $dbNameForm;
$dbScormForm = $dbNameForm;
$dbUserForm = $dbNameForm;
}
}
/**
* Update the databases "pre" migration
*/
include '../lang/english/create_course.inc.php';
if ($languageForm != 'english') {
// languageForm has been escaped in index.php
include '../lang/'.$languageForm.'/create_course.inc.php';
}
// Get the main queries list (m_q_list)
$m_q_list = get_sql_file_contents('migrate-db-'.$old_file_version.'-'.$new_file_version.'-pre.sql', 'main');
if (count($m_q_list) > 0) {
// Now use the $m_q_list
/**
@ -83,41 +82,41 @@ if (defined('SYSTEM_INSTALLATION')) {
* without a database name
*/
if (strlen($dbNameForm) > 40) {
Log::error('Database name '.$dbNameForm.' is too long, skipping');
$app['monolog']->addError('Database name '.$dbNameForm.' is too long, skipping');
} elseif (!in_array($dbNameForm, $dblist)) {
Log::error('Database '.$dbNameForm.' was not found, skipping');
$app['monolog']->addError('Database '.$dbNameForm.' was not found, skipping');
} else {
iDatabase::select_db($dbNameForm);
foreach ($m_q_list as $query){
if ($only_test) {
Log::notice("iDatabase::query($dbNameForm,$query)");
$app['monolog']->addInfo("iDatabase::query($dbNameForm,$query)");
} else {
$res = iDatabase::query($query);
if ($res === false) {
Log::error('Error in '.$query.': '.iDatabase::error());
$app['monolog']->addError('Error in '.$query.': '.iDatabase::error());
}
}
}
}
}
if (INSTALL_TYPE_UPDATE == 'update') {
//Migrate classes to the new classes (usergroups)
$sql = "SELECT selected_value FROM $dbNameForm.settings_current WHERE variable='use_session_mode' ";
$result = iDatabase::query($sql);
$result = Database::fetch_array($result);
$session_mode = $result['selected_value'];
$session_mode = $result['selected_value'];
if ($session_mode == 'true') {
$sql = "UPDATE $dbNameForm.settings_current SET selected_value = 'true' WHERE variable='use_session_mode' ";
$sql = "UPDATE $dbNameForm.settings_current SET selected_value = 'true' WHERE variable='use_session_mode' ";
$result = iDatabase::query($sql);
$sql = "SELECT * FROM $dbNameForm.class";
$result = iDatabase::query($sql);
$count = 0;
$count = 0;
$new_table = "$dbNameForm.usergroup";
$classes_added = 0;
$mapping_classes = array();
@ -133,22 +132,22 @@ if (defined('SYSTEM_INSTALLATION')) {
}
}
}
$sql = "SELECT * FROM $dbNameForm.class_user";
$result = iDatabase::query($sql);
$new_table = "$dbNameForm.usergroup_rel_user";
if (Database::num_rows($result)) {
while ($row = iDatabase::fetch_array($result, 'ASSOC')) {
while ($row = iDatabase::fetch_array($result, 'ASSOC')) {
$values = array('usergroup_id' => $mapping_classes[$row['class_id']],
'user_id' => $row['user_id']);
iDatabase::insert($new_table, $values);
}
}
$sql = "SELECT * FROM $dbNameForm.course_rel_class";
$result = iDatabase::query($sql);
$new_table = "$dbNameForm.usergroup_rel_course";
if (Database::num_rows($result)) {
while ($row = iDatabase::fetch_array($result, 'ASSOC')) {
$course_code = $row['course_code'];
@ -162,11 +161,11 @@ if (defined('SYSTEM_INSTALLATION')) {
iDatabase::insert($new_table, $values);
}
}
Log::notice("#classes added $classes_added");
$app['monolog']->addInfo("#classes added $classes_added");
}
}
// Get the stats queries list (s_q_list)
$s_q_list = get_sql_file_contents('migrate-db-'.$old_file_version.'-'.$new_file_version.'-pre.sql', 'stats');
@ -177,28 +176,28 @@ if (defined('SYSTEM_INSTALLATION')) {
* without a database name
*/
if (strlen($dbStatsForm) > 40) {
Log::error('Database name '.$dbStatsForm.' is too long, skipping');
$app['monolog']->addError('Database name '.$dbStatsForm.' is too long, skipping');
} elseif (!in_array($dbStatsForm, $dblist)){
Log::error('Database '.$dbStatsForm.' was not found, skipping');
$app['monolog']->addError('Database '.$dbStatsForm.' was not found, skipping');
} else {
iDatabase::select_db($dbStatsForm);
foreach ($s_q_list as $query) {
if ($only_test) {
Log::notice("iDatabase::query($dbStatsForm,$query)");
$app['monolog']->addInfo("iDatabase::query($dbStatsForm,$query)");
} else {
$res = iDatabase::query($query);
if ($res === false) {
Log::error('Error in '.$query.': '.iDatabase::error());
$app['monolog']->addError('Error in '.$query.': '.iDatabase::error());
}
}
}
}
}
//Moving Stats DB to the main DB
$stats_table = array(
$stats_table = array(
"track_c_browsers",
"track_c_countries",
"track_c_os",
@ -223,7 +222,7 @@ if (defined('SYSTEM_INSTALLATION')) {
"track_stored_values",
"track_stored_values_stack",
);
if ($dbNameForm != $dbStatsForm) {
iDatabase::select_db($dbStatsForm);
foreach ($stats_table as $stat_table) {
@ -232,10 +231,10 @@ if (defined('SYSTEM_INSTALLATION')) {
}
iDatabase::select_db($dbNameForm);
}
// Get the user queries list (u_q_list)
$u_q_list = get_sql_file_contents('migrate-db-'.$old_file_version.'-'.$new_file_version.'-pre.sql', 'user');
if (count($u_q_list) > 0) {
// Now use the $u_q_list
/**
@ -243,33 +242,33 @@ if (defined('SYSTEM_INSTALLATION')) {
* without a database name
*/
if (strlen($dbUserForm) > 40) {
Log::error('Database name '.$dbUserForm.' is too long, skipping');
$app['monolog']->addError('Database name '.$dbUserForm.' is too long, skipping');
} elseif (!in_array($dbUserForm,$dblist)) {
Log::error('Database '.$dbUserForm.' was not found, skipping');
$app['monolog']->addError('Database '.$dbUserForm.' was not found, skipping');
} else {
iDatabase::select_db($dbUserForm);
foreach ($u_q_list as $query) {
if ($only_test) {
Log::notice("iDatabase::query($dbUserForm,$query)");
Log::notice("In $dbUserForm, executed: $query");
$app['monolog']->addInfo("iDatabase::query($dbUserForm,$query)");
$app['monolog']->addInfo("In $dbUserForm, executed: $query");
} else {
$res = iDatabase::query($query);
if ($res === false) {
Log::error('Error in '.$query.': '.iDatabase::error());
$app['monolog']->addError('Error in '.$query.': '.iDatabase::error());
}
}
}
}
}
//Moving user database to the main database
$users_tables = array(
"personal_agenda",
"personal_agenda_repeat",
"personal_agenda_repeat_not",
"user_course_category"
"user_course_category"
);
if ($dbNameForm != $dbUserForm) {
iDatabase::select_db($dbUserForm);
foreach ($users_tables as $table) {
@ -278,53 +277,53 @@ if (defined('SYSTEM_INSTALLATION')) {
}
iDatabase::select_db($dbNameForm);
}
}
}
//Adding admin user in the access_url_rel_user table
$sql = "SELECT user_id FROM admin WHERE user_id = 1";
$result = iDatabase::query($sql);
$has_user_id = Database::num_rows($result) > 0;
$sql = "SELECT * FROM access_url_rel_user WHERE user_id = 1 AND access_url_id = 1";
$result = iDatabase::query($sql);
$has_entry = Database::num_rows($result) > 0;
if ($has_user_id && !$has_entry) {
$sql = "INSERT INTO access_url_rel_user VALUES(1, 1)";
iDatabase::query($sql);
}
//Adds the c_XXX courses tables see #3910
global $_configuration;
drop_course_tables();
drop_course_tables();
create_course_tables();
$prefix = '';
if ($singleDbForm) {
$prefix = get_config_param('table_prefix');
}
Log::notice("Database prefix: '$prefix'");
$app['monolog']->addInfo("Database prefix: '$prefix'");
// Get the courses databases queries list (c_q_list)
$c_q_list = get_sql_file_contents('migrate-db-'.$old_file_version.'-'.$new_file_version.'-pre.sql', 'course');
Log::notice('Starting migration: '.$old_file_version.' - '.$new_file_version);
$app['monolog']->addInfo('Starting migration: '.$old_file_version.' - '.$new_file_version);
if (count($c_q_list) > 0) {
// Get the courses list
if (strlen($dbNameForm) > 40) {
Log::error('Database name '.$dbNameForm.' is too long, skipping');
$app['monolog']->addError('Database name '.$dbNameForm.' is too long, skipping');
} elseif(!in_array($dbNameForm, $dblist)) {
Log::error('Database '.$dbNameForm.' was not found, skipping');
$app['monolog']->addError('Database '.$dbNameForm.' was not found, skipping');
} else {
iDatabase::select_db($dbNameForm);
$res = iDatabase::query("SELECT id, code, db_name, directory, course_language, id as real_id FROM course WHERE target_course_code IS NULL ORDER BY code");
if ($res === false) { die('Error while querying the courses list in update_db-1.8.8-1.9.0.inc.php'); }
$errors = array();
if (iDatabase::num_rows($res) > 0) {
$i = 0;
$list = array();
@ -332,82 +331,82 @@ if (defined('SYSTEM_INSTALLATION')) {
$list[] = $row;
$i++;
}
foreach ($list as $row_course) {
if (!$singleDbForm) { // otherwise just use the main one
iDatabase::select_db($row_course['db_name']);
}
Log::notice('Course db ' . $row_course['db_name']);
$app['monolog']->addInfo('Course db ' . $row_course['db_name']);
// Now use the $c_q_list
foreach ($c_q_list as $query) {
if ($singleDbForm) {
$query = preg_replace('/^(UPDATE|ALTER TABLE|CREATE TABLE|DROP TABLE|INSERT INTO|DELETE FROM)\s+(\w*)(.*)$/', "$1 $prefix{$row_course['db_name']}_$2$3", $query);
}
if ($only_test) {
Log::notice("iDatabase::query(".$row_course['db_name'].",$query)");
$app['monolog']->addInfo("iDatabase::query(".$row_course['db_name'].",$query)");
} else {
$res = iDatabase::query($query);
if ($res === false) {
Log::error('Error in '.$query.': '.iDatabase::error());
$app['monolog']->addError('Error in '.$query.': '.iDatabase::error());
}
}
}
}
$work_table = $row_course['db_name'].".student_publication";
$item_table = $row_course['db_name'].".item_property";
if ($singleDbForm) {
$work_table = "$prefix{$row_course['db_name']}_student_publication";
$item_table = $row_course['db_name'].".item_property";
}
if (!$singleDbForm) {
// otherwise just use the main one
iDatabase::select_db($row_course['db_name']);
} else {
iDatabase::select_db($dbNameForm);
}
}
/* Start work fix */
/* Fixes the work subfolder and work with no parent issues */
//1. Searching for works with no parents
$sql = "SELECT * FROM $work_table WHERE parent_id = 0 AND filetype ='file'";
$result = Database::query($sql);
$work_list = array();
if (Database::num_rows($result)) {
while ($row = Database::fetch_array($result, 'ASSOC')) {
$work_list[] = $row;
}
}
$today = api_get_utc_datetime();
$user_id = 1;
$user_id = 1;
require_once api_get_path(SYS_CODE_PATH).'work/work.lib.php';
$sys_course_path = api_get_path(SYS_COURSE_PATH);
$course_dir = $sys_course_path . $row_course['directory'];
$base_work_dir = $course_dir . '/work';
$base_work_dir = $course_dir . '/work';
//2. Looping if there are works with no parents
if (!empty($work_list)) {
if (!empty($work_list)) {
$work_dir_created = array();
foreach ($work_list as $work) {
foreach ($work_list as $work) {
$session_id = intval($work['session_id']);
$group_id = intval($work['post_group_id']);
$work_key = $session_id.$group_id;
//Only create the folder once
if (!isset($work_dir_created[$work_key])) {
$dir_name = "default_tasks_".$group_id."_".$session_id;
//2.1 Creating a new work folder
$sql = "INSERT INTO $work_table SET
url = 'work/".$dir_name."',
@ -418,60 +417,60 @@ if (defined('SYSTEM_INSTALLATION')) {
accepted = '1',
filetype = 'folder',
post_group_id = '$group_id',
sent_date = '".$today."',
sent_date = '".$today."',
parent_id = '0',
qualificator_id = '',
user_id = '".$user_id."'";
qualificator_id = '',
user_id = '".$user_id."'";
iDatabase::query($sql);
$id = Database::insert_id();
//2.2 Adding the folder in item property
if ($id) {
//api_item_property_update($row_course, 'work', $id, 'DirectoryCreated', $user_id, $group_id, null, 0, 0 , $session_id);
//api_item_property_update($row_course, 'work', $id, 'DirectoryCreated', $user_id, $group_id, null, 0, 0 , $session_id);
$sql = "INSERT INTO $item_table (tool, ref, insert_date, insert_user_id, lastedit_date, lastedit_type, lastedit_user_id, to_group_id, visibility, id_session)
VALUES ('work','$id','$today', '$user_id', '$today', 'DirectoryCreated','$user_id', '$group_id', '1', '$session_id')";
iDatabase::query($sql);
$work_dir_created[$work_key] = $id;
$work_dir_created[$work_key] = $id;
create_unexisting_work_directory($base_work_dir, $dir_name);
$final_dir = $base_work_dir.'/'.$dir_name;
}
} else {
$final_dir = $base_work_dir.'/'.$dir_name;
}
//2.3 Updating the url
if (!empty($work_dir_created[$work_key])) {
$parent_id = $work_dir_created[$work_key];
$parent_id = $work_dir_created[$work_key];
$new_url = "work/".$dir_name.'/'.basename($work['url']);
$new_url = Database::escape_string($new_url);$sql = "UPDATE $work_table SET url = '$new_url', parent_id = $parent_id, contains_file = '1' WHERE id = {$work['id']}";
iDatabase::query($sql);
if (is_dir($final_dir)) {
$new_url = Database::escape_string($new_url);$sql = "UPDATE $work_table SET url = '$new_url', parent_id = $parent_id, contains_file = '1' WHERE id = {$work['id']}";
iDatabase::query($sql);
if (is_dir($final_dir)) {
rename($course_dir.'/'.$work['url'], $course_dir.'/'.$new_url);
}
}
}
}
}
//3.0 Moving subfolders to the root
$sql = "SELECT * FROM $work_table WHERE parent_id <> 0 AND filetype ='folder'";
$sql = "SELECT * FROM $work_table WHERE parent_id <> 0 AND filetype ='folder'";
$result = Database::query($sql);
$work_list = array();
if (Database::num_rows($result)) {
while ($row = Database::fetch_array($result, 'ASSOC')) {
$work_list[] = $row;
}
if (!empty($work_list)) {
foreach ($work_list as $work_folder) {
$folder_id = $work_folder['id'];
check_work($folder_id, $work_folder['url'], $work_table, $base_work_dir);
if (!empty($work_list)) {
foreach ($work_list as $work_folder) {
$folder_id = $work_folder['id'];
check_work($folder_id, $work_folder['url'], $work_table, $base_work_dir);
}
}
}
}
/* End of work fix */
//Course tables to be migrated
$table_list = array(
'announcement',
@ -560,40 +559,39 @@ if (defined('SYSTEM_INSTALLATION')) {
'wiki',
'wiki_conf',
'wiki_discuss',
'wiki_mailcue'
'wiki_mailcue'
);
Log::notice('<<<------- Loading DB course '.$row_course['db_name'].' -------->>');
//Install::message('<<<------- Loading DB course '.$row_course['db_name'].' -------->>');
$app['monolog']->addInfo('<<<------- Loading DB course '.$row_course['db_name'].' -------->>');
$count = $old_count = 0;
foreach ($table_list as $table) {
$just_table_name = $table;
$old_table = $row_course['db_name'].".".$table;
if ($singleDbForm) {
$old_table = "$prefix{$row_course['db_name']}_".$table;
$just_table_name = "$prefix{$row_course['db_name']}_".$table;
}
$course_id = $row_course['id'];
$course_id = $row_course['id'];
$new_table = DB_COURSE_PREFIX.$table;
//Use the old database (if this is the case)
if (!$singleDbForm) {
// otherwise just use the main one
iDatabase::select_db($row_course['db_name']);
} else {
iDatabase::select_db($dbNameForm);
}
//Count of rows
//Count of rows
$sql = "SHOW TABLES LIKE '$just_table_name'";
$result = iDatabase::query($sql);
if (Database::num_rows($result)) {
$sql = "SELECT count(*) FROM $old_table";
$result = iDatabase::query($sql);
@ -602,41 +600,41 @@ if (defined('SYSTEM_INSTALLATION')) {
$row = iDatabase::fetch_row($result);
$old_count = $row[0];
} else {
Log::error("Count(*) in table $old_table failed");
}
Log::notice("# rows in $old_table: $old_count");
$app['monolog']->addError("Count(*) in table $old_table failed");
}
$app['monolog']->addInfo("# rows in $old_table: $old_count");
$sql = "SELECT * FROM $old_table";
$result = iDatabase::query($sql);
$count = 0;
/* Loads the main database */
iDatabase::select_db($dbNameForm);
while($row = iDatabase::fetch_array($result, 'ASSOC')) {
$row['c_id'] = $course_id;
$row['c_id'] = $course_id;
$id = iDatabase::insert($new_table, $row);
if (is_numeric($id)) {
$count++;
} else {
$errors[$old_table][] = $row;
$errors[$old_table][] = $row;
}
}
Log::notice("#rows inserted in $new_table: $count");
}
$app['monolog']->addInfo("#rows inserted in $new_table: $count");
if ($old_count != $count) {
Log::error("ERROR count of new and old table doesn't match: $old_count - $new_table");
Log::error("Check the results: ");
Log::error(print_r($errors, 1));
$app['monolog']->addError("ERROR count of new and old table doesn't match: $old_count - $new_table");
$app['monolog']->addError("Check the results: ");
$app['monolog']->addError(print_r($errors, 1));
error_log(print_r($errors, 1));
}
} else {
Log::error("Seems that the table $old_table doesn't exists ");
$app['monolog']->addError("Seems that the table $old_table doesn't exists ");
}
}
Log::notice('<<<------- end -------->>');
$app['monolog']->addInfo('<<<------- end -------->>');
}
}
}
@ -648,7 +646,7 @@ if (defined('SYSTEM_INSTALLATION')) {
function check_work($folder_id, $work_url, $work_table, $base_work_dir) {
$uniq_id = uniqid();
//Looking for subfolders
$sql = "SELECT * FROM $work_table WHERE parent_id = $folder_id AND filetype ='folder'";
$sql = "SELECT * FROM $work_table WHERE parent_id = $folder_id AND filetype ='folder'";
$result = Database::query($sql);
if (Database::num_rows($result)) {
@ -658,7 +656,7 @@ function check_work($folder_id, $work_url, $work_table, $base_work_dir) {
}
//Moving the subfolder in the root
$new_url = '/'.basename($work_url).'_mv_'.$uniq_id;
$new_url = '/'.basename($work_url).'_mv_'.$uniq_id;
$new_url = Database::escape_string($new_url);
$sql = "UPDATE $work_table SET url = '$new_url', parent_id = 0 WHERE id = $folder_id";
iDatabase::query($sql);
@ -666,15 +664,15 @@ function check_work($folder_id, $work_url, $work_table, $base_work_dir) {
if (is_dir($base_work_dir.$work_url)) {
rename($base_work_dir.$work_url, $base_work_dir.$new_url);
//Rename all files inside the folder
$sql = "SELECT * FROM $work_table WHERE parent_id = $folder_id AND filetype ='file'";
//Rename all files inside the folder
$sql = "SELECT * FROM $work_table WHERE parent_id = $folder_id AND filetype ='file'";
$result = Database::query($sql);
if (Database::num_rows($result)) {
while ($row = Database::fetch_array($result, 'ASSOC')) {
$new_url = "work".$new_url.'/'.basename($row['url']);
while ($row = Database::fetch_array($result, 'ASSOC')) {
$new_url = "work".$new_url.'/'.basename($row['url']);
$new_url = Database::escape_string($new_url);
$sql = "UPDATE $work_table SET url = '$new_url', parent_id = $folder_id, contains_file = '1' WHERE id = {$row['id']}";
$sql = "UPDATE $work_table SET url = '$new_url', parent_id = $folder_id, contains_file = '1' WHERE id = {$row['id']}";
iDatabase::query($sql);
}
}

@ -16,8 +16,6 @@
* - reorganise code into functions
* @todo use database library
*/
Log::notice('Entering file');
$old_file_version = '1.9.0';
$new_file_version = '1.10.0';
@ -83,18 +81,18 @@ if (defined('SYSTEM_INSTALLATION')) {
* without a database name
*/
if (strlen($dbNameForm) > 40) {
Log::error('Database name '.$dbNameForm.' is too long, skipping');
$app['monolog']->addError('Database name '.$dbNameForm.' is too long, skipping');
} elseif (!in_array($dbNameForm, $dblist)) {
Log::error('Database '.$dbNameForm.' was not found, skipping');
$app['monolog']->addError('Database '.$dbNameForm.' was not found, skipping');
} else {
iDatabase::select_db($dbNameForm);
foreach ($m_q_list as $query) {
if ($only_test) {
Log::notice("iDatabase::query($dbNameForm,$query)");
$app['monolog']->addInfo("iDatabase::query($dbNameForm,$query)");
} else {
$res = iDatabase::query($query);
if ($res === false) {
Log::error('Error in '.$query.': '.iDatabase::error());
$app['monolog']->addError('Error in '.$query.': '.iDatabase::error());
}
}
}

@ -12,7 +12,6 @@
/**
* Include mandatory libraries
*/
Log::notice('Entering file');
require_once api_get_path(LIBRARY_PATH).'document.lib.php';
require_once api_get_path(LIBRARY_PATH).'fileManage.lib.php'; //check_name_exists()
@ -81,7 +80,7 @@ while ($row = Database::fetch_array($res)) {
$courses_dir_list[$row['code']] = $row['directory'];
}
if ($loglevel > 0) { Log::notice("Tables created/deleted for all courses"); }
if ($loglevel > 0) { $app['monolog']->addInfo("Tables created/deleted for all courses"); }
/**
* The migration needs to take all data from the original learnpath tables and add them to the new
@ -91,12 +90,12 @@ if ($loglevel > 0) { Log::notice("Tables created/deleted for all courses"); }
// Test only one course
foreach ($courses_id_full_table_prefix_list as $course_code => $db) {
if (strlen($courses_id_list[$course_code]) > 40) {
Log::error('Database '.$courses_id_list[$course_code].' is too long, skipping');
$app['monolog']->addError('Database '.$courses_id_list[$course_code].' is too long, skipping');
continue;
}
$incoherences = 0;
if ($loglevel > 0) { Log::notice("Now starting migration of learnpath tables from $db database..."); }
if ($loglevel > 0) { $app['monolog']->addInfo("Now starting migration of learnpath tables from $db database..."); }
$lp_doc = $db.TABLE_DOCUMENT;
$lp_main = $db.TABLE_LEARNPATH_MAIN;
$lp_ids = array();
@ -119,13 +118,13 @@ foreach ($courses_id_full_table_prefix_list as $course_code => $db) {
$sql_test = "SELECT * FROM $my_new_lp";
$res_test = Database::query($sql_test);
$sql_lp = "SELECT * FROM $lp_main";
if ($loglevel > 1) { Log::notice("$sql_lp"); }
if ($loglevel > 1) { $app['monolog']->addInfo("$sql_lp"); }
$res_lp = Database::query($sql_lp);
if (!$res_lp or !$res_test) {
if ($loglevel > 1) {
Log::error("+++Problem querying DB $lp_main+++ skipping (".Database::error().")");
$app['monolog']->addError("+++Problem querying DB $lp_main+++ skipping (".Database::error().")");
if (!$res_test) {
Log::error("This might be due to no existing table in the destination course");
$app['monolog']->addError("This might be due to no existing table in the destination course");
}
}
continue;
@ -280,13 +279,13 @@ foreach ($courses_id_full_table_prefix_list as $course_code => $db) {
case 'c':
// chapter-type prereq
$prereq_id = $lp_chap_items[$row['prereq_id']];
if (empty($prereq_id) && $loglevel > 1) { Log::error("Could not find prereq chapter ".$row['prereq_id']); }
if (empty($prereq_id) && $loglevel > 1) { $app['monolog']->addError("Could not find prereq chapter ".$row['prereq_id']); }
break;
case 'i':
default:
// item type prereq
$prereq_id = $lp_items[$parent_lps[$row['chapter_id']]][$row['prereq_id']];
if (empty($prereq_id) && $loglevel > 1) { Log::error("Could not find prereq item ".$row['prereq_id']); }
if (empty($prereq_id) && $loglevel > 1) { $app['monolog']->addError("Could not find prereq item ".$row['prereq_id']); }
break;
}
}
@ -513,7 +512,7 @@ foreach ($courses_id_full_table_prefix_list as $course_code => $db) {
$sql_tool_upd = "UPDATE $tbl_tool " .
"SET link='newscorm/lp_controller.php?action=view&lp_id=$new_lp_id' " .
"WHERE id = ".$row_tool['id'];
Log::notice('New LP - Migration - Updating tool table: '.$sql_tool_upd);
$app['monolog']->addInfo('New LP - Migration - Updating tool table: '.$sql_tool_upd);
// Make sure there is a way of retrieving which links were updated (to revert)
fwrite($fh,$sql_tool_upd." AND link ='$link'");
fwrite($fh_revert, "UPDATE $tbl_tool SET link='$link' WHERE id=".$row_tool['id']." AND link ='newscorm/lp_controller.php?action=view&lp_id=$new_lp_id';\n");
@ -534,7 +533,7 @@ foreach ($courses_id_full_table_prefix_list as $course_code => $db) {
if (!empty($matches[3]) && (strtolower(substr($matches[3], -15)) == 'imsmanifest.xml') && !is_file(realpath(urldecode($matches[3])))) {
//echo "Removing link $link from tools<br />";
$sql_tool_upd = "DELETE FROM $tbl_tool WHERE id = ".$row_tool['id'];
Log::notice('New LP - Migration - Updating tool table (dead link): '.$sql_tool_upd);
$app['monolog']->addInfo('New LP - Migration - Updating tool table (dead link): '.$sql_tool_upd);
// Make sure there is a way of retrieving which links were updated (to revert)
fwrite($fh, $sql_tool_upd." AND link ='$link'");
fwrite($fh_revert, "INSERT INTO $tbl_tool (link) VALUES ('$link');\n");
@ -579,7 +578,7 @@ foreach ($courses_id_full_table_prefix_list as $course_code => $db) {
}
}
if ($loglevel > 0) { Log::notice("Done!".$msg); }
if ($loglevel > 0) { $app['monolog']->addInfo("Done!".$msg); }
//flush();
//ob_flush();
}
@ -602,7 +601,7 @@ fwrite($fh_res, "-- Recording resulting course homepages links changes for SCORM
* The migration needs to take all data from the scorm.scorm_main and scorm.scorm_sco_data tables
* and add them to the new lp, lp_view, lp_item and lp_item_view tables.
*/
if ($loglevel > 0) { Log::notice("Now starting migration of scorm tables from global SCORM database"); }
if ($loglevel > 0) { $app['monolog']->addInfo("Now starting migration of scorm tables from global SCORM database"); }
$scorm_main = $dbScormForm.'.'.TABLE_SCORM_MAIN;
$scorm_item = $dbScormForm.'.'.TABLE_SCORM_SCO_DATA;
@ -619,7 +618,7 @@ $scorm_lp_paths = array();
Database::select_db($dbNameForm);
$course_main = TABLE_MAIN_COURSE;
$sql_crs = "SELECT * FROM $course_main WHERE target_course_code IS NULL";
if ($loglevel > 0) { Log::notice("$sql_crs"); }
if ($loglevel > 0) { $app['monolog']->addInfo("$sql_crs"); }
$res_crs = Database::query($sql_crs);
$num = Database::num_rows($res_crs);
@ -629,7 +628,7 @@ $course_code_swap = '';
$scormdocuments_lps = array();
while ($course_row = Database::fetch_array($res_crs)) {
if ($loglevel > 0) { Log::notice("Now dealing with course ".$course_row['code']."..."); }
if ($loglevel > 0) { $app['monolog']->addInfo("Now dealing with course ".$course_row['code']."..."); }
// Check the validity of this new course
$my_course_code = $course_row['code'];
@ -637,21 +636,21 @@ while ($course_row = Database::fetch_array($res_crs)) {
//$scormdocuments_lps = array();
$db_name = $courses_id_full_table_prefix_list[$my_course_code];
if (strlen($courses_id_list[$course_code]) > 40) {
Log::notice('Database '.$courses_id_list[$course_code].' is too long, skipping');
$app['monolog']->addInfo('Database '.$courses_id_list[$course_code].' is too long, skipping');
continue;
}
//echo "Now processing database $db_name<br />";
$tblscodoc = $db_name.TABLE_SCORMDOC;
$sql_scodoc = "SELECT path FROM $tblscodoc WHERE path IS NOT NULL AND path != ''";
if ($loglevel > 1) { Log::notice("$sql_scodoc"); }
if ($loglevel > 1) { $app['monolog']->addInfo("$sql_scodoc"); }
$res_scodoc = Database::query($sql_scodoc);
while ($row_scodoc = Database::fetch_array($res_scodoc)) {
// Check if there's more than one slash in total
if (strpos($row_scodoc['path'], '/', 1) === false) {
$tmp_path = $row_scodoc['path'];
if ($loglevel > 1) { Log::notice("++Now opening $tmp_path"); }
if ($loglevel > 1) { $app['monolog']->addInfo("++Now opening $tmp_path"); }
// Add a prefixing slash if there is none
if (substr($tmp_path, 0, 1) != '/') {
@ -672,17 +671,17 @@ while ($course_row = Database::fetch_array($res_crs)) {
// Avoid if contentTitle is not the name of an existing directory
} elseif (!is_file($courses_dir."/imsmanifest.xml")) {
// If the imsmanifest file was not found there
if ($loglevel > 2) { Log::error(" !!imsmanifest.xml not found at scormdocument's $courses_dir/imsmanifest.xml, skipping"); }
if ($loglevel > 2) { $app['monolog']->addError(" !!imsmanifest.xml not found at scormdocument's $courses_dir/imsmanifest.xml, skipping"); }
// Try subdirectories on one level depth
if ($loglevel > 2) { Log::notice(" Trying subdirectories..."); }
if ($loglevel > 2) { $app['monolog']->addInfo(" Trying subdirectories..."); }
$dh = opendir($courses_dir);
while ($entry = readdir($dh)) {
if (substr($entry, 0, 1) != '.') {
if (is_dir($courses_dir."/".$entry)) {
if (is_file($courses_dir."/".$entry."/imsmanifest.xml")) {
if ($loglevel > 2) { Log::notice(". .. and found $courses_dir/$entry/imsmanifest.xml!"); }
if ($loglevel > 2) { $app['monolog']->addInfo(". .. and found $courses_dir/$entry/imsmanifest.xml!"); }
if (!in_array($tmp_path."/".$entry."/imsmanifest.xml",$scormdocuments_lps)) {
if ($loglevel > 2){ Log::notice(" Recording.<br />"); }
if ($loglevel > 2){ $app['monolog']->addInfo(" Recording.<br />"); }
$scormdocuments_lps[] = $tmp_path."/".$entry;
}
}
@ -690,7 +689,7 @@ while ($course_row = Database::fetch_array($res_crs)) {
}
}
} else {
if ($loglevel > 2) { Log::notice(" Found scormdocument $tmp_path in ".$sys_course_path.$courses_dir_list[$my_course_code]."/scorm, treating it."); }
if ($loglevel > 2) { $app['monolog']->addInfo(" Found scormdocument $tmp_path in ".$sys_course_path.$courses_dir_list[$my_course_code]."/scorm, treating it."); }
$scormdocuments_lps[] = $tmp_path;
}
}
@ -736,9 +735,9 @@ while ($course_row = Database::fetch_array($res_crs)) {
//echo "Checking if manifest exists in ".$courses_dir.$entry."/imsmanifest.xml<br />";
if (is_file($courses_dir.$entry."/imsmanifest.xml")) {
//echo "found $courses_dir/$entry/imsmanifest.xml!<br />";
if ($loglevel > 2) { Log::notice(". .. and found $courses_dir/$entry/imsmanifest.xml!"); }
if ($loglevel > 2) { $app['monolog']->addInfo(". .. and found $courses_dir/$entry/imsmanifest.xml!"); }
if (!in_array($entry."/imsmanifest.xml", $scormdocuments_lps)) {
if ($loglevel > 2) { Log::notice(" Recording.<br />"); }
if ($loglevel > 2) { $app['monolog']->addInfo(" Recording.<br />"); }
//echo "Recording $entry<br />";
$scormdocuments_lps[] = $entry;
}
@ -756,7 +755,7 @@ while ($course_row = Database::fetch_array($res_crs)) {
$scorms[$my_course_code] = array();
$sql_paths = "SELECT * FROM $scorm_main WHERE dokeosCourse = '".$my_course_code."'";
if ($loglevel > 0) { Log::notice("$sql_paths"); }
if ($loglevel > 0) { $app['monolog']->addInfo("$sql_paths"); }
$res_paths = Database::query($sql_paths);
$num = Database::num_rows($res_paths);
while ($scorm_row = Database::fetch_array($res_paths)) {
@ -769,16 +768,16 @@ while ($course_row = Database::fetch_array($res_crs)) {
if ($my_path == '/') {
$my_path = '';
}
if ($loglevel > 1) { Log::notice("++++Now opening $my_path"); }
if ($loglevel > 1) { $app['monolog']->addInfo("++++Now opening $my_path"); }
if (!is_dir($courses_dir = $sys_course_path.''.$courses_dir_list[$my_course_code].'/scorm'.$my_path)) {
if ($loglevel > 1) { Log::notice("Path $my_content_id: $my_path doesn't exist in ".$sys_course_path.$courses_dir_list[$my_course_code]."/scorm, skipping"); }
if ($loglevel > 1) { $app['monolog']->addInfo("Path $my_content_id: $my_path doesn't exist in ".$sys_course_path.$courses_dir_list[$my_course_code]."/scorm, skipping"); }
continue;
// Avoid if contentTitle is not the name of an existing directory
} elseif (!is_file($sys_course_path.$courses_dir_list[$my_course_code].'/scorm'.$my_path."/imsmanifest.xml")) {
if ($loglevel > 1) { Log::notice("!!imsmanifest.xml not found at ".$sys_course_path.$courses_dir_list[$my_course_code].'/scorm'.$my_path."/imsmanifest.xml, skipping"); }
if ($loglevel > 1) { $app['monolog']->addInfo("!!imsmanifest.xml not found at ".$sys_course_path.$courses_dir_list[$my_course_code].'/scorm'.$my_path."/imsmanifest.xml, skipping"); }
continue;
} else {
if ($loglevel > 1) { Log::notice("Found $my_path in ".$sys_course_path.$courses_dir_list[$my_course_code]."/scorm".$mypath."/imsmanifest.xml, keeping it."); }
if ($loglevel > 1) { $app['monolog']->addInfo("Found $my_path in ".$sys_course_path.$courses_dir_list[$my_course_code]."/scorm".$mypath."/imsmanifest.xml, keeping it."); }
$scorms[$my_course_code][$my_path] = $my_content_id;
}
}
@ -787,7 +786,7 @@ while ($course_row = Database::fetch_array($res_crs)) {
foreach ($scormdocuments_lps as $path) {
if (!in_array($path,array_keys($scorms[$my_course_code]))) {
// Add it (-1 means no ID)
if ($loglevel > 1) { Log::notice("** Scormdocument path $path wasn't recorded yet. Added."); }
if ($loglevel > 1) { $app['monolog']->addInfo("** Scormdocument path $path wasn't recorded yet. Added."); }
$scorms[$my_course_code][$path] = -1;
}
}
@ -801,7 +800,7 @@ $my_count = 0;
foreach ($scorms as $mycourse => $my_paths) {
$my_count += count($my_paths);
}
if ($loglevel > 0) { Log::notice("---- Scorms array now contains ".$mycount." paths to migrate. Starting migration..."); }
if ($loglevel > 0) { $app['monolog']->addInfo("---- Scorms array now contains ".$mycount." paths to migrate. Starting migration..."); }
/**
* Looping through the SCO_MAIN table for SCORM learnpath attached to courses
@ -813,9 +812,9 @@ foreach ($scorms as $my_course_code => $paths_list) {
$course_lp_done = array();
$db_name = $courses_id_full_table_prefix_list[$my_course_code];
foreach ($paths_list as $my_path => $old_id) {
if ($loglevel > 1) { Log::notice("Migrating lp $my_path from course $my_course_code..."); }
if ($loglevel > 1) { $app['monolog']->addInfo("Migrating lp $my_path from course $my_course_code..."); }
$i_count ++;
//Log::notice('New LP - Migration script - Content '.$i_count.' on '.$num.' (course '.$scorm['dokeosCourse'].')');
//$app['monolog']->addInfo('New LP - Migration script - Content '.$i_count.' on '.$num.' (course '.$scorm['dokeosCourse'].')');
// Check whether there is no embedded learnpaths into other learnpaths (one root-level and another embedded)
$embedded = false;
foreach ($course_lp_done as $tmp_lp) {
@ -826,7 +825,7 @@ foreach ($scorms as $my_course_code => $paths_list) {
// Let it be
} else {
// This lp is embedded inside another lp who's imsmanifest exists, so prevent from parsing
if ($loglevel > 1) { Log::notice("LP $my_path is embedded into $tmp_lp, ignoring..."); }
if ($loglevel > 1) { $app['monolog']->addInfo("LP $my_path is embedded into $tmp_lp, ignoring..."); }
$embedded = true;
continue;
}
@ -840,7 +839,7 @@ foreach ($scorms as $my_course_code => $paths_list) {
$my_path = $my_path;
$my_name = basename($my_path);
if ($loglevel > 1) { Log::notice("Try importing LP $my_path from imsmanifest first as it is more reliable"); }
if ($loglevel > 1) { $app['monolog']->addInfo("Try importing LP $my_path from imsmanifest first as it is more reliable"); }
// Setup the ims path (path to the imsmanifest.xml file)
//echo "Looking for course with code ".$lp_course_code[$my_content_id]." (using $my_content_id)<br />\n";
@ -855,7 +854,7 @@ foreach ($scorms as $my_course_code => $paths_list) {
$oScorm = new scorm();
// Check whether imsmanifest.xml exists at this location. If not, ignore the imsmanifest.
// That should have been done before already, now.
if ($loglevel > 1) { Log::notice("Found imsmanifest ($ims), importing..."); }
if ($loglevel > 1) { $app['monolog']->addInfo("Found imsmanifest ($ims), importing..."); }
if (!empty($sco_middle_path)) { $oScorm->subdir = $sco_middle_path; } //this sets the subdir for the scorm package inside the scorm dir
// Parse manifest file
$manifest = $oScorm->parse_manifest($ims);
@ -864,7 +863,7 @@ foreach ($scorms as $my_course_code => $paths_list) {
//TODO: Add code to update the path in that new lp created, as it probably uses / where
// $sco_path_temp should be used...
$lp_ids[$my_content_id] = $oScorm->lp_id; // Contains the old LP ID => the new LP ID
if ($loglevel > 1) { Log::notice(" @@@ Created scorm lp ".$oScorm->lp_id." from imsmanifest [".$ims."] in course $my_course_code"); }
if ($loglevel > 1) { $app['monolog']->addInfo(" @@@ Created scorm lp ".$oScorm->lp_id." from imsmanifest [".$ims."] in course $my_course_code"); }
$lp_course[$my_content_id] = $courses_id_list[$my_course_code]; // Contains the old learnpath ID => the course DB name
$lp_course_code[$my_content_id] = $my_course_code;
$max_dsp_lp++;
@ -945,7 +944,7 @@ foreach ($scorms as $my_course_code => $paths_list) {
} else {
//echo "Could not find $ims... Proceeding from database...(line ".__LINE__.")<br />";
if ($loglevel > 1) { Log::notice("This is a normal SCORM path"); }
if ($loglevel > 1) { $app['monolog']->addInfo("This is a normal SCORM path"); }
$scorm_lp_paths[$my_content_id]['path'] = $my_path;
//$scorm_lp_paths[$my_content_id]['ims'] = '';
$table_name = $db_name.$new_lp;
@ -972,7 +971,7 @@ foreach ($scorms as $my_course_code => $paths_list) {
"'Unknown'," .
"'scorm_api.php'" .
")";
if ($loglevel > 1) { Log::notice("$sql_ins"); }
if ($loglevel > 1) { $app['monolog']->addInfo("$sql_ins"); }
$sql_res = Database::query($sql_ins);
$in_id = Database::insert_id();
if (!$in_id) die('Could not insert scorm lp: '.$sql_ins);
@ -994,7 +993,7 @@ foreach ($scorms as $my_course_code => $paths_list) {
// Check whether imsmanifest.xml exists at this location. If not, ignore the imsmanifest.
// That should have been done before already, now.
if (!is_file($scorm_lp_paths[$my_content_id]['ims'])) {
if ($loglevel > 1) { Log::notice("!!! imsmanifest file not found at ".$scorm_lp_paths[$my_content_id]['ims'].' for old lp '.$my_content_id.' and new '.$lp_ids[$my_content_id]); }
if ($loglevel > 1) { $app['monolog']->addInfo("!!! imsmanifest file not found at ".$scorm_lp_paths[$my_content_id]['ims'].' for old lp '.$my_content_id.' and new '.$lp_ids[$my_content_id]); }
$manifest = false;
} else {
//echo "Parsing ".$scorm_lp_paths[$my_content_id]['ims']."<br />\n";
@ -1009,7 +1008,7 @@ foreach ($scorms as $my_course_code => $paths_list) {
"SET name = '$my_lp_title', " .
"default_encoding = '".strtoupper($oScorm->manifest_encoding)."' " .
"WHERE id = ".$lp_ids[$my_content_id];
if ($loglevel > 1) { Log::notice("Updating title and encoding: ".$my_sql); }
if ($loglevel > 1) { $app['monolog']->addInfo("Updating title and encoding: ".$my_sql); }
$my_res = Database::query($my_sql);
}
}
@ -1280,5 +1279,5 @@ foreach ($scorms as $my_course_code => $paths_list) {
fclose($fh);
fclose($fh_revert);
fclose($fh_res);
if ($loglevel > 0) { Log::notice("All done!"); }
if ($loglevel > 0) { $app['monolog']->addInfo("All done!"); }
//echo "</body></html>";

@ -18,11 +18,9 @@
*
* @package chamilo.install
*/
Log::notice('Entering file');
function insert_db($db_name, $folder_name, $text)
{
// TODO: The (global?) variable $_course has not been declared/initialized.
$_course['dbName'] = $db_name;
@ -37,7 +35,7 @@ if (defined('SYSTEM_INSTALLATION')) {
Database::select_db($dbNameForm);
$db_name = $dbNameForm;
$sql = "SELECT * FROM course";
Log::notice('Getting courses for files updates: ' . $sql);
$app['monolog']->addInfo('Getting courses for files updates: ' . $sql);
$result = Database::query($sql);
while ($courses_directories = Database::fetch_array($result)) {
@ -47,13 +45,13 @@ if (defined('SYSTEM_INSTALLATION')) {
$origCRS = $updatePath . 'courses/' . $courses_directories["directory"];
if (!is_dir($origCRS)) {
Log::error('Directory ' . $origCRS . ' does not exist. Skipping.');
$app['monolog']->addError('Directory ' . $origCRS . ' does not exist. Skipping.');
continue;
}
// Move everything to the new hierarchy (from old path to new path)
Log::notice('Renaming ' . $origCRS . ' to ' . $sys_course_path . $courses_directories["directory"]);
$app['monolog']->addInfo('Renaming ' . $origCRS . ' to ' . $sys_course_path . $courses_directories["directory"]);
rename($origCRS, $sys_course_path . $courses_directories["directory"]);
Log::notice('Creating dirs in ' . $currentCourseRepositorySys);
$app['monolog']->addInfo('Creating dirs in ' . $currentCourseRepositorySys);
// FOLDER DOCUMENT
// document > audio
@ -116,11 +114,11 @@ if (defined('SYSTEM_INSTALLATION')) {
unlink($currentCourseRepositorySys . 'index.php');
$fp = @ fopen($currentCourseRepositorySys . 'index.php', 'w');
if ($fp) {
Log::error('Writing redirection file in ' . $currentCourseRepositorySys . 'index.php');
$app['monolog']->addError('Writing redirection file in ' . $currentCourseRepositorySys . 'index.php');
fwrite($fp, $content);
fclose($fp);
} else {
Log::error('Could not open file ' . $currentCourseRepositorySys . 'index.php');
$app['monolog']->addError('Could not open file ' . $currentCourseRepositorySys . 'index.php');
}
}
@ -135,17 +133,16 @@ if (defined('SYSTEM_INSTALLATION')) {
copy($updatePath . 'claroline/inc/conf/mail.conf.php', $pathForm . 'main/inc/conf/mail.conf.php');
copy($updatePath . 'claroline/inc/conf/profile.conf.inc.php', $pathForm . 'main/inc/conf/profile.conf.php');
Log::notice('Renaming ' . $updatePath . 'claroline/upload/users to ' . $pathForm . 'main/upload/users');
$app['monolog']->addInfo('Renaming ' . $updatePath . 'claroline/upload/users to ' . $pathForm . 'main/upload/users');
rename($updatePath . 'claroline/upload/users', $pathForm . 'main/upload/users');
Log::notice('Renaming ' . $updatePath . 'claroline/upload/audio to ' . $pathForm . 'main/upload/audio');
$app['monolog']->addInfo('Renaming ' . $updatePath . 'claroline/upload/audio to ' . $pathForm . 'main/upload/audio');
rename($updatePath . 'claroline/upload/audio', $pathForm . 'main/upload/audio');
Log::notice('Renaming ' . $updatePath . 'claroline/upload/images to ' . $pathForm . 'main/upload/images');
$app['monolog']->addInfo('Renaming ' . $updatePath . 'claroline/upload/images to ' . $pathForm . 'main/upload/images');
rename($updatePath . 'claroline/upload/images', $pathForm . 'main/upload/images');
Log::notice('Renaming ' . $updatePath . 'claroline/upload/linked_files to ' . $pathForm . 'main/upload/linked_files');
$app['monolog']->addInfo('Renaming ' . $updatePath . 'claroline/upload/linked_files to ' . $pathForm . 'main/upload/linked_files');
rename($updatePath . 'claroline/upload/linked_files', $pathForm . 'main/upload/linked_files');
Log::notice('Renaming ' . $updatePath . 'claroline/upload/video to ' . $pathForm . 'main/upload/video');
$app['monolog']->addInfo('Renaming ' . $updatePath . 'claroline/upload/video to ' . $pathForm . 'main/upload/video');
rename($updatePath . 'claroline/upload/video', $pathForm . 'main/upload/video');
} else {
echo 'You are not allowed here !' . __FILE__;
}

@ -17,8 +17,6 @@
* @package chamilo.install
*/
Log::notice('Entering file');
if (defined('SYSTEM_INSTALLATION')) {
// Edit the configuration file

@ -16,43 +16,37 @@
* version be available until the end of the installation.
* @package chamilo.install
*/
Log::notice('Entering file');
if (defined('SYSTEM_INSTALLATION')) {
// Edit the configuration file
$file = file(api_get_path(CONFIGURATION_PATH).'configuration.php');
$fh = fopen(api_get_path(CONFIGURATION_PATH).'configuration.php', 'w');
$found_version = false;
$found_stable = false;
foreach ($file as $line) {
$ignore = false;
if (stripos($line, '$_configuration[\'dokeos_version\']') !== false) {
$found_version = true;
$line = '$_configuration[\'dokeos_version\'] = \''.$new_version.'\';'."\r\n";
} elseif (stripos($line, '$_configuration[\'dokeos_stable\']') !== false) {
$found_stable = true;
$line = '$_configuration[\'dokeos_stable\'] = '.($new_version_stable ? 'true' : 'false').';'."\r\n";
} elseif (stripos($line, '?>') !== false) {
// Ignore the line
$ignore = true;
}
if (!$ignore) {
fwrite($fh, $line);
}
}
if (!$found_version) {
fwrite($fh, '$_configuration[\'dokeos_version\'] = \''.$new_version.'\';'."\r\n");
}
if (!$found_stable) {
fwrite($fh, '$_configuration[\'dokeos_stable\'] = '.($new_version_stable ? 'true' : 'false').';'."\r\n");
}
fwrite($fh, '?>');
fclose($fh);
// Edit the configuration file
$file = file(api_get_path(CONFIGURATION_PATH).'configuration.php');
$fh = fopen(api_get_path(CONFIGURATION_PATH).'configuration.php', 'w');
$found_version = false;
$found_stable = false;
foreach ($file as $line) {
$ignore = false;
if (stripos($line, '$_configuration[\'dokeos_version\']') !== false) {
$found_version = true;
$line = '$_configuration[\'dokeos_version\'] = \''.$new_version.'\';'."\r\n";
} elseif (stripos($line, '$_configuration[\'dokeos_stable\']') !== false) {
$found_stable = true;
$line = '$_configuration[\'dokeos_stable\'] = '.($new_version_stable ? 'true' : 'false').';'."\r\n";
} elseif (stripos($line, '?>') !== false) {
// Ignore the line
$ignore = true;
}
if (!$ignore) {
fwrite($fh, $line);
}
}
if (!$found_version) {
fwrite($fh, '$_configuration[\'dokeos_version\'] = \''.$new_version.'\';'."\r\n");
}
if (!$found_stable) {
fwrite($fh, '$_configuration[\'dokeos_stable\'] = '.($new_version_stable ? 'true' : 'false').';'."\r\n");
}
fwrite($fh, '?>');
fclose($fh);
} else {
echo 'You are not allowed here !' . __FILE__;
echo 'You are not allowed here !'.__FILE__;
}

@ -18,8 +18,6 @@
* @package chamilo.install
*/
Log::notice('Entering file');
if (defined('SYSTEM_INSTALLATION')) {
// Edit the configuration file
@ -64,7 +62,7 @@ if (defined('SYSTEM_INSTALLATION')) {
$db_name = $dbNameForm;
$sql = "SELECT * FROM $db_name.course";
Log::notice('Getting courses for files updates: ' . $sql);
$app['monolog']->addInfo('Getting courses for files updates: ' . $sql);
$result = iDatabase::query($sql);
while ($courses_directories = iDatabase::fetch_array($result)) {
@ -75,13 +73,13 @@ if (defined('SYSTEM_INSTALLATION')) {
$origCRS = $updatePath . 'courses/' . $courses_directories['directory'];
if (!is_dir($origCRS)) {
Log::error('Directory ' . $origCRS . ' does not exist. Skipping.');
$app['monolog']->addError('Directory ' . $origCRS . ' does not exist. Skipping.');
continue;
}
// Move everything to the new hierarchy (from old path to new path)
Log::notice('Renaming ' . $origCRS . ' to ' . $sys_course_path . $courses_directories['directory']);
$app['monolog']->addInfo('Renaming ' . $origCRS . ' to ' . $sys_course_path . $courses_directories['directory']);
rename($origCRS, $sys_course_path . $courses_directories['directory']);
Log::notice('Creating dirs in ' . $currentCourseRepositorySys);
$app['monolog']->addInfo('Creating dirs in ' . $currentCourseRepositorySys);
// DOCUMENT FOLDER
// document > shared_folder
@ -116,6 +114,5 @@ if (defined('SYSTEM_INSTALLATION')) {
}
}
} else {
echo 'You are not allowed here !' . __FILE__;
}

@ -17,8 +17,6 @@
* @package chamilo.install
*/
Log::notice('Entering file');
if (defined('SYSTEM_INSTALLATION')) {
// Edit the configuration file

@ -12,8 +12,6 @@
* @package chamilo.install
*/
Log::notice('Entering file');
if (defined('SYSTEM_INSTALLATION')) {
// Edit the configuration file
@ -59,7 +57,7 @@ if (defined('SYSTEM_INSTALLATION')) {
$db_name = $dbNameForm;
$sql = "SELECT * FROM $db_name.course";
Log::notice('Getting courses for files updates: ' . $sql);
$app['monolog']->addInfo('Getting courses for files updates: ' . $sql);
$result = iDatabase::query($sql);
if (iDatabase::num_rows($result) > 0) {
@ -71,7 +69,7 @@ if (defined('SYSTEM_INSTALLATION')) {
$success = mkdir($path, $perm, true);
if(!$success){
$course_directory = $courses_directories['directory'];
Log::error("Failed to create dir path: $path, course directory: $course_directory, sys course path: $sys_course_path, perm: , perm: $perm");
$app['monolog']->addError("Failed to create dir path: $path, course directory: $course_directory, sys course path: $sys_course_path, perm: , perm: $perm");
}
}
@ -81,7 +79,7 @@ if (defined('SYSTEM_INSTALLATION')) {
$success = mkdir($path, $perm, true);
if(!$success){
$course_directory = $courses_directories['directory'];
Log::error("Failed to create dir path: $path, course directory: $course_directory, sys course path: $sys_course_path, perm: $perm");
$app['monolog']->addError("Failed to create dir path: $path, course directory: $course_directory, sys course path: $sys_course_path, perm: $perm");
}
}
}
@ -93,6 +91,5 @@ if (defined('SYSTEM_INSTALLATION')) {
mkdir($pathForm . 'home/default_platform_document/template_thumb', $perm);
}
} else {
echo 'You are not allowed here !' . __FILE__;
}

@ -11,8 +11,6 @@
* @package chamilo.install
*/
Log::notice('Entering file');
if (defined('SYSTEM_INSTALLATION')) {
// Edit the configuration file

@ -11,8 +11,6 @@
* @package chamilo.install
*/
Log::notice('Entering file');
if (defined('SYSTEM_INSTALLATION')) {
// Edit the configuration file

@ -11,8 +11,6 @@
* current configuration file.
* @package chamilo.install
*/
Log::notice('Entering file');
if (defined('SYSTEM_INSTALLATION')) {
$conf_dir = api_get_path(CONFIGURATION_PATH);

Loading…
Cancel
Save