⚠ In case you've missed it, we have migrated to our new website, with a brand new forum. For more details about the migration you can read our blog post for website migration. This is an archived forum. ⚠

  •     

profile picture

Callbacks getting ignored



Mithy

Mithy
  • profile picture
  • Member

Posted 26 April 2021 - 08:40 AM

Hi, I'm new and I've recently started using Grocery CRUD and it's been amazing so far. It has made my life a lot easier, but I am experiencing some issues recently. I've been experiencing some issues with the callback functions where they get completely ignored. I believe I have found the issue, where the functions are not called and the $post_arrays are NULL and not returning any values. Although I have discovered the issues, I do not know how to fix these issues.
 

Here is my code:

//Creates the Grocery CRUD
$crud = new grocery_CRUD();
$crud->set_table('billing');
$crud->set_subject('Billing','Billings');

$crud->fields('Billing_ID','Item_ID','Amount','Status','Due_date','Received_By','Data_Received','Checked_By','Date_Checked','Endorsed_By','Date_Endorsed','Approved_By','Date_Approved','Payment_Prep_By','Date_Payment_Prep','Paid_By','Date_Approved','Date_Paid','Month','Year');
$crud->column(['Billing_ID','Item_ID','Amount','Status','Month','Year']);

$crud->field_type('Status', 'invisible');
$crud->field_type('Due_Date', 'datetime');
$crud->field_type('Date_Received', 'datetime');
$crud->field_type('Date_Checked', 'datetime');
$crud->field_type('Date_Endorsed', 'datetime');
$crud->field_type('Date_Approved', 'datetime');
$crud->field_type('Date_Payment_Prep', 'datetime');
$crud->field_type('Date_Paid', 'datetime');

//Configures the Add & Edit Table
$crud->add_fields('Billing_ID','Item_ID','Amount','Due_date','Received_By','Data_Received','Checked_By','Date_Checked','Endorsed_By','Date_Endorsed','Approved_By','Date_Approved','Payment_Prep_By','Date_Payment_Prep','Paid_By','Date_Approved','Date_Paid');
$crud->edit_fields('Billing_ID','Item_ID','Amount','Due_date','Received_By','Data_Received','Checked_By','Date_Checked','Endorsed_By','Date_Endorsed','Approved_By','Date_Approved','Payment_Prep_By','Date_Payment_Prep','Paid_By','Date_Approved','Date_Paid');

//Runs a function before the update function is runned
$crud->callback_before_update(function ($post_array,$primary_key){

$this->_check_status($post_array);

return $post_array;

});

function _check_status($post_array){
			
	if (!empty($post_array['Date_Paid'] and $post_array['Paid_By'] and $post_array['Date_Payment_Prep'] and $post_array['Payment_Prep_By'] and $post_array['Date_Approved'] and $post_array['Approved_By'] and $post_array['Date_Endorsed'] and $post_array['Endorsed_By'] and $post_array['Date_Checked'] and $post_array['Checked_By']))
        {
		$post_array['Status'] = 'Paid';

        }
        else if (!empty($post_array['Date_Payment_Prep'] and $post_array['Payment_Prep_By'] and $post_array['Date_Approved'] and $post_array['Approved_By'] and $post_array['Date_Endorsed'] and $post_array['Endorsed_By'] and $post_array['Date_Checked'] and $post_array['Checked_By']))
        {
            $post_array['Status']= 'Preparing Payment';

        }
        else if (!empty($post_array['Date_Approved'] and $post_array['Approved_By'] and $post_array['Date_Endorsed'] and $post_array['Endorsed_By'] and $post_array['Date_Checked'] and $post_array['Checked_By']))
        {
            $post_array['Status'] = 'Approved';
            
        }
        else if (!empty($post_array['Date_Endorsed'] and $post_array['Endorsed_By'] and $post_array['Date_Checked'] and $post_array['Checked_By']))
        {
               $post_array['Status'] = 'Endorsed';
            
        }
        else if (!empty($post_array['Date_Checked'] and $post_array['Checked_By']))
        {
            
           $post_array['Status'] = 'Checked';

        }
        else
        {
               $post_array['Status'] = 'Received';
        }

        return $post_array;
		} 

Any help or advice is appreciated. Thank you.