Adding "Add to calendar" option when adding a system Announcement

skala
Julio Montoya 15 years ago
parent f15ba662c2
commit 44a1009ce0
  1. 70
      main/admin/calendar.lib.php
  2. 12
      main/admin/calendar.php
  3. 22
      main/admin/system_announcements.php
  4. 12
      main/calendar/myagenda.inc.php
  5. 72
      main/inc/lib/system_announcements.lib.php

@ -2798,9 +2798,7 @@ function add_year($timestamp,$num=1)
* @param int Parent id (optional)
* @return int The new item's DB ID
*/
function agenda_add_item($course_info, $title, $content, $db_start_date, $db_end_date, $to=array(), $parent_id=null)
{
global $_course;
function agenda_add_item($title, $content, $db_start_date, $db_end_date) {
$user_id = api_get_user_id();
$t_agenda = Database::get_main_table(TABLE_MAIN_SYSTEM_CALENDAR);
@ -2812,72 +2810,20 @@ function agenda_add_item($course_info, $title, $content, $db_start_date, $db_end
$start_date = Database::escape_string($db_start_date);
$db_end_date = api_get_utc_datetime($db_end_date);
$end_date = Database::escape_string($db_end_date);
isset($_SESSION['id_session'])?$id_session=intval($_SESSION['id_session']):$id_session=null;
// store in the table calendar_event
$end_date = Database::escape_string($db_end_date);
// check if exists in calendar_event table
$sql = "SELECT * FROM $t_agenda WHERE title='$title' AND content = '$content' AND start_date = '$start_date'
AND end_date = '$end_date' ".(!empty($parent_id)? "AND parent_event_id = '$parent_id'":"");
$sql = "SELECT * FROM $t_agenda WHERE title='$title' AND content = '$content' AND start_date = '$start_date' AND end_date = '$end_date' ";
$result = Database::query($sql);
$count = Database::num_rows($result);
$count = Database::num_rows($result);
if ($count > 0) {
return false;
}
$sql = "INSERT INTO $t_agenda (title,content, start_date, end_date, access_url_id)
VALUES ('".$title."','".$content."', '".$start_date."','".$end_date."', '".api_get_current_access_url_id()."')";
global $_configuration;
$current_access_url_id = 1;
if ($_configuration['multiple_access_urls']) {
$current_access_url_id = api_get_current_access_url_id();
}
$sql = "INSERT INTO ".$t_agenda." (title,content, start_date, end_date, access_url_id)
VALUES ('".$title."','".$content."', '".$start_date."','".$end_date."', '".$current_access_url_id."')";
$result = Database::query($sql) or die (Database::error());
$last_id=Database::insert_id();
// add a attachment file in agenda
// add_agenda_attachment_file($file_comment,$last_id);
// store in last_tooledit (first the groups, then the users
$done = false;
//(This part of this code is not been used)
/* if ((!is_null($to))or (!empty($_SESSION['toolgroup']))) // !is_null($to): when no user is selected we send it to everyone
{
$send_to=separate_users_groups($to);
// storing the selected groups
if (is_array($send_to['groups']))
{
foreach ($send_to['groups'] as $group)
{
api_item_property_update($course_info, TOOL_CALENDAR_EVENT, $last_id, "AgendaAdded", $user_id, $group,'',$start_date, $end_date);
$done = true;
}
}
// storing the selected users
if (is_array($send_to['users']))
{
foreach ($send_to['users'] as $user)
{
api_item_property_update($course_info, TOOL_CALENDAR_EVENT, $last_id, "AgendaAdded", $user_id,'',$user, $start_date,$end_date);
$done = true;
}
}
}
if(!$done) // the message is sent to everyone, so we set the group to 0
{
api_item_property_update($course_info, TOOL_CALENDAR_EVENT, $last_id, "AgendaAdded", $user_id, $start_date,$end_date);
}
// storing the resources
if (!empty($_SESSION['source_type']) && !empty($last_id)) {
//store_resources($_SESSION['source_type'],$last_id);
}*/
$result = Database::query($sql);
$last_id = Database::insert_id();
return $last_id;
}
/**

@ -197,18 +197,12 @@ echo '<div class="sort" style="float:right">';
echo '</div>';
if (api_is_allowed_to_edit(false,true)) {
switch ($_GET['action']) {
case "add":
if(!empty($_POST['ical_submit'])) {
$course_info = api_get_course_info();
agenda_import_ical($course_info, $_FILES['ical_import']);
display_agenda_items();
} elseif ($_POST['submit_event']) {
$course_info = api_get_course_info();
case "add":
if ($_POST['submit_event']) {
$event_start = (int) $_POST['fyear'].'-'.(int) $_POST['fmonth'].'-'.(int) $_POST['fday'].' '.(int) $_POST['fhour'].':'.(int) $_POST['fminute'].':00';
$event_stop = (int) $_POST['end_fyear'].'-'.(int) $_POST['end_fmonth'].'-'.(int) $_POST['end_fday'].' '.(int) $_POST['end_fhour'].':'.(int) $_POST['end_fminute'].':00';
$id = agenda_add_item($course_info,$_POST['title'],$_POST['content'],$event_start,$event_stop,$_POST['selectedform'],false,$_POST['file_comment']);
$id = agenda_add_item($_POST['title'],$_POST['content'],$event_start,$event_stop);
display_agenda_items();
} else {
show_add_form();

@ -105,7 +105,7 @@ if (isset ($_GET['action']) && $_GET['action'] == 'add') {
$values['action'] = 'add';
// Set default time window: NOW -> NEXT WEEK
$values['start'] = date('Y-m-d H:i:s',api_strtotime(api_get_local_time()));
$values['end'] = date('Y-m-d H:i:s',api_strtotime(api_get_local_time()) + (7 * 24 * 60 * 60));
$values['end'] = date('Y-m-d H:i:s',api_strtotime(api_get_local_time()) + (7 * 24 * 60 * 60));
$action_todo = true;
}
@ -116,8 +116,8 @@ if (isset ($_GET['action']) && $_GET['action'] == 'edit') {
$values['id'] = $announcement->id;
$values['title'] = $announcement->title;
$values['content'] = $announcement->content;
$values['start'] = $announcement->date_start;
$values['end'] = $announcement->date_end;
$values['start'] = api_get_local_time($announcement->date_start);
$values['end'] = api_get_local_time($announcement->date_end);
$values['visible_teacher'] = $announcement->visible_teacher;
$values['visible_student'] = $announcement->visible_student ;
$values['visible_guest'] = $announcement->visible_guest ;
@ -153,10 +153,12 @@ if ($action_todo) {
$form->addElement('checkbox', 'visible_teacher', get_lang('Visible'), get_lang('Teacher'));
$form->addElement('checkbox', 'visible_student', null, get_lang('Student'));
$form->addElement('checkbox', 'visible_guest', null, get_lang('Guest'));
$form->addElement('hidden', 'id');
$form->addElement('checkbox', 'send_mail', get_lang('SendMail'));
$form->addElement('checkbox', 'send_mail', get_lang('SendMail'));
if (isset($_REQUEST['action']) && $_REQUEST['action']=='add') {
$form->addElement('checkbox', 'add_to_calendar', get_lang('AddToCalendar'));
$text=get_lang('AddNews');
$class='add';
$form->addElement('hidden', 'action','add');
@ -191,7 +193,7 @@ if ($action_todo) {
}
switch ($values['action']) {
case 'add':
if (SystemAnnouncementManager::add_announcement($values['title'], $values['content'], $values['start'], $values['end'], $values['visible_teacher'], $values['visible_student'], $values['visible_guest'], $values['lang'], $values['send_mail'])) {
if (SystemAnnouncementManager::add_announcement($values['title'], $values['content'], $values['start'], $values['end'], $values['visible_teacher'], $values['visible_student'], $values['visible_guest'], $values['lang'], $values['send_mail'], $values['add_to_calendar'])) {
Display :: display_confirmation_message(get_lang('AnnouncementAdded'));
} else {
$show_announcement_list = false;
@ -229,14 +231,14 @@ if ($show_announcement_list) {
$row = array();
$row[] = $announcement->id;
$row[] = Display::return_icon(($announcement->visible ? 'accept.png' : 'exclamation.png'), ($announcement->visible ? get_lang('AnnouncementAvailable') : get_lang('AnnouncementNotAvailable')));
$row[] = api_convert_and_format_date($announcement->date_start, null, date_default_timezone_get());
$row[] = api_convert_and_format_date($announcement->date_end, null, date_default_timezone_get());
$row[] = api_convert_and_format_date($announcement->date_start);
$row[] = api_convert_and_format_date($announcement->date_end);
$row[] = "<a href=\"?id=".$announcement->id."&amp;person=".VISIBLE_TEACHER."&amp;action=". ($announcement->visible_teacher ? 'make_invisible' : 'make_visible')."\">".Display::return_icon(($announcement->visible_teacher ? 'visible.gif' : 'invisible.gif'), get_lang('show_hide'))."</a>";
$row[] = "<a href=\"?id=".$announcement->id."&amp;person=".VISIBLE_STUDENT."&amp;action=". ($announcement->visible_student ? 'make_invisible' : 'make_visible')."\">".Display::return_icon(($announcement->visible_student ? 'visible.gif' : 'invisible.gif'), get_lang('show_hide'))."</a>";
$row[] = "<a href=\"?id=".$announcement->id."&amp;person=".VISIBLE_GUEST."&amp;action=". ($announcement->visible_guest ? 'make_invisible' : 'make_visible')."\">".Display::return_icon(($announcement->visible_guest ? 'visible.gif' : 'invisible.gif'), get_lang('show_hide'))."</a>";
$row[] = $announcement->title;
$row[] = $announcement->lang;
$row[] = "<a href=\"?action=edit&id=".$announcement->id."\">".Display::return_icon('edit.gif', get_lang('Edit'))."</a> <a href=\"?action=delete&id=".$announcement->id."\" onclick=\"javascript:if(!confirm('".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"), ENT_QUOTES))."')) return false;\">".Display::return_icon('delete.gif', get_lang('Delete'))."</a>";
$row[] = "<a href=\"?action=edit&id=".$announcement->id."\">".Display::return_icon('edit.png', get_lang('Edit'), array(), 22)."</a> <a href=\"?action=delete&id=".$announcement->id."\" onclick=\"javascript:if(!confirm('".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"), ENT_QUOTES))."')) return false;\">".Display::return_icon('delete.png', get_lang('Delete'), array(), 22)."</a>";
$announcement_data[] = $row;
}
$table = new SortableTableFromArray($announcement_data);
@ -255,7 +257,5 @@ if ($show_announcement_list) {
$table->set_form_actions($form_actions);
$table->display();
}
/* FOOTER */
Display :: display_footer();
Display :: display_footer();

@ -46,8 +46,7 @@ $setting_agenda_link = 'coursecode'; // valid values are coursecode and icon
/**
* This function retrieves all the agenda items of all the courses the user is subscribed to
*/
function get_myagendaitems($courses_dbs, $month, $year) {
global $_configuration;
function get_myagendaitems($courses_dbs, $month, $year) {
global $setting_agenda_link;
$items = array();
@ -101,7 +100,8 @@ function get_myagendaitems($courses_dbs, $month, $year) {
}
}
$result = Database::query($sqlquery);
while ($item = Database::fetch_array($result)) {
$my_list = array();
while ($item = Database::fetch_array($result, 'ASSOC')) {
$agendaday = date("j",strtotime($item['start_date']));
if(!isset($items[$agendaday])) {
$items[$agendaday]=array();
@ -117,14 +117,14 @@ function get_myagendaitems($courses_dbs, $month, $year) {
$agenda_link = api_substr($title, 0, 14);
} else {
$agenda_link = Display::return_icon('course_home.gif');
}
}
if(!isset($items[$agendaday][$item['start_date']])) {
$items[$agendaday][$item['start_date']] = '';
}
$items[$agendaday][$item['start_date']] .= "<i>$time</i> $end_time &nbsp;";
$item['title'] = '<strong>'.$item['title'].'</strong>';
$items[$agendaday][$item['start_date']] .= '<br />'."<a href=\"$URL\" title=\"".Security::remove_XSS($array_course_info['title'])."\">".$agenda_link."</a> ".Security::remove_XSS($item['title'])."<br /> ";
$items[$agendaday][$item['start_date']] .= '<br/>';
$items[$agendaday][$item['start_date']] .= '<br/>';
}
}
@ -138,7 +138,7 @@ function get_myagendaitems($courses_dbs, $month, $year) {
while (list ($key, $val) = each($tmpitems)) {
$agendaitems[$agendaday] .= $val;
}
}
}
return $agendaitems;
}
/**

@ -16,8 +16,7 @@ class SystemAnnouncementManager
* @param int $visible VISIBLE_GUEST, VISIBLE_STUDENT or VISIBLE_TEACHER
* @param int $id The identifier of the announcement to display
*/
public static function display_announcements($visible, $id = -1)
{
public static function display_announcements($visible, $id = -1) {
$user_selected_language = api_get_interface_language();
$db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS);
@ -32,16 +31,8 @@ class SystemAnnouncementManager
case VISIBLE_TEACHER :
$sql .= " AND visible_teacher = 1 ";
break;
}
global $_configuration;
$current_access_url_id = 1;
if ($_configuration['multiple_access_urls']) {
$current_access_url_id = api_get_current_access_url_id();
}
$sql .= " AND access_url_id = '$current_access_url_id' ";
}
$sql .= " AND access_url_id = ".api_get_current_access_url_id()." ";
$sql .= " ORDER BY date_start DESC LIMIT 0,7";
$announcements = Database::query($sql);
@ -62,7 +53,7 @@ class SystemAnnouncementManager
} else {
$show_url = 'news_list.php#'.$announcement->id;
}
$display_date = api_convert_and_format_date($announcement->display_date, DATE_FORMAT_LONG, date_default_timezone_get());
$display_date = api_convert_and_format_date($announcement->display_date, DATE_FORMAT_LONG, date_default_timezone_get());
echo '<a name="'.$announcement->id.'"></a>
<div class="system_announcement">
<div class="system_announcement_title"><a name="ann'.$announcement->id.'" href="'.$show_url.'">'.$announcement->title.'</a></div><div class="system_announcement_date">'.$display_date.'</div>
@ -130,7 +121,7 @@ class SystemAnnouncementManager
echo '</table>';
echo '<table align="center" border="0" width="900px">';
while ($announcement = Database::fetch_object($announcements)) {
$display_date = api_convert_and_format_date($announcement->display_date, DATE_FORMAT_LONG, date_default_timezone_get());
$display_date = api_convert_and_format_date($announcement->display_date, DATE_FORMAT_LONG);
echo '<tr><td>';
echo '<a name="'.$announcement->id.'"></a>
<div class="system_announcement">
@ -259,25 +250,24 @@ class SystemAnnouncementManager
* @param int Whether to send an e-mail to all users (1) or not (0)
* @return bool True on success, false on failure
*/
public static function add_announcement($title, $content, $date_start, $date_end, $visible_teacher = 0, $visible_student = 0, $visible_guest = 0, $lang = null, $send_mail=0)
{
public static function add_announcement($title, $content, $date_start, $date_end, $visible_teacher = 0, $visible_student = 0, $visible_guest = 0, $lang = null, $send_mail = 0, $add_to_calendar = false ) {
$a_dateS = explode(' ',$date_start);
$a_arraySD = explode('-',$a_dateS[0]);
$a_arraySH = explode(':',$a_dateS[1]);
$date_start = array_merge($a_arraySD,$a_arraySH);
$date_start_to_compare = array_merge($a_arraySD,$a_arraySH);
$a_dateE = explode(' ',$date_end);
$a_arrayED = explode('-',$a_dateE[0]);
$a_arrayEH = explode(':',$a_dateE[1]);
$date_end = array_merge($a_arrayED,$a_arrayEH);
$date_end_to_compare = array_merge($a_arrayED,$a_arrayEH);
$db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS);
if (!checkdate($date_start[1], $date_start[2], $date_start[0])) {
if (!checkdate($date_start_to_compare[1], $date_start_to_compare[2], $date_start_to_compare[0])) {
Display :: display_normal_message(get_lang('InvalidStartDate'));
return false;
}
if (($date_end[1] || $date_end[2] || $date_end[0]) && !checkdate($date_end[1], $date_end[2], $date_end[0])) {
if (($date_end_to_compare[1] || $date_end_to_compare[2] || $date_end_to_compare[0]) && !checkdate($date_end_to_compare[1], $date_end_to_compare[2], $date_end_to_compare[0])) {
Display :: display_normal_message(get_lang('InvalidEndDate'));
return false;
}
@ -285,8 +275,10 @@ class SystemAnnouncementManager
Display::display_normal_message(get_lang('InvalidTitle'));
return false;
}
$start = $date_start[0]."-".$date_start[1]."-".$date_start[2]." ".$date_start[3].":".$date_start[4].":".$date_start[5];
$end = $date_end[0]."-".$date_end[1]."-".$date_end[2]." ".$date_end[3].":".$date_end[4].":".$date_start[5];
$start = api_get_utc_datetime($date_start);
$end = api_get_utc_datetime($date_end);
$title = Database::escape_string($title);
$content = Database::escape_string($content);
@ -311,6 +303,10 @@ class SystemAnnouncementManager
if ($res === false) {
Debug::log_s(mysql_error());
return false;
}
if ($add_to_calendar) {
require_once 'calendar.lib.php';
$agenda_id = agenda_add_item($title, $content, $date_start, $date_end);
}
return true;
}
@ -323,24 +319,25 @@ class SystemAnnouncementManager
* @param array $date_end : end date of announcement (0 => day ; 1 => month ; 2 => year ; 3 => hour ; 4 => minute)
* @return bool True on success, false on failure
*/
public static function update_announcement($id, $title, $content, $date_start, $date_end, $visible_teacher = 0, $visible_student = 0, $visible_guest = 0,$lang=null, $send_mail=0)
{
public static function update_announcement($id, $title, $content, $date_start, $date_end, $visible_teacher = 0, $visible_student = 0, $visible_guest = 0,$lang=null, $send_mail=0) {
$a_dateS = explode(' ',$date_start);
$a_arraySD = explode('-',$a_dateS[0]);
$a_arraySH = explode(':',$a_dateS[1]);
$date_start = array_merge($a_arraySD,$a_arraySH);
$date_start_to_compare = array_merge($a_arraySD,$a_arraySH);
$a_dateE = explode(' ',$date_end);
$a_arrayED = explode('-',$a_dateE[0]);
$a_arrayEH = explode(':',$a_dateE[1]);
$date_end = array_merge($a_arrayED,$a_arrayEH);
$date_end_to_compare = array_merge($a_arrayED,$a_arrayEH);
$langsql = is_null($lang) ? 'NULL' : "'".Database::escape_string($lang)."'";
$db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS);
if (!checkdate($date_start[1], $date_start[2], $date_start[0])) {
if (!checkdate($date_start_to_compare[1], $date_start_to_compare[2], $date_start_to_compare[0])) {
Display :: display_normal_message(get_lang('InvalidStartDate'));
return false;
}
if (($date_end[1] || $date_end[2] || $date_end[0]) && !checkdate($date_end[1], $date_end[2], $date_end[0])) {
if (($date_end_to_compare[1] || $date_end_to_compare[2] || $date_end_to_compare[0]) && !checkdate($date_end_to_compare[1], $date_end_to_compare[2], $date_end_to_compare[0])) {
Display :: display_normal_message(get_lang('InvalidEndDate'));
return false;
}
@ -348,8 +345,9 @@ class SystemAnnouncementManager
Display::display_normal_message(get_lang('InvalidTitle'));
return false;
}
$start = $date_start[0]."-".$date_start[1]."-".$date_start[2]." ".$date_start[3].":".$date_start[4].":".$date_start[5];
$end = $date_end[0]."-".$date_end[1]."-".$date_end[2]." ".$date_end[3].":".$date_end[4].":".$date_start[5];
$start = api_get_utc_datetime($date_start);
$end = api_get_utc_datetime($date_end);
$title = Database::escape_string($title);
$content = Database::escape_string($content);
@ -357,15 +355,9 @@ class SystemAnnouncementManager
$content = str_replace('src=\"/home/', 'src=\"'.api_get_path(WEB_PATH).'home/', $content);
$content = str_replace('file=/home/', 'file='.api_get_path(WEB_PATH).'home/', $content);
global $_configuration;
$current_access_url_id = 1;
if ($_configuration['multiple_access_urls']) {
$current_access_url_id = api_get_current_access_url_id();
}
$id = intval($id);
$sql = "UPDATE ".$db_table." SET lang=$langsql,title='".$title."',content='".$content."',date_start='".$start."',date_end='".$end."', ";
$sql .= " visible_teacher = '".$visible_teacher."', visible_student = '".$visible_student."', visible_guest = '".$visible_guest."' , access_url_id = '".$current_access_url_id."' WHERE id='".$id."'";
$sql .= " visible_teacher = '".$visible_teacher."', visible_student = '".$visible_student."', visible_guest = '".$visible_guest."' , access_url_id = '".api_get_current_access_url_id()."' WHERE id = ".$id;
if ($send_mail==1) {
SystemAnnouncementManager::send_system_announcement_by_email($title, $content,$visible_teacher, $visible_student, $lang);
@ -385,7 +377,7 @@ class SystemAnnouncementManager
public static function delete_announcement($id) {
$db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS);
$id = intval($id);
$sql = "DELETE FROM ".$db_table." WHERE id='".$id."'";
$sql = "DELETE FROM ".$db_table." WHERE id =".$id;
$res = Database::query($sql);
if ($res === false) {
Debug::log_s(mysql_error());
@ -401,7 +393,7 @@ class SystemAnnouncementManager
public static function get_announcement($id) {
$db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS);
$id = intval($id);
$sql = "SELECT * FROM ".$db_table." WHERE id='".$id."'";
$sql = "SELECT * FROM ".$db_table." WHERE id = ".$id;
$announcement = Database::fetch_object(Database::query($sql));
return $announcement;
}
@ -473,4 +465,4 @@ class SystemAnnouncementManager
}
return $res; //true if at least one e-mail was sent
}
}
}
Loading…
Cancel
Save