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 »') . '</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; }
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; }