[svn r13487] Various fixes, including one fix to enable filtering by group (had been lost in previous code updates)

skala
Yannick Warnier 18 years ago
parent d3f8fcccdc
commit 8f45ba47f6
  1. 141
      main/calendar/agenda.inc.php
  2. 19
      main/calendar/agenda.php

@ -1,4 +1,4 @@
<?php //$Id: agenda.inc.php 13322 2007-09-27 12:07:11Z elixir_julian $ <?php //$Id: agenda.inc.php 13487 2007-10-16 18:27:53Z yannoo $
/* /*
============================================================================== ==============================================================================
Dokeos - elearning and course management software Dokeos - elearning and course management software
@ -28,7 +28,7 @@
reworked it and cleaned the code to make it more readable. The code for reworked it and cleaned the code to make it more readable. The code for
the small calender on the left is taken from the My Agenda tool. the small calender on the left is taken from the My Agenda tool.
Reabability is also the reason why I use the if ($is_allowedToEdit) Reabability is also the reason why I use the if ($is_allowed_to_edit)
check for each part of the code. I'm aware that is duplication, but check for each part of the code. I'm aware that is duplication, but
it makes the code much easier to read. it makes the code much easier to read.
============================================================================== ==============================================================================
@ -56,14 +56,15 @@ $MonthsLong = array (get_lang("JanuaryLong"), get_lang("FebruaryLong"), get_lang
/** /**
* Retrieves all the agenda items from the table * Retrieves all the agenda items from the table
* @author: Patrick Cool <patrick.cool@UGent.be>, Ghent University * @author: Patrick Cool <patrick.cool@UGent.be>, Ghent University
* @author Yannick Warnier <yannick.warnier@dokeos.com> - cleanup
* @param integer $month: the integer value of the month we are viewing * @param integer $month: the integer value of the month we are viewing
* @param integer $year: the 4-digit year indication e.g. 2005 * @param integer $year: the 4-digit year indication e.g. 2005
* @return array * @return array
*/ */
function get_kalender_items($month, $year) function get_calendar_items($month, $year)
{ {
global $_user, $_course; global $_user, $_course;
global $is_allowedToEdit; global $is_allowed_to_edit;
// database variables // database variables
$TABLEAGENDA=Database::get_course_table(TABLE_AGENDA); $TABLEAGENDA=Database::get_course_table(TABLE_AGENDA);
@ -74,16 +75,18 @@ function get_kalender_items($month, $year)
if (is_allowed_to_edit() OR api_get_course_setting('allow_user_edit_agenda')) if (is_allowed_to_edit() OR api_get_course_setting('allow_user_edit_agenda'))
{ {
//echo "course admin"; //echo "course admin";
// added GROUP BY `agenda`.`id` to prevent double display of a message that has been sent to two groups // added GROUP BY agenda.id to prevent double display of a message that has been sent to two groups
$sql="SELECT $sql="SELECT
DISTINCT agenda.*, toolitemproperties.* DISTINCT agenda.*, toolitemproperties.*
FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties
WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." WHERE agenda.id = toolitemproperties.ref ".
AND MONTH(`agenda`.`start_date`)='".$month."' AND YEAR(`agenda`.`start_date`)='".$year."' //$show_all_current.
AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' " AND MONTH(agenda.start_date)='".$month."' AND YEAR(agenda.start_date)='".$year."'
AND `toolitemproperties`.`visibility`='1' AND toolitemproperties.tool='".TOOL_CALENDAR_EVENT."'
GROUP BY `agenda`.`id` AND toolitemproperties.visibility='1'
ORDER BY start_date ".$sort; GROUP BY agenda.id ".
"ORDER BY start_date ";
//.$sort;
} }
// if the user is not an administrator of that course // if the user is not an administrator of that course
else else
@ -94,24 +97,28 @@ function get_kalender_items($month, $year)
$sql="SELECT $sql="SELECT
agenda.*, toolitemproperties.* agenda.*, toolitemproperties.*
FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties
WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." WHERE agenda.id = toolitemproperties.ref ".
AND MONTH(`agenda`.`start_date`)='".$month."' //$show_all_current.
AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' " AND MONTH(agenda.start_date)='".$month."'
AND ( `toolitemproperties`.`to_user_id`='".$_user['user_id']."' OR `toolitemproperties`.`to_group_id` IN (0, ".implode(", ", $group_memberships).") ) AND toolitemproperties.tool='".TOOL_CALENDAR_EVENT."'
AND `toolitemproperties`.`visibility`='1' AND ( toolitemproperties.to_user_id='".$_user['user_id']."' OR toolitemproperties.to_group_id IN (0, ".implode(", ", $group_memberships).") )
ORDER BY start_date ".$sort; AND toolitemproperties.visibility='1'"
."ORDER BY start_date ";
//.$sort;
} }
else else
{ {
$sql="SELECT $sql="SELECT
agenda.*, toolitemproperties.* agenda.*, toolitemproperties.*
FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties
WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." WHERE agenda.id = toolitemproperties.ref ".
AND MONTH(`agenda`.`start_date`)='".$month."' //$show_all_current.
AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' " AND MONTH(agenda.start_date)='".$month."'
AND ( `toolitemproperties`.`to_user_id`='".$_user['user_id']."' OR `toolitemproperties`.`to_group_id`='0') AND toolitemproperties.tool='".TOOL_CALENDAR_EVENT."'
AND `toolitemproperties`.`visibility`='1' AND ( toolitemproperties.to_user_id='".$_user['user_id']."' OR toolitemproperties.to_group_id='0')
ORDER BY start_date ".$sort; AND toolitemproperties.visibility='1' ".
"ORDER BY start_date ";
//.$sort;
} }
} }
$result=api_sql_query($sql,__FILE__,__LINE__); $result=api_sql_query($sql,__FILE__,__LINE__);
@ -216,12 +223,11 @@ function display_minimonthcalendar($agendaitems, $month, $year, $monthName)
function display_monthcalendar($month, $year) function display_monthcalendar($month, $year)
{ {
global $MonthsLong; global $MonthsLong;
global $datakalenderitems;
global $DaysShort; global $DaysShort;
global $origin; global $origin;
// grabbing all the kalender items for this year and storing it in a array // grabbing all the calendar items for this year and storing it in a array
$data=get_kalender_items($month,$year); $data=get_calendar_items($month,$year);
//Handle leap year //Handle leap year
@ -1223,7 +1229,7 @@ function delete_agenda_item($id)
// displaying the result message in the yellow box // displaying the result message in the yellow box
Display::display_normal_message(get_lang("AgendaDeleteSuccess")); Display::display_normal_message(get_lang("AgendaDeleteSuccess"));
} // if (isset($id)&&$id&&isset($action)&&$action=="delete") } // if (isset($id)&&$id&&isset($action)&&$action=="delete")
} // if ($is_allowedToEdit) } // if ($is_allowed_to_edit)
} }
/** /**
@ -1251,6 +1257,7 @@ function showhide_agenda_item($id)
/** /**
* Displays all the agenda items * Displays all the agenda items
* @author Patrick Cool <patrick.cool@UGent.be>, Ghent University * @author Patrick Cool <patrick.cool@UGent.be>, Ghent University
* @author Yannick Warnier <yannick.warnier@dokeos.com> - cleanup
*/ */
function display_agenda_items() function display_agenda_items()
{ {
@ -1259,8 +1266,7 @@ function display_agenda_items()
global $select_month, $select_year; global $select_month, $select_year;
global $DaysShort, $DaysLong, $MonthsLong; global $DaysShort, $DaysLong, $MonthsLong;
global $is_courseAdmin; global $is_courseAdmin;
global $dateFormatLong, $timeNoSecFormat,$charset; global $dateFormatLong, $timeNoSecFormat,$charset, $_user, $_course;
global $_user;
// getting the group memberships // getting the group memberships
$group_memberships=GroupManager::get_group_ids($_course['dbName'],$_user['user_id']); $group_memberships=GroupManager::get_group_ids($_course['dbName'],$_user['user_id']);
@ -1304,7 +1310,7 @@ function display_agenda_items()
{ {
// A.1. you are a course admin with a USER filter // 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. // => see only the messages of this specific user + the messages of the group (s)he is member of.
if ($_SESSION['user']!==null) if (!empty($_SESSION['user']))
{ {
$group_memberships=GroupManager::get_group_ids($_course['dbName'],$_SESSION['user']); $group_memberships=GroupManager::get_group_ids($_course['dbName'],$_SESSION['user']);
if (is_array($group_memberships)) if (is_array($group_memberships))
@ -1312,10 +1318,10 @@ function display_agenda_items()
$sql="SELECT $sql="SELECT
agenda.*, toolitemproperties.* agenda.*, toolitemproperties.*
FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties
WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." WHERE agenda.id = toolitemproperties.ref ".$show_all_current."
AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' 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.to_user_id=$user_id OR toolitemproperties.to_group_id IN (0, ".implode(", ", $group_memberships).") )
AND `toolitemproperties`.`visibility`='1' AND toolitemproperties.visibility='1'
ORDER BY start_date ".$_SESSION['sort']; ORDER BY start_date ".$_SESSION['sort'];
} }
else else
@ -1323,10 +1329,10 @@ function display_agenda_items()
$sql="SELECT $sql="SELECT
agenda.*, toolitemproperties.* agenda.*, toolitemproperties.*
FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties
WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." WHERE agenda.id = toolitemproperties.ref ".$show_all_current."
AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' AND toolitemproperties.tool='".TOOL_CALENDAR_EVENT."'
AND ( `toolitemproperties`.`to_user_id`=$user_id OR `toolitemproperties`.`to_group_id`='0') AND ( toolitemproperties.to_user_id=$user_id OR toolitemproperties.to_group_id='0')
AND `toolitemproperties`.`visibility`='1' AND toolitemproperties.visibility='1'
ORDER BY start_date ".$_SESSION['sort']; ORDER BY start_date ".$_SESSION['sort'];
} }
} }
@ -1337,13 +1343,12 @@ function display_agenda_items()
$sql="SELECT $sql="SELECT
agenda.*, toolitemproperties.* agenda.*, toolitemproperties.*
FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties
WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." WHERE agenda.id = toolitemproperties.ref ".$show_all_current."
AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' AND toolitemproperties.tool='".TOOL_CALENDAR_EVENT."'
AND ( `toolitemproperties`.`to_group_id`=$group_id OR `toolitemproperties`.`to_group_id`='0') AND ( toolitemproperties.to_group_id=$group_id OR toolitemproperties.to_group_id='0')
AND `toolitemproperties`.`visibility`='1' AND toolitemproperties.visibility='1'
GROUP BY `toolitemproperties`.`ref` GROUP BY toolitemproperties.ref
ORDER BY start_date ".$_SESSION['sort']; ORDER BY start_date ".$_SESSION['sort'];
} }
// A.3 you are a course admin without any group or user filter // A.3 you are a course admin without any group or user filter
else else
@ -1355,10 +1360,10 @@ function display_agenda_items()
$sql="SELECT $sql="SELECT
agenda.*, toolitemproperties.* agenda.*, toolitemproperties.*
FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties
WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." WHERE agenda.id = toolitemproperties.ref ".$show_all_current."
AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' AND toolitemproperties.tool='".TOOL_CALENDAR_EVENT."'
AND `toolitemproperties`.`visibility`='1' AND toolitemproperties.visibility='1'
GROUP BY `toolitemproperties`.`ref` GROUP BY toolitemproperties.ref
ORDER BY start_date ".$_SESSION['sort']; ORDER BY start_date ".$_SESSION['sort'];
} }
@ -1369,10 +1374,10 @@ function display_agenda_items()
$sql="SELECT $sql="SELECT
agenda.*, toolitemproperties.* agenda.*, toolitemproperties.*
FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties
WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." WHERE agenda.id = toolitemproperties.ref ".$show_all_current."
AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' AND toolitemproperties.tool='".TOOL_CALENDAR_EVENT."'
AND ( `toolitemproperties`.`visibility`='0' or `toolitemproperties`.`visibility`='1') AND ( toolitemproperties.visibility='0' or toolitemproperties.visibility='1')
GROUP BY `toolitemproperties`.`ref` GROUP BY toolitemproperties.ref
ORDER BY start_date ".$_SESSION['sort']; ORDER BY start_date ".$_SESSION['sort'];
} }
} }
@ -1387,10 +1392,10 @@ function display_agenda_items()
$sql="SELECT $sql="SELECT
agenda.*, toolitemproperties.* agenda.*, toolitemproperties.*
FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties
WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." WHERE agenda.id = toolitemproperties.ref ".$show_all_current."
AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' 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.to_user_id=$user_id OR toolitemproperties.to_group_id IN (0, ".implode(", ", $group_memberships).") )
AND `toolitemproperties`.`visibility`='1' AND toolitemproperties.visibility='1'
ORDER BY start_date ".$_SESSION['sort']; ORDER BY start_date ".$_SESSION['sort'];
} }
else else
@ -1400,10 +1405,10 @@ function display_agenda_items()
$sql="SELECT $sql="SELECT
agenda.*, toolitemproperties.* agenda.*, toolitemproperties.*
FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties
WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." WHERE agenda.id = toolitemproperties.ref ".$show_all_current."
AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' AND toolitemproperties.tool='".TOOL_CALENDAR_EVENT."'
AND ( `toolitemproperties`.`to_user_id`=$user_id OR `toolitemproperties`.`to_group_id`='0') AND ( toolitemproperties.to_user_id=$user_id OR toolitemproperties.to_group_id='0')
AND `toolitemproperties`.`visibility`='1' AND toolitemproperties.visibility='1'
ORDER BY start_date ".$_SESSION['sort']; ORDER BY start_date ".$_SESSION['sort'];
} }
else else
@ -1411,10 +1416,10 @@ function display_agenda_items()
$sql="SELECT $sql="SELECT
agenda.*, toolitemproperties.* agenda.*, toolitemproperties.*
FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties
WHERE `agenda`.`id` = `toolitemproperties`.`ref` ".$show_all_current." WHERE agenda.id = toolitemproperties.ref ".$show_all_current."
AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' AND toolitemproperties.tool='".TOOL_CALENDAR_EVENT."'
AND `toolitemproperties`.`to_group_id`='0' AND toolitemproperties.to_group_id='0'
AND `toolitemproperties`.`visibility`='1' AND toolitemproperties.visibility='1'
ORDER BY start_date ".$_SESSION['sort']; ORDER BY start_date ".$_SESSION['sort'];
} }
} }
@ -1638,10 +1643,10 @@ function display_one_agenda_item($agenda_id)
$sql="SELECT agenda.*, toolitemproperties.* $sql="SELECT agenda.*, toolitemproperties.*
FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties FROM ".$TABLEAGENDA." agenda, ".$TABLE_ITEM_PROPERTY." toolitemproperties
WHERE `agenda`.`id` = `toolitemproperties`.`ref` WHERE agenda.id = toolitemproperties.ref
AND `toolitemproperties`.`tool`='".TOOL_CALENDAR_EVENT."' AND toolitemproperties.tool='".TOOL_CALENDAR_EVENT."'
AND `toolitemproperties`.`visibility`='1' AND toolitemproperties.visibility='1'
AND `agenda`.`id`='$agenda_id'"; AND agenda.id='$agenda_id'";
$result=api_sql_query($sql,__FILE__,__LINE__) or die(mysql_error()); $result=api_sql_query($sql,__FILE__,__LINE__) or die(mysql_error());
$number_items=mysql_num_rows($result); $number_items=mysql_num_rows($result);
$myrow=mysql_fetch_array($result); // there should be only one item so no need for a while loop $myrow=mysql_fetch_array($result); // there should be only one item so no need for a while loop

@ -1,4 +1,4 @@
<?php //$Id: agenda.php 12663 2007-06-25 12:25:05Z pcool $ <?php //$Id: agenda.php 13487 2007-10-16 18:27:53Z yannoo $
/* /*
============================================================================== ==============================================================================
Dokeos - elearning and course management software Dokeos - elearning and course management software
@ -209,8 +209,7 @@ $tbl_session_course_user= Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USE
/* ============================================================================== /* ==============================================================================
ACCESS RIGHTS ACCESS RIGHTS
============================================================================== */ ============================================================================== */
// permission stuff // permission stuff - also used by loading from global in agenda.inc.php
$is_allowedToEdit = is_allowed_to_edit();
$is_allowed_to_edit = is_allowed_to_edit(); $is_allowed_to_edit = is_allowed_to_edit();
/* ============================================================================== /* ==============================================================================
@ -243,8 +242,8 @@ if (($select_year==NULL) && ($select_month==NULL))
echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">" echo '<table width="100%" border="0" cellspacing="0" cellpadding="0">'
. "<tr>"; . '<tr>';
// THE LEFT PART // THE LEFT PART
if ($_GET['origin']!='learnpath') if ($_GET['origin']!='learnpath')
@ -252,18 +251,18 @@ if ($_GET['origin']!='learnpath')
echo '<td width="220" height="19" valign="top">'; echo '<td width="220" height="19" valign="top">';
// the small calendar // the small calendar
$MonthName = $MonthsLong[$select_month -1]; $MonthName = $MonthsLong[$select_month -1];
$agenda_items=get_kalender_items($select_month,$select_year); $agenda_items=get_calendar_items($select_month,$select_year);
display_minimonthcalendar($agenda_items, $select_month,$select_year, $MonthName); display_minimonthcalendar($agenda_items, $select_month,$select_year, $MonthName);
// the links for adding, filtering, showall, ... // the links for adding, filtering, showall, ...
echo "<ul id=\"agenda_select\">"; echo '<ul id="agenda_select">';
if (is_allowed_to_edit()) if (is_allowed_to_edit())
{ {
display_courseadmin_links(); display_courseadmin_links();
} }
display_student_links(); display_student_links();
echo "</ul>"; echo '</ul>';
echo "</td>"; echo '</td>';
echo "<td width=\"20\" background=\"../img/verticalruler.gif\">&nbsp;</td>"; echo '<td width="20" background="../img/verticalruler.gif">&nbsp;</td>';
} }
$fck_attribute['Width'] = '600'; $fck_attribute['Width'] = '600';

Loading…
Cancel
Save