PHP 8 error on line 257 in simple_crud_class.inc fixed.
[fa-stable.git] / includes / ui / simple_crud_class.inc
index 2f0d76711a63253d2d8e28ba8b7d570fe35e1c30..f6375635ebaa6e3bcbac799342b099adbc50241b 100644 (file)
@@ -19,14 +19,14 @@ class simple_crud {
        var $_none = ''; // selector value when no item is selected
        var $pre_handlers; // control buttons and related methods called before view display
        var $views;
-       var $data;
+       var $data = array();
        var $fields;
        var $tool_buttons;
        var $options;
        var $dec;
        //
        //
-       function simple_crud($name, $fields = null)
+       function __construct($name, $fields = null)
        {
                $this->name = $name;
                $this->pre_handlers = array(
@@ -106,19 +106,23 @@ class simple_crud {
        {
                global $Ajax;
 
-               $sel_name = $this->name.'_id';
-
                // list controls lookup
                foreach (array_keys($this->pre_handlers) as $m) {
                        if (isset($_POST[$this->name.$m])) {
                                unset($_POST['_focus']); // focus on first form entry
                                $Ajax->activate($this->name.'_div');
-                               $val = @key($_POST[$this->name.$m]);
+                               $val = is_array($_POST[$this->name.$m]) ? key($_POST[$this->name.$m]) : null;
                                $this->selected_id = $val!==null ? @quoted_printable_decode($val) : $this->_none;
                                return $m;
                        }
                }
-               return get_post($this->name.'Mode', '');
+               $mod = get_post($this->name.'Mode', '');
+               if ($mod) {
+                       $val = @key($mod);
+                       $this->selected_id = $val!==null ? @quoted_printable_decode($val) : $this->_none;
+                       return $mod[$val];
+               }
+               return '';
        }
 
        //
@@ -137,25 +141,30 @@ class simple_crud {
        //
        //      Update record after edition
        //
-       function _update()
+       function _update($mode)
        {
                $this->get_posts();
                if ($this->update_check()) {
-                       if ($this->db_update())
+                       if ($this->db_update()) {
                                $this->selected_id = $this->_none;
                                $this->Mode = '';
+                               return;
+                       }
                }
+               $this->Mode = $mode;
        }
        //
        //      Add new record
        //
-       function _add()
+       function _add($mode)
        {
                $this->get_posts();
                if ($this->insert_check()) {
                        $this->db_insert();
                        $this->_cancel();
+                       return;
                }
+               $this->Mode = $mode;
        }
        //
        //      Delete selected  record
@@ -200,9 +209,9 @@ class simple_crud {
                if ($async === 'both') {
                        $async = 'default'; $cancel = 'cancel';
                } 
-               else if ($async === 'default')
+               elseif ($async === 'default')
                        $cancel = true;
-               else if ($async === 'cancel')
+               elseif ($async === 'cancel')
                        $async = true;
                echo "<center>";
 
@@ -245,10 +254,10 @@ class simple_crud {
                        $post = isset($fmt['post']) ? $fmt['post'] : $name;
                        $fld = isset($fmt['fld']) ? $fmt['fld'] : $name;
 
-                       $value = $this->selected_id == $this->_none ? @$fmt['dflt'] :
+                       $value = $this->selected_id == $this->_none ? (isset($fmt['dflt']) ? $fmt['dflt'] : null) :
                                (is_array($this->data) ? $this->data[$fld]: $this->data->$fld);
 
-                       $_POST[$post] = $this->_format_output($value, @$fmt['fmt']);
+                       $_POST[$post] = $this->_format_output($value, isset($fmt['fmt']) ? $fmt['fmt'] : null);
                }
        }
        //--------------------------
@@ -264,8 +273,7 @@ class simple_crud {
                        $post = isset($fmt['post']) ? $fmt['post'] : $name;
                        $fld = isset($fmt['fld']) ? $fmt['fld'] : $name;
 
-                       $value = $this->_format_input($_POST[$post], @$fmt['fmt']);
-
+                       $value = $this->_format_input(@$_POST[$post], @$fmt['fmt']);
                        if (is_array($this->data))
                                $this->data[$fld] = $value;
                        else
@@ -286,14 +294,15 @@ class simple_crud {
                        $fun = $this->pre_handlers[$Mode];
                        $this->$fun($Mode);
                }
-               
+
                if (isset($this->views[$this->Mode]))
                        $this->{$this->views[$this->Mode]}();
                else
                        $this->{$this->views['']}(); // default view
 
                $this->_bottom_controls();
-               hidden($this->name.'Mode', $this->Mode.'['.$this->selected_id.']');
+               // this is needed only when we use temporary crud object together with ajax screen updates
+               hidden($this->name.'Mode'.'['.$this->selected_id.']', $this->Mode);
                div_end();
        }
        
@@ -365,4 +374,3 @@ class simple_crud {
        }
 };
 
-?>
\ No newline at end of file