/** * @param $stok * @param $announcement_number */ public static function getAnnouncements($stok, $announcement_number) { $tbl_announcement = Database::get_course_table(TABLE_ANNOUNCEMENT); $tbl_item_property = Database::get_course_table(TABLE_ITEM_PROPERTY); $user_id = api_get_user_id(); $group_id = api_get_group_id(); $session_id = api_get_session_id(); $condition_session = api_get_session_condition($session_id, true, true, 'announcement.session_id'); $course_id = api_get_course_int_id(); $_course = api_get_course_info(); $group_memberships = GroupManager::get_group_ids($course_id, api_get_user_id()); $allowUserEditSetting = api_get_course_setting('allow_user_edit_announcement'); if (api_is_allowed_to_edit(false, true) || $allowUserEditSetting && !api_is_anonymous()) { // A.1. you are a course admin with a USER filter // => see only the messages of this specific user + the messages of the group (s)he is member of. //if (!empty($user_id)) { if (0) { if (is_array($group_memberships) && count($group_memberships) > 0) { $sql = "SELECT announcement.*, ip.visibility, ip.to_group_id, ip.insert_user_id, ip.insert_date\n FROM {$tbl_announcement} announcement, {$tbl_item_property} ip\n WHERE\n announcement.c_id = {$course_id} AND\n ip.c_id = {$course_id} AND\n announcement.id = ip.ref AND\n ip.tool = 'announcement' AND\n (\n ip.to_user_id = {$user_id} OR\n ip.to_group_id IS NULL OR\n ip.to_group_id IN (0, " . implode(", ", $group_memberships) . ")\n ) AND\n ip.visibility IN ('1', '0')\n {$condition_session}\n ORDER BY display_order DESC"; } else { $sql = "SELECT announcement.*, ip.visibility, ip.to_group_id, ip.insert_user_id, ip.insert_date\n FROM {$tbl_announcement} announcement, {$tbl_item_property} ip\n WHERE\n announcement.c_id = {$course_id} AND\n ip.c_id = {$course_id} AND\n announcement.id = ip.ref AND\n ip.tool ='announcement' AND\n (ip.to_user_id = {$user_id} OR ip.to_group_id='0' OR ip.to_group_id IS NULL) AND\n ip.visibility IN ('1', '0')\n {$condition_session}\n ORDER BY display_order DESC"; } } elseif ($group_id != 0) { // A.2. you are a course admin with a GROUP filter // => see only the messages of this specific group $sql = "SELECT announcement.*, ip.visibility, ip.to_group_id, ip.insert_user_id, ip.insert_date\n FROM {$tbl_announcement} announcement, {$tbl_item_property} ip\n WHERE\n announcement.c_id = {$course_id} AND\n ip.c_id = {$course_id} AND\n announcement.id = ip.ref\n AND ip.tool='announcement'\n AND ip.visibility<>'2'\n AND (ip.to_group_id = {$group_id} OR ip.to_group_id='0' OR ip.to_group_id IS NULL)\n {$condition_session}\n GROUP BY ip.ref\n ORDER BY display_order DESC"; } else { // A.3 you are a course admin without any group or user filter // A.3.a you are a course admin without user or group filter but WITH studentview // => see all the messages of all the users and groups without editing possibilities if (isset($isStudentView) and $isStudentView == "true") { $sql = "SELECT\n announcement.*, ip.visibility, ip.to_group_id, ip.insert_user_id, ip.insert_date\n FROM {$tbl_announcement} announcement, {$tbl_item_property} ip\n WHERE\n announcement.c_id = {$course_id} AND\n ip.c_id = {$course_id} AND\n announcement.id = ip.ref\n AND ip.tool='announcement'\n AND ip.visibility='1'\n {$condition_session}\n GROUP BY ip.ref\n ORDER BY display_order DESC"; } else { // A.3.a you are a course admin without user or group filter and WTIHOUT studentview (= the normal course admin view) // => see all the messages of all the users and groups with editing possibilities $sql = "SELECT announcement.*, ip.visibility, ip.to_group_id, ip.insert_user_id, ip.insert_date\n FROM {$tbl_announcement} announcement, {$tbl_item_property} ip\n WHERE\n announcement.c_id = {$course_id} AND\n ip.c_id = {$course_id} AND\n announcement.id = ip.ref\n AND ip.tool='announcement'\n AND (ip.visibility='0' or ip.visibility='1')\n {$condition_session}\n GROUP BY ip.ref\n ORDER BY display_order DESC"; } } } else { // STUDENT if (is_array($group_memberships) && count($group_memberships) > 0) { if ($allowUserEditSetting && !api_is_anonymous()) { if (api_get_group_id() == 0) { // No group $cond_user_id = " AND (\n ip.lastedit_user_id = '" . $user_id . "' OR (\n ip.to_user_id='" . $user_id . "' OR\n (ip.to_group_id IS NULL OR ip.to_group_id IN (0, " . implode(", ", $group_memberships) . "))\n )\n ) "; } else { $cond_user_id = " AND (\n ip.lastedit_user_id = '" . $user_id . "' OR ip.to_group_id IS NULL OR ip.to_group_id IN (0, " . $group_id . ")\n )"; } } else { if (api_get_group_id() == 0) { $cond_user_id = " AND (\n ip.to_user_id={$user_id} OR (ip.to_group_id IS NULL OR ip.to_group_id IN (0, " . implode(", ", $group_memberships) . "))\n ) "; } else { $cond_user_id = " AND (\n ip.to_user_id={$user_id} OR (ip.to_group_id IS NULL OR ip.to_group_id IN (0, " . api_get_group_id() . "))\n )"; } } $sql = "SELECT\n announcement.*,\n ip.visibility,\n ip.to_group_id,\n ip.insert_user_id,\n ip.insert_date\n FROM {$tbl_announcement} announcement,\n {$tbl_item_property} ip\n WHERE\n announcement.c_id = {$course_id} AND\n ip.c_id = {$course_id} AND\n announcement.id = ip.ref\n AND ip.tool='announcement'\n {$cond_user_id}\n {$condition_session} AND\n ip.visibility='1'\n ORDER BY display_order DESC"; } else { if ($user_id) { if ($allowUserEditSetting && !api_is_anonymous()) { $cond_user_id = " AND (\n ip.lastedit_user_id = '" . api_get_user_id() . "' OR\n (ip.to_user_id='" . $user_id . "' AND (ip.to_group_id='0' OR ip.to_group_id IS NULL))\n ) "; } else { $cond_user_id = " AND (ip.to_user_id='" . $user_id . "' AND (ip.to_group_id='0' OR ip.to_group_id IS NULL) ) "; } $sql = "SELECT announcement.*, ip.visibility, ip.to_group_id, ip.insert_user_id, ip.insert_date\n\t\t\t\t\t\tFROM {$tbl_announcement} announcement, {$tbl_item_property} ip\n\t\t\t\t\t\tWHERE\n \t\t\t\t\t\tannouncement.c_id = {$course_id} AND\n\t\t\t\t\t\t\tip.c_id = {$course_id} AND\n \t\t\t\t\t\tannouncement.id = ip.ref AND\n \t\t\t\t\t\tip.tool='announcement'\n \t\t\t\t\t\t{$cond_user_id}\n \t\t\t\t\t\t{$condition_session}\n \t\t\t\t\t\tAND ip.visibility='1'\n \t\t\t\t\t\tAND announcement.session_id IN(0, " . api_get_session_id() . ")\n\t\t\t\t\t\tORDER BY display_order DESC"; } else { if ($allowUserEditSetting && !api_is_anonymous()) { $cond_user_id = " AND (\n ip.lastedit_user_id = '" . $user_id . "' OR ip.to_group_id='0' OR ip.to_group_id IS NULL\n )"; } else { $cond_user_id = " AND ip.to_group_id='0' OR ip.to_group_id IS NULL "; } $sql = "SELECT announcement.*, ip.visibility, ip.to_group_id, ip.insert_user_id, ip.insert_date\n\t\t\t\t\t\tFROM {$tbl_announcement} announcement, {$tbl_item_property} ip\n\t\t\t\t\t\tWHERE\n announcement.c_id = {$course_id} AND\n ip.c_id = {$course_id} AND\n announcement.id = ip.ref AND\n ip.tool='announcement'\n {$cond_user_id}\n {$condition_session} AND\n ip.visibility='1' AND\n announcement.session_id IN ( 0," . api_get_session_id() . ")"; } } } $result = Database::query($sql); $num_rows = Database::num_rows($result); $html = null; if ($num_rows == 0) { if ((api_is_allowed_to_edit(false, true) or api_get_course_setting('allow_user_edit_announcement') && !api_is_anonymous()) and (empty($_GET['origin']) or $_GET['origin'] !== 'learnpath')) { $html .= '<div id="no-data-view">'; $html .= '<h3>' . get_lang('Announcements') . '</h3>'; $html .= Display::return_icon('valves.png', '', array(), 64); $html .= '<div class="controls">'; $html .= Display::url(get_lang('AddAnnouncement'), api_get_self() . "?" . api_get_cidreq() . "&action=add", array('class' => 'btn btn-primary')); $html .= '</div>'; $html .= '</div>'; } else { $html = Display::return_message(get_lang('NoAnnouncements'), 'warning'); } return $html; } $iterator = 1; $bottomAnnouncement = $announcement_number; $origin = null; $html .= '<table width="100%" class="data_table announcements-list">'; $ths = Display::tag('th', get_lang('Title')); $ths .= Display::tag('th', get_lang('By')); $ths .= Display::tag('th', get_lang('LastUpdateDate')); if (api_is_allowed_to_edit(false, true) or api_is_course_coach() && api_is_element_in_the_session(TOOL_ANNOUNCEMENT, $myrow['id']) or api_get_course_setting('allow_user_edit_announcement') && !api_is_anonymous()) { $ths .= Display::tag('th', get_lang('Modify')); } $html .= Display::tag('tr', $ths); $displayed = array(); while ($myrow = Database::fetch_array($result, 'ASSOC')) { if (!in_array($myrow['id'], $displayed)) { $sent_to_icon = ''; // the email icon if ($myrow['email_sent'] == '1') { $sent_to_icon = ' ' . Display::return_icon('email.gif', get_lang('AnnounceSentByEmail')); } $title = $myrow['title'] . $sent_to_icon; $item_visibility = api_get_item_visibility($_course, TOOL_ANNOUNCEMENT, $myrow['id'], $session_id); $myrow['visibility'] = $item_visibility; // the styles if ($myrow['visibility'] == '0') { $style = 'invisible'; } else { $style = ''; } $html .= '<tr class="announcements-list-line">'; // show attachment list $attachment_list = AnnouncementManager::get_attachment($myrow['id']); $attachment_icon = ''; if (count($attachment_list) > 0) { $attachment_icon = ' ' . Display::return_icon('attachment.gif', get_lang('Attachment')); } /* TITLE */ $user_info = api_get_user_info($myrow['insert_user_id']); $username = sprintf(get_lang("LoginX"), $user_info['username']); $username_span = Display::tag('span', api_get_person_name($user_info['firstName'], $user_info['lastName']), array('title' => $username)); $title = Display::url($title . $attachment_icon, api_get_self() . '?' . api_get_cidreq() . '&action=view&id=' . $myrow['id']); $html .= Display::tag('td', Security::remove_XSS($title), array('class' => 'announcements-list-line-title ' . $style)); $html .= Display::tag('td', $username_span, array('class' => 'announcements-list-line-by-user')); $html .= Display::tag('td', api_convert_and_format_date($myrow['insert_date'], DATE_TIME_FORMAT_LONG), array('class' => 'announcements-list-line-datetime')); // we can edit if : we are the teacher OR the element belongs to // the session we are coaching OR the option to allow users to edit is on if (api_is_allowed_to_edit(false, true) or api_is_course_coach() && api_is_element_in_the_session(TOOL_ANNOUNCEMENT, $myrow['id']) or api_get_course_setting('allow_user_edit_announcement') && !api_is_anonymous()) { $modify_icons = "<a href=\"" . api_get_self() . "?" . api_get_cidreq() . "&action=modify&id=" . $myrow['id'] . "\">" . Display::return_icon('edit.png', get_lang('Edit'), '', ICON_SIZE_SMALL) . "</a>"; if ($myrow['visibility'] == 1) { $image_visibility = "visible"; $alt_visibility = get_lang('Hide'); } else { $image_visibility = "invisible"; $alt_visibility = get_lang('Visible'); } $modify_icons .= "<a href=\"" . api_get_self() . "?" . api_get_cidreq() . "&origin=" . $origin . "&action=showhide&id=" . $myrow['id'] . "&sec_token=" . $stok . "\">" . Display::return_icon($image_visibility . '.png', $alt_visibility, '', ICON_SIZE_SMALL) . "</a>"; // DISPLAY MOVE UP COMMAND only if it is not the top announcement if ($iterator != 1) { $modify_icons .= "<a href=\"" . api_get_self() . "?" . api_get_cidreq() . "&action=move&up=" . $myrow["id"] . "&sec_token=" . $stok . "\">" . Display::return_icon('up.gif', get_lang('Up')) . "</a>"; } else { $modify_icons .= Display::return_icon('up_na.gif', get_lang('Up')); } if ($iterator < $bottomAnnouncement) { $modify_icons .= "<a href=\"" . api_get_self() . "?" . api_get_cidreq() . "&action=move&down=" . $myrow["id"] . "&sec_token=" . $stok . "\">" . Display::return_icon('down.gif', get_lang('Down')) . "</a>"; } else { $modify_icons .= Display::return_icon('down_na.gif', get_lang('Down')); } if (api_is_allowed_to_edit(false, true)) { $modify_icons .= "<a href=\"" . api_get_self() . "?" . api_get_cidreq() . "&action=delete&id=" . $myrow['id'] . "&sec_token=" . $stok . "\" onclick=\"javascript:if(!confirm('" . addslashes(api_htmlentities(get_lang('ConfirmYourChoice'), ENT_QUOTES, api_get_system_encoding())) . "')) return false;\">" . Display::return_icon('delete.png', get_lang('Delete'), '', ICON_SIZE_SMALL) . "</a>"; } $iterator++; $html .= Display::tag('td', $modify_icons, array('class' => 'announcements-list-line-actions')); } $html .= "</tr>"; } $displayed[] = $myrow['id']; } $html .= "</table>"; return $html; }
} $title = $myrow['title'] . $sent_to_icon; /* DATE */ $last_post_datetime = $myrow['end_date']; $item_visibility = api_get_item_visibility($_course, TOOL_ANNOUNCEMENT, $myrow['id'], $session_id); $myrow['visibility'] = $item_visibility; // the styles if ($myrow['visibility'] == '0') { $style = 'invisible'; } else { $style = ''; } echo '<tr class="announcements-list-line">'; // show attachment list $attachment_list = array(); $attachment_list = AnnouncementManager::get_attachment($myrow['id']); $attachment_icon = ''; if (count($attachment_list) > 0) { $attachment_icon = ' ' . Display::return_icon('attachment.gif', get_lang('Attachment')); } /* TITLE */ $title = Display::url($title . $attachment_icon, api_get_self() . '?' . api_get_cidreq() . '&action=view&id=' . $myrow['id']); echo Display::tag('td', Security::remove_XSS($title), array('class' => 'announcements-list-line-title ' . $style)); $user_info = api_get_user_info($myrow['insert_user_id']); $username = sprintf(get_lang("LoginX"), $user_info['username']); $username_span = Display::tag('span', api_get_person_name($user_info['firstName'], $user_info['lastName']), array('title' => $username)); echo Display::tag('td', $username_span, array('class' => 'announcements-list-line-by-user')); $sent_to_list = array(); $sent_to_list = AnnouncementManager::sent_to('announcement', $myrow['id']); $sent_to_form = AnnouncementManager::sent_to_form($sent_to_list); echo '<td class="announcements-list-line-by-user">' . substr($sent_to_form, 0, 45) . ' ';
/** * @param $stok * @param $announcement_number * @param bool $getCount * @param null $start * @param null $limit * @param string $sidx * @param string $sord * @param string $titleToSearch * @param int $userIdToSearch * * @return array */ public static function getAnnouncements($stok, $announcement_number, $getCount = false, $start = null, $limit = null, $sidx = '', $sord = '', $titleToSearch = '', $userIdToSearch = 0) { $tbl_announcement = Database::get_course_table(TABLE_ANNOUNCEMENT); $tbl_item_property = Database::get_course_table(TABLE_ITEM_PROPERTY); $user_id = api_get_user_id(); $group_id = api_get_group_id(); $session_id = api_get_session_id(); $condition_session = api_get_session_condition($session_id, true, true, 'announcement.session_id'); $course_id = api_get_course_int_id(); $_course = api_get_course_info(); $group_memberships = GroupManager::get_group_ids($course_id, api_get_user_id()); $allowUserEditSetting = api_get_course_setting('announcement.allow_user_edit_announcement'); $select = ' DISTINCT announcement.*, ip.visibility, ip.to_group_id, ip.insert_user_id, ip.insert_date'; if ($getCount) { $select = ' COUNT(announcement.iid) count'; } $searchCondition = ''; if (!empty($titleToSearch)) { $titleToSearch = Database::escape_string($titleToSearch); $searchCondition .= " AND (title LIKE '%{$titleToSearch}%')"; } if (!empty($userIdToSearch)) { $userIdToSearch = intval($userIdToSearch); $searchCondition .= " AND (ip.insert_user_id = {$userIdToSearch})"; } if (api_is_allowed_to_edit(false, true) || $allowUserEditSetting && !api_is_anonymous()) { // A.1. you are a course admin with a USER filter // => see only the messages of this specific user + the messages of the group (s)he is member of. //if (!empty($user_id)) { if (0) { if (is_array($group_memberships) && count($group_memberships) > 0) { $sql = "SELECT {$select}\n FROM {$tbl_announcement} announcement, {$tbl_item_property} ip\n WHERE\n announcement.c_id = {$course_id} AND\n ip.c_id = {$course_id} AND\n announcement.id = ip.ref AND\n ip.tool = 'announcement' AND\n (\n ip.to_user_id = {$user_id} OR\n ip.to_group_id IS NULL OR\n ip.to_group_id IN (0, " . implode(", ", $group_memberships) . ")\n ) AND\n ip.visibility IN ('1', '0')\n {$condition_session}\n {$searchCondition}\n ORDER BY display_order DESC"; } else { $sql = "SELECT {$select}\n FROM {$tbl_announcement} announcement, {$tbl_item_property} ip\n WHERE\n announcement.c_id = {$course_id} AND\n ip.c_id = {$course_id} AND\n announcement.id = ip.ref AND\n ip.tool ='announcement' AND\n (ip.to_user_id = {$user_id} OR ip.to_group_id='0' OR ip.to_group_id IS NULL) AND\n ip.visibility IN ('1', '0')\n {$condition_session}\n {$searchCondition}\n ORDER BY display_order DESC"; } } elseif ($group_id != 0) { // A.2. you are a course admin with a GROUP filter // => see only the messages of this specific group $sql = "SELECT {$select}\n FROM {$tbl_announcement} announcement INNER JOIN {$tbl_item_property} ip\n ON (announcement.id = ip.ref AND ip.tool='announcement')\n WHERE\n announcement.c_id = {$course_id} AND\n ip.c_id = {$course_id} AND\n ip.visibility<>'2' AND\n (ip.to_group_id = {$group_id} OR ip.to_group_id='0' OR ip.to_group_id IS NULL)\n {$condition_session}\n {$searchCondition}\n ORDER BY display_order DESC"; //GROUP BY ip.ref } else { // A.3 you are a course admin without any group or user filter // A.3.a you are a course admin without user or group filter but WITH studentview // => see all the messages of all the users and groups without editing possibilities if (isset($isStudentView) && $isStudentView == "true") { $sql = "SELECT {$select}\n FROM {$tbl_announcement} announcement INNER JOIN {$tbl_item_property} ip\n ON (announcement.id = ip.ref AND ip.tool='announcement')\n WHERE\n announcement.c_id = {$course_id} AND\n ip.c_id = {$course_id} AND\n ip.tool='announcement' AND\n ip.visibility='1'\n {$condition_session}\n {$searchCondition}\n ORDER BY display_order DESC"; //GROUP BY ip.ref } else { // A.3.a you are a course admin without user or group filter and WTIHOUT studentview (= the normal course admin view) // => see all the messages of all the users and groups with editing possibilities $sql = "SELECT {$select}\n FROM {$tbl_announcement} announcement INNER JOIN {$tbl_item_property} ip\n ON (announcement.id = ip.ref AND ip.tool='announcement')\n WHERE\n announcement.c_id = {$course_id} AND\n ip.c_id = {$course_id} AND\n (ip.visibility='0' or ip.visibility='1')\n {$condition_session}\n {$searchCondition}\n ORDER BY display_order DESC"; //GROUP BY ip.ref } } } else { // STUDENT if (is_array($group_memberships) && count($group_memberships) > 0) { if ($allowUserEditSetting && !api_is_anonymous()) { if ($group_id == 0) { // No group $cond_user_id = " AND (\n ip.lastedit_user_id = '" . $user_id . "' OR (\n ip.to_user_id='" . $user_id . "' OR\n (ip.to_group_id IS NULL OR ip.to_group_id IN (0, " . implode(", ", $group_memberships) . "))\n )\n ) "; } else { $cond_user_id = " AND (\n ip.lastedit_user_id = '" . $user_id . "' OR ip.to_group_id IS NULL OR ip.to_group_id IN (0, " . $group_id . ")\n )"; } } else { if ($group_id == 0) { $cond_user_id = " AND (\n ip.to_user_id = {$user_id} AND (ip.to_group_id IS NULL OR ip.to_group_id IN (0, " . implode(", ", $group_memberships) . "))\n ) "; } else { $cond_user_id = " AND (\n ip.to_user_id = {$user_id} AND (ip.to_group_id IS NULL OR ip.to_group_id IN (0, " . $group_id . "))\n )"; } } $sql = "SELECT {$select}\n FROM {$tbl_announcement} announcement,\n {$tbl_item_property} ip\n WHERE\n announcement.c_id = {$course_id} AND\n ip.c_id = {$course_id} AND\n announcement.id = ip.ref\n AND ip.tool='announcement'\n {$cond_user_id}\n {$condition_session}\n {$searchCondition}\n AND ip.visibility='1'\n ORDER BY display_order DESC"; } else { if ($user_id) { if ($allowUserEditSetting && !api_is_anonymous()) { $cond_user_id = " AND (\n ip.lastedit_user_id = '" . api_get_user_id() . "' OR\n (ip.to_user_id='" . $user_id . "' AND (ip.to_group_id='0' OR ip.to_group_id IS NULL))\n ) "; } else { $cond_user_id = " AND (ip.to_user_id='" . $user_id . "' AND (ip.to_group_id='0' OR ip.to_group_id IS NULL) ) "; } $sql = "SELECT {$select}\n\t\t\t\t\t\tFROM {$tbl_announcement} announcement, {$tbl_item_property} ip\n\t\t\t\t\t\tWHERE\n \t\t\t\t\t\tannouncement.c_id = {$course_id} AND\n\t\t\t\t\t\t\tip.c_id = {$course_id} AND\n \t\t\t\t\t\tannouncement.id = ip.ref AND\n \t\t\t\t\t\tip.tool='announcement'\n \t\t\t\t\t\t{$cond_user_id}\n \t\t\t\t\t\t{$condition_session}\n \t\t\t\t\t\t{$searchCondition}\n \t\t\t\t\t\tAND ip.visibility='1'\n \t\t\t\t\t\tAND announcement.session_id IN(0, " . $session_id . ")\n\t\t\t\t\t\tORDER BY display_order DESC"; } else { if ($allowUserEditSetting && !api_is_anonymous()) { $cond_user_id = " AND (\n ip.lastedit_user_id = '" . $user_id . "' OR ip.to_group_id='0' OR ip.to_group_id IS NULL\n )"; } else { $cond_user_id = " AND ip.to_group_id='0' OR ip.to_group_id IS NULL "; } $sql = "SELECT {$select}\n\t\t\t\t\t\tFROM {$tbl_announcement} announcement, {$tbl_item_property} ip\n\t\t\t\t\t\tWHERE\n announcement.c_id = {$course_id} AND\n ip.c_id = {$course_id} AND\n announcement.id = ip.ref AND\n ip.tool='announcement'\n {$cond_user_id}\n {$condition_session}\n {$searchCondition}\n AND\n ip.visibility='1' AND\n announcement.session_id IN ( 0," . api_get_session_id() . ")"; } } } if (!is_null($start) && !is_null($limit)) { $start = intval($start); $limit = intval($limit); $sql .= " LIMIT {$start}, {$limit}"; } $result = Database::query($sql); if ($getCount) { $result = Database::fetch_array($result, 'ASSOC'); return $result['count']; } $iterator = 1; $bottomAnnouncement = $announcement_number; $origin = null; $displayed = []; $results = []; $actionUrl = api_get_path(WEB_CODE_PATH) . 'announcements/announcements.php?' . api_get_cidreq(); while ($myrow = Database::fetch_array($result, 'ASSOC')) { if (!in_array($myrow['id'], $displayed)) { $sent_to_icon = ''; // the email icon if ($myrow['email_sent'] == '1') { $sent_to_icon = ' ' . Display::return_icon('email.gif', get_lang('AnnounceSentByEmail')); } $title = $myrow['title'] . $sent_to_icon; $item_visibility = api_get_item_visibility($_course, TOOL_ANNOUNCEMENT, $myrow['id'], $session_id); $myrow['visibility'] = $item_visibility; // show attachment list $attachment_list = AnnouncementManager::get_attachment($myrow['id']); $attachment_icon = ''; if (count($attachment_list) > 0) { $attachment_icon = ' ' . Display::return_icon('attachment.gif', get_lang('Attachment')); } /* TITLE */ $user_info = api_get_user_info($myrow['insert_user_id']); $username = sprintf(get_lang("LoginX"), $user_info['username']); $username_span = Display::tag('span', api_get_person_name($user_info['firstName'], $user_info['lastName']), array('title' => $username)); $title = Display::url($title . $attachment_icon, $actionUrl . '&action=view&id=' . $myrow['id']); //$html .= Display::tag('td', $username_span, array('class' => 'announcements-list-line-by-user')); //$html .= Display::tag('td', api_convert_and_format_date($myrow['insert_date'], DATE_TIME_FORMAT_LONG), array('class' => 'announcements-list-line-datetime')); $modify_icons = ''; // we can edit if : we are the teacher OR the element belongs to // the session we are coaching OR the option to allow users to edit is on if (api_is_allowed_to_edit(false, true) || api_is_course_coach() && api_is_element_in_the_session(TOOL_ANNOUNCEMENT, $myrow['id']) || api_get_course_setting('allow_user_edit_announcement') && !api_is_anonymous()) { $modify_icons = "<a href=\"" . $actionUrl . "&action=modify&id=" . $myrow['id'] . "\">" . Display::return_icon('edit.png', get_lang('Edit'), '', ICON_SIZE_SMALL) . "</a>"; if ($myrow['visibility'] == 1) { $image_visibility = "visible"; $alt_visibility = get_lang('Hide'); } else { $image_visibility = "invisible"; $alt_visibility = get_lang('Visible'); } $modify_icons .= "<a href=\"" . $actionUrl . "&origin=" . $origin . "&action=showhide&id=" . $myrow['id'] . "&sec_token=" . $stok . "\">" . Display::return_icon($image_visibility . '.png', $alt_visibility, '', ICON_SIZE_SMALL) . "</a>"; // DISPLAY MOVE UP COMMAND only if it is not the top announcement if ($iterator != 1) { $modify_icons .= "<a href=\"" . $actionUrl . "&action=move&up=" . $myrow["id"] . "&sec_token=" . $stok . "\">" . Display::return_icon('up.gif', get_lang('Up')) . "</a>"; } else { $modify_icons .= Display::return_icon('up_na.gif', get_lang('Up')); } if ($iterator < $bottomAnnouncement) { $modify_icons .= "<a href=\"" . $actionUrl . "&action=move&down=" . $myrow["id"] . "&sec_token=" . $stok . "\">" . Display::return_icon('down.gif', get_lang('Down')) . "</a>"; } else { $modify_icons .= Display::return_icon('down_na.gif', get_lang('Down')); } if (api_is_allowed_to_edit(false, true)) { $modify_icons .= "<a href=\"" . $actionUrl . "&action=delete&id=" . $myrow['id'] . "&sec_token=" . $stok . "\" onclick=\"javascript:if(!confirm('" . addslashes(api_htmlentities(get_lang('ConfirmYourChoice'), ENT_QUOTES, api_get_system_encoding())) . "')) return false;\">" . Display::return_icon('delete.png', get_lang('Delete'), '', ICON_SIZE_SMALL) . "</a>"; } $iterator++; } else { $modify_icons = Display::url(Display::return_icon('default.png'), $actionUrl . '&action=view&id=' . $myrow['id']); } $announcement = ['id' => $myrow["id"], 'title' => $title, 'username' => $username_span, 'insert_date' => api_convert_and_format_date($myrow['insert_date'], DATE_TIME_FORMAT_LONG), 'actions' => $modify_icons]; $results[] = $announcement; } $displayed[] = $myrow['id']; } return $results; }