/** * Allows the insertion of data after the core insert/update has been done, thus making available the current $entry_id. Returns nothing. * * @param array $params an associative array, the top level arrays consisting of: 'meta', 'data', 'mod_data', and 'entry_id'. * @return void */ public function publish_data_db($params) { $EE =& get_instance(); $EE->load->helper('date'); $channel_id = $params['meta']['channel_id']; $entry_id = $params['entry_id']; if(!class_exists('Nsm_pp_workflow_model')){ include(dirname(__FILE__).'/models/nsm_pp_workflow_model.php'); } if(!class_exists('Nsm_pp_workflow_ext')){ include(dirname(__FILE__).'/ext.nsm_pp_workflow.php'); } $nsm_pp_ext = new Nsm_pp_workflow_ext(); $settings = $nsm_pp_ext->settings; // is this channel being managed by pp_workflow? if( empty($settings['channels'][$channel_id]['enabled']) ){ return true; } $default_data = array( 'state' => $settings['channels'][$channel_id]['state'], 'use_date' => 'est_next_review_date', 'est_next_review_date' => now() + ((60*60*24) * $settings['channels'][$channel_id]['next_review']) ); $data = array_merge($default_data, $params['mod_data']['nsm_pp_workflow']); $nsm_pp_model = Nsm_pp_workflow_model::findByEntryId($entry_id); // no existing entry? make one. if(!$nsm_pp_model){ $model_data = array( 'entry_id' => $entry_id, 'channel_id' => $channel_id, 'entry_state' => $data['state'], 'last_review_date' => 0, 'next_review_date' => 0, 'site_id' => $EE->config->item('site_id') ); $nsm_pp_model = new Nsm_pp_workflow_model($model_data); $nsm_pp_model->add(); } $new_review_date = $data[ $data['use_date'] ]; if($data['use_date'] == 'new_review_date'){ $new_review_date = human_to_unix($new_review_date); } $nsm_pp_model->channel_id = $channel_id; $nsm_pp_model->entry_state = $data['state']; if($data['use_date'] !== 'current_review_date'){ $nsm_pp_model->setNewReviewDate($new_review_date); } if($nsm_pp_model->update()){ return true; }else{ return false; } }