Exemplo n.º 1
0
/**
 * Install module databases at course creation
 */
function install_module_at_course_creation($moduleLabel, $courseDbName, $language, $courseDirectory)
{
    $sqlPath = get_module_path($moduleLabel) . '/setup/course_install.sql';
    $phpPath = get_module_path($moduleLabel) . '/setup/course_install.php';
    if (file_exists($sqlPath)) {
        if (!execute_sql_at_course_creation($sqlPath, $courseDbName)) {
            return false;
        }
    }
    if (file_exists($phpPath)) {
        // include the language file with all language variables
        language::load_translation($language);
        language::load_locale_settings($language);
        language::load_module_translation($moduleLabel, $language);
        // define tables to use in php install scripts
        $courseDbName = get_conf('courseTablePrefix') . $courseDbName . get_conf('dbGlu');
        $moduleCourseTblList = claro_sql_get_course_tbl($courseDbName);
        /*
         * @todo select database should not be needed if the setup scripts are
         * well written !
         */
        if (!get_conf('singleDbEnabled')) {
            claro_sql_select_db($courseDbName);
        }
        require_once $phpPath;
    }
    return true;
}
Exemplo n.º 2
0
/**
 * Uninstall a specific module to the platform
 *
 * @param integer $moduleId the id of the module to uninstall
 * @return array( backlog, boolean )
 *      backlog object
 *      boolean true if the uninstall process suceeded, false otherwise
 * @todo remove the need of the Backlog and use Exceptions instead
 */
function uninstall_module($moduleId, $deleteModuleData = true)
{
    $success = true;
    $backlog = new Backlog();
    //first thing to do : deactivate the module
    // deactivate_module($moduleId);
    $moduleInfo = get_module_info($moduleId);
    if ($moduleInfo['type'] == 'tool' && $moduleId) {
        // 2- delete the module in the cours_tool table, used for every course creation
        list($backlog2, $success2) = unregister_module_from_courses($moduleId);
        if ($success2) {
            $backlog->success(get_lang('Module uninstalled in all courses'));
        } else {
            $backlog->append($backlog2);
        }
    }
    //Needed tables and vars
    $tbl = claro_sql_get_main_tbl();
    $backlog = new Backlog();
    // 0- find info about the module to uninstall
    $sql = "SELECT `label`\n              FROM `" . $tbl['module'] . "`\n             WHERE `id` = " . (int) $moduleId;
    $module = claro_sql_query_get_single_row($sql);
    if ($module == false) {
        $backlog->failure(get_lang("No module to uninstall"));
        $success = false;
    } else {
        // 1- Include the local 'uninstall.sql' and 'uninstall.php' file of the module if they exist
        // call uninstall.php first in case it requires module database schema to run
        if (isset($uninstallPhpScript)) {
            unset($uninstallPhpScript);
        }
        $uninstallPhpScript = get_module_path($module['label']) . '/setup/uninstall.php';
        if (file_exists($uninstallPhpScript)) {
            language::load_translation();
            language::load_locale_settings();
            language::load_module_translation($module['label']);
            load_module_config($module['label']);
            require $uninstallPhpScript;
            $backlog->info(get_lang('Module uninstallation script called'));
        }
        if (isset($uninstallSqlScript)) {
            unset($uninstallSqlScript);
        }
        $uninstallSqlScript = get_module_path($module['label']) . '/setup/uninstall.sql';
        if ($deleteModuleData && file_exists($uninstallSqlScript)) {
            $sql = file_get_contents($uninstallSqlScript);
            if (!empty($sql)) {
                $sql = str_replace('__CL_MAIN__', get_conf('mainTblPrefix'), $sql);
                if (false !== claro_sql_multi_query($sql)) {
                    $backlog->success(get_lang('Database uninstallation succeeded'));
                } else {
                    $backlog->failure(get_lang('Database uninstallation failed'));
                    $success = false;
                }
            }
        } elseif (!$deleteModuleData && file_exists($uninstallSqlScript)) {
            $backlog->info(get_lang('Database uninstallation skipped'));
        }
        // 2- delete related files and folders
        $modulePath = get_module_path($module['label']);
        if (file_exists($modulePath)) {
            if (claro_delete_file($modulePath)) {
                $backlog->success(get_lang('Delete scripts of the module'));
            } else {
                $backlog->failure(get_lang('Error while deleting the scripts of the module'));
                $success = false;
            }
        }
        //  delete the module in the cours_tool table, used for every course creation
        //retrieve this module_id first
        $sql = "SELECT id as tool_id FROM `" . $tbl['tool'] . "`\n                WHERE claro_label = '" . $module['label'] . "'";
        $tool_to_delete = claro_sql_query_get_single_row($sql);
        $tool_id = $tool_to_delete['tool_id'];
        $sql = "DELETE FROM `" . $tbl['tool'] . "`\n                WHERE claro_label = '" . $module['label'] . "'\n            ";
        claro_sql_query($sql);
        // 3- delete related entries in main DB
        $sql = "DELETE FROM `" . $tbl['module'] . "`\n                WHERE `id` = " . (int) $moduleId;
        claro_sql_query($sql);
        $sql = "DELETE FROM `" . $tbl['module_info'] . "`\n                WHERE `module_id` = " . (int) $moduleId;
        claro_sql_query($sql);
        $sql = "DELETE FROM `" . $tbl['module_contexts'] . "`\n                WHERE `module_id` = " . (int) $moduleId;
        claro_sql_query($sql);
        // 4-Manage right - Delete read action
        $action = new RightToolAction();
        $action->setName('read');
        $action->setToolId($tool_id);
        $action->delete();
        // Manage right - Delete edit action
        $action = new RightToolAction();
        $action->setName('edit');
        $action->setToolId($tool_id);
        $action->delete();
        // 5- remove all docks entries in which the module displays
        // TODO FIXME handle failure
        remove_module_dock($moduleId, 'ALL');
        // 6- cache file with the module's include must be renewed after uninstallation of the module
        if (!generate_module_cache()) {
            $backlog->failure(get_lang('Module cache update failed'));
            $success = false;
        } else {
            $backlog->success(get_lang('Module cache update succeeded'));
        }
    }
    return array($backlog, $success);
}
Exemplo n.º 3
0
// Claroline's administration menu
$menu['AdminClaroline'][] = '<a href="http://www.claroline.net/index.php?plugin=formidable&controller=forms&frm_action=preview&form=o4x38v">' . get_lang('Register my campus') . '</a>';
$menu['AdminClaroline'][] = '<a href="http://forum.claroline.net/">' . get_lang('Support forum') . '</a>';
$menu['AdminClaroline'][] = '<a href="clarolinenews.php">' . get_lang('Claroline.net news') . '</a>';
// Technical's administration menu
$menu['AdminTechnical'][] = '<a href="technical/phpInfo.php">' . get_lang('System Info') . '</a>';
$menu['AdminTechnical'][] = '<a href="technical/files_stats.php">' . get_lang('Files statistics') . '</a>';
$menu['AdminTechnical'][] = '<a href="../tracking/platform_report.php">' . get_lang('Platform statistics') . '</a>';
$menu['AdminTechnical'][] = '<a href="campusProblem.php">' . get_lang('Scan technical fault') . '</a>';
$menu['AdminTechnical'][] = '<a href="upgrade/index.php">' . get_lang('Upgrade') . '</a>';
// Communication's administration menu
$menu['Communication'][] = '<a href="../messaging/admin.php">' . get_lang('Internal messaging') . '</a>';
$adminModuleList = get_admin_module_list(true);
if (count($adminModuleList) > 0) {
    foreach ($adminModuleList as $module) {
        language::load_module_translation($module['label']);
        $menu['ExtraTools'][] = '<a href="' . get_module_entry_url($module['label']) . '">' . get_lang($module['name']) . '</a>';
    }
}
// Deal with interbreadcrumbs and title variable
$nameTools = get_lang('Administration');
// No sense because not allowed with claro_is_platform_admin(),
// but claro_is_platform_admin() should be later replaced by
// get_user_property ('can view admin menu')
$is_allowedToAdmin = claro_is_platform_admin();
// Is our installation system accessible ?
if (file_exists('../install/index.php') && !file_exists('../install/.htaccess')) {
    // If yes, warn the administrator
    $dialogBox->warning(get_block('blockWarningRemoveInstallDirectory'));
}
$register_globals_value = ini_get('register_globals');
Exemplo n.º 4
0
 public function __construct()
 {
     // HACK : force loading translation here to avoid having to rewrite the kernel !
     language::load_translation();
     language::load_locale_settings();
     language::load_module_translation();
     $this->header = ClaroHeader::getInstance();
 }
Exemplo n.º 5
0
/**
 * Execute module initialization script in the given course
 * @param string $moduleLabel
 * @param string $courseId
 */
function install_module_script_in_course($moduleLabel, $courseId)
{
    $phpPath = get_module_path($moduleLabel) . '/setup/course_install.php';
    if (file_exists($phpPath)) {
        $courseDirectory = claro_get_current_course_data('path');
        $moduleCourseTblList = $courseTbl = claro_sql_get_course_tbl();
        // include the language file with all language variables
        language::load_translation();
        language::load_locale_settings();
        language::load_module_translation($moduleLabel);
        load_module_config($moduleLabel);
        require_once $phpPath;
    }
}
Exemplo n.º 6
0
// post kernel access check
if (claro_is_in_a_course()) {
    if (!(basename(php_self()) == 'courses.php' && isset($_REQUEST['cmd']) && $_REQUEST['cmd'] == 'exReg')) {
        if (!claro_is_course_allowed()) {
            if (!claro_is_user_authenticated()) {
                claro_disp_auth_form();
            } else {
                if (claro_get_current_course_data('access') == 'private' && !claro_is_course_member()) {
                    claro_die(get_lang("You have to be enroled to this course to access its contents") . '<br /><a href="' . claro_htmlspecialchars(get_path('clarolineRepositoryWeb') . 'auth/courses.php?cmd=exReg&course=' . claro_get_current_course_id()) . '">' . claro_html_icon('enroll') . ' ' . '<b>' . get_lang('Enrolment') . '</b>' . '</a>');
                } else {
                    claro_die(get_lang("Not allowed!"));
                }
            }
        }
    }
}
// group_space.php?registration=1&selfReg=1
if (claro_is_in_a_group()) {
    if (!(basename(php_self()) == 'group_space.php' && isset($_REQUEST['registration']) && $_REQUEST['registration'] == '1')) {
        if (!claro_is_group_allowed()) {
            if (!claro_is_user_authenticated()) {
                claro_disp_auth_form();
            } else {
                claro_die(get_lang("Not allowed!"));
            }
        }
    }
}
// FORCE reloading current module translation here
language::load_module_translation();