[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
@ -28,7 +28,7 @@
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.
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
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
* @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 $year: the 4-digit year indication e.g. 2005
* @return array
*/
function get_kalender_items($month, $year)
function get_calendar_items($month, $year)
{
global $_user, $_course;
global $is_allowedToEdit;
global $is_allowed_to_edit;
// database variables
$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'))
{
//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
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;
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
@ -94,24 +97,28 @@ function get_kalender_items($month, $year)
$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;
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;
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__);
@ -216,12 +223,11 @@ function display_minimonthcalendar($agendaitems, $month, $year, $monthName)
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);
// grabbing all the calendar items for this year and storing it in a array
$data=get_calendar_items($month,$year);
//Handle leap year
@ -1223,7 +1229,7 @@ function delete_agenda_item($id)
// 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)
} // if ($is_allowed_to_edit)
}
/**
@ -1251,6 +1257,7 @@ function showhide_agenda_item($id)
/**
* Displays all the agenda items
* @author Patrick Cool <patrick.cool@UGent.be>, Ghent University
* @author Yannick Warnier <yannick.warnier@dokeos.com> - cleanup
*/
function display_agenda_items()
{
@ -1259,8 +1266,7 @@ function display_agenda_items()
global $select_month, $select_year;
global $DaysShort, $DaysLong, $MonthsLong;
global $is_courseAdmin;
global $dateFormatLong, $timeNoSecFormat,$charset;
global $_user;
global $dateFormatLong, $timeNoSecFormat,$charset, $_user, $_course;
// getting the group memberships
$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
// => 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']);
if (is_array($group_memberships))
@ -1312,10 +1318,10 @@ function display_agenda_items()
$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'
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
@ -1323,10 +1329,10 @@ function display_agenda_items()
$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'
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'];
}
}
@ -1337,13 +1343,12 @@ function display_agenda_items()
$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`
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
@ -1355,10 +1360,10 @@ function display_agenda_items()
$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`
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'];
}
@ -1369,10 +1374,10 @@ function display_agenda_items()
$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`
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'];
}
}
@ -1387,10 +1392,10 @@ function display_agenda_items()
$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'
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
@ -1400,10 +1405,10 @@ function display_agenda_items()
$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'
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
@ -1411,10 +1416,10 @@ function display_agenda_items()
$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'
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'];
}
}
@ -1638,10 +1643,10 @@ function display_one_agenda_item($agenda_id)
$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'";
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

@ -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
@ -209,8 +209,7 @@ $tbl_session_course_user= Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USE
/* ==============================================================================
ACCESS RIGHTS
============================================================================== */
// permission stuff
$is_allowedToEdit = is_allowed_to_edit();
// permission stuff - also used by loading from global in agenda.inc.php
$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\">"
. "<tr>";
echo '<table width="100%" border="0" cellspacing="0" cellpadding="0">'
. '<tr>';
// THE LEFT PART
if ($_GET['origin']!='learnpath')
@ -252,18 +251,18 @@ if ($_GET['origin']!='learnpath')
echo '<td width="220" height="19" valign="top">';
// the small calendar
$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);
// the links for adding, filtering, showall, ...
echo "<ul id=\"agenda_select\">";
echo '<ul id="agenda_select">';
if (is_allowed_to_edit())
{
display_courseadmin_links();
}
display_student_links();
echo "</ul>";
echo "</td>";
echo "<td width=\"20\" background=\"../img/verticalruler.gif\">&nbsp;</td>";
echo '</ul>';
echo '</td>';
echo '<td width="20" background="../img/verticalruler.gif">&nbsp;</td>';
}
$fck_attribute['Width'] = '600';

Loading…
Cancel
Save