diff --git a/admin/addshift.php b/admin/addshift.php index 6b1d3060..ab838dd8 100644 --- a/admin/addshift.php +++ b/admin/addshift.php @@ -1,273 +1,278 @@ - - * @copyright Deakin University 2007,2008 - * @package queXS - * @subpackage admin - * @link http://www.deakin.edu.au/dcarf/ queXS was writen for DCARF - Deakin Computer Assisted Research Facility - * @license http://opensource.org/licenses/gpl-2.0.php The GNU General Public License (GPL) Version 2 - * - */ - -/** - * Configuration file - */ -include ("../config.inc.php"); - -/** - * Database file - */ -include ("../db.inc.php"); - -/** - * XHTML functions - */ -include ("../functions/functions.xhtml.php"); - -/** - * Operator functions - */ -include ("../functions/functions.operator.php"); - -/** - * Display functions - */ -include ("../functions/functions.display.php"); - -/** - * Input functions - */ -include("../functions/functions.input.php"); - -global $db; - - -/** - * Add shifts to the DB based on the shift_template table - */ - - -if (isset($_POST['year'])) $year = bigintval($_POST['year']); else $year = "YEAR(NOW())"; -if (isset($_POST['woy'])) $woy = bigintval($_POST['woy']); else $woy = "WEEK(NOW(), 3)"; -if (isset($_POST['qid'])) $questionnaire_id = bigintval($_POST['qid']); else $questionnaire_id = false; -if (isset($_GET['year'])) $year = bigintval($_GET['year']); -if (isset($_GET['woy'])) $woy = bigintval($_GET['woy']); -if (isset($_GET['questionnaire_id'])) $questionnaire_id = bigintval($_GET['questionnaire_id']); - -$y = $db->GetRow("SELECT $year as y"); -$year = $y['y']; -$y = $db->GetRow("SELECT $woy as y"); -$woy = $y['y']; - - -$operator_id = get_operator_id(); - -if (!$operator_id) -{ - xhtml_head(T_("Add shifts")); - print "
" . T_("You must be an operator (as well as have administrator access) to add/edit shifts") . "
"; - xhtml_foot(); - exit(); -} - - -if (isset($_POST['submit'])) -{ - //process - //update or delete existing shifts - foreach($_POST as $key => $val) - { - if (substr($key,0,5) == "start") - { - $num = bigintval(substr($key,6)); - if (isset($_POST["use_$num"])) - { - $sql = "UPDATE shift as s, operator as o - SET s.start = CONVERT_TZ(CONCAT(STR_TO_DATE(CONCAT($year, ' ',$woy,' ', {$_POST["dow_$num"]}),'%x %v %w'),' ','" . $_POST["start_$num"] . "'), o.Time_zone_name, 'UTC'), - s.end = CONVERT_TZ(CONCAT(STR_TO_DATE(CONCAT($year, ' ',$woy,' ', {$_POST["dow_$num"]}),'%x %v %w'),' ','" . $_POST["end_$num"] . "'), o.Time_zone_name, 'UTC') - WHERE o.operator_id = '$operator_id' - AND shift_id = '$num'"; - - $db->Execute($sql); - } - else - { - $sql = "DELETE FROM shift - WHERE shift_id = '$num'"; - $db->Execute($sql); - } - } - } - //insert new shifts - foreach($_POST as $key => $val) - { - if (substr($key,0,7) == "NEW_use") - { - if ($val == "on") - { - $num = bigintval(substr($key,8)); - $sql = "INSERT INTO shift (shift_id,questionnaire_id,start,end) - SELECT NULL,'$questionnaire_id', CONVERT_TZ(CONCAT(STR_TO_DATE(CONCAT($year, ' ',$woy,' ', {$_POST["NEW_dow_$num"]}),'%x %v %w'),' ','" . $_POST["NEW_start_$num"] . "'), Time_zone_name, 'UTC') , CONVERT_TZ(CONCAT(STR_TO_DATE(CONCAT($year, ' ',$woy,' ', {$_POST["NEW_dow_$num"]}),'%x %v %w'),' ','" . $_POST["NEW_end_$num"] . "'), Time_zone_name, 'UTC') - FROM operator - WHERE operator_id = '$operator_id'"; - $db->Execute($sql); - } - } - } -} - - -xhtml_head(T_("Add shifts"),true,array("../css/shifts.css"),array("../js/window.js")); - -/** - * Display warning if timezone data not installed - * - */ - -$sql = "SELECT CONVERT_TZ(NOW(),'Australia/Victoria','UTC') as t"; -$rs = $db->GetRow($sql); - -if (empty($rs) || !$rs || empty($rs['t'])) - print ""; - - -/** - * display years including current selected year - * display weeks of year including current selected week of year - * find if there are already shifts defined for this week of year / year and display them as selected, else show from template - * when submitted, add checked shifts, and delete unchecked shifts if they exist - * - * @todo Use javascript to add shifts if necessarry outside the template - */ - -print "" . T_("Shifts allow you to restrict appointments being made, and interviewers to working on a particlar project at defined times.") . "
"; - -print "" . T_("Select year") . ": "; - for ($i = $year - 1; $i < $year + 4; $i++) - { - if ($i == $year) - print "$i "; - else - print "$i "; - } - print "
"; - - - print "" . T_("Select week of year") . ": "; - for ($i = 1; $i <= 53; $i++) - { - if ($i == $woy) - print "$i "; - else - print "$i "; - } - print "
"; - - - $sql = "SELECT shift_id, dt, dta,start,end - FROM ( - ( - SELECT shift_id, DATE_FORMAT( CONVERT_TZ( s.start, 'UTC', o.Time_zone_name ) , '%W %d %m %Y' ) AS dt, - DATE( CONVERT_TZ( s.start, 'UTC', o.Time_zone_name ) ) AS dta, - TIME( CONVERT_TZ( s.start, 'UTC', o.Time_zone_name ) ) AS start, - TIME( CONVERT_TZ( s.end, 'UTC', o.Time_zone_name ) ) AS end - FROM shift AS s, operator AS o - WHERE WEEK( CONVERT_TZ( s.start, 'UTC', o.Time_zone_name ) , 3 ) = '$woy' - AND YEAR( CONVERT_TZ( s.start, 'UTC', o.Time_zone_name ) ) = '$year' - AND o.operator_id = '$operator_id' - AND s.questionnaire_id = '$questionnaire_id' - ) - UNION ( - SELECT NULL AS shift_id, - DATE_FORMAT( STR_TO_DATE( CONCAT( '$year', ' ', '$woy', ' ', day_of_week -1 ) , '%x %v %w' ) , '%W %d %m %Y' ) AS dt, - STR_TO_DATE( CONCAT( '$year', ' ', '$woy', ' ', day_of_week -1 ) , '%x %v %w' ) AS dta, - start,end - FROM shift_template - ) - ) AS sb - GROUP BY dta,start,end"; - - - $shifts = $db->GetAll($sql); - - - $sql = "SELECT DATE_FORMAT(STR_TO_DATE(CONCAT($year, ' ',$woy,' ',day_of_week - 1),'%x %v %w'), '%W %d %m %Y') as dt, - DATE_FORMAT(STR_TO_DATE(CONCAT($year, ' ',$woy,' ',day_of_week - 1),'%x %v %w'), '%W') as dtd, - DATE_FORMAT(STR_TO_DATE(CONCAT($year, ' ',$woy,' ',day_of_week - 1),'%x %v %w'), '%d %m %Y') as dto, - day_of_week - 1 as value - FROM day_of_week - GROUP BY value"; - - $daysofweek = $db->GetAll($sql); - translate_array($daysofweek,array("dtd")); - foreach($daysofweek as $key => $val) - $daysofweek[$key]['description'] = $val['dtd'] . " " . $val['dto']; - - ?> - - + + * @copyright Deakin University 2007,2008 + * @package queXS + * @subpackage admin + * @link http://www.deakin.edu.au/dcarf/ queXS was writen for DCARF - Deakin Computer Assisted Research Facility + * @license http://opensource.org/licenses/gpl-2.0.php The GNU General Public License (GPL) Version 2 + * + */ + +/** + * Configuration file + */ +include ("../config.inc.php"); + +/** + * Database file + */ +include ("../db.inc.php"); + +/** + * XHTML functions + */ +include ("../functions/functions.xhtml.php"); + +/** + * Operator functions + */ +include ("../functions/functions.operator.php"); + +/** + * Display functions + */ +include ("../functions/functions.display.php"); + +/** + * Input functions + */ +include("../functions/functions.input.php"); + +global $db; + + +/** + * Add shifts to the DB based on the shift_template table + */ + + +if (isset($_POST['year'])) $year = bigintval($_POST['year']); else $year = "YEAR(NOW())"; +if (isset($_POST['woy'])) $woy = bigintval($_POST['woy']); else $woy = "WEEK(NOW(), 3)"; +if (isset($_POST['qid'])) $questionnaire_id = bigintval($_POST['qid']); else $questionnaire_id = false; +if (isset($_GET['year'])) $year = bigintval($_GET['year']); +if (isset($_GET['woy'])) $woy = bigintval($_GET['woy']); +if (isset($_GET['questionnaire_id'])) $questionnaire_id = bigintval($_GET['questionnaire_id']); + +$y = $db->GetRow("SELECT $year as y"); +$year = $y['y']; +$y = $db->GetRow("SELECT $woy as y"); +$woy = $y['y']; + + +$operator_id = get_operator_id(); + +if (!$operator_id) +{ + xhtml_head(T_("Add shifts")); + print "" . T_("You must be an operator (as well as have administrator access) to add/edit shifts") . "
"; + xhtml_foot(); + exit(); +} + + +if (isset($_POST['submit'])) +{ + //process + //update or delete existing shifts + foreach($_POST as $key => $val) + { + if (substr($key,0,5) == "start") + { + $num = bigintval(substr($key,6)); + if (isset($_POST["use_$num"])) + { + $sql = "UPDATE shift as s, operator as o + SET s.start = CONVERT_TZ(CONCAT(STR_TO_DATE(CONCAT($year, ' ',$woy,' ', {$_POST["dow_$num"]}),'%x %v %w'),' ','" . $_POST["start_$num"] . "'), o.Time_zone_name, 'UTC'), + s.end = CONVERT_TZ(CONCAT(STR_TO_DATE(CONCAT($year, ' ',$woy,' ', {$_POST["dow_$num"]}),'%x %v %w'),' ','" . $_POST["end_$num"] . "'), o.Time_zone_name, 'UTC') + WHERE o.operator_id = '$operator_id' + AND shift_id = '$num'"; + + $db->Execute($sql); + } + else + { + $sql = "DELETE FROM shift + WHERE shift_id = '$num'"; + $db->Execute($sql); + } + } + } + //insert new shifts + foreach($_POST as $key => $val) + { + if (substr($key,0,7) == "NEW_use") + { + if ($val == "on") + { + $num = bigintval(substr($key,8)); + $sql = "INSERT INTO shift (shift_id,questionnaire_id,start,end) + SELECT NULL,'$questionnaire_id', CONVERT_TZ(CONCAT(STR_TO_DATE(CONCAT($year, ' ',$woy,' ', {$_POST["NEW_dow_$num"]}),'%x %v %w'),' ','" . $_POST["NEW_start_$num"] . "'), Time_zone_name, 'UTC') , CONVERT_TZ(CONCAT(STR_TO_DATE(CONCAT($year, ' ',$woy,' ', {$_POST["NEW_dow_$num"]}),'%x %v %w'),' ','" . $_POST["NEW_end_$num"] . "'), Time_zone_name, 'UTC') + FROM operator + WHERE operator_id = '$operator_id'"; + $db->Execute($sql); + } + } + } +} + + +xhtml_head(T_("Shift management"),true,array("../include/bootstrap-3.3.2/css/bootstrap.min.css","../include/clockpicker/dist/bootstrap-clockpicker.min.css","../include/bootstrap-toggle/css/bootstrap-toggle.min.css","../css/custom.css"),array("../js/jquery-2.1.3.min.js","../include/bootstrap-3.3.2/js/bootstrap.min.js","../include/clockpicker/dist/bootstrap-clockpicker.js","../include/bootstrap-toggle/js/bootstrap-toggle.min.js","../js/window.js")); +//"../css/shifts.css", +/** + * Display warning if timezone data not installed + * + */ + +$sql = "SELECT CONVERT_TZ(NOW(),'SYSTEM','UTC') as t"; +$rs = $db->GetRow($sql); + +if (empty($rs) || !$rs || empty($rs['t'])) + print ""; + + +/** + * display years including current selected year + * display weeks of year including current selected week of year + * find if there are already shifts defined for this week of year / year and display them as selected, else show from template + * when submitted, add checked shifts, and delete unchecked shifts if they exist + * + * @todo Use javascript to add shifts if necessarry outside the template + */ + +print "" . T_("Shifts allow you to restrict appointments being made, and interviewers to working on a particlar project at defined times.") . "
"; + +print "