, Ghent University * @param integer $month: the integer value of the month we are viewing * @param integer $year: the 4-digit year indication e.g. 2005 * @return array */ function get_kalender_items($month, $year) { global $_user, $_course; global $is_allowedToEdit; // database variables $TABLEAGENDA=Database::get_course_table(TABLE_AGENDA); $TABLE_ITEM_PROPERTY=Database::get_course_table(TABLE_ITEM_PROPERTY); $group_memberships=GroupManager::get_group_ids($_course['dbName'], $_user['user_id']); if (is_allowed_to_edit() OR api_get_course_setting('allow_user_edit_agenda')) { //echo "course admin"; // added GROUP BY `agenda`.`id` to prevent double display of a message that has been sent to two groups $sql="SELECT DISTINCT agenda.*, toolitemproperties.* FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." AND MONTH(`agenda`.`start_date`)='".$month."' AND YEAR(`agenda`.`start_date`)='".$year."' AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' AND `toolitemproperties`.`visibility`='1' GROUP BY `agenda`.`id` ORDER BY start_date ".$sort; } // if the user is not an administrator of that course else { //echo "GEEN course admin"; if (is_array($group_memberships)) { $sql="SELECT agenda.*, toolitemproperties.* FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." AND MONTH(`agenda`.`start_date`)='".$month."' AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' AND ( `toolitemproperties`.`to_user_id`='".$_user['user_id']."' OR `toolitemproperties`.`to_group_id` IN (0, ".implode(", ", $group_memberships).") ) AND `toolitemproperties`.`visibility`='1' ORDER BY start_date ".$sort; } else { $sql="SELECT agenda.*, toolitemproperties.* FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." AND MONTH(`agenda`.`start_date`)='".$month."' AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' AND ( `toolitemproperties`.`to_user_id`='".$_user['user_id']."' OR `toolitemproperties`.`to_group_id`='0') AND `toolitemproperties`.`visibility`='1' ORDER BY start_date ".$sort; } } $result=api_sql_query($sql,__FILE__,__LINE__); $data=array(); while ($row=mysql_fetch_array($result)) { $datum_item=(int)substr($row["start_date"],8,2); //$dag_item=date("d",strtotime($datum_item)); $data[$datum_item]=intval($datum_item); } return $data; } /** * show the mini calender of the given month * @author: Patrick Cool , Ghent University * @param array an array containing all the agenda items for the given month * @param integer $month: the integer value of the month we are viewing * @param integer $year: the 4-digit year indication e.g. 2005 * @param string $monthName: the language variable for the mont name * @return html code * @todo refactor this so that $monthName is no longer needed as a parameter */ function display_minimonthcalendar($agendaitems, $month, $year, $monthName) { global $DaysShort; //Handle leap year $numberofdays = array (0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); if (($year % 400 == 0) or ($year % 4 == 0 and $year % 100 <> 0)) $numberofdays[2] = 29; //Get the first day of the month $dayone = getdate(mktime(0, 0, 0, $month, 1, $year)); //Start the week on monday $startdayofweek = $dayone['wday'] <> 0 ? ($dayone['wday'] - 1) : 6; $backwardsURL = $_SERVER['PHP_SELF']."?coursePath=".$_GET['coursePath']."&courseCode=".$_GET['courseCode']."&month=". ($month == 1 ? 12 : $month -1)."&year=". ($month == 1 ? $year -1 : $year); $forewardsURL = $_SERVER['PHP_SELF']."?coursePath=".$_GET['coursePath']."&courseCode=".$_GET['courseCode']."&month=". ($month == 12 ? 1 : $month +1)."&year=". ($month == 12 ? $year +1 : $year); echo "\n", "\n", "\n", "\n", "\n", "\n"; echo "\n"; for ($ii = 1; $ii < 8; $ii ++) { echo "\n"; } echo "\n"; $curday = -1; $today = getdate(); while ($curday <= $numberofdays[$month]) { echo "\n"; for ($ii = 0; $ii < 7; $ii ++) { if (($curday == -1) && ($ii == $startdayofweek)) { $curday = 1; } if (($curday > 0) && ($curday <= $numberofdays[$month])) { $bgcolor = $ii < 5 ? $class="class=\"days_week\"" : $class="class=\"days_weekend\""; $dayheader = "$curday"; if (($curday == $today[mday]) && ($year == $today[year]) && ($month == $today[mon])) { $dayheader = "$curday"; $class = "class=\"days_today\""; } echo "\t\n"; $curday ++; } else { echo "\n"; } } echo "\n"; } echo "
", $monthName, " ", $year, "
", $DaysShort[$ii % 7], "
"; if ($agendaitems[$curday] <> "") { echo "".$dayheader.""; } else { echo $dayheader; } // "a".$dayheader." ".$agendaitems[$curday]."\n"; echo " 
\n"; } /** * show the calender of the given month * @author: Patrick Cool , Ghent University * @param integer $month: the integer value of the month we are viewing * @param integer $year: the 4-digit year indication e.g. 2005 * @return html code */ function display_monthcalendar($month, $year) { global $MonthsLong; global $datakalenderitems; global $DaysShort; global $origin; // grabbing all the kalender items for this year and storing it in a array $data=get_kalender_items($month,$year); //Handle leap year $numberofdays = array(0,31,28,31,30,31,30,31,31,30,31,30,31); if (($year%400 == 0) or ($year%4==0 and $year%100<>0)) $numberofdays[2] = 29; //Get the first day of the month $dayone = getdate(mktime(0,0,0,$month,1,$year)); //Start the week on monday $startdayofweek = $dayone['wday']<>0 ? ($dayone['wday']-1) : 6; $backwardsURL = $_SERVER['PHP_SELF']."?origin=$origin&month=".($month==1 ? 12 : $month-1)."&year=".($month==1 ? $year-1 : $year); $forewardsURL = $_SERVER['PHP_SELF']."?origin=$origin&month=".($month==12 ? 1 : $month+1)."&year=".($month==12 ? $year+1 : $year); $maand_array_maandnummer=$month-1; echo "\n", "\n", "\n", "\n", "\n", "\n"; echo "\n"; for ($ii=1;$ii<8; $ii++) { echo "\n"; } echo "\n"; $curday = -1; $today = getdate(); while ($curday <=$numberofdays[$month]) { echo "\n"; for ($ii=0; $ii<7; $ii++) { if (($curday == -1)&&($ii==$startdayofweek)) { $curday = 1; } if (($curday>0)&&($curday<=$numberofdays[$month])) { $bgcolor = $ii<5 ? "class=\"alternativeBgLight\"" : "class=\"alternativeBgDark\""; $dayheader = "$curday"; if (in_array($curday,$data)) { $dayheader="".$curday.""; } if (($curday==$today['mday'])&&($year ==$today['year'])&&($month == $today[mon])) { echo "\n"; $curday++; } else { echo ""; } } echo ""; } echo "
",$MonthsLong[$maand_array_maandnummer]," ",$year,"
",$DaysShort[$ii%7],"
".$dayheader." \n"; } else { echo "".$dayheader." \n"; } echo " 
"; } /** * returns all the javascript that is required for easily selecting the target people/groups this goes into the $htmlHeadXtra[] array * @author: Patrick Cool , Ghent University * @return javascript code */ function to_javascript() { $Send2All=get_lang("Send2All"); return ""; } /** * returns the javascript for setting a filter. This is a jump menu * @author: Patrick Cool , Ghent University * @return javascript code */ function user_group_filter_javascript() { return " "; } /** * this function gets all the users of the current course * @author Patrick Cool , Ghent University * @return array: associative array where the key is the id of the user and the value is an array containing the first name, the last name, the user id */ function get_course_users() { global $tbl_user; global $tbl_courseUser, $tbl_session_course_user; global $_cid; // not 100% if this is necessary, this however prevents a notice if (!isset($courseadmin_filter)) {$courseadmin_filter='';} if(api_get_setting("use_session_mode") != "true") { $sql = "SELECT u.lastname lastName, u.firstname firstName, u.user_id uid FROM ".$tbl_user." u, ".$tbl_courseUser." cu WHERE cu.course_code = '".$_cid."' AND cu.user_id = u.user_id $courseadmin_filter ORDER BY u.lastname, u.firstname"; } else { $sql = "SELECT u.lastname lastName, u.firstName firstName, u.user_id uid FROM $tbl_session_course_user AS session_course_user INNER JOIN $tbl_user u ON u.user_id = session_course_user.id_user WHERE id_session='".$_SESSION['id_session']."' AND course_code='$_cid'"; } $result = api_sql_query($sql,__FILE__,__LINE__) or die(mysql_error()); while ($user_data = mysql_fetch_array($result)) { $user_list [$user_data['uid']] = $user_data; } return $user_list; } /** * this function gets all the groups of the course * @author Patrick Cool , Ghent University * @return array */ function get_course_groups() { global $tbl_group; global $tbl_groupUser; $sql = "SELECT g.id, g.name, COUNT(gu.id) userNb FROM ".$tbl_group." AS g LEFT JOIN ".$tbl_groupUser." gu ON g.id = gu.group_id GROUP BY g.id"; $result = api_sql_query($sql,__FILE__,__LINE__) or die(mysql_error()); while ($group_data = mysql_fetch_array($result)) { $group_list [$group_data['id']] = $group_data; } return $group_list; } /** * this function shows the form for sending a message to a specific group or user. * @author: Patrick Cool , Ghent University * @return html code */ function show_to_form($to_already_selected) { $user_list=get_course_users(); $group_list=get_course_groups(); echo "\n\n"; echo "\t\n"; // the form containing all the groups and all the users of the course echo "\t\t\n"; // the buttons for adding or removing groups/users echo "\n\t\t\n"; echo "\n\t\t\n"; echo "\t\n"; echo "
\n"; construct_not_selected_select_form($group_list,$user_list,$to_already_selected); echo "\t\t\n"; echo "\t\t", "\n\t\t

 

", "\n\t\t"; echo "\t\t
\n"; construct_selected_select_form($group_list,$user_list,$to_already_selected); echo "\t\t
"; } /** * this function shows the form with the user that were not selected * @author: Patrick Cool , Ghent University * @return html code */ function construct_not_selected_select_form($group_list=null, $user_list=null,$to_already_selected) { echo "\t\t\n"; } /** * this function shows the form with the user that were selected * @author: Patrick Cool , Ghent University * @return html code */ function construct_selected_select_form($group_list=null, $user_list=null,$to_already_selected) { // we separate the $to_already_selected array (containing groups AND users into // two separate arrays if (is_array($groupuser)) { $groupuser=separate_users_groups($to_already_selected); } $groups_to_already_selected=$groupuser['groups']; $users_to_already_selected=$groupuser['users']; // we load all the groups and all the users into a reference array that we use to search the name of the group / user $ref_array_groups=get_course_groups(); $ref_array_users=get_course_users(); // we construct the form of the already selected groups / users echo "\t\t\n"; } /** * This function stores the Agenda Item in the table calendar_event and updates the item_property table also * @author: Patrick Cool , Ghent University * @return integer the id of the last added agenda item */ function store_new_agenda_item() { global $TABLEAGENDA; global $_user; // some filtering of the input data $title=strip_tags(trim($_POST['title'])); // no html allowed in the title $content=trim($_POST['content']); $start_date=(int)$_POST['fyear']."-".(int)$_POST['fmonth']."-".(int)$_POST['fday']." ".(int)$_POST['fhour'].":".(int)$_POST['fminute'].":00"; $end_date=(int)$_POST['end_fyear']."-".(int)$_POST['end_fmonth']."-".(int)$_POST['end_fday']." ".(int)$_POST['end_fhour'].":".(int)$_POST['end_fminute'].":00"; // store in the table calendar_event $sql = "INSERT INTO ".$TABLEAGENDA." (title,content, start_date, end_date) VALUES ('".$title."','".$content."', '".$start_date."','".$end_date."')"; $result = api_sql_query($sql,__FILE__,__LINE__) or die (mysql_error()); $last_id=mysql_insert_id(); // store in last_tooledit (first the groups, then the users $to=$_POST['selectedform']; if (($_SESSION['allow_individual_calendar']=="show" and !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, TOOL_CALENDAR_EVENT, $last_id,"AgendaAdded", $_user['user_id'], $group,'',$start_visible, $end_visible); } } // storing the selected users if (is_array($send_to['users'])) { foreach ($send_to['users'] as $user) { api_item_property_update($_course, TOOL_CALENDAR_EVENT, $last_id,"AgendaAdded", $_user['user_id'],'',$user, $start_visible,$end_visible); } } } else // the message is sent to everyone, so we set the group to 0 { api_item_property_update($_course, TOOL_CALENDAR_EVENT, $last_id,"AgendaAdded", $_user['user_id'], '','',$start_visible,$end_visible); } // storing the resources store_resources($_SESSION['source_type'],$last_id); return $last_id; } /** * Stores the given agenda item as an announcement (unlinked copy) * @param integer Agenda item's ID * @return integer New announcement item's ID */ function store_agenda_item_as_announcement($item_id){ $table_agenda = Database::get_course_table(TABLE_AGENDA); $table_ann = Database::get_course_table(TABLE_ANNOUNCEMENT); //check params if(empty($item_id) or $item_id != strval(intval($item_id))){return -1;} //get the agenda item $sql = "SELECT * FROM $table_agenda WHERE id = '".$item_id."'"; $res = api_sql_query($sql,__FILE__,__LINE__); if(Database::num_rows($res)>0){ $row = Database::fetch_array($res); //we have the agenda event, copy it //get the maximum value for display order in announcement table $sql_max = "SELECT MAX(display_order) FROM $table_ann"; $res_max = api_sql_query($sql_max,__FILE__,__LINE__); $row_max = Database::fetch_array($res_max); $max = $row_max[0]+1; //build the announcement text $content = $row['start_date']." - ".$row['end_date']."\n\n".$row['content']; //insert announcement $sql_ins = "INSERT INTO $table_ann (title,content,end_date,display_order) " . "VALUES ('".$row['title']."','$content','".$row['end_date']."','$max')"; $res_ins = api_sql_query($sql_ins,__FILE__,__LINE__); if($res > 0) { $ann_id = Database::get_last_insert_id(); //Now also get the list of item_properties rows for this agenda_item (calendar_event) //and copy them into announcement item_properties $table_props = Database::get_course_table(TABLE_ITEM_PROPERTY); $sql_props = "SELECT * FROM $table_props WHERE tool = 'calendar_event' AND ref='$item_id'"; $res_props = api_sql_query($sql_props,__FILE__,__LINE__); if(Database::num_rows($res_props)>0) { while($row_props = Database::fetch_array($res_props)) { //insert into announcement item_property $time = date("Y-m-d H:i:s", time()); $sql_ins_props = "INSERT INTO $table_props " . "(tool, insert_user_id, insert_date, " . "lastedit_date, ref, lastedit_type," . "lastedit_user_id, to_group_id, to_user_id, " . "visibility, start_visible, end_visible)" . " VALUES " . "('announcement','".$row_props['insert_user_id']."','".$time."'," . "'$time','$ann_id','AnnouncementAdded'," . "'".$row_props['last_edit_user_id']."','".$row_props['to_group_id']."','".$row_props['to_user_id']."'," . "'".$row_props['visibility']."','".$row_props['start_visible']."','".$row_props['end_visible']."')"; $res_ins_props = api_sql_query($sql_ins_props,__FILE__,__LINE__); if($res_ins_props <= 0){ error_log('SQL Error in '.__FILE__.' at line '.__LINE__.': '.$sql_ins_props); }else{ //copy was a success return $ann_id; } } } }else{ return -1; } } return -1; } /** * This function separates the users from the groups * users have a value USER:XXX (with XXX the dokeos id * groups have a value GROUP:YYY (with YYY the group id) * @author: Patrick Cool , Ghent University * @return array */ function separate_users_groups($to) { foreach($to as $to_item) { list($type, $id) = explode(':', $to_item); switch($type) { case 'GROUP': $grouplist[] =$id; break; case 'USER': $userlist[] =$id; break; } } $send_to['groups']=$grouplist; $send_to['users']=$userlist; return $send_to; } /** * returns all the users and all the groups a specific Agenda item has been sent to * @author: Patrick Cool , Ghent University * @return array */ function sent_to($tool, $id) { global $_course; $TABLE_ITEM_PROPERTY = Database::get_course_table(TABLE_ITEM_PROPERTY); $sql="SELECT * FROM $TABLE_ITEM_PROPERTY WHERE tool='".$tool."' AND ref='".$id."'"; $result=api_sql_query($sql,__FILE__,__LINE__); while ($row=mysql_fetch_array($result)) { // if to_group_id is null then it is sent to a specific user // if to_group_id = 0 then it is sent to everybody if (!is_null($row['to_group_id']) ) { $sent_to_group[]=$row['to_group_id']; //echo $row['to_group_id']; } // if to_user_id <> 0 then it is sent to a specific user if ($row['to_user_id']<>0) { $sent_to_user[]=$row['to_user_id']; } } if (isset($sent_to_group)) { $sent_to['groups']=$sent_to_group; } if (isset($sent_to_user)) { $sent_to['users']=$sent_to_user; } return $sent_to; } /** * constructs the form to display all the groups and users the message has been sent to * @author: Patrick Cool , Ghent University * @param array $sent_to_array: a 2 dimensional array containing the groups and the users * the first level is a distinction between groups and users: $sent_to_array['groups'] and $sent_to_array['users'] * $sent_to_array['groups'] (resp. $sent_to_array['users']) is also an array containing all the id's of the * groups (resp. users) who have received this message. * @return html */ function sent_to_form($sent_to_array) { // we find all the names of the groups $group_names=get_course_groups(); count($sent_to_array); // we count the number of users and the number of groups if (isset($sent_to_array['users'])) { $number_users=count($sent_to_array['users']); } else { $number_users=0; } if (isset($sent_to_array['groups'])) { $number_groups=count($sent_to_array['groups']); } else { $number_groups=0; } $total_numbers=$number_users+$number_groups; // starting the form if there is more than one user/group if ($total_numbers >1) { $output="\n"; } else // there is only one user/group { if (is_array($sent_to_array['users'])) { $user_info=api_get_user_info($sent_to_array['users'][0]); echo $user_info['firstName']." ".$user_info['lastName']; } if (is_array($sent_to_array['groups']) and $sent_to_array['groups'][0]!==0) { $group_id=$sent_to_array['groups'][0]; echo $group_names[$group_id]['name']; } if (is_array($sent_to_array['groups']) and $sent_to_array['groups'][0]==0) { echo get_lang("Everybody"); } //.$sent_to_array['groups'][0]; } echo $output; } /** * This function displays a dropdown list that allows the course administrator do view the calendar items of one specific group * @author: Patrick Cool , Ghent University */ function show_group_filter_form() { $group_list=get_course_groups(); echo ""; } /** * This function displays a dropdown list that allows the course administrator do view the calendar items of one specific group * @author: Patrick Cool , Ghent University */ function show_user_filter_form() { $user_list=get_course_users(); echo ""; } /** * This function displays a dropdown list that allows the course administrator do view the calendar items of one specific group * @author: Patrick Cool , Ghent University */ function show_user_group_filter_form() { echo "\n"; } /** * This tools loads all the users and all the groups who have received a specific item (in this case an agenda item) * @author: Patrick Cool , Ghent University */ function load_edit_users($tool, $id) { global $_course; $TABLE_ITEM_PROPERTY = Database::get_course_table(TABLE_ITEM_PROPERTY); $sql="SELECT * FROM $TABLE_ITEM_PROPERTY WHERE tool='$tool' AND ref='$id'"; $result=api_sql_query($sql,__FILE__,__LINE__) or die (mysql_error()); while ($row=mysql_fetch_array($result)) { $to_group=$row['to_group_id']; switch ($to_group) { // it was send to one specific user case null: $to[]="USER:".$row['to_user_id']; break; // it was sent to everyone case 0: return "everyone"; exit; break; default: $to[]="GROUP:".$row['to_group_id']; } } return $to; } /** * This functions swithes the visibility a course resource using the visible field in 'last_tooledit' values: 0 = invisible * @author: Patrick Cool , Ghent University */ function change_visibility($tool,$id) { global $_course; $TABLE_ITEM_PROPERTY = Database::get_course_table(TABLE_ITEM_PROPERTY); $sql="SELECT * FROM $TABLE_ITEM_PROPERTY WHERE tool='".TOOL_CALENDAR_EVENT."' AND ref='$id'"; $result=api_sql_query($sql,__FILE__,__LINE__) or die (mysql_error()); $row=mysql_fetch_array($result); if ($row['visibility']=='1') { $sql_visibility="UPDATE $TABLE_ITEM_PROPERTY SET visibility='0' WHERE tool='$tool' AND ref='$id'"; api_item_property_update($_course,TOOL_CALENDAR_EVENT,$id,"invisible"); } else { $sql_visibility="UPDATE $TABLE_ITEM_PROPERTY SET visibility='1' WHERE tool='$tool' AND ref='$id'"; api_item_property_update($_course,TOOL_CALENDAR_EVENT,$id,"visible"); } } /** * The links that allows the course administrator to add a new agenda item, to filter on groups or users * @author Patrick Cool , Ghent University */ function display_courseadmin_links() { echo "
  • ".get_lang("AgendaAdd")."
  • "; if (empty ($_SESSION['toolgroup'])) { echo "
  • ".get_lang(UserGroupFilter)."
    "; echo "
    "; show_user_group_filter_form(); echo "
    "; } echo "
  • "; } /** * The links that allows the student AND course administrator to show all agenda items and sort up/down * @author Patrick Cool , Ghent University */ function display_student_links() { global $show; if ($_SESSION['sort'] == 'DESC') { echo "
  • ".get_lang("AgendaSortChronologicallyUp")."
  • "; } else { echo "
  • ".get_lang("AgendaSortChronologicallyDown")."
  • "; } // showing the link to show all items or only those of the current month if ($_SESSION['show']=="showcurrent") { echo "
  • ".get_lang("ShowAll")."
  • "; } else { echo "
  • ".get_lang("ShowCurrent")."
  • "; } } /** * get all the information of the agenda_item from the database * @author Patrick Cool , Ghent University * @param integer the id of the agenda item we are getting all the information of * @return an associative array that contains all the information of the agenda item. The keys are the database fields */ function get_agenda_item($id) { global $TABLEAGENDA; $id=(int)addslashes($_GET['id']); $sql = "SELECT * FROM ".$TABLEAGENDA." WHERE id='".$id."'"; $result = api_sql_query($sql,__FILE__,__LINE__); $entry_to_edit = mysql_fetch_array($result); $item['title'] = $entry_to_edit["title"]; $item['content'] = $entry_to_edit["content"]; $item['start_date'] = $entry_to_edit["start_date"]; $item['end_date'] = $entry_to_edit["end_date"]; $item['to']=load_edit_users(TOOL_CALENDAR_EVENT, $id); // if the item has been sent to everybody then we show the compact to form if ($item['to']=="everyone") { $_SESSION['allow_individual_calendar']="hide"; } else { $_SESSION['allow_individual_calendar']="show"; } //echo "
    IN get_agenda_item".$_SESSION['allow_individual_calendar']; return $item; } /** * This is the function that updates an agenda item. It does 3 things * 1. storethe start_date, end_date, title and message in the calendar_event table * 2. store the groups/users who this message is meant for in the item_property table * 3. modify the attachments (if needed) * @author Patrick Cool , Ghent University */ function store_edited_agenda_item() { global $_user; // database definitions $TABLE_ITEM_PROPERTY = Database::get_course_table(TABLE_ITEM_PROPERTY); // STEP 1: editing the calendar_event table // 1.a. some filtering of the input data $id=(int)$_POST['id']; $title=strip_tags(trim($_POST['title'])); // no html allowed in the title $content=trim($_POST['content']); $start_date=(int)$_POST['fyear']."-".(int)$_POST['fmonth']."-".(int)$_POST['fday']." ".(int)$_POST['fhour'].":".(int)$_POST['fminute'].":00"; $end_date=(int)$_POST['end_fyear']."-".(int)$_POST['end_fmonth']."-".(int)$_POST['end_fday']." ".(int)$_POST['end_fhour'].":".(int)$_POST['end_fminute'].":00"; $to=$_POST['selectedform']; // 1.b. the actual saving in calendar_event table $edit_result=save_edit_agenda_item($id,$title,$content,$start_date,$end_date); // step 2: editing the item_propery table (=delete all and add the new destination users/groups) if ($edit_result=true) { // 2.a. delete everything for the users $sql_delete="DELETE FROM ".$TABLE_ITEM_PROPERTY." WHERE ref='$id' AND tool='".TOOL_CALENDAR_EVENT."'"; $result = api_sql_query($sql_delete,__FILE__,__LINE__) or die (mysql_error()); // 2.b. storing the new users/groups if ($_SESSION['allow_individual_calendar']=="show" and !is_null($to)) // !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, TOOL_CALENDAR_EVENT, $id,"AgendaModified", $_user['user_id'], $group,'',$start_visible, $end_visible); } } // storing the selected users if (is_array($send_to['users'])) { foreach ($send_to['users'] as $user) { api_item_property_update($_course, TOOL_CALENDAR_EVENT, $id,"AgendaModified", $_user['user_id'],'',$user, $start_visible,$end_visible); } } } else // the message is sent to everyone, so we set the group to 0 { api_item_property_update($_course, TOOL_CALENDAR_EVENT, $id,"AgendaModified", $_user['user_id'], '','',$start_visible,$end_visible); } } //if ($edit_result=true) // step 3: update the attachments (=delete all and add those in the session update_added_resources("Agenda", $id); // return the message; Display::display_normal_message(get_lang("EditSuccess")); } /** * This function stores the Agenda Item in the table calendar_event and updates the item_property table also (after an edit) * @author: Patrick Cool , Ghent University */ function save_edit_agenda_item($id,$title,$content,$start_date,$end_date) { $TABLEAGENDA = Database::get_course_table(TABLE_AGENDA); // store the modifications in the table calendar_event $sql = "UPDATE ".$TABLEAGENDA." SET title='".$title."', content='".$content."', start_date='".$start_date."', end_date='".$end_date."' WHERE id='".$id."'"; $result = api_sql_query($sql,__FILE__,__LINE__) or die (mysql_error()); return true; } /** * This is the function that deletes an agenda item. * The agenda item is no longer fycically deleted but the visibility in the item_property table is set to 2 * which means that it is invisible for the student AND course admin. Only the platform administrator can see it. * This will in a later stage allow the platform administrator to recover resources that were mistakenly deleted * by the course administrator * @author Patrick Cool , Ghent University * @param integer the id of the agenda item wa are deleting */ function delete_agenda_item($id) { if (is_allowed_to_edit() OR api_get_course_setting('allow_user_edit_agenda')) { if (isset($_GET['id'])&&$_GET['id']&&isset($_GET['action'])&&$_GET['action']=="delete") { //$sql = "DELETE FROM ".$TABLEAGENDA." WHERE id='$id'"; //$sql= "UPDATE ".$TABLE_ITEM_PROPERTY." SET visibility='2' WHERE tool='Agenda' and ref='$id'"; //$result = api_sql_query($sql,__FILE__,__LINE__) or die (mysql_error()); $id=(int)addslashes($_GET['id']); api_item_property_update($_course,TOOL_CALENDAR_EVENT,$id,"delete"); // delete the resources that were added to this agenda item // 2DO: as we no longer fysically delete the agenda item (to make it possible to 'restore' // deleted items, we should not delete the added resources either. // delete_added_resource("Agenda", $id); // -> this is no longer needed as the message is not really deleted but only visibility=2 (only platform admin can see it) //resetting the $id; $id=null; // displaying the result message in the yellow box Display::display_normal_message(get_lang("AgendaDeleteSuccess")); } // if (isset($id)&&$id&&isset($action)&&$action=="delete") } // if ($is_allowedToEdit) } /** * Makes an agenda item visible or invisible for a student * @author Patrick Cool , Ghent University * @param integer id the id of the agenda item we are changing the visibility of */ function showhide_agenda_item($id) { /*================================================== SHOW / HIDE A CALENDAR ITEM ==================================================*/ // and $_GET['isStudentView']<>"false" is added to prevent that the visibility is changed after you do the following: // change visibility -> studentview -> course manager view if ((is_allowed_to_edit() OR api_get_course_setting('allow_user_edit_agenda')) and $_GET['isStudentView']<>"false") { if (isset($_GET['id'])&&$_GET['id']&&isset($_GET['action'])&&$_GET['action']=="showhide") { $id=(int)addslashes($_GET['id']); change_visibility($_GLOBAL['nameTools'],$id); Display::display_normal_message(get_lang("VisibilityChanged")); } } } /** * Displays all the agenda items * @author Patrick Cool , Ghent University */ function display_agenda_items() { global $TABLEAGENDA; global $TABLE_ITEM_PROPERTY; global $select_month, $select_year; global $DaysShort, $DaysLong, $MonthsLong; global $is_courseAdmin; global $dateFormatLong, $timeNoSecFormat; global $_user; // getting the group memberships $group_memberships=GroupManager::get_group_ids($_course['dbName'],$_user['user_id']); // getting the name of the groups $group_names=get_course_groups(); /*-------------------------------------------------- CONSTRUCT THE SQL STATEMENT --------------------------------------------------*/ // this is to make a difference between showing everything (all months) or only the current month) // $show_all_current is a part of the sql statement if ($_SESSION['show']!=="showall") { $show_all_current=" AND MONTH(start_date)=$select_month AND year(start_date)=$select_year"; } else { $show_all_current=""; } // by default we use the id of the current user. The course administrator can see the agenda of other users by using the user / group filter $user_id=$_user['user_id']; if ($_SESSION['user']!==null) { $user_id=$_SESSION['user']; } if ($_SESSION['group']!==null) { $group_id=$_SESSION['group']; } if ($_SESSION['toolgroup']!==null) { $group_id=$_SESSION['toolgroup']; } //echo "user:".$_SESSION['user']."group: ".$_SESSION['group']; // A. you are a course admin //if ($is_courseAdmin) if (is_allowed_to_edit() OR api_get_course_setting('allow_user_edit_agenda')) { // 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 ($_SESSION['user']!==null) { $group_memberships=GroupManager::get_group_ids($_course['dbName'],$_SESSION['user']); if (is_array($group_memberships)) { $sql="SELECT agenda.*, toolitemproperties.* FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' AND ( `toolitemproperties`.`to_user_id`=$user_id OR `toolitemproperties`.`to_group_id` IN (0, ".implode(", ", $group_memberships).") ) AND `toolitemproperties`.`visibility`='1' ORDER BY start_date ".$_SESSION['sort']; } else { $sql="SELECT agenda.*, toolitemproperties.* FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' AND ( `toolitemproperties`.`to_user_id`=$user_id OR `toolitemproperties`.`to_group_id`='0') AND `toolitemproperties`.`visibility`='1' ORDER BY start_date ".$_SESSION['sort']; } } // A.2. you are a course admin with a GROUP filter // => see only the messages of this specific group elseif ($_SESSION['group']!==null) { $sql="SELECT agenda.*, toolitemproperties.* FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' AND ( `toolitemproperties`.`to_group_id`=$group_id OR `toolitemproperties`.`to_group_id`='0') AND `toolitemproperties`.`visibility`='1' GROUP BY `toolitemproperties`.`ref` ORDER BY start_date ".$_SESSION['sort']; } // A.3 you are a course admin without any group or user filter else { // 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 ($isStudentView=="true") { $sql="SELECT agenda.*, toolitemproperties.* FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' AND `toolitemproperties`.`visibility`='1' GROUP BY `toolitemproperties`.`ref` ORDER BY start_date ".$_SESSION['sort']; } // A.3.b 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 else { $sql="SELECT agenda.*, toolitemproperties.* FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' AND ( `toolitemproperties`.`visibility`='0' or `toolitemproperties`.`visibility`='1') GROUP BY `toolitemproperties`.`ref` ORDER BY start_date ".$_SESSION['sort']; } } } //if (is_allowed_to_edit() OR api_get_course_setting('allow_user_edit_agenda')) // B. you are a student else { if (is_array($group_memberships)) { $sql="SELECT agenda.*, toolitemproperties.* FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' AND ( `toolitemproperties`.`to_user_id`=$user_id OR `toolitemproperties`.`to_group_id` IN (0, ".implode(", ", $group_memberships).") ) AND `toolitemproperties`.`visibility`='1' ORDER BY start_date ".$_SESSION['sort']; } else { if ($_user['user_id']) { $sql="SELECT agenda.*, toolitemproperties.* FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' AND ( `toolitemproperties`.`to_user_id`=$user_id OR `toolitemproperties`.`to_group_id`='0') AND `toolitemproperties`.`visibility`='1' ORDER BY start_date ".$_SESSION['sort']; } else { $sql="SELECT agenda.*, toolitemproperties.* FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' AND `toolitemproperties`.`to_group_id`='0' AND `toolitemproperties`.`visibility`='1' ORDER BY start_date ".$_SESSION['sort']; } } } // you are a student //echo "
    ".$sql."
    "; $result=api_sql_query($sql,__FILE__,__LINE__) or die(mysql_error()); $number_items=mysql_num_rows($result); /*-------------------------------------------------- DISPLAY: NO ITEMS --------------------------------------------------*/ if ($number_items==0) { echo "
    ".get_lang("NoAgendaItems")."
    "; } /*-------------------------------------------------- DISPLAY: THE ITEMS --------------------------------------------------*/ $month_bar=""; $event_list=""; $counter=0; while ($myrow=mysql_fetch_array($result)) { echo "\n"; /*-------------------------------------------------- display: the month bar --------------------------------------------------*/ // Make the month bar appear only once. if ($month_bar != date("m",strtotime($myrow["start_date"])).date("Y",strtotime($myrow["start_date"]))) { $month_bar = date("m",strtotime($myrow["start_date"])).date("Y",strtotime($myrow["start_date"])); echo "\t\n\t\t\n\t\n"; } /*-------------------------------------------------- display: the icon, title, destinees of the item --------------------------------------------------*/ echo "\t\n"; // highlight: if a date in the small calendar is clicked we highlight the relevant items $db_date=(int)date("d",strtotime($myrow["start_date"])).date("n",strtotime($myrow["start_date"])).date("Y",strtotime($myrow["start_date"])); if ($_GET["day"].$_GET["month"].$_GET["year"] <>$db_date) { if ($myrow['visibility']=='0') { $style="data_hidden"; $stylenotbold="datanotbold_hidden"; $text_style="text_hidden"; } else { $style="data"; $stylenotbold="datanotbold"; $text_style="text"; } } else { $style="datanow"; $stylenotbold="datanotboldnow"; $text_style="textnow"; } echo "\t\t\n"; /*-------------------------------------------------- display: the title --------------------------------------------------*/ echo ""; echo "\t\t\n"; echo "\t\t\n"; echo "\n\t\n"; /*-------------------------------------------------- display: the content --------------------------------------------------*/ $content = $myrow['content']; $content = make_clickable($content); $content = text_filter($content); echo ""; echo ""; /*-------------------------------------------------- display: the added resources --------------------------------------------------*/ if (check_added_resources("Agenda", $myrow["id"])) { echo ""; } /*-------------------------------------------------- display: edit delete button (course admin only) --------------------------------------------------*/ $event_list.=$myrow['id'].','; echo ""; $counter++; /*-------------------------------------------------- display: jump-to-top icon --------------------------------------------------*/ echo ""; echo "
    ". ucfirst(format_locale_date("%B %Y",strtotime($myrow["start_date"]))). "
    \n"; // adding an internal anchor echo "\t\t\t"; // the icons. If the message is sent to one or more specific users/groups // we add the groups icon // 2do: if it is sent to groups we display the group icon, if it is sent to a user we show the user icon echo ""; if ($myrow['to_group_id']!=='0') { echo ""; } echo " ".$myrow['title']."\n"; echo "\t\t\n"; // the message has been sent to echo "\t\t".get_lang("SentTo").": "; $sent_to=sent_to(TOOL_CALENDAR_EVENT, $myrow["ref"]); $sent_to_form=sent_to_form($sent_to); echo $sent_to_form; echo "\n\t
    ".get_lang("StartTimeWindow").": "; echo ucfirst(format_locale_date($dateFormatLong,strtotime($myrow["start_date"])))."   "; echo ucfirst(strftime($timeNoSecFormat,strtotime($myrow["start_date"]))).""; echo ""; if ($myrow["end_date"]<>"0000-00-00 00:00:00") { echo get_lang("EndTimeWindow").": "; echo ucfirst(format_locale_date($dateFormatLong,strtotime($myrow["end_date"])))."   "; echo ucfirst(strftime($timeNoSecFormat,strtotime($myrow["end_date"]))).""; } echo "
    "; echo ' '; echo $content; echo "
    "; echo "".get_lang("AddedResources")."
    "; if ($myrow['visibility']==0) { $addedresource_style="invisible"; } display_added_resources("Agenda", $myrow["id"], $addedresource_style); echo "
    "; if (is_allowed_to_edit() OR api_get_course_setting('allow_user_edit_agenda')) { // edit echo "", "\"".get_lang("ModifyCalendarItem")."\"", "", "\"".get_lang("Delete")."\"/"; echo "". "\"".get_lang("AddAnnouncement")."\"/"; if ($myrow['visibility']==1) { $image_visibility="visible"; } else { $image_visibility="invisible"; } echo "", "\"".get_lang("Visible")."\""; } echo "\"to


    "; } // end while ($myrow=mysql_fetch_array($result)) if(!empty($event_list)) { $event_list=substr($event_list,0,-1); } else { $event_list='0'; } echo "
    "; // closing the layout table echo "", "", ""; } /** * Displays only 1 agenda item. This is used when an agenda item is added to the learning path. * @author Patrick Cool , Ghent University */ function display_one_agenda_item($agenda_id) { global $TABLEAGENDA; global $TABLE_ITEM_PROPERTY; global $select_month, $select_year; global $DaysShort, $DaysLong, $MonthsLong; global $is_courseAdmin; global $dateFormatLong, $timeNoSecFormat; global $_user; //echo "displaying agenda items"; // getting the name of the groups $group_names=get_course_groups(); /*-------------------------------------------------- CONSTRUCT THE SQL STATEMENT --------------------------------------------------*/ $sql="SELECT agenda.*, toolitemproperties.* FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties WHERE `agenda`.`id` = `toolitemproperties`.`ref` AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' AND `toolitemproperties`.`visibility`='1' AND `agenda`.`id`='$agenda_id'"; $result=api_sql_query($sql,__FILE__,__LINE__) or die(mysql_error()); $number_items=mysql_num_rows($result); $myrow=mysql_fetch_array($result); // there should be only one item so no need for a while loop /*-------------------------------------------------- DISPLAY: NO ITEMS --------------------------------------------------*/ if ($number_items==0) { echo "
    ".get_lang("NoAgendaItems")."
    "; } /*-------------------------------------------------- DISPLAY: THE ITEMS --------------------------------------------------*/ echo "\n"; /*-------------------------------------------------- DISPLAY : the icon, title, destinees of the item --------------------------------------------------*/ echo "\t\n"; // highlight: if a date in the small calendar is clicked we highlight the relevant items $db_date=(int)date("d",strtotime($myrow["start_date"])).date("n",strtotime($myrow["start_date"])).date("Y",strtotime($myrow["start_date"])); if ($_GET["day"].$_GET["month"].$_GET["year"] <>$db_date) { if ($myrow['visibility']=='0') { $style="data_hidden"; $stylenotbold="datanotbold_hidden"; $text_style="text_hidden"; } else { $style="data"; $stylenotbold="datanotbold"; $text_style="text"; } } else { $style="datanow"; $stylenotbold="datanotboldnow"; $text_style="textnow"; } echo "\t\t\n"; // the message has been sent to echo "\t\t\n\t\n"; /*-------------------------------------------------- DISPLAY: the title --------------------------------------------------*/ echo "\t\n"; echo "\t\t\n"; echo "\t\t\n"; echo "\n\t\n"; /*-------------------------------------------------- DISPLAY: the content --------------------------------------------------*/ $content = $myrow['content']; $content = make_clickable($content); $content = text_filter($content); echo "\t\n\t\t"; /*-------------------------------------------------- DISPLAY: the added resources --------------------------------------------------*/ if (check_added_resources("Agenda", $myrow["id"])) { echo ""; } /*-------------------------------------------------- DISPLAY: edit delete button (course admin only) --------------------------------------------------*/ echo ""; echo "
    \n"; // adding an internal anchor echo "\t\t\t"; // the icons. If the message is sent to one or more specific users/groups // we add the groups icon // 2do: if it is sent to groups we display the group icon, if it is sent to a user we show the user icon echo ""; if ($myrow['to_group_id']!=='0') { echo ""; } echo " ".$myrow['title']."\n"; echo "\t\t".get_lang("SentTo").": "; $sent_to=sent_to(TOOL_CALENDAR_EVENT, $myrow["ref"]); $sent_to_form=sent_to_form($sent_to); echo $sent_to_form; echo "
    ".get_lang("StartTime").": "; echo ucfirst(format_locale_date($dateFormatLong,strtotime($myrow["start_date"])))."   "; echo ucfirst(strftime($timeNoSecFormat,strtotime($myrow["start_date"]))).""; echo "".get_lang("EndTime").": "; echo ucfirst(format_locale_date($dateFormatLong,strtotime($myrow["end_date"])))."   "; echo ucfirst(strftime($timeNoSecFormat,strtotime($myrow["end_date"]))).""; echo "
    "; echo $content; echo "
    "; echo "".get_lang("AddedResources")."
    "; if ($myrow['visibility']==0) { $addedresource_style="invisible"; } display_added_resources("Agenda", $myrow["id"], $addedresource_style); echo "
    "; if (is_allowed_to_edit()) { // edit echo "", "\"".get_lang("ModifyCalendarItem")."\"", "", "\"".get_lang("Delete")."\""; if ($myrow['visibility']==1) { $image_visibility="visible"; } else { $image_visibility="invisible"; } echo "", "\"".get_lang("Visible")."\"

    "; } echo "
    "; // closing the layout table echo "", "", ""; } /** * Show the form for adding a new agenda item. This is the same function that is used whenever we are editing an * agenda item. When the id parameter is empty (default behaviour), then we show an empty form, else we are editing and * we have to retrieve the information that is in the database and use this information in the forms. * @author Patrick Cool , Ghent University * @param integer id, the id of the agenda itme we are editing. By default this is empty which means that we are adding an * agenda item. */ function show_add_form($id = '') { global $MonthsLong; // the default values for the forms if ($_GET['originalresource'] !== 'no') { $day = date('d'); $month = date('m'); $year = date('Y'); $hours = date('H'); $minutes= date('i'); $end_day = date('d'); $end_month = date('m'); $end_year = date('Y'); $end_hours = date('H'); $end_minutes= date('i'); } else { // we are coming from the resource linker so there might already have been some information in the form. // When we clicked on the button to add resources we stored every form information into a session and now we // are doing the opposite thing: getting the information out of the session and putting it into variables to // display it in the forms. $form_elements=$_SESSION['formelements']; $day=$form_elements['day']; $month=$form_elements['month']; $year=$form_elements['year']; $hours=$form_elements['hour']; $minutes=$form_elements['minutes']; $end_day=$form_elements['end_day']; $end_month=$form_elements['end_month']; $end_year=$form_elements['end_year']; $end_hours=$form_elements['end_hours']; $end_minutes=$form_elements['end_minutes']; $title=$form_elements['title']; $content=$form_elements['content']; $id=$form_elements['id']; $to=$form_elements['to']; } // switching the send to all/send to groups/send to users if ($_POST['To']) { $day = $_POST['fday']; $month = $_POST['fmonth']; $year = $_POST['fyear']; $hours = $_POST['fhour']; $minutes = $_POST['fminute']; $end_day = $_POST['end_fday']; $end_month = $_POST['end_fmonth']; $end_year = $_POST['end_fyear']; $end_hours = $_POST['end_fhour']; $end_minutes = $_POST['end_fminute']; $title = $_POST['title']; $content = $_POST['content']; // the invisible fields $action = $_POST['action']; $id = $_POST['id']; } // if the id is set then we are editing an agenda item if (is_int($id)) { //echo "before get_agenda_item".$_SESSION['allow_individual_calendar']; $item_2_edit=get_agenda_item($id); $title = $item_2_edit['title']; $content= $item_2_edit['content']; // start date list($datepart, $timepart) = split(" ", $item_2_edit['start_date']); list($year, $month, $day) = explode("-", $datepart); list($hours, $minutes, $seconds) = explode(":", $timepart); // end date list($datepart, $timepart) = split(" ", $item_2_edit['end_date']); list($end_year, $end_month, $end_day) = explode("-", $datepart); list($end_hours, $end_minutes, $end_seconds) = explode(":", $timepart); // attachments edit_added_resources("Agenda", $id); $to=$item_2_edit['to']; //echo "
    after get_agenda_item".$_SESSION['allow_individual_calendar']; } // we start a completely new item, we do not come from the resource linker if ($_GET['originalresource']!=="no" and $_GET['action']=="add") { $_SESSION["formelements"]=null; unset_session_resources(); } ?>
    '; echo ''; echo ''; }else{ ?> \n"; echo "\t\t\n\t\n"; /* END ADDED BY UGENT, Patrick Cool, march 2004 */ ?>

    '')?get_lang('ModifyCalendarItem'):get_lang("AddCalendarItem"); ?>

    '; echo '' ; echo '' ; echo '
    " ; //echo "sessiewaarde: ".$_SESSION['allow_individual_calendar']; if ($_SESSION['allow_individual_calendar']=="hide") { echo ''; } if ($_SESSION['allow_individual_calendar']=="show") { show_to_form($to); } ?>

    :
    BasePath = api_get_path(WEB_PATH) . 'main/inc/lib/fckeditor/' ; $oFCKeditor->Height = '175'; $oFCKeditor->Width = '100%'; $oFCKeditor->Value = $content; $oFCKeditor->Config['CustomConfigurationsPath'] = api_get_path(REL_PATH)."main/inc/lib/fckeditor/myconfig.js"; $oFCKeditor->ToolbarSet = "Middle"; $TBL_LANGUAGES = Database::get_main_table(TABLE_MAIN_LANGUAGE); $sql="SELECT isocode FROM ".$TBL_LANGUAGES." WHERE english_name='".$_SESSION["_course"]["language"]."'"; $result_sql=api_sql_query($sql); $isocode_language=mysql_result($result_sql,0,0); $oFCKeditor->Config['DefaultLanguage'] = $isocode_language; $return = $oFCKeditor->CreateHtml(); echo $return; ?>
    \n"; echo display_resources(0); $test=$_SESSION['addedresource']; echo "\t\t