/** * this function detect modules useing id_module, module_name and * default_op and add the module to the specified course, alsoassign * the specified permission to the level_idst * @param int $id_course the id of the course * @param array $level_idst the list of the idst assigned to each level * @param int $id_amin the id of the main menu * @param string $m_name the module name * @param string $d_op the default module op * @param array $level_token_to_assign for each level the token to assign array(level => array(token, token)) * * @return bool true if success, false otherwise */ function addModuleToCourse($id_course, $level_idst, $id_main, $id_m = false, $m_name = false, $d_op = false, $level_token_to_assign = false) { require_once $GLOBALS['where_lms'] . '/lib/lib.manmenu.php'; require_once $GLOBALS['where_framework'] . '/lib/lib.istance.php'; $acl_man =& Docebo::user()->getAclManager(); $re = true; $query_menu = "\r\n\t\tSELECT idModule, module_name, default_op, file_name, class_name\r\n\t\tFROM " . $GLOBALS['prefix_lms'] . "_module\r\n\t\tWHERE 1"; if ($id_m !== false) { $query_menu .= " AND idModule = '" . $id_m . "' "; } if ($m_name !== false) { $query_menu .= " AND module_name = '" . $m_name . "' "; } if ($d_op !== false) { $query_menu .= " AND default_op = '" . $d_op . "' "; } $re_query = sql_query($query_menu); if (!$re_query || mysql_num_rows($re_query) == 0) { return false; } $i = 0; while (list($id_module, $module_name, $module_op, $file_name, $class_name) = sql_fetch_row($re_query)) { $module_obj =& createLmsModule($module_name); $tokens = $module_obj->getAllToken($module_op); $module_role =& createModuleRoleForCourse($id_course, $module_name, $tokens); foreach ($level_token_to_assign as $level => $token_list) { foreach ($token_list as $token) { $re &= $acl_man->addToRole($module_role[$token], $level_idst[$level]); } // end foreach } // end foreach $re &= sql_query("INSERT INTO " . $GLOBALS['prefix_lms'] . "_menucourse_under ( idCourse, idModule, idMain, sequence, my_name )\r\n\t\t\tVALUES ('" . $id_course . "', '" . $id_module . "', '" . $id_main . "', '" . $i++ . "', '')"); } // end while return $re; }
function removeModule($id_module, $id_main, $id_custom) { $acl_man =& Docebo::user()->getAclManager(); // Load module info $query_module = "\r\n\tSELECT module_name, default_name, file_name, class_name \r\n\tFROM " . $GLOBALS['prefix_lms'] . "_module \r\n\tWHERE idModule = '" . $id_module . "'"; list($module_name, $name_db, $file_name, $class_name) = sql_fetch_row(sql_query($query_module)); $module_obj =& createLmsModule($module_name); $levels = CourseLevel::getLevels(); $all_token = $module_obj->getAllToken(); // corresponding of token -> idst role $map_idst_token =& getModuleRoleSt($module_name, $all_token); // corresponding of level -> idst level $map_idst_level =& getCustomLevelSt($id_custom); // old permission of all module $actual_perm =& getAllModulesPermissionSt($map_idst_level, array_flip($map_idst_token)); $re = true; foreach ($levels as $lv => $name_level) { $idlevel = $map_idst_level[$lv]; foreach ($actual_perm[$lv] as $idrole => $v) { $acl_man->removeFromRole($idrole, $idlevel); } } if ($re) { $re = sql_query("\r\n\t\tDELETE FROM " . $GLOBALS['prefix_lms'] . "_menucustom_under \r\n\t\tWHERE idMain = '" . (int) $id_main . "' AND idModule = '" . (int) $id_module . "'"); } return $re; }