|
@@ -44,6 +44,7 @@ define('COURSE_STUDENT', 14); //student subscribed in a course
|
|
|
define('SESSION_STUDENT', 15); //student subscribed in a session course
|
|
|
define('COURSE_TUTOR', 16); // student is tutor of a course (NOT in session)
|
|
|
define('STUDENT_BOSS', 17); // student is boss
|
|
|
+define('INVITEE', 20);
|
|
|
|
|
|
// Table of status
|
|
|
$_status_list[COURSEMANAGER] = 'teacher'; // 1
|
|
@@ -51,6 +52,7 @@ $_status_list[SESSIONADMIN] = 'session_admin'; // 3
|
|
|
$_status_list[DRH] = 'drh'; // 4
|
|
|
$_status_list[STUDENT] = 'user'; // 5
|
|
|
$_status_list[ANONYMOUS] = 'anonymous'; // 6
|
|
|
+$_status_list[INVITEE] = 'invited'; // 20
|
|
|
|
|
|
// COURSE VISIBILITY CONSTANTS
|
|
|
/** only visible for course admin */
|
|
@@ -293,6 +295,8 @@ define('WEB_TEMPLATE_PATH', 'WEB_TEMPLATE_PATH');
|
|
|
define('SYS_TEMPLATE_PATH', 'SYS_TEMPLATE_PATH');
|
|
|
define('WEB_FONTS_PATH', 'WEB_FONTS_PATH');
|
|
|
define('SYS_FONTS_PATH', 'SYS_FONTS_PATH');
|
|
|
+define('SYS_DATA_PATH', 'SYS_DATA_PATH');
|
|
|
+define('WEB_DATA_PATH', 'WEB_DATA_PATH');
|
|
|
|
|
|
define('SYS_DEFAULT_COURSE_DOCUMENT_PATH', 'SYS_DEFAULT_COURSE_DOCUMENT_PATH');
|
|
|
define('REL_DEFAULT_COURSE_DOCUMENT_PATH', 'REL_DEFAULT_COURSE_DOCUMENT_PATH');
|
|
@@ -455,6 +459,7 @@ require_once __DIR__.'/internationalization.lib.php';
|
|
|
* api_get_path(SYS_ARCHIVE_PATH) /var/www/chamilo/archive/
|
|
|
* api_get_path(SYS_COURSE_PATH) /var/www/chamilo/courses/
|
|
|
* api_get_path(SYS_CODE_PATH) /var/www/chamilo/main/
|
|
|
+ * api_get_path(SYS_DATA_PATH) /var/www/chamilo/data/
|
|
|
* api_get_path(INCLUDE_PATH) /var/www/chamilo/main/inc/
|
|
|
* api_get_path(LIBRARY_PATH) /var/www/chamilo/main/inc/lib/
|
|
|
* api_get_path(CONFIGURATION_PATH) /var/www/chamilo/main/inc/conf/
|
|
@@ -468,6 +473,7 @@ require_once __DIR__.'/internationalization.lib.php';
|
|
|
* api_get_path(WEB_PATH) http://www.mychamilo.org/chamilo/
|
|
|
* api_get_path(WEB_COURSE_PATH) http://www.mychamilo.org/chamilo/courses/
|
|
|
* api_get_path(WEB_CODE_PATH) http://www.mychamilo.org/chamilo/main/
|
|
|
+ * api_get_path(WEB_DATA_PATH) http://www.mychamilo.org/chamilo/data/
|
|
|
* api_get_path(WEB_PLUGIN_PATH) http://www.mychamilo.org/chamilo/plugin/
|
|
|
* api_get_path(WEB_ARCHIVE_PATH) http://www.mychamilo.org/chamilo/archive/
|
|
|
* api_get_path(WEB_IMG_PATH) http://www.mychamilo.org/chamilo/main/img/
|
|
@@ -495,12 +501,14 @@ require_once __DIR__.'/internationalization.lib.php';
|
|
|
function api_get_path($path_type, $path = null)
|
|
|
{
|
|
|
static $paths = array(
|
|
|
+ SYS_DATA_PATH => '',
|
|
|
WEB_PATH => '',
|
|
|
SYS_PATH => '',
|
|
|
REL_PATH => '',
|
|
|
WEB_SERVER_ROOT_PATH => '',
|
|
|
SYS_SERVER_ROOT_PATH => '',
|
|
|
WEB_COURSE_PATH => '',
|
|
|
+ WEB_DATA_PATH => '',
|
|
|
SYS_COURSE_PATH => '',
|
|
|
REL_COURSE_PATH => '',
|
|
|
REL_CODE_PATH => '',
|
|
@@ -549,6 +557,8 @@ function api_get_path($path_type, $path = null)
|
|
|
//default $_configuration['root_web'] configuration
|
|
|
$root_web = $_configuration['root_web'];
|
|
|
|
|
|
+ $data_folder = 'data/';
|
|
|
+
|
|
|
// Configuration data for already installed system.
|
|
|
$root_sys = $_configuration['root_sys'];
|
|
|
$load_new_config = false;
|
|
@@ -621,6 +631,8 @@ function api_get_path($path_type, $path = null)
|
|
|
$paths[REL_CODE_PATH] = $root_rel.$code_folder;
|
|
|
$paths[WEB_CODE_PATH] = $root_web.$code_folder;
|
|
|
$paths[SYS_CODE_PATH] = $root_sys.$code_folder;
|
|
|
+ $paths[SYS_DATA_PATH] = $root_sys.$data_folder;
|
|
|
+ $paths[WEB_DATA_PATH] = $root_web.$data_folder;
|
|
|
|
|
|
$paths[WEB_DEFAULT_COURSE_DOCUMENT_PATH] = $paths[WEB_CODE_PATH].'default_course_document/';
|
|
|
$paths[REL_DEFAULT_COURSE_DOCUMENT_PATH] = $paths[REL_PATH].'main/default_course_document/';
|
|
@@ -669,6 +681,7 @@ function api_get_path($path_type, $path = null)
|
|
|
WEB_ARCHIVE_PATH => 'archive/',
|
|
|
WEB_LIBRARY_PATH => 'inc/lib/',
|
|
|
WEB_AJAX_PATH => 'inc/ajax/',
|
|
|
+ WEB_DATA_PATH => '',
|
|
|
);
|
|
|
|
|
|
$root_web = api_add_trailing_slash($root_web);
|
|
@@ -680,6 +693,7 @@ function api_get_path($path_type, $path = null)
|
|
|
$paths[WEB_SERVER_ROOT_PATH] = $server_base_web.'/';
|
|
|
$paths[WEB_COURSE_PATH] = $root_web.$course_folder;
|
|
|
$paths[WEB_CODE_PATH] = $root_web.$code_folder;
|
|
|
+ $paths[WEB_DATA_PATH] = $root_web.$data_folder;
|
|
|
$paths[WEB_IMG_PATH] = $paths[WEB_CODE_PATH].$web_paths[WEB_IMG_PATH];
|
|
|
|
|
|
$paths[WEB_CSS_PATH] = $paths[WEB_CODE_PATH].$web_paths[WEB_CSS_PATH];
|
|
@@ -2617,6 +2631,16 @@ function api_is_teacher() {
|
|
|
return isset($_user['status']) && $_user['status'] == COURSEMANAGER;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * Checks whether the current user is a invited user
|
|
|
+ * @return boolean
|
|
|
+ */
|
|
|
+function api_is_invitee() {
|
|
|
+ global $_user;
|
|
|
+
|
|
|
+ return isset($_user['status']) && $_user['status'] == INVITEE;
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* This function checks whether a session is assigned into a category
|
|
|
* @param int - session id
|
|
@@ -4721,7 +4745,8 @@ function api_get_status_langvars() {
|
|
|
DRH => get_lang('Drh', ''),
|
|
|
STUDENT => get_lang('Student', ''),
|
|
|
ANONYMOUS => get_lang('Anonymous', ''),
|
|
|
- STUDENT_BOSS => get_lang('RoleStudentBoss', '')
|
|
|
+ STUDENT_BOSS => get_lang('RoleStudentBoss', ''),
|
|
|
+ INVITEE => get_lang('Invited'),
|
|
|
);
|
|
|
}
|
|
|
|
|
@@ -5030,7 +5055,7 @@ function & api_get_settings($cat = null, $ordering = 'list', $access_url = 1, $u
|
|
|
|
|
|
/**
|
|
|
* Gets the distinct settings categories
|
|
|
- * @param array Array of strings giving the categories we want to exclude
|
|
|
+ * @param array Array of strings giving the categories we want to excluded
|
|
|
* @param int Access URL. Optional. Defaults to 1
|
|
|
* @return array A list of categories
|
|
|
*/
|
|
@@ -7567,6 +7592,62 @@ function api_is_student_boss ()
|
|
|
|
|
|
return isset($_user['status']) && $_user['status'] == STUDENT_BOSS;
|
|
|
}
|
|
|
+/**
|
|
|
+ * Check whether the user type should be exclude.
|
|
|
+ * Such as invited or anonymous users
|
|
|
+ * @param boolean $checkDB Optional. Whether check the user status
|
|
|
+ * @param int $userId Options. The user id
|
|
|
+ * @return boolean
|
|
|
+ */
|
|
|
+function apiIsExcludedUserType($checkDB = false, $userId = 0)
|
|
|
+{
|
|
|
+ if ($checkDB) {
|
|
|
+ $userId = empty($userId) ? api_get_user_id() : intval($userId);
|
|
|
+
|
|
|
+ if ($userId == 0) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ $userInfo = api_get_user_info($userId);
|
|
|
+
|
|
|
+ switch ($userInfo['status']) {
|
|
|
+ case INVITEE:
|
|
|
+ //no break;
|
|
|
+ case ANONYMOUS:
|
|
|
+ return true;
|
|
|
+ default:
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $isInvited = api_is_invitee();
|
|
|
+ $isAnonymous = api_is_anonymous();
|
|
|
+
|
|
|
+ if ($isInvited || $isAnonymous) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ return false;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * Get the user status to ignore in reports
|
|
|
+ * @param string $format Optional. The result type (array or string)
|
|
|
+ * @return array|string
|
|
|
+ */
|
|
|
+function api_get_users_status_ignored_in_reports($format = 'array')
|
|
|
+{
|
|
|
+ $excludedTypes = array(
|
|
|
+ INVITEE,
|
|
|
+ ANONYMOUS
|
|
|
+ );
|
|
|
+
|
|
|
+ if ($format == 'string') {
|
|
|
+ return implode(', ', $excludedTypes);
|
|
|
+ }
|
|
|
+
|
|
|
+ return $excludedTypes;
|
|
|
+}
|
|
|
|
|
|
/**
|
|
|
* Set the Site Use Cookie Warning for 1 year
|
|
@@ -7599,10 +7680,37 @@ function api_format_time($time, $originFormat = 'php')
|
|
|
$secs = ($time % 60);
|
|
|
|
|
|
if ($originFormat == 'js') {
|
|
|
- $scormTime = trim(sprintf("%02d : %02d : %02d", $hours, $mins, $secs));
|
|
|
+ $formattedTime = trim(sprintf("%02d : %02d : %02d", $hours, $mins, $secs));
|
|
|
} else {
|
|
|
- $scormTime = trim(sprintf("%02d$h%02d'%02d\"", $hours, $mins, $secs));
|
|
|
+ $formattedTime = trim(sprintf("%02d$h%02d'%02d\"", $hours, $mins, $secs));
|
|
|
+ }
|
|
|
+
|
|
|
+ return $formattedTime;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * Create a new empty directory with index.html file
|
|
|
+ * @param string $name The new directory name
|
|
|
+ * @param string $parentDirectory Directory parent directory name
|
|
|
+ * @return boolean Return true if the directory was create. Otherwise return false
|
|
|
+ */
|
|
|
+function api_create_protected_dir($name, $parentDirectory)
|
|
|
+{
|
|
|
+ $isCreated = false;
|
|
|
+
|
|
|
+ $fullPath = $parentDirectory . replace_dangerous_char($name);
|
|
|
+
|
|
|
+ if (mkdir($fullPath, api_get_permissions_for_new_directories(), true)) {
|
|
|
+ $fp = fopen($fullPath . '/index.html', 'w');
|
|
|
+
|
|
|
+ if ($fp) {
|
|
|
+ if (fwrite($fp, '<html><head></head><body></body></html>')) {
|
|
|
+ $isCreated = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ fclose($fp);
|
|
|
}
|
|
|
|
|
|
- return $scormTime;
|
|
|
+ return $isCreated;
|
|
|
}
|