public function save()
    {
        $this->beforeSave();

        // Arrays for holding save data
        $post = array();
        $meta = array();
        $post['post_status'] = $this->post_status;

        // Get the default class variables and set it's keys to forbiddenKeys
        $defaultData = get_class_vars(get_class($this));
        $forbiddenKeys = array_keys($defaultData);

        $data = array_filter(get_object_vars($this), function ($item) use ($forbiddenKeys) {
            return !in_array($item, $forbiddenKeys);
        }, ARRAY_FILTER_USE_KEY);

        // If data key is allowed post field add to $post else add to $meta
        foreach ($data as $key => $value) {
            if (in_array($key, $this->allowedPostFields)) {
                $post[$key] = $value;
                continue;
            }

            $meta[$key] = $value;
        }

        // Save empty meta to array
        $empty_meta_values = array_filter($meta, array($this, 'getEmptyValues'));

        // Do not include null values in meta
        $meta = array_filter($meta, array($this, 'removeEmpty'));

        $post['post_type'] = $this->post_type;
        $post['meta_input'] = $meta;

        // Check if duplicate by matching "_event_manager_id" meta value
        if (isset($meta['_event_manager_id'])) {
            $duplicate = self::get(
                1,
                array(
                    'relation' => 'AND',
                    array(
                        'key' => '_event_manager_id',
                        'value' => $meta['_event_manager_id'],
                        'compare' => '='
                    )
                ),
                $this->post_type
            );
        }

        // Update if duplicate
        if (isset($duplicate->ID)) {
            //Check if event needs to be updated
            if (get_post_meta($duplicate->ID, 'last_update', true) != $meta['last_update']) {
                $post['ID'] = $duplicate->ID;
                $this->ID = wp_update_post($post);
                $isDuplicate = true;
            } else {
                return false;
            }
        } else {
            // Create if not duplicate
            $this->ID = wp_insert_post($post, true);
        }

        // Remove empty meta values from db
        $this->removeEmptyMeta($empty_meta_values, $this->ID);

        return $this->afterSave();
    }
public function save()
    {
        $this->beforeSave();

        // Arrays for holding save data
        $post = array();
        $meta = array();
        $post['post_status'] = $this->post_status;

        // Get the default class variables and set it's keys to forbiddenKeys
        $defaultData = get_class_vars(get_class($this));
        $forbiddenKeys = array_keys($defaultData);

        $data = array_filter(get_object_vars($this), function ($item) use ($forbiddenKeys) {
            return !in_array($item, $forbiddenKeys);
        }, ARRAY_FILTER_USE_KEY);

        // If data key is allowed post field add to $post else add to $meta
        foreach ($data as $key => $value) {
            if (in_array($key, $this->allowedPostFields)) {
                $post[$key] = $value;
                continue;
            }

            $meta[$key] = $value;
        }

        // Save empty meta to array
        $empty_meta_values = array_filter($meta, array($this, 'getEmptyValues'));

        // Do not include null values in meta
        $meta = array_filter($meta, array($this, 'removeEmpty'));

        $post['post_type'] = $this->post_type;
        $post['meta_input'] = $meta;

        // Check if duplicate by matching "_event_manager_id" meta value
        if (isset($meta['_event_manager_id'])) {
            $duplicate = self::get(
                1,
                array(
                    'relation' => 'AND',
                    array(
                        'key' => '_event_manager_id',
                        'value' => $meta['_event_manager_id'],
                        'compare' => '='
                    )
                ),
                $this->post_type
            );
        }

        // Update if duplicate
        if (isset($duplicate->ID)) {
            //Check if event needs to be updated
            if (get_post_meta($duplicate->ID, 'last_update', true) != $meta['last_update']) {
                $post['ID'] = $duplicate->ID;
                $this->ID = wp_update_post($post);
                $isDuplicate = true;
            } else {
                return false;
            }
        } else {
            // Create if not duplicate
            $this->ID = wp_insert_post($post, true);
        }

        // Remove empty meta values from db
        $this->removeEmptyMeta($empty_meta_values, $this->ID);

        return $this->afterSave();
    }
public function save ( ) { $ this -> beforeSave ( ) ; // Arrays for holding save data $ post = array ( ) ; $ meta = array ( ) ; $ post [ 'post_status' ] = $ this -> post_status ; // Get the default class variables and set it's keys to forbiddenKeys $ defaultData = get_class_vars ( get_class ( $ this ) ) ; $ forbiddenKeys = array_keys ( $ defaultData ) ; $ data = array_filter ( get_object_vars ( $ this ) , function ( $ item ) use ( $ forbiddenKeys ) { return ! in_array ( $ item , $ forbiddenKeys ) ; } , ARRAY_FILTER_USE_KEY ) ; // If data key is allowed post field add to $post else add to $meta foreach ( $ data as $ key => $ value ) { if ( in_array ( $ key , $ this -> allowedPostFields ) ) { $ post [ $ key ] = $ value ; continue ; } $ meta [ $ key ] = $ value ; } // Save empty meta to array $ empty_meta_values = array_filter ( $ meta , array ( $ this , 'getEmptyValues' ) ) ; // Do not include null values in meta $ meta = array_filter ( $ meta , array ( $ this , 'removeEmpty' ) ) ; $ post [ 'post_type' ] = $ this -> post_type ; $ post [ 'meta_input' ] = $ meta ; // Check if duplicate by matching "_event_manager_id" meta value if ( isset ( $ meta [ '_event_manager_id' ] ) ) { $ duplicate = self :: get ( 1 , array ( 'relation' => 'AND' , array ( 'key' => '_event_manager_id' , 'value' => $ meta [ '_event_manager_id' ] , 'compare' => '=' ) ) , $ this -> post_type ) ; } // Update if duplicate if ( isset ( $ duplicate -> ID ) ) { //Check if event needs to be updated if ( get_post_meta ( $ duplicate -> ID , 'last_update' , true ) != $ meta [ 'last_update' ] ) { $ post [ 'ID' ] = $ duplicate -> ID ; $ this -> ID = wp_update_post ( $ post ) ; $ isDuplicate = true ; } else { return false ; } } else { // Create if not duplicate $ this -> ID = wp_insert_post ( $ post , true ) ; } // Remove empty meta values from db $ this -> removeEmptyMeta ( $ empty_meta_values , $ this -> ID ) ; return $ this -> afterSave ( ) ; }
Saves the event and it's data
@return integer The inserted/updated post id
Saves the event and it s data