fmsystem-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Fmsystem-commits] [8300]


From: Torstein
Subject: [Fmsystem-commits] [8300]
Date: Thu, 15 Dec 2011 08:38:05 +0000

Revision: 8300
          http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=8300
Author:   vator
Date:     2011-12-15 08:38:04 +0000 (Thu, 15 Dec 2011)
Log Message:
-----------


Added Paths:
-----------
    trunk/controller/inc/components/
    trunk/controller/inc/components/class.calendar_builder.inc.php
    trunk/controller/inc/components/class.date_generator.inc.php

Added: trunk/controller/inc/components/class.calendar_builder.inc.php
===================================================================
--- trunk/controller/inc/components/class.calendar_builder.inc.php              
                (rev 0)
+++ trunk/controller/inc/components/class.calendar_builder.inc.php      
2011-12-15 08:38:04 UTC (rev 8300)
@@ -0,0 +1,110 @@
+<?php
+
+include_class('controller', 'date_generator', 'inc/components/');
+
+class calendar_builder {
+       
+       private $period_start_date;
+       private $period_end_date;
+
+       public function __construct($period_start_date, $period_end_date){
+        $this->period_start_date = $period_start_date;
+        $this->period_end_date = $period_end_date;
+       }
+       
+       public function build_calendar_array( $control_array, 
$controls_calendar_array, $num, $period_type ){
+               
+               foreach($control_array as $control){
+                                               
+                       // Initialises twelve_months_array
+                       for($i=1;$i<=$num;$i++){
+                               $calendar_array[$i] = null;
+                       }
+                                               
+                       $date_generator = new 
date_generator($control->get_start_date(), $control->get_end_date(), 
$this->period_start_date, $this->period_end_date, $control->get_repeat_type(), 
$control->get_repeat_interval());
+                       $dates_array = $date_generator->get_dates();
+                       
+                       // Inserts dates on behalf of repeat type and repeat 
interval
+                       foreach($dates_array as $date){
+                               
+                               if( $period_type == "view_months" )
+                               {
+                                       $calendar_array[ date("n", $date) ]     
= "";
+                               }
+                               else if( $period_type == "view_days" ){
+                                       $calendar_array[ date("j", $date) ]  = 
array( "date" => $date );        
+                               }
+                       }
+                       
+                       // Inserts check_list object on deadline month in 
twelve_months_array
+                       foreach($control->get_check_lists_array() as 
$check_list){
+                               
+                               $check_list_status_info = new 
check_list_status_info();
+                               $check_list_status_info->set_id( 
$check_list->get_id() );
+                               $check_list_status_info->set_status_text( 
$check_list->get_status() );
+
+                               if( $check_list->get_status() == 0 ){
+                                       $check_list_status_info->set_status(0);
+                               }
+                               else if( $check_list->get_status() == 1 & 
$check_list->get_planned_date() == '' )
+                               {
+                                       $check_list_status_info->set_status(1);
+                               }
+                               else if( $check_list->get_status() == 2 & 
$check_list->get_completed_date() < $check_list->get_deadline() )
+                               {
+                                       $check_list_status_info->set_status(2);
+                               }
+                               else if( $check_list->get_status() == 3 & 
$check_list->get_completed_date() > $check_list->get_deadline() )
+                               {
+                                       $check_list_status_info->set_status(3);
+                               }
+                               else if( $check_list->get_status() == 4 )
+                               {
+                                       $check_list_status_info->set_status(4);
+                               }
+                               
+                               $check_list_status_info->set_deadline( 
date("d/m-Y", $check_list->get_deadline()) );
+                               
+                               if($period_type == "view_months")
+                               {
+                                       $calendar_array[ date("n", 
$check_list->get_deadline()) ] = $check_list_status_info->serialize();       
+                               }
+                               else{
+                                       $calendar_array[ date("j", 
$check_list->get_deadline()) ] = $check_list_status_info->serialize();       
+                               }
+                       }
+                       
+                       $controls_calendar_array[] = array("control" => 
$control->toArray(), "calendar_array" => $calendar_array);
+               }
+               
+               return $controls_calendar_array;
+       }
+       
+       // Function receives array with control objects that each contain 
check_lists for a certain period
+       public function build_agg_calendar_array( $controls_array ){
+                                       
+               $calendar_array = array();
+               
+               foreach($controls_array as $control_array){
+                       
+                       $control_info = $control_array['control'];
+                       $check_list_array = $control_array['check_list'];
+                       
+                       $control_id = $control_info['id'];
+                        
+                       // Initialises twelve_months_array
+                       for($i=0;$i<12;$i++){
+                               $calendar_array[$i] = null;
+                       }
+                       
+                       // Inserts check_list object on deadline month in 
twelve_months_array
+                       foreach($check_list_array as $check_list){
+                               $calendar_array[ date("m", 
$check_list['deadline']) - 1 ] += $check_list['count'];
+                       }
+                       
+                       $control_calendar_array[] = array("control" => 
$control_info, "calendar_array" => $calendar_array);
+               }
+
+               return $control_calendar_array;
+       }
+}
\ No newline at end of file

Added: trunk/controller/inc/components/class.date_generator.inc.php
===================================================================
--- trunk/controller/inc/components/class.date_generator.inc.php                
                (rev 0)
+++ trunk/controller/inc/components/class.date_generator.inc.php        
2011-12-15 08:38:04 UTC (rev 8300)
@@ -0,0 +1,111 @@
+<?php
+       
+class date_generator 
+{              
+       private $start_date;
+       private $end_date;
+       private $period_start_date;
+       private $period_end_date;
+       private $repeat_type;
+       private $repeat_interval;
+       
+       private $calendar_array = array();
+
+       public function __construct($start_date, $end_date, $period_start_date, 
$period_end_date, $repeat_type, $repeat_interval){
+               $this->start_date = $start_date;
+        $this->end_date = $end_date;
+        $this->period_start_date = $period_start_date;
+        $this->period_end_date = $period_end_date;
+        $this->repeat_type = $repeat_type;
+        $this->repeat_interval = $repeat_interval;
+               
+        $this->generate_calendar();
+       }
+               
+       function generate_calendar(){
+       
+               $trail_date = $this->find_start_date_by_repeat_type();
+               
+               while( $trail_date < $this->period_start_date ){
+                       
+                       if($this->repeat_type == 1 || $this->repeat_type == 0)
+                       {
+                               $trail_date = mktime(0,0,0, date("m", 
$trail_date), date("d", $trail_date)+$this->repeat_interval, date("Y", 
$trail_date));
+                       }
+                       else if($this->repeat_type == 2)
+                       {
+                               $month = date("m", $trail_date) + 
$this->repeat_interval;
+                               $year = date("Y", $trail_date);
+                               
+                               if($month > 12){
+                                       $month = $month % 12;
+                                       $year += 1;
+                               }
+
+                               $num_days_in_month = 
cal_days_in_month(CAL_GREGORIAN, $month, $year);
+                               $trail_date = mktime(0,0,0, $month, 
$num_days_in_month, $year);
+                       }
+                       else if($this->repeat_type == 3)
+                       {
+                               $trail_date = mktime(0,0,0, date("m", 
$trail_date), date("d", $trail_date), date("Y", 
$trail_date)+$this->repeat_interval);     
+                       }
+               } 
+               
+               while($trail_date <= $this->period_end_date){
+                       
+                       $this->calendar_array[] = $trail_date; 
+                                               
+                       if($this->repeat_type == 1 || $this->repeat_type == 0)
+                       {
+                               $trail_date = mktime(0,0,0, date("m", 
$trail_date), date("d", $trail_date)+$this->repeat_interval, date("Y", 
$trail_date));
+                       }
+                       else if($this->repeat_type == 2)
+                       {
+                               $month = date("m", 
$trail_date)+$this->repeat_interval;
+                               if($month > 12){
+                                       $month = $month % 12;
+                                       $year = date("Y", $trail_date) + 1;
+                               }
+                               
+                               $num_days_in_month = 
cal_days_in_month(CAL_GREGORIAN, $month, $year);
+                               $trail_date = mktime(0,0,0, $month, 
$num_days_in_month, $year);
+                       }
+                       else if($this->repeat_type == 3)
+                       {
+                               $trail_date = mktime(0,0,0, date("m", 
$trail_date), date("d", $trail_date), date("Y", 
$trail_date)+$this->repeat_interval);
+                       }
+               }
+               
+       }
+       
+       public function find_start_date_by_repeat_type(){
+       
+               if( $this->repeat_type == 1 || $this->repeat_type == 0 ){
+                       $search_date = $this->start_date;
+       
+                       while(date("l", $search_date) != "Sunday")
+                       {
+                               $num_days_in_month = 
cal_days_in_month(CAL_GREGORIAN, date("m", $search_date), date("y", 
$search_date));
+                               
+                               if($num_days_in_month <= date("d", 
$search_date) )
+                               {
+                                       $search_date = mktime(0,0,0, date("m", 
$search_date)+1, 1, date("Y", $search_date));
+                               }       
+                               else
+                               {
+                                       $search_date = mktime(0,0,0, date("m", 
$search_date), date("d", $search_date)+1, date("Y", $search_date));
+                               }
+                       }
+               }
+               else if( $this->repeat_type == 2 ){
+                       $num_days_in_month = cal_days_in_month(CAL_GREGORIAN, 
date("m", $this->start_date), date("y", $this->start_date));
+                       $search_date = mktime(0,0,0, date("m", 
$this->start_date), $num_days_in_month, date("y", $this->start_date));
+               }
+               
+               return $search_date;
+       }
+               
+       public function get_dates(){
+               return $this->calendar_array;
+       }
+}




reply via email to

[Prev in Thread] Current Thread [Next in Thread]