Example #1
0
 public function __construct($userId = null, $courseId = null, $database = null)
 {
     $this->userId = $userId ? $userId : claro_get_current_user_id();
     $this->courseId = $courseId ? $courseId : claro_get_current_course_id();
     $this->database = $database ? $database : Claroline::getDatabase();
     $this->tbl = array_merge(get_module_main_tbl(array('rel_course_user')), get_module_course_tbl(array('group_team', 'group_rel_team_user')));
 }
Example #2
0
 public function __construct($assignement, $courseId = null, $database = null)
 {
     $this->database = $database ? $database : Claroline::getDatabase();
     $this->assignement = $assignement;
     $this->courseId = $courseId ? $courseId : claro_get_current_course_id();
     $this->tbl = array_merge(get_module_main_tbl(array('rel_course_user', 'user')), get_module_course_tbl(array('wrk_submission', 'group_team'), $this->courseId));
     $this->submissionTitleList = array();
 }
Example #3
0
 protected function loadNumberOfUser()
 {
     $tableName = get_module_main_tbl(array('user'));
     if (!is_null($this->getSelector())) {
         $where = $this->getSelector()->getStrategy();
     } else {
         $where = "";
     }
     $sql = "SELECT count(*)" . " FROM `" . $tableName['user'] . "`" . " " . $where;
     $this->numberOfUser = claro_sql_query_fetch_single_value($sql);
 }
Example #4
0
 protected function loadNumberOfMessage()
 {
     if (!$this->numberOfMessage) {
         if (!is_null($this->messageFilter)) {
             $strategy = $this->messageFilter->getStrategy();
         } else {
             $strategy = "";
         }
         $tableName = get_module_main_tbl(array('im_message'));
         $readSQL = "SELECT count(*) \n" . "FROM `" . $tableName['im_message'] . "` AS M \n" . "WHERE M.sender = " . (int) $this->userId . "\n" . " " . $strategy;
         $this->numberOfMessage = claro_sql_query_fetch_single_value($readSQL);
     }
 }
Example #5
0
 /**
  * load the current message from the data base
  */
 public function load()
 {
     $tableName = get_module_main_tbl(array('im_message', 'im_message_status', 'user', 'im_recipient'));
     $messageSQL = "SELECT U.nom AS lastName, U.prenom AS firstName, M.message_id, M.sender, M.subject, \n" . "M.message, M.send_time, R.is_read, R.is_deleted, R.user_id , M.course, M.group, M.tools, \n" . "RE.sent_to" . " FROM `" . $tableName['im_message'] . "` as M \n" . " LEFT JOIN `" . $tableName['im_message_status'] . "` as R ON M.message_id = R.message_id\n" . " LEFT JOIN `" . $tableName['user'] . "` AS U ON M.sender = U.user_id\n" . " LEFT JOIN `" . $tableName['im_recipient'] . "` AS RE ON M.message_id = RE.message_id\n" . " WHERE R.user_id = " . (int) $this->userId . "\n" . " AND M.message_id = " . (int) $this->messageId . "\n";
     $this->setFromArray(claro_sql_query_fetch_single_row($messageSQL));
 }
Example #6
0
 /**
  * Get the list of users in the group
  * @return Database_ResultSet group members
  */
 public function getGroupMembers()
 {
     if (!$this->_userList) {
         $mainTableName = get_module_main_tbl(array('user', 'rel_course_user'));
         $courseTableName = get_module_course_tbl(array('group_rel_team_user'), $this->_courseObj->courseId);
         $sql = "\n                SELECT\n                    `user`.`user_id` AS `id`,\n                    `user`.`nom` AS `lastName`,\n                    `user`.`prenom` AS `firstName`,\n                    `user`.`email`\n                FROM\n                    `{$mainTableName['user']}` AS `user`\n                INNER JOIN\n                    `{$courseTableName['group_rel_team_user']}` AS `user_group`\n                ON\n                    `user`.`user_id` = `user_group`.`user`\n                INNER JOIN\n                    `{$mainTableName['rel_course_user']}` AS `course_user`\n                ON\n                    `user`.`user_id` = `course_user`.`user_id`\n                WHERE\n                    `user_group`.`team`= {$this->_groupId}\n                AND\n                    `course_user`.`code_cours` = '{$this->_courseObj->sysCode}'";
         $this->_userList = Claroline::getDatabase()->query($sql);
     }
     return $this->_userList;
 }
Example #7
0
 /**
  * 
  * @param Claro_Class $class
  * @param Database_Connection $database
  */
 public function __construct($class, $database = null)
 {
     $this->class = $class;
     $this->database = $database ? $database : Claroline::getDatabase();
     $this->userIdList = false;
     $this->tbl = get_module_main_tbl(array('rel_class_user'));
 }
Example #8
0
 /**
  * Send the message to member of user list
  *
  * @param array of userId $recipientListID list of user identification
  * @param int $messageId message identification
  */
 private final function sendMessageToUser($recipientListId, $messageId)
 {
     $tableName = get_module_main_tbl(array('im_message_status'));
     //send a message to each user
     foreach ($recipientListId as $currentRecipient) {
         $addInternalMessageSQL = "INSERT INTO `" . $tableName['im_message_status'] . "` " . "(user_id, message_id, is_read, is_deleted) \n" . "values (" . (int) $currentRecipient . "," . (int) $messageId . ",0 , 0)\n";
         if (!claro_sql_query($addInternalMessageSQL)) {
             throw new Exception(claro_sql_errno() . ":" . claro_sql_error());
         }
         $this->addRecipient($messageId, $currentRecipient);
     }
 }
Example #9
0
 /**
  * 
  * @param Claro_Course $course
  * @param mixed $database Database_Connection instance or null, if null, the default database connection will be used
  */
 public function __construct($course, $database = null, $result = null)
 {
     $this->course = $course;
     $this->database = $database ? $database : Claroline::getDatabase();
     $this->tableNames = get_module_main_tbl(array('rel_course_user'));
     $this->tableNames = array_merge($this->tableNames, get_module_course_tbl(array('bb_rel_topic_userstonotify', 'group_team', 'userinfo_content', 'group_rel_team_user', 'tracking_event'), $this->course->courseId));
     $this->result = $result ? $result : new Claro_BatchRegistrationResult();
 }
Example #10
0
 /**
  * return true if the current message is a platform message, 
  * false if this is not a platform message
  *
  * @return boolean true if the current message is a platform message
  *                    false if the current message is not a platform message    
  */
 public function isPlatformMessage()
 {
     $tableName = get_module_main_tbl(array('im_recipient'));
     $sql = "SELECT DISTINCT sent_to \n" . " FROM `" . $tableName['im_recipient'] . "` \n" . " WHERE message_id = " . $this->getId();
     $sentto = claro_sql_query_fetch_single_value($sql);
     if ($sentto == 'toAll') {
         return true;
     } else {
         return false;
     }
 }
 */
$tlabelReq = 'MOBILE';
require dirname(__FILE__) . '/../../claroline/inc/claro_init_global.inc.php';
if (!get_conf('activeWebService', true)) {
    header('Service Unavailable', true, 503);
    die;
}
if (!isset($_REQUEST['token']) || empty($_REQUEST['token'])) {
    header('Missing Argument', true, 400);
    die;
} elseif (strlen($_REQUEST['token']) != 30) {
    header('Invalid Argument', true, 400);
    die;
}
$token = $_REQUEST['token'];
$tableName = get_module_main_tbl(array('mobile_tokens'));
$tableName = $tableName['mobile_tokens'];
$sql = 'SELECT * FROM `' . $tableName . '` WHERE token = \'' . claro_sql_escape($token) . '\' AND ADDTIME(`requestTime`,\'0 0:0:30\') > NOW()';
$result = Claroline::getDatabase()->query($sql);
if (!$result->isEmpty()) {
    $row = $result->fetch();
    $pathInfo = $row['requestedPath'];
    $uid = $row['userId'];
    $canRetry = $row['canRetry'];
    $wasFolder = $row['wasFolder'];
    $extension = get_file_extension($pathInfo);
    $mimeType = get_mime_on_ext($pathInfo);
    if ($canRetry) {
        $sql = 'UPDATE `' . $tableName . '` SET `canRetry` = \'0\' WHERE token = \'' . claro_sql_escape($token) . '\'';
        Claroline::getDatabase()->exec($sql);
    }
Example #12
0
 protected function mergeCourseMessaging($uidToRemove, $uidToKeep, $thisCourseCode)
 {
     // update messaging
     $tableName = get_module_main_tbl(array('im_message', 'im_message_status', 'im_recipient'));
     $getUserMessagesInCourse = "SELECT M.message_id AS id" . " FROM `" . $tableName['im_message'] . "` as M\n" . " LEFT JOIN `" . $tableName['im_recipient'] . "` as R ON M.message_id = R.message_id\n" . " WHERE R.user_id = " . (int) $uidToKeep . " AND M.course = '" . claro_sql_escape($thisCourseCode) . "'";
     $userToKeepMsgList = claro_sql_query_fetch_all($getUserMessagesInCourse);
     if (!empty($userToKeepMsgList)) {
         $messageListToRemoveArr = array();
         foreach ($userToKeepMsgList as $message) {
             $messageListToRemoveArr[] = (int) $message['id'];
         }
         $messageListToRemove = implode(',', $messageListToRemoveArr);
         // Remove the user to remove from the course
         $sql = "DELETE FROM `{$tableName['im_recipient']}`\n                WHERE user_id = " . (int) $uidToRemove . "\n                AND message_id IN ({$messageListToRemove})";
         if (!claro_sql_query($sql)) {
             Console::error("Cannot delete duplicate im_recipient for -{$uidToRemove} in {$thisCourseCode}");
             $this->hasError = true;
         }
         $sql = "DELETE FROM `{$tableName['im_message_status']}`\n                WHERE user_id = " . (int) $uidToRemove . "\n                AND message_id IN ({$messageListToRemove})";
         if (!claro_sql_query($sql)) {
             Console::error("Cannot delete duplicate im_message_status for -{$uidToRemove} in {$thisCourseCode}");
             $this->hasError = true;
         }
     }
     $getUserMessagesInCourse = "SELECT M.message_id AS id" . " FROM `" . $tableName['im_message'] . "` as M\n" . " LEFT JOIN `" . $tableName['im_recipient'] . "` as R ON M.message_id = R.message_id\n" . " WHERE R.user_id = " . (int) $uidToRemove . " AND M.course = '" . claro_sql_escape($thisCourseCode) . "'";
     $userToKeepMsgList = claro_sql_query_fetch_all($getUserMessagesInCourse);
     if (!empty($userToKeepMsgList)) {
         $messageListToUpdateArr = array();
         foreach ($userToKeepMsgList as $message) {
             $messageListToUpdateArr[] = (int) $message['id'];
         }
         $messageListToUpdate = implode(',', $messageListToUpdateArr);
         // Replace the user id of the user to remove
         $sql = "UPDATE `{$tableName['im_recipient']}`\n                SET   user_id    = " . (int) $uidToKeep . "\n                WHERE user_id    = " . (int) $uidToRemove . "\n                  AND message_id IN ({$messageListToUpdate})";
         if (!claro_sql_query($sql)) {
             Console::error("Cannot change im_recipient from -{$uidToRemove} to +{$uidToKeep} in {$thisCourseCode}");
             $this->hasError = true;
         }
         $sql = "UPDATE `{$tableName['im_message_status']}`\n                SET   user_id    = " . (int) $uidToKeep . "\n                WHERE user_id    = " . (int) $uidToRemove . "\n                  AND message_id IN ({$messageListToUpdate})";
         if (!claro_sql_query($sql)) {
             Console::error("Cannot change im_message_status from -{$uidToRemove} to +{$uidToKeep} in {$thisCourseCode}");
             $this->hasError = true;
         }
     }
 }
Example #13
0
function can_answer_message($messageId)
{
    $tableName = get_module_main_tbl(array('im_message_status'));
    $select = "SELECT count(*)\n" . " FROM `" . $tableName['im_message_status'] . "` as M\n" . " WHERE (M.user_id = " . (int) claro_get_current_user_id() . " OR M.user_id = 0)\n" . " AND M.message_id = " . (int) $messageId;
    $nbMessage = claro_sql_query_fetch_single_value($select);
    return $nbMessage > 0 ? true : false;
}
Example #14
0
 /**
  * empty the trashbox
  *
  */
 public function empyTrashBox()
 {
     $tableName = get_module_main_tbl(array('im_message_status'));
     $sql = "DELETE FROM `" . $tableName['im_message_status'] . "`\n" . " WHERE is_deleted = 1\n" . " AND user_id = " . (int) $this->getUserId() . "\n";
     claro_sql_query($sql);
 }
Example #15
0
/**
 * Return all manager id of a course.
 *
 * @param String course id
 * @return Array array of int
 */
function claro_get_course_manager_id($cid = NULL)
{
    if (is_null($cid)) {
        if (!claro_is_in_a_course()) {
            return false;
        }
        $cid = claro_get_current_course_id();
    }
    $tableName = get_module_main_tbl(array('rel_course_user'));
    $sql = "SELECT user_id " . "FROM `" . $tableName['rel_course_user'] . "` " . "WHERE code_cours='" . claro_sql_escape($cid) . "' " . "AND isCourseManager = 1";
    $result = claro_sql_query_fetch_all_cols($sql);
    return $result['user_id'];
}
Example #16
0
/**
 * return true if the user in parameter is manager of the course in 2nd parameters
 *
 * @param int $userId user id
 * @param string $courseCode syscode du cours
 * @return boolean true if the user is manager of the course
 *                    false if the user is not manager of the course
 */
function claro_is_user_course_manager($userId, $courseCode)
{
    $tableName = get_module_main_tbl(array('rel_course_user'));
    $sql = "SELECT count(*)" . " FROM `" . $tableName['rel_course_user'] . "`" . " WHERE code_cours = '" . claro_sql_escape($courseCode) . "'" . " AND user_id = " . (int) $userId . " AND isCourseManager = 1";
    return claro_sql_query_fetch_single_value($sql) > 0;
}
 public function __construct($config = array())
 {
     $tableNames = get_module_main_tbl(array('oauth_clients', 'oauth_access_tokens', 'oauth_refresh_tokens', 'oauth_authorization_codes', 'oauth_jwt', 'oauth_scopes', 'oauth_public_keys'));
     $this->config = array_merge(array('client_table' => $tableNames['oauth_clients'], 'access_token_table' => $tableNames['oauth_access_tokens'], 'refresh_token_table' => $tableNames['oauth_refresh_tokens'], 'code_table' => $tableNames['oauth_authorization_codes'], 'jwt_table' => $tableNames['oauth_jwt'], 'scope_table' => $tableNames['oauth_scopes'], 'public_key_table' => $tableNames['oauth_public_keys']), $config);
 }
Example #18
0
 public function __construct()
 {
     // convert to Claroline course table names
     $tbl_lp_names = get_module_main_tbl(array('desktop_portlet'));
     $this->tblDesktopPortlet = $tbl_lp_names['desktop_portlet'];
 }
 function getSingleResource($args)
 {
     $tlabelReq = 'MOBILE';
     $thisFile = isset($args['resID']) ? $args['resID'] : null;
     $cid = claro_get_current_course_id();
     if (is_null($cid) || is_null($thisFile)) {
         throw new InvalidArgumentException('Missing cid or resourceId argument!');
     }
     if (claro_is_course_allowed()) {
         /* INITIALISATION
         		 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
         $tableName = get_module_main_tbl(array('mobile_tokens'));
         $tableName = $tableName['mobile_tokens'];
         $limit = 5;
         $baseWorkDir = get_path('coursesRepositorySys') . claro_get_course_path($cid) . '/document';
         if (is_dir($baseWorkDir . $thisFile) || is_file($baseWorkDir . $thisFile)) {
             if (is_dir($baseWorkDir . $thisFile)) {
                 if ($is_allowedToEdit || get_conf('cldoc_allowNonManagersToDownloadFolder', true) || get_conf('cldoc_allowNonManagersToDownloadFolder', true) && get_conf('cldoc_allowAnonymousToDownloadFolder', true)) {
                     /*
                      * PREPARE THE FILE COLLECTION
                      */
                     if (!$is_allowedToEdit) {
                         // Build an exclude file list to prevent simple user
                         // to see document contained in "invisible" directories
                         $searchExcludeList = getInvisibleDocumentList($baseWorkDir);
                     } else {
                         $searchExcludeList = array();
                     }
                     $filePathList = claro_search_file(search_string_to_pcre(''), $baseWorkDir . $thisFile, true, 'FILE', $searchExcludeList);
                     /*
                      * BUILD THE ZIP ARCHIVE
                      */
                     require_once get_path('incRepositorySys') . '/lib/thirdparty/pclzip/pclzip.lib.php';
                     // Build archive in tmp course folder
                     $downloadArchivePath = get_conf('cldoc_customTmpPath', '');
                     if (empty($downloadArchivePath)) {
                         $downloadArchivePath = get_path('coursesRepositorySys') . claro_get_course_path() . '/tmp/zip';
                         $downloadArchiveFile = $downloadArchivePath . '/' . uniqid('') . '.zip';
                     } else {
                         $downloadArchiveFile = rtrim($downloadArchivePath, '/') . '/' . claro_get_current_course_id() . '_CLDOC_' . uniqid('') . '.zip';
                     }
                     if (!is_dir($downloadArchivePath)) {
                         mkdir($downloadArchivePath, CLARO_FILE_PERMISSIONS, true);
                     }
                     $downloadArchive = new PclZip($downloadArchiveFile);
                     $downloadArchive->add($filePathList, PCLZIP_OPT_REMOVE_PATH, $baseWorkDir . $thisFile);
                     if (file_exists($downloadArchiveFile)) {
                         $pathInfo = $downloadArchiveFile;
                     } else {
                         throw new RuntimeException('Internal Server Error', 500);
                     }
                 } else {
                     throw new RuntimeException('Not allowed', 403);
                 }
             } elseif (is_file($baseWorkDir . $thisFile)) {
                 require_once get_path('incRepositorySys') . '/lib/file/downloader.lib.php';
                 Claroline::getInstance()->notification->addListener('download', 'trackInCourse');
                 $connectorPath = secure_file_path(get_module_path($tlabelReq) . '/connector/downloader.cnr.php');
                 require_once $connectorPath;
                 $className = $tlabelReq . '_Downloader';
                 $downloader = new $className($tlabelReq, $cid, claro_get_current_user_id());
                 if ($downloader && $downloader->isAllowedToDownload($thisFile)) {
                     $pathInfo = $downloader->getFilePath($thisFile);
                     $pathInfo = secure_file_path($pathInfo);
                     // Check if path exists in course folder
                     if (!file_exists($pathInfo) || is_dir($pathInfo)) {
                         throw new RuntimeException('Resource not found', 404);
                     }
                 } else {
                     throw new RuntimeException('Not allowed', 403);
                 }
             }
             for ($result = $try = 0; $try < $limit && $result < 1; $try++) {
                 /* Create token and register into the db. Retry until the registration complete or fail $limit times.
                 		 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
                 $token = bin2hex(openssl_random_pseudo_bytes(15));
                 $sql = 'REPLACE INTO `' . $tableName . '` (`userId`, `token`, `requestedPath`, `requestTime`, `wasFolder`, `canRetry`) ' . 'VALUES (\'' . claro_get_current_user_id() . '\', \'' . $token . '\', \'' . claro_sql_escape($pathInfo) . '\', NOW(), \'' . (is_dir($baseWorkDir . $thisFile) ? 1 : 0) . '\' , \'' . (isset($args['platform']) && $args['platform'] == 'WP' ? 1 : 0) . '\');';
                 $result = Claroline::getDatabase()->exec($sql);
             }
             $response['token'] = $try == $limit ? null : $token;
             return $response;
         } else {
             throw new RuntimeException('Resource not found', 404);
         }
     } else {
         throw new RuntimeException('Not allowed', 403);
     }
 }
Example #20
0
 /**
  * add a user in the table of recipient
  *
  * @param int $messageId message id
  * @param int $userId user id (recipient id)
  */
 protected function addRecipient($messageId, $userId)
 {
     $tableName = get_module_main_tbl(array('im_recipient'));
     $sql = "INSERT INTO `" . $tableName['im_recipient'] . "` " . "(message_id, user_id, sent_to) \n" . "VALUES (" . (int) $messageId . ", " . (int) $userId . ", 'toAll')\n";
     claro_sql_query($sql);
 }
Example #21
0
/**
 * return list of user of the group id
 *
 * @param int $gid groupe identification
 * @return array of int: list of user
 */
function get_group_user_list($gid, $courseId = NULL)
{
    $mainTableName = get_module_main_tbl(array('user', 'rel_course_user'));
    $courseTableName = get_module_course_tbl(array('group_rel_team_user'), $courseId);
    $sql = "SELECT `user`.`user_id` AS `id`, `user`.`nom` AS `lastName`, `user`.`prenom` AS `firstName`, `user`.`email`\n        FROM `" . $mainTableName['user'] . "` AS `user`\n        INNER JOIN `" . $courseTableName['group_rel_team_user'] . "` AS `user_group`\n            ON `user`.`user_id` = `user_group`.`user`\n        INNER JOIN `" . $mainTableName['rel_course_user'] . "`AS `course_user`\n            ON `user`.`user_id` = `course_user`.`user_id`\n        WHERE `user_group`.`team`= '" . $gid . "'\n        AND `course_user`.`code_cours` = '" . $courseId . "'";
    return claro_sql_query_fetch_all($sql);
}
Example #22
0
 /**
  * delete all message of the list in parameter
  *
  * @param array of int $messageIdList array of message_id
  */
 public function deleteMessageList($messageIdList)
 {
     $tableName = get_module_main_tbl(array('im_message_status', 'im_recipient', 'im_message'));
     $messageIdList = array_map('intval', $messageIdList);
     $messageIdString = implode(',', $messageIdList);
     // delete completely all message of the list
     if ($messageIdString != "") {
         // delete status message (remove from received messagebox)
         $sql = "DELETE FROM `" . $tableName['im_message_status'] . "`\n" . "WHERE message_id IN(" . $messageIdString . ")";
         claro_sql_query($sql);
         // remove all recipient
         $sql = "DELETE FROM `" . $tableName['im_recipient'] . "`\n" . "WHERE message_id IN(" . $messageIdString . ")";
         claro_sql_query($sql);
         // remove from outbox
         $sql = "DELETE FROM `" . $tableName['im_message'] . "`\n" . "WHERE message_id IN(" . $messageIdString . ")";
         claro_sql_query($sql);
     }
 }
Example #23
0
 public function delete()
 {
     $tableName = get_module_main_tbl(array('im_message_status', 'im_recipient', 'im_message'));
     // delete status message (remove from receaved messagebox)
     $sql = "DELETE FROM `" . $tableName['im_message_status'] . "`\n" . "WHERE message_id = " . (int) $this->getId() . "\n";
     claro_sql_query($sql);
     // remove all recipient
     $sql = "DELETE FROM `" . $tableName['im_recipient'] . "`\n" . "WHERE message_id = " . (int) $this->getId() . "\n";
     claro_sql_query($sql);
     // remove from outbox
     $sql = "DELETE FROM `" . $tableName['im_message'] . "`\n" . "WHERE message_id = " . (int) $this->getId() . "\n";
     claro_sql_query($sql);
 }