Пример #1
0
    public function renderContent()
    {
        $output = '';
        $course = claro_get_current_course_data();
        $course['db'] = $course['dbName'];
        $toolId = get_tool_id_from_module_label('CLANN');
        if (is_module_installed_in_course('CLANN', claro_get_current_course_id()) && is_tool_activated_in_course($toolId, claro_get_current_course_id()) && claro_is_tool_visible($toolId, claro_get_current_course_id())) {
            $announcementList = announcement_get_course_item_list_portlet($course);
            // Manage announcement's datas
            if ($announcementList) {
                $output .= '<dl id="portletAnnouncements">' . "\n";
                $i = 0;
                foreach ($announcementList as $announcementItem) {
                    // Generate announcement URL
                    $announcementItem['url'] = get_path('url') . '/claroline/announcements/announcements.php?cidReq=' . $course['sysCode'];
                    // Generate announcement title and content
                    $announcementItem['title'] = trim(strip_tags($announcementItem['title']));
                    if ($announcementItem['title'] == '') {
                        $announcementItem['title'] = substr($announcementItem['title'], 0, 60) . (strlen($announcementItem['title']) > 60 ? ' (...)' : '');
                    }
                    $announcementItem['content'] = trim(strip_tags($announcementItem['content']));
                    if ($announcementItem['content'] == '') {
                        $announcementItem['content'] = substr($announcementItem['content'], 0, 60) . (strlen($announcementItem['content']) > 60 ? ' (...)' : '');
                    }
                    // Don't display hidden and expired elements
                    $isVisible = (bool) ($announcementItem['visibility'] == 'SHOW') ? 1 : 0;
                    $isOffDeadline = (bool) (isset($announcementItem['visibleFrom']) && strtotime($announcementItem['visibleFrom']) > time() || isset($announcementItem['visibleUntil']) && time() >= strtotime($announcementItem['visibleUntil'])) ? 1 : 0;
                    // Prepare the render
                    $displayChar = 250;
                    if (strlen($announcementItem['content']) > $displayChar) {
                        $content = substr($announcementItem['content'], 0, $displayChar) . '... <a href="' . claro_htmlspecialchars(Url::Contextualize($announcementItem['url'])) . '">' . '<b>' . get_lang('Read more &raquo;') . '</b></a>';
                    } else {
                        $content = $announcementItem['content'];
                    }
                    if ($isVisible && !$isOffDeadline) {
                        $output .= '<dt>' . "\n" . '<h2> ' . '<a href="' . $announcementItem['url'] . '#item' . $announcementItem['id'] . '">' . (!empty($announcementItem['title']) ? $announcementItem['title'] : get_lang('No title')) . '</a></h2>' . "\n" . '</dt>' . "\n" . '<dd' . ($i == count($announcementList) - 1 ? ' class="last"' : '') . '>' . "\n" . $content . "\n" . (claro_is_allowed_to_edit() ? '<div class="manageTools"><a
                                        href="' . claro_htmlspecialchars(Url::Contextualize(get_module_url('CLANN') . '/announcements.php?cmd=rqEdit&id=' . $announcementItem['id'])) . '"
                                        title="' . get_lang('Edit this item') . '">
                                        <img src="' . get_icon_url('edit') . '" alt="' . get_lang('Edit') . '" />
                                    </a>

                                    <a
                                        href="' . claro_htmlspecialchars(Url::Contextualize(get_module_url('CLANN') . '/announcements.php?cmd=exDelete&id=' . $announcementItem['id'])) . '"
                                        title="' . get_lang('Delete this item') . '">
                                        <img src="' . get_icon_url('delete') . '" alt="' . get_lang('Delete') . '" />
                                    </a></div>' : '') . '</dd>' . "\n";
                    }
                    $i++;
                }
                $output .= '</dl>';
            } else {
                $output .= "\n" . '<dl>' . "\n" . '<dt></dt>' . "\n" . '<dd class="last">' . ' ' . get_lang('No announcement') . "\n" . '</dd>' . "\n" . '</dl>' . "\n\n";
            }
        }
        return $output;
    }
Пример #2
0
function announcement_get_items_portlet($personnalCourseList)
{
    $courseDigestList = array();
    $clannToolId = get_tool_id_from_module_label('CLANN');
    foreach ($personnalCourseList as $thisCourse) {
        if (is_module_installed_in_course_lightversion('CLANN', $thisCourse) && is_tool_activated_in_course_lightversion($clannToolId, $thisCourse) && is_tool_visible_for_portlet($clannToolId, $thisCourse['sysCode'])) {
            $courseEventList = announcement_get_course_item_list_portlet($thisCourse, get_conf('announcementPortletMaxItems', 3));
            if (is_array($courseEventList)) {
                foreach ($courseEventList as $thisEvent) {
                    $courseTitle = trim(strip_tags($thisCourse['title']));
                    if ($courseTitle == '') {
                        $courseTitle = substr($courseTitle, 0, 60) . (strlen($courseTitle) > 60 ? ' (...)' : '');
                    }
                    $eventContent = trim(strip_tags($thisEvent['content']));
                    if ($eventContent == '') {
                        $eventContent = substr($eventContent, 0, 60) . (strlen($eventContent) > 60 ? ' (...)' : '');
                    }
                    $courseOfficialCode = $thisEvent['courseOfficialCode'];
                    if (!array_key_exists($courseOfficialCode, $courseDigestList)) {
                        $courseDigestList[$courseOfficialCode] = array();
                        $courseDigestList[$courseOfficialCode]['eventList'] = array();
                        $courseDigestList[$courseOfficialCode]['id'] = $thisEvent['id'];
                        $courseDigestList[$courseOfficialCode]['courseOfficialCode'] = $courseOfficialCode;
                        $courseDigestList[$courseOfficialCode]['title'] = $courseTitle;
                        $courseDigestList[$courseOfficialCode]['visibility'] = $thisEvent['visibility'];
                        $courseDigestList[$courseOfficialCode]['visibleFrom'] = $thisEvent['visibleFrom'];
                        $courseDigestList[$courseOfficialCode]['visibleUntil'] = $thisEvent['visibleUntil'];
                        $courseDigestList[$courseOfficialCode]['url'] = get_path('url') . '/claroline/announcements/announcements.php?cidReq=' . $thisEvent['courseSysCode'];
                    }
                    $courseDigestList[$courseOfficialCode]['eventList'][] = array('id' => $thisEvent['id'], 'courseSysCode' => $thisEvent['courseSysCode'], 'toolLabel' => $thisEvent['toolLabel'], 'title' => $thisEvent['title'], 'content' => $eventContent, 'date' => $thisEvent['date'], 'url' => get_path('url') . '/claroline/announcements/announcements.php?cidReq=' . $thisEvent['courseSysCode'] . '#item' . $thisEvent['id']);
                }
            }
        }
    }
    return $courseDigestList;
}