fmsystem-commits
[Top][All Lists]
Advanced

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

[Fmsystem-commits] [9592] Added role-check for home


From: Erik Holm-Larsen
Subject: [Fmsystem-commits] [9592] Added role-check for home
Date: Thu, 14 Jun 2012 07:12:20 +0000

Revision: 9592
          http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=9592
Author:   erikhl
Date:     2012-06-14 07:12:20 +0000 (Thu, 14 Jun 2012)
Log Message:
-----------
Added role-check for home

Modified Paths:
--------------
    trunk/controller/inc/class.socheck_list.inc.php
    trunk/controller/inc/class.socontrol.inc.php
    trunk/controller/inc/hook_home.inc.php

Modified: trunk/controller/inc/class.socheck_list.inc.php
===================================================================
--- trunk/controller/inc/class.socheck_list.inc.php     2012-06-14 07:11:31 UTC 
(rev 9591)
+++ trunk/controller/inc/class.socheck_list.inc.php     2012-06-14 07:12:20 UTC 
(rev 9592)
@@ -308,6 +308,52 @@
                }
        }
        
+       function get_open_check_lists_for_control($control_id, $location_code, 
$from_date){
+               $sql = "SELECT cl.id as cl_id, cl.status as cl_status, 
cl.comment as cl_comment, deadline, planned_date, "; 
+               $sql .= "completed_date, component_id, location_code, 
num_open_cases, num_pending_cases ";
+               $sql .= "FROM controller_check_list cl ";
+               $sql .= "WHERE cl.control_id = $control_id ";
+               $sql .= "AND cl.location_code = '{$location_code}' "; 
+               $sql .= "AND (cl.planned_date IS NULL OR cl.planned_date < 
$from_date) ";
+               $sql .= "AND cl.deadline < $from_date ";
+               $sql .= "AND cl.completed_date IS NULL ";
+               $sql .= "ORDER BY cl.id;";
+               //var_dump($sql);
+               $this->db->query($sql);
+               
+               $check_list_id = 0;
+               $check_list = null;
+               while ($this->db->next_record()) {
+               
+                       if( $this->db->f('cl_id', true) != $check_list_id ){
+                               
+                               if($check_list_id != 0){
+                                       $check_list_array[] = $check_list;
+                               }
+                               
+                               $check_list = new 
controller_check_list($this->unmarshal($this->db->f('cl_id', true), 'int'));
+                               
$check_list->set_status($this->unmarshal($this->db->f('cl_status', true), 
'int'));
+                               
$check_list->set_comment($this->unmarshal($this->db->f('cl_comment', true), 
'string'));
+                               
$check_list->set_deadline($this->unmarshal($this->db->f('deadline', true), 
'int'));
+                               
$check_list->set_planned_date($this->unmarshal($this->db->f('planned_date', 
true), 'int'));
+                               
$check_list->set_completed_date($this->unmarshal($this->db->f('completed_date', 
true), 'int')); 
+                               
$check_list->set_component_id($this->unmarshal($this->db->f('component_id', 
true), 'int'));
+                               
$check_list->set_location_code($this->unmarshal($this->db->f('location_code', 
true), 'string'));
+                               
$check_list->set_num_open_cases($this->unmarshal($this->db->f('num_open_cases', 
true), 'int')); 
+                               
$check_list->set_num_pending_cases($this->unmarshal($this->db->f('num_pending_cases',
 true), 'int'));
+                       }
+                       $check_list_id =  $check_list->get_id();
+               }
+               
+               if($check_list != null){
+                       $check_list_array[] = $check_list;
+               
+                       return $check_list_array;
+               }else {
+                       return null;
+               }
+       }
+       
        function get_agg_check_lists_for_location( $location_code, 
$from_date_ts, $to_date_ts, $control_id = 0 ){
                                
                $sql =  "SELECT c.id as c_id, title, start_date, end_date, 
cl.id as cl_id, c.repeat_type, c.repeat_interval, cl.deadline, 
count(cl.num_open_cases) ";

Modified: trunk/controller/inc/class.socontrol.inc.php
===================================================================
--- trunk/controller/inc/class.socontrol.inc.php        2012-06-14 07:11:31 UTC 
(rev 9591)
+++ trunk/controller/inc/class.socontrol.inc.php        2012-06-14 07:12:20 UTC 
(rev 9592)
@@ -233,7 +233,59 @@
                                return null;
                        }
                }
+               
+               public function get_controls_by_component($location_code, 
$from_date, $to_date, $repeat_type = null, $return_type = "return_object")
+               {
+                       $controls_array = array();
+                       
+                       $sql   = "SELECT c.id as control_id, c.*, bim_item.id, 
xpath('/beskrivelse/text()', xml_representation), bim_item.location_code, 
bim_item.address ";
+                       $sql  .= "FROM controller_control_component_list cl ";
+                       $sql  .= "JOIN fm_bim_item bim_item on cl.component_id 
= bim_item.id ";
+                       $sql  .= "JOIN fm_bim_type bim_type on cl.location_id = 
bim_type.location_id ";
+                       $sql  .= "JOIN controller_control c on cl.control_id = 
c.id ";
+                       $sql  .= "AND bim_item.type = bim_type.id ";
+                       $sql  .= "AND bim_item.location_code LIKE 
'$location_code%'";
+                       
+                       if( $repeat_type != null){
+                               $sql .= "AND c.repeat_type = $repeat_type ";
+                       }
+                       
+                       $sql .= "AND (c.start_date <= $from_date AND c.end_date 
IS NULL ";
+                       $sql .= "OR c.start_date > $from_date AND c.start_date 
< $to_date)";
+                       
+                       $this->db->query($sql);
+                       
+                       while($this->db->next_record()) {
+                               $control = new 
controller_control($this->unmarshal($this->db->f('control_id', true), 'int'));
+                               
$control->set_title($this->unmarshal($this->db->f('title', true), 'string'));
+                               
$control->set_description($this->unmarshal($this->db->f('description', true), 
'boolean'));
+                               
$control->set_start_date($this->unmarshal($this->db->f('start_date', true), 
'int'));
+                               
$control->set_end_date($this->unmarshal($this->db->f('end_date', true), 'int'));
+                               
$control->set_procedure_id($this->unmarshal($this->db->f('procedure_id', true), 
'int'));
+                               
$control->set_requirement_id($this->unmarshal($this->db->f('requirement_id', 
true), 'int'));
+                               
$control->set_costresponsibility_id($this->unmarshal($this->db->f('costresponsibility_id',
 true), 'int'));
+                               
$control->set_responsibility_id($this->unmarshal($this->db->f('responsibility_id',
 true), 'int'));
+                               
$control->set_responsibility_name($this->unmarshal($this->db->f('responsibility_name',
 true), 'string'));
+                               
$control->set_control_area_id($this->unmarshal($this->db->f('control_area_id', 
true), 'int'));
+                               
$control->set_repeat_type($this->unmarshal($this->db->f('repeat_type', true), 
'int'));
+                               
$control->set_repeat_type_label($this->unmarshal($this->db->f('repeat_type', 
true), 'int'));
+                               
$control->set_repeat_interval($this->unmarshal($this->db->f('repeat_interval', 
true), 'int'));
+                               
+                               if($return_type == "return_object")
+                                       $controls_array[] = $control;
+                               else
+                                       $controls_array[] = $control->toArray();
+                       }
 
+                       if( count( $controls_array ) > 0 ){
+                               return $controls_array; 
+                       }
+                       else
+                       {
+                               return null;
+                       }
+               }
+
                function get_controls_by_control_area($control_area_id)
                {
                        $control_area_id = (int) $control_area_id;

Modified: trunk/controller/inc/hook_home.inc.php
===================================================================
--- trunk/controller/inc/hook_home.inc.php      2012-06-14 07:11:31 UTC (rev 
9591)
+++ trunk/controller/inc/hook_home.inc.php      2012-06-14 07:12:20 UTC (rev 
9592)
@@ -67,21 +67,14 @@
 
        $location_finder = new location_finder();
        $my_locations = $location_finder->get_responsibilities( $criteria );
-       $unique_locations = array();
-       foreach($my_locations as $loc)
-       {
-           if(!in_array($loc["location_code"],$unique_locations))
-           {
-               $unique_locations[] = $loc["location_code"];
-           }
-       }
 
        $repeat_type = null;
        $controls_for_location_array = array();
-       foreach($unique_locations as $location)
+       foreach($my_locations as $location)
        {
-           $controls_for_location_array[] = array($location, 
$so_control->get_controls_for_location($location, $from_date_ts, $to_date_ts, 
$repeat_type ));
+           $controls_for_location_array[] = array($location["location_code"], 
$so_control->get_controls_for_location($location["location_code"], 
$location["role_id"], $from_date_ts, $to_date_ts, $repeat_type ));
        }
+       
 
        $controls_array = array();
        $control_dates = array();
@@ -90,11 +83,89 @@
                $controls_for_loc_array = $control_arr[1];
                foreach($controls_for_loc_array as $control)
                {
-                       $date_generator = new 
date_generator($control->get_start_date(), $control->get_end_date(), 
$from_date_ts, $to_date_ts, $control->get_repeat_type(), 
$control->get_repeat_interval());
+                       $date_generator = new 
date_generator($control["start_date"], $control["end_date"], $from_date_ts, 
$to_date_ts, $control["repeat_type"], $control["repeat_interval"]);
                        $controls_array[] = array($current_location, $control, 
$date_generator->get_dates());
                }
        }
+       
+       $portalbox0 = CreateObject('phpgwapi.listbox', array
+       (
+               'title'         => "Mine glemte kontroller",
+               'primary'       => $GLOBALS['phpgw_info']['theme']['navbar_bg'],
+               'secondary'     => $GLOBALS['phpgw_info']['theme']['navbar_bg'],
+               'tertiary'      => $GLOBALS['phpgw_info']['theme']['navbar_bg'],
+               'width' => '100%',
+               'outerborderwidth'      => '0',
+               'header_background_image'       => 
$GLOBALS['phpgw']->common->image('phpgwapi','bg_filler', '.png', False)
+       ));
 
+       $app_id = $GLOBALS['phpgw']->applications->name2id('controller');
+       if( !isset($GLOBALS['portal_order']) ||!in_array($app_id, 
$GLOBALS['portal_order']) )
+       {
+               $GLOBALS['portal_order'][] = $app_id;
+       }
+       $var = array
+       (
+               'up'    => array('url'  => '/set_box.php', 'app'        => 
$app_id),
+               'down'  => array('url'  => '/set_box.php', 'app'        => 
$app_id),
+               'close' => array('url'  => '/set_box.php', 'app'        => 
$app_id),
+               'question'      => array('url'  => '/set_box.php', 'app'        
=> $app_id),
+               'edit'  => array('url'  => '/set_box.php', 'app'        => 
$app_id)
+       );
+
+       foreach ( $var as $key => $value )
+       {
+               //                      $portalbox->set_controls($key,$value);
+       }
+
+       $category_name = array(); // caching
+       
+       $cats   = CreateObject('phpgwapi.categories', -1, 'controller', 
'.control');
+       $cats->supress_info     = true;
+       $control_areas = 
$cats->formatted_xslt_list(array('format'=>'filter','selected' => '','globals' 
=> true,'use_acl' => $this->_category_acl));
+
+       $portalbox0->data = array();
+       $portalbox0_data = array();
+       foreach ($controls_array as $control_instance)
+       {
+               $curr_location = $control_instance[0];
+               $current_control = $control_instance[1];
+               $check_lists = 
$so->get_open_check_lists_for_control($current_control["id"], $curr_location, 
$from_date_ts);
+               $location_array = execMethod('property.bolocation.read_single', 
array('location_code' => $curr_location));
+               $location_name = $location_array["loc1_name"];
+               foreach($control_areas['cat_list'] as $area)
+               {
+                       if($area['cat_id'] == 
$current_control["control_area_id"])
+                       {
+                               $control_area_name = $area['name'];
+                       }
+               }
+               foreach($check_lists as $check_list)
+               {
+                       $next_date = "Frist: " . date('d/m/Y', 
$check_list->get_deadline());
+                       $portalbox0_data[] = array
+                       ($check_list->get_deadline(), array
+                       (
+                               'text' => "{$location_name} - 
{$control_area_name} - {$current_control["title"]} :: {$next_date}",
+                               'link' => $GLOBALS['phpgw']->link('/index.php', 
array('menuaction' => 'controller.uicheck_list.edit_check_list', 
'check_list_id' => $check_list->get_id()))
+                       ));
+               }
+       }
+       //sort data by planned date for check list
+       sort($portalbox0_data);
+       //$limit = 5;
+       $tmp = 0;
+       foreach($portalbox0_data as $check_list_dates)
+       {
+               if($tmp < $limit_no_of_planned)
+               {
+                       $portalbox0->data[] = $check_list_dates[1];
+               }
+               $tmp++;
+       }
+
+       echo "\n".'<!-- BEGIN checklist info -->'."\n<div 
class='controller_checklist' style='padding-left: 10px; background-color: 
red;'>".$portalbox0->draw()."</div>\n".'<!-- END checklist info -->'."\n";
+       
        $portalbox1 = CreateObject('phpgwapi.listbox', array
        (
                'title'         => "Mine planlagte kontroller",
@@ -137,12 +208,12 @@
        {
                $curr_location = $control_instance[0];
                $current_control = $control_instance[1];
-               $check_lists = 
$so->get_planned_check_lists_for_control($current_control->get_id(), 
$curr_location);
+               $check_lists = 
$so->get_planned_check_lists_for_control($current_control["id"], 
$curr_location);
                $location_array = execMethod('property.bolocation.read_single', 
array('location_code' => $curr_location));
                $location_name = $location_array["loc1_name"];
                foreach($control_areas['cat_list'] as $area)
                {
-                       if($area['cat_id'] == 
$current_control->get_control_area_id())
+                       if($area['cat_id'] == 
$current_control["control_area_id"])
                        {
                                $control_area_name = $area['name'];
                        }
@@ -153,7 +224,7 @@
                        $portalbox1_data[] = array
                        ($check_list->get_planned_date(), array
                        (
-                               'text' => "{$location_name} - 
{$control_area_name} - {$current_control->get_title()} :: {$next_date}",
+                               'text' => "{$location_name} - 
{$control_area_name} - {$current_control["title"]} :: {$next_date}",
                                'link' => $GLOBALS['phpgw']->link('/index.php', 
array('menuaction' => 'controller.uicheck_list.edit_check_list', 
'check_list_id' => $check_list->get_id()))
                        ));
                }
@@ -210,14 +281,14 @@
        {
                $curr_location = $control_instance[0];
                $current_control = $control_instance[1];
-               unset($check_lists);
-               $check_lists = 
$so->get_unplanned_check_lists_for_control($current_control->get_id(), 
$curr_location);
+               //unset($check_lists);
+               $check_lists = 
$so->get_unplanned_check_lists_for_control($current_control["id"], 
$curr_location);
                //$control_location = 
$so_control->getLocationCodeFromControl($current_control->get_id());
                $location_array = execMethod('property.bolocation.read_single', 
array('location_code' => $curr_location));
                $location_name = $location_array["loc1_name"];
                foreach($control_areas['cat_list'] as $area)
                {
-                       if($area['cat_id'] == 
$current_control->get_control_area_id())
+                       if($area['cat_id'] == 
$current_control["control_area_id"])
                        {
                                $control_area_name = $area['name'];
                        }
@@ -231,23 +302,23 @@
                        {
                                foreach($check_lists as $check_list)
                                {
-                                       if(intval($current_date) > 
intval($check_list->get_deadline()) && intval($current_date) != 
intval($check_list->get_deadline()))
+                                       if($current_date > 
$check_list->get_deadline() && $current_date != $check_list->get_deadline())
                                        {
                                                $next_date = "Fristdato: " . 
date('d/m/Y', $current_date);
                                                $portalbox2_data[] = array
                                                ($current_date, array
                                                (
-                                                       'text' => 
"{$location_name} - {$control_area_name} - {$current_control->get_title()} :: 
{$next_date}",
-                                                       'link' => 
$GLOBALS['phpgw']->link('/index.php', array('menuaction' => 
'controller.uicheck_list.add_check_list', 'date' => $current_date, 'control_id' 
=> $current_control->get_id(), 'location_code' => $curr_location))
+                                                       'text' => 
"{$location_name} - {$control_area_name} - {$current_control["title"]} :: 
{$next_date}",
+                                                       'link' => 
$GLOBALS['phpgw']->link('/index.php', array('menuaction' => 
'controller.uicheck_list.add_check_list', 'date' => $current_date, 'control_id' 
=> $current_control["id"], 'location_code' => $curr_location))
                                                ));
                                        }
                                        else
                                        {
                                                $next_date = "Fristdato: " . 
date('d/m/Y', $check_list->get_deadline());
                                                $portalbox2_data[] = array
-                                               ($current_date, array
+                                               ($check_list->get_deadline(), 
array
                                                (
-                                                       'text' => 
"{$location_name} - {$control_area_name} - {$current_control->get_title()} :: 
{$next_date}",
+                                                       'text' => 
"{$location_name} - {$control_area_name} - {$current_control["title"]} :: 
{$next_date}",
                                                        'link' => 
$GLOBALS['phpgw']->link('/index.php', array('menuaction' => 
'controller.uicheck_list.edit_check_list', 'check_list_id' => 
$check_list->get_id()))
                                                ));                             
            
                                        }
@@ -259,8 +330,8 @@
                                $portalbox2_data[] = array
                                ($current_date, array
                                (
-                                       'text' => "{$location_name} - 
{$control_area_name} - {$current_control->get_title()} :: {$next_date}",
-                                       'link' => 
$GLOBALS['phpgw']->link('/index.php', array('menuaction' => 
'controller.uicheck_list.add_check_list', 'date' => $current_date, 'control_id' 
=> $current_control->get_id(), 'location_code' => $curr_location))
+                                       'text' => "{$location_name} - 
{$control_area_name} - {$current_control["title"]} :: {$next_date}",
+                                       'link' => 
$GLOBALS['phpgw']->link('/index.php', array('menuaction' => 
'controller.uicheck_list.add_check_list', 'date' => $current_date, 'control_id' 
=> $current_control["id"], 'location_code' => $curr_location))
                                ));                                     
                        }
                }




reply via email to

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