fmsystem-commits
[Top][All Lists]
Advanced

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

[Fmsystem-commits] [16958] controller: more on FDV-195


From: sigurdne
Subject: [Fmsystem-commits] [16958] controller: more on FDV-195
Date: Wed, 9 Aug 2017 05:09:38 -0400 (EDT)

Revision: 16958
          http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=16958
Author:   sigurdne
Date:     2017-08-09 05:09:38 -0400 (Wed, 09 Aug 2017)
Log Message:
-----------
controller: more on FDV-195

Modified Paths:
--------------
    trunk/controller/inc/class.socommon.inc.php
    trunk/controller/inc/class.soprocedure.inc.php
    trunk/controller/inc/class.uiprocedure.inc.php

Modified: trunk/controller/inc/class.socommon.inc.php
===================================================================
--- trunk/controller/inc/class.socommon.inc.php 2017-08-08 13:35:18 UTC (rev 
16957)
+++ trunk/controller/inc/class.socommon.inc.php 2017-08-09 09:09:38 UTC (rev 
16958)
@@ -45,6 +45,36 @@
                }
 
                /**
+                * Begin transaction
+                *
+                * @return integer|bool current transaction id
+                */
+               public function transaction_begin()
+               {
+                       return $this->db->transaction_begin();
+               }
+
+               /**
+                * Complete the transaction
+                *
+                * @return bool True if sucessful, False if fails
+                */
+               public function transaction_commit()
+               {
+                       return $this->db->transaction_commit();
+               }
+
+               /**
+                * Rollback the current transaction
+                *
+                * @return bool True if sucessful, False if fails
+                */
+               public function transaction_abort()
+               {
+                       return $this->db->transaction_abort();
+               }
+
+               /**
                 * Marshal values according to type
                 * @param $value the value
                 * @param $type the type of value

Modified: trunk/controller/inc/class.soprocedure.inc.php
===================================================================
--- trunk/controller/inc/class.soprocedure.inc.php      2017-08-08 13:35:18 UTC 
(rev 16957)
+++ trunk/controller/inc/class.soprocedure.inc.php      2017-08-09 09:09:38 UTC 
(rev 16958)
@@ -37,6 +37,7 @@
        {
 
                protected static $so;
+               private $other_revisions = array(-1);
 
                /**
                 * Get a static reference to the storage object associated with 
this model object
@@ -474,12 +475,46 @@
                        return $results;
                }
 
-               function get_old_revisions( $id )
+
+
+               private function _get_other_revisions( $procedure_id, 
$direction = 'up')
                {
+                       $procedure_id = (int) $procedure_id;
+
+                       if($direction == 'up') //older
+                       {
+                               $sql = "SELECT id AS other_version_id FROM 
controller_procedure"
+                               . " WHERE procedure_id = {$procedure_id}";
+                       }
+                       else // newer
+                       {
+                               $sql = "SELECT procedure_id AS other_version_id 
FROM controller_procedure"
+                               . " WHERE id = {$procedure_id}";
+                       }
+                       $this->db->query($sql, __LINE__, __FILE__);
+                       $this->db->next_record();
+                       $other_version_id = 
(int)$this->db->f('other_version_id');
+                       $this->other_revisions[] = $other_version_id;
+
+                       if($other_version_id)
+                       {
+                               $this->_get_other_revisions($other_version_id, 
$direction);
+                       }
+               }
+
+
+               function get_other_revisions( $id )
+               {
                        $id = (int)$id;
+
+                       $this->_get_other_revisions( $id, 'up');
+                       $this->_get_other_revisions( $id, 'down');
+
+                       $revision_filter = 'id IN(' . implode(',', 
$this->other_revisions) . ')';
+
                        $results = array();
 
-                       $sql = "SELECT p.* FROM controller_procedure p WHERE 
procedure_id = {$id} ORDER BY end_date DESC";
+                       $sql = "SELECT p.* FROM controller_procedure p WHERE 
{$revision_filter} ORDER BY end_date ASC";
                        $this->db->query($sql, __LINE__, __FILE__);
 
                        while ($this->db->next_record())

Modified: trunk/controller/inc/class.uiprocedure.inc.php
===================================================================
--- trunk/controller/inc/class.uiprocedure.inc.php      2017-08-08 13:35:18 UTC 
(rev 16957)
+++ trunk/controller/inc/class.uiprocedure.inc.php      2017-08-09 09:09:38 UTC 
(rev 16958)
@@ -197,9 +197,6 @@
 
                        if (isset($_POST['save_procedure'])) // The user has 
pressed the save button
                        {
-                               //var_dump($_POST);
-                               
//var_dump(strtotime(phpgw::get_var('start_date')));
-                               //die;
                                if (!$this->add && !$this->edit)
                                {
                                        phpgwapi_cache::message_set('No 
access', 'error');
@@ -223,9 +220,9 @@
                                        
$procedure->set_description($description_txt);
                                        
$procedure->set_reference($reference_txt);
                                        
$procedure->set_attachment(phpgw::get_var('attachment'));
-                                       
$procedure->set_start_date(strtotime(phpgw::get_var('start_date')));
-                                       
$procedure->set_end_date(strtotime(phpgw::get_var('end_date')));
-                                       
$procedure->set_revision_date(strtotime(phpgw::get_var('revision_date')));
+                                       
$procedure->set_start_date(phpgw::get_var('start_date', 'date'));
+                                       
$procedure->set_end_date(phpgw::get_var('end_date', 'date'));
+                                       
$procedure->set_revision_date(phpgw::get_var('revision_date', 'date'));
                                        
$procedure->set_control_area_id(phpgw::get_var('control_area'));
 
                                        $revision = 
(int)$procedure->get_revision_no();
@@ -279,16 +276,6 @@
                                $old_procedure = 
$this->so->get_single($procedure_id);
                                if (isset($procedure)) // Edit procedure
                                {
-//                                     $revision = 
(int)$procedure->get_revision_no();
-//                                     if ($revision && is_numeric($revision))
-//                                     {
-//                                             $revision++;
-//                                             
$procedure->set_revision_no($revision);
-//                                     }
-//                                     else
-//                                     {
-//                                             $procedure->set_revision_no(2);
-//                                     }
 
                                        $description_txt = 
phpgw::get_var('description', 'html');
                                        $description_txt = 
str_replace(" ", " ", $description_txt);
@@ -296,34 +283,6 @@
                                        $purpose_txt = str_replace(" ", " 
", $purpose_txt);
                                        $reference_txt = 
phpgw::get_var('reference', 'html');
                                        $reference_txt = str_replace(" ", 
" ", $reference_txt);
-//                                     
$procedure->set_title(phpgw::get_var('title'));
-//                                     $procedure->set_purpose($purpose_txt);
-//                                     
$procedure->set_responsibility(phpgw::get_var('responsibility'));
-//                                     
$procedure->set_description($description_txt);
-//                                     
$procedure->set_reference($reference_txt);
-//                                     
$procedure->set_attachment(phpgw::get_var('attachment'));
-//                                     
$procedure->set_start_date(strtotime(phpgw::get_var('start_date')));
-//                                     
$procedure->set_end_date(strtotime(phpgw::get_var('end_date')));
-//                                     
$procedure->set_control_area_id(phpgw::get_var('control_area'));
-//
-//                                     if (isset($procedure_id) && 
$procedure_id > 0)
-//                                     {
-//                                             $proc_id = $procedure_id;
-//                                             $old_procedure->set_id(null);
-//                                             
$old_procedure->set_end_date(time());
-//                                             
$old_procedure->set_procedure_id($proc_id);
-//                                             if 
($this->so->add($old_procedure)) //add old revision of procedure to history
-//                                             {
-//                                                     if 
($this->so->store($procedure))
-//                                                     {
-//                                                             $message = 
lang('messages_saved_form');
-//                                                     }
-//                                                     else
-//                                                     {
-//                                                             $error = 
lang('messages_form_error');
-//                                                     }
-//                                             }
-//                                     }
 
                                        $new_procedure = new 
controller_procedure();
                                        $revision = 
(int)$procedure->get_revision_no();
@@ -342,17 +301,27 @@
                                        
$new_procedure->set_description($description_txt);
                                        
$new_procedure->set_reference($reference_txt);
                                        
$new_procedure->set_attachment(phpgw::get_var('attachment'));
-                                       
$new_procedure->set_start_date(strtotime(phpgw::get_var('start_date')));
-                                       
$new_procedure->set_end_date(strtotime(phpgw::get_var('end_date')));
-                                       
$new_procedure->set_revision_date(time());
+
+                                       $start_date = 
phpgw::get_var('start_date', 'date');
+                                       $start_date = $start_date ? $start_date 
: time();
+                                       
$new_procedure->set_start_date($start_date);
+
+                                       
$new_procedure->set_end_date(phpgw::get_var('end_date', 'date'));
+
+                                       $revision_date = 
phpgw::get_var('revision_date', 'date');
+                                       $revision_date = $revision_date ? 
$revision_date : time();
+                                       
$new_procedure->set_revision_date($revision_date);
+
                                        
$new_procedure->set_control_area_id(phpgw::get_var('control_area'));
 
                                        if (isset($procedure_id) && 
$procedure_id > 0)
                                        {
+                                               $this->so->transaction_begin();
                                                if ($proc_id = 
$this->so->add($new_procedure)) //add the revised prosedure as new
                                                {
-                                                       
$old_procedure->set_end_date(time());
-                                                       
$old_procedure->set_revision_date(time());
+                                                       $old_end_date = 
$start_date ? $start_date : time();
+                                                       
$old_procedure->set_end_date($old_end_date);
+                                                       
$old_procedure->set_revision_date($revision_date);
                                                        
$old_procedure->set_procedure_id($proc_id);
                                                        if 
($this->so->store($old_procedure)) //add revision of the old procedure to 
history
                                                        {
@@ -360,9 +329,11 @@
                                                        }
                                                        else
                                                        {
+                                                               
$this->so->transaction_abort();
                                                                $error = 
lang('messages_form_error');
                                                        }
                                                }
+                                               $this->so->transaction_commit();
                                        }
 
                                        
$GLOBALS['phpgw']->redirect_link('/index.php', array('menuaction' => 
'controller.uiprocedure.view',
@@ -584,7 +555,7 @@
                                }
                                $procedure_array = $procedure->toArray();
 
-                               if (!$view_revision)
+//                             if (!$view_revision)
                                {
                                        $table_header[] = array('header' => 
lang('Procedure revision'));
                                        $table_header[] = array('header' => 
lang('Procedure title'));
@@ -591,7 +562,8 @@
                                        $table_header[] = array('header' => 
lang('Procedure start date'));
                                        $table_header[] = array('header' => 
lang('Procedure end date'));
 
-                                       $revised_procedures = 
$this->so->get_old_revisions($procedure->get_id());
+                                       $revised_procedures = 
$this->so->get_other_revisions($procedure->get_id());
+                                       $table_values = array();
                                        foreach ($revised_procedures as $rev)
                                        {
                                                $rev['link'] = 
self::link(array('menuaction' => 'controller.uiprocedure.view',




reply via email to

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