/** * Sets the _cpt_model_object property using what has been set for the _cpt_model_name and a given id. * * @access protected * @param int $id The id to retrieve the model object for. If empty we set a default object. * @return void */ protected function _set_model_object($id = NULL) { if (empty($this->_cpt_model_names) || !isset($this->_cpt_routes[$this->_req_action]) || is_object($this->_cpt_model_obj) && $this->_cpt_model_obj->ID() == $id) { //get out cuz we either don't have a model name OR the object has already been set and it has the same id as what has been sent. return; } // load CPT object model $model = EE_Registry::instance()->load_model($this->_cpt_model_names[$this->_req_action]); $this->_cpt_model_obj = !empty($id) ? $model->get_one_by_ID($id) : $model->create_default_object(); //d( $this->_cpt_model_obj ); do_action('AHEE__EE_Admin_Page_CPT__set_model_object__after_set_object'); }
/** * This is a wrapper for the insert/update routes for cpt items so we can add things that are common to ALL insert/updates * @param int $post_id ID of post being updated * @param WP_Post $post Post object from WP * @param bool $update Whether this is an update or a new save. * @return void */ public function insert_update($post_id, $post, $update) { //make sure that if this is a revision OR trash action that we don't do any updates! if (isset($this->_req_data['action']) && ($this->_req_data['action'] == 'restore' || $this->_req_data['action'] == 'trash')) { return; } $this->_set_model_object($post_id, true); //if our cpt object is not instantiated and its NOT the same post_id as what is triggering this callback, then exit. if ($update && (!$this->_cpt_model_obj instanceof EE_CPT_Base || $this->_cpt_model_obj->ID() !== $post_id)) { return; } //check for autosave and update our req_data property accordingly. /*if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE && isset( $this->_req_data['ee_autosave_data'] ) ) { foreach( (array) $this->_req_data['ee_autosave_data'] as $id => $values ) { foreach ( (array) $values as $key => $value ) { $this->_req_data[$key] = $value; } } }/**/ //TODO reactivate after autosave is implemented in 4.2 //take care of updating any selected page_template IF this cpt supports it. if ($this->_supports_page_templates($post->post_type) && !empty($this->_req_data['page_template'])) { $post->page_template = $this->_req_data['page_template']; $page_templates = wp_get_theme()->get_page_templates($post); if ('default' != $this->_req_data['page_template'] && !isset($page_templates[$this->_req_data['page_template']])) { EE_Error::add_error(__('Invalid Page Template.', 'event_espresso'), __FILE__, __FUNCTION__, __LINE__); } else { update_post_meta($post_id, '_wp_page_template', $this->_req_data['page_template']); } } if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return; } //TODO we'll remove this after reimplementing autosave in 4.2 $this->_insert_update_cpt_item($post_id, $post); }