Ejemplo n.º 1
0
function my_announcements($course_id, $hp_items, $user_id)
{
    global $JLMS_DB;
    if (!$course_id) {
        return array();
    }
    $my_announcements = array();
    $JLMS_ACL =& JLMSFactory::getACL();
    $my_course_role = $JLMS_ACL->getMyCourseRole($course_id);
    $my_course_roletype = $JLMS_ACL->GetTypeofRole($my_course_role);
    $assigned_groups_only = JLMS_ACL_HELPER::checkPermissionsByRole($my_course_role, 'advanced', 'assigned_groups_only');
    $where = '';
    if ($my_course_roletype == 2 || $my_course_roletype == 3 || $my_course_roletype == 4) {
        if ($assigned_groups_only) {
            $groups_where_admin_manager = JLMS_ACL_HELPER::GetAssignedGroups($user_id);
            $groups_where_isset_user = JLMS_ACL_HELPER::GetUserGlobalGroup($user_id);
            $groups_where_admin_manager = array_merge($groups_where_admin_manager, $groups_where_isset_user);
            if (count($groups_where_admin_manager)) {
                $where .= "\n AND (is_limited = 0 OR `groups` LIKE '%|{$groups_where_admin_manager['0']}|%'";
                for ($i = 1; $i < count($groups_where_admin_manager); $i++) {
                    $where .= "\n OR `groups` like '%|{$groups_where_admin_manager[$i]}|%'";
                }
                $where .= "\n OR a.owner_id = '" . $user_id . "')";
            } else {
                $where .= "\n AND (is_limited = 0 OR a.owner_id = '" . $user_id . "' OR agenda_id = 0) AND groups = ''";
            }
        }
    } elseif ($my_course_roletype < 2) {
        $query = "select a.group_id FROM #__lms_users_in_global_groups as a WHERE a.user_id = '" . $user_id . "' AND a.subgroup1_id = 0 AND a.group_id > 0";
        $JLMS_DB->setQuery($query);
        $temp1 = $JLMS_DB->loadResultArray();
        $query = "select subgroup1_id FROM #__lms_users_in_global_groups WHERE user_id = '" . $user_id . "' AND subgroup1_id > 0";
        $JLMS_DB->setQuery($query);
        $temp2 = $JLMS_DB->loadResultArray();
        $group_where_isset_user = array_merge($temp1, $temp2);
        if (count($group_where_isset_user)) {
            $where .= "\n AND (( `groups` <> '' AND `groups` IS NOT NULL AND (`groups` LIKE '%|{$group_where_isset_user['0']}|%'";
            for ($i = 1; $i < count($group_where_isset_user); $i++) {
                $where .= "\n OR `groups` like '%|{$group_where_isset_user[$i]}|%'";
            }
            $where .= "\n )) OR (is_limited = 0 AND (`groups` = '' OR `groups` IS NULL)))";
        }
    }
    $query = "SELECT a.* FROM `#__lms_agenda` as a, `#__lms_courses` as b" . "\n WHERE a.course_id = b.id AND a.start_date <= '" . date('Y-m-d') . "' AND a.end_date >='" . date('Y-m-d') . "'" . $where . "\n AND a.course_id IN ({$course_id})" . "\n ORDER BY a.start_date " . "\n LIMIT 0, {$hp_items}";
    $JLMS_DB->setQuery($query);
    $my_announcements = $JLMS_DB->loadObjectList();
    if ($my_course_roletype < 2) {
        $my_announcements = filterByShowPeriod($my_announcements);
    }
    return $my_announcements;
}