Author: jfthomps
Date: Wed Jun 20 14:43:29 2012
New Revision: 1352132

URL: http://svn.apache.org/viewvc?rev=1352132&view=rev
Log:
VCL-576
Finalizing for 2.3 release

blockallocations.php:
-modified createMonthlyBlockTimes - separated out the code that generates the 
values for the insert so that it can be called when validating the input to 
determine if any values would be generated
-added getMonthlyBlockTimes
-modified processBlockAllocationInput - added checks to ensure time slots would 
be generated for weekly and monthly repeating allocations; fixed but where 
Sunday only repeating weekly allocations would not be processed properly 
because $days was getting set to '' since the input was 0 and being treated as 
a string instead of a number

Modified:
    incubator/vcl/trunk/web/.ht-inc/blockallocations.php

Modified: incubator/vcl/trunk/web/.ht-inc/blockallocations.php
URL: 
http://svn.apache.org/viewvc/incubator/vcl/trunk/web/.ht-inc/blockallocations.php?rev=1352132&r1=1352131&r2=1352132&view=diff
==============================================================================
--- incubator/vcl/trunk/web/.ht-inc/blockallocations.php (original)
+++ incubator/vcl/trunk/web/.ht-inc/blockallocations.php Wed Jun 20 14:43:29 
2012
@@ -882,7 +882,7 @@ function createWeeklyBlockTimes($blockid
 
 
////////////////////////////////////////////////////////////////////////////////
 ///
-/// \fn createMonthlyBlockTimes($blockid, $startts, $endts, $day, $weeknum,
+/// \fn createMonthlyBlockTimes($blockid, $startts, $endts, $dayweek, $weeknum,
 ///                             $times)
 ///
 /// \param $blockid - id of block allocation
@@ -898,6 +898,36 @@ function createWeeklyBlockTimes($blockid
 
////////////////////////////////////////////////////////////////////////////////
 function createMonthlyBlockTimes($blockid, $startts, $endts, $dayweek, 
$weeknum,
                                  $times) {
+       $vals = getMonthlyBlockTimes($blockid, $startts, $endts, $dayweek, 
$weeknum,
+                                    $times);
+       $allvals = implode(',', $vals);
+       $query = "INSERT INTO blockTimes "
+                        .        "(blockRequestid, "
+                        .        "start, "
+                        .        "end) "
+                        . "VALUES $allvals";
+       doQuery($query, 101);
+       deleteBlockSkipDuplicates($blockid);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+///
+/// \fn getMonthlyBlockTimes($blockid, $startts, $endts, $dayweek, $weeknum,
+///                          $times)
+///
+/// \param $blockid - id of block allocation
+/// \param $startts - unix timestamp for starting time
+/// \param $endts - unix timestamp for ending time
+/// \param $dayweek - day of the week (1 to 7)
+/// \param $weeknum - week of the month (1 to 5)
+/// \param $times - array of times in HH:MM|HH:MM (start|end) format
+///
+/// \brief generates query values for creating entries in the blockTimes table
+/// for a monthly repeating block allocation
+///
+////////////////////////////////////////////////////////////////////////////////
+function getMonthlyBlockTimes($blockid, $startts, $endts, $dayweek, $weeknum,
+                              $times) {
        $vals = array();
        $startts += 3600; # This is a simple way to deal with DST; without it. 
We end
                          # up starting at midnight.  When we go through the 
day DST
@@ -926,14 +956,7 @@ function createMonthlyBlockTimes($blocki
                        }
                }
        }
-       $allvals = implode(',', $vals);
-       $query = "INSERT INTO blockTimes "
-                        .        "(blockRequestid, "
-                        .        "start, "
-                        .        "end) "
-                        . "VALUES $allvals";
-       doQuery($query, 101);
-       deleteBlockSkipDuplicates($blockid);
+       return $vals;
 }
 
 
////////////////////////////////////////////////////////////////////////////////
@@ -3085,7 +3108,18 @@ function processBlockAllocationInput() {
                        }
                }
                if($type == 'weekly') {
+                       $validdays = 0;
+                       $errmsg = '';
+                       for($day = $return['startts'], $i = 0;
+                          $i < 7, $day < ($return['endts'] + SECINDAY); 
+                          $i++, $day += SECINDAY) {
+                               $daynum = date('w', $day);
+                               $validdays |= (1 << $daynum);
+                       }
                        $days = processInputVar('days', ARG_STRING);
+                       $dayscheck = processInputVar('days', ARG_NUMERIC);
+                       if($days == '' && $dayscheck == '0')
+                               $days = 0;
                        $return['daymask'] = 0;
                        if(! $err) {
                                foreach(explode(',', $days) as $day) {
@@ -3097,8 +3131,8 @@ function processBlockAllocationInput() {
                                        $return['daymask'] |= (1 << $day);
                                }
                        }
-                       if(! $err && $return['daymask'] == 0) {
-                               $errmsg = "No valid days submitted.";
+                       if(! $err && ($return['daymask'] & $validdays) == 0) {
+                               $errmsg = "No valid days submitted for the 
specified date range.";
                                $err = 1;
                        }
                }
@@ -3113,6 +3147,12 @@ function processBlockAllocationInput() {
                                $errmsg = "Invalid day of week submitted.";
                                $err = 1;
                        }
+                       $times = getMonthlyBlockTimes('', $return['startts'], 
$return['endts'],
+                                        $return['day'], $return['weeknum'], 
$return['times']);
+                       if(! $err && empty($times)) {
+                               $errmsg = "Specified day of month not found in 
date range.";
+                               $err = 1;
+                       }
                }
        }
        if($method == 'request') {


Reply via email to