function json_save_media() { global $wpdb; $defaults = array('_method' => 'create', 'type' => 'image', 'description' => '', 'attachment_id' => '', 'embed' => '', 'featured' => 0, 'published' => 1); if (isset($_POST['test'])) { // Temp workaround for mysterious issue if ($_POST['test'] == '\\"') { foreach ($_POST as $key => $value) { $_POST[$key] = stripslashes($value); } } } $args = array_merge($defaults, $_POST); $nonce = isset($_GET['nonce']) ? $_GET['nonce'] : ''; if (!wp_verify_nonce($nonce, 'portfolio_media_nonce')) { echo 'Error: permission denied'; die(1); } // create new if ($args['_method'] == 'create') { $media_item = PortfolioMedia::create($this->post_id); if ($media_item->exists()) { $media_item->meta_type = $args['type']; $media_item->meta_attachment_id = $args['attachment_id']; /** * Set menu order to current page's ID, it will be the highest * for the newest post. */ $media_item->menu_order = $media_item->post->ID; echo json_encode($media_item->save()->to_array()); die(0); } echo 'Error: unable to create media file.'; die(1); } // update existing if ($args['_method'] == 'update' && is_numeric($_GET['id'])) { $media_item = new PortfolioMedia($args['id']); if ($media_item->exists()) { /** * If `featured` attribute has changed, * then let's remove it from any other media item. */ if ($args['featured'] != $media_item->meta_featured) { // Remove featured from every other object. foreach (PortfolioMedia::all($this->post_id) as $item) { if ($item->post->ID != $args['id']) { $item->meta_featured = 0; $item->save(); } } } $media_item->meta_description = $args['description']; $media_item->meta_attachment_id = $args['attachment_id']; $media_item->meta_screenshot_id = $args['screenshot_id']; $media_item->meta_embed = $args['embed']; $media_item->meta_featured = $args['featured']; $media_item->meta_published = $args['published']; $media_item->post->menu_order = $args['order']; $media_item->save(); echo json_encode($media_item->to_array()); //echo '0'; die(0); } else { echo 'Error: media item with ID ' . $args['id'] . ' cannot be found.'; die(1); } } // delete record if ($args['_method'] == 'delete' && is_numeric($_GET['id'])) { $media_item = new PortfolioMedia($_GET['id'], $this->post_id); $media_item->delete(); echo '0'; die(0); } die('1'); }
function get_media() { return PortfolioMedia::all($this->post_id); }