/**
 * Update a gig's venue and the gig count for any modified venues.
 *
 * @since 1.0.0
 */
function set_audiotheme_gig_venue($gig_id, $venue_name)
{
    $gig = get_audiotheme_gig($gig_id);
    // Retrieve current venue info.
    $venue_name = trim(stripslashes($venue_name));
    if (empty($venue_name)) {
        p2p_delete_connections('audiotheme_venue_to_gig', array('to' => $gig_id));
    } elseif (!isset($gig->venue->name) || $venue_name !== $gig->venue->name) {
        p2p_delete_connections('audiotheme_venue_to_gig', array('to' => $gig_id));
        $new_venue = get_audiotheme_venue_by('name', $venue_name);
        if (!$new_venue) {
            $new_venue = array('name' => $venue_name, 'gig_count' => 1);
            // Timezone is important, so retrieve it from the global $_POST array if it exists.
            if (!empty($_POST['audiotheme_venue']['timezone_string'])) {
                $new_venue['timezone_string'] = $_POST['audiotheme_venue']['timezone_string'];
            }
            $venue_id = save_audiotheme_venue($new_venue);
            if ($venue_id) {
                p2p_create_connection('audiotheme_venue_to_gig', array('from' => $venue_id, 'to' => $gig_id));
            }
        } else {
            $venue_id = $new_venue->ID;
            p2p_create_connection('audiotheme_venue_to_gig', array('from' => $new_venue->ID, 'to' => $gig_id));
            update_audiotheme_venue_gig_count($new_venue->ID);
        }
    }
    if (isset($gig->venue->ID)) {
        $venue_id = $gig->venue->ID;
        update_audiotheme_venue_gig_count($venue_id);
    }
    return empty($venue_id) ? false : get_audiotheme_venue($venue_id);
}
Exemple #2
0
/**
 * Process venue add/edit actions.
 *
 * @since 1.0.0
 */
function audiotheme_venue_edit_screen_process_actions()
{
    $action = '';
    if (isset($_POST['audiotheme_venue']) && isset($_POST['audiotheme_venue_nonce'])) {
        $data = $_POST['audiotheme_venue'];
        $nonce_action = empty($data['ID']) ? 'add-venue' : 'update-venue_' . $data['ID'];
        // Should die on error.
        if (check_admin_referer($nonce_action, 'audiotheme_venue_nonce')) {
            $action = !empty($data['ID']) ? 'edit' : 'add';
        }
    }
    if (!empty($action)) {
        $venue_id = save_audiotheme_venue($data);
        $sendback = get_edit_post_link($venue_id);
        if ($venue_id && 'add' === $action) {
            $sendback = add_query_arg('message', 1, $sendback);
        } elseif ($venue_id && 'edit' === $action) {
            $sendback = add_query_arg('message', 2, $sendback);
        }
        wp_safe_redirect(esc_url_raw($sendback));
        exit;
    }
}
 /**
  * Process actions.
  *
  * @since 1.0.0
  * @see wp-admin/edit.php
  */
 function process_actions()
 {
     global $wpdb;
     $action = '';
     $current_user = wp_get_current_user();
     $post_type_object = get_post_type_object('audiotheme_venue');
     $sendback = remove_query_arg(array('deleted', 'ids', 'message', 'venue_id'), wp_get_referer());
     if (!$sendback) {
         $sendback = get_audiotheme_venues_admin_url();
     }
     $sendback = add_query_arg('paged', $this->get_pagenum(), $sendback);
     if (isset($_POST['audiotheme_venue']) && isset($_POST['audiotheme_venue_nonce'])) {
         $data = $_POST['audiotheme_venue'];
         $nonce_action = empty($data['ID']) ? 'add-venue' : 'update-venue_' . $data['ID'];
         // Should die on error.
         if (check_admin_referer($nonce_action, 'audiotheme_venue_nonce')) {
             $action = !empty($data['ID']) ? 'edit' : 'add';
         }
     } elseif (isset($_REQUEST['action']) && 'delete' === $_REQUEST['action'] && !empty($_REQUEST['venue_id'])) {
         $post_ids = array(absint($_REQUEST['venue_id']));
         if (wp_verify_nonce($_REQUEST['_wpnonce'], 'delete-venue_' . $post_ids[0])) {
             $action = 'delete';
             $sendback = get_audiotheme_venues_admin_url();
         }
     } elseif (!empty($_REQUEST['ids'])) {
         $post_ids = is_array($_REQUEST['ids']) ? $_REQUEST['ids'] : explode(',', $_REQUEST['ids']);
         $post_ids = array_map('absint', $post_ids);
         if (check_admin_referer('bulk-' . $this->_args['plural'])) {
             $action = $this->current_action();
         }
     }
     if (!empty($action)) {
         switch ($action) {
             case 'add':
             case 'edit':
                 $venue_id = save_audiotheme_venue($data);
                 if ($venue_id && 'add' === $action) {
                     $sendback = add_query_arg('message', 1, $sendback);
                 } elseif ($venue_id && 'edit' === $action) {
                     $sendback = add_query_arg('updated', 1, $sendback);
                 }
                 break;
             case 'delete':
                 $deleted = 0;
                 foreach ($post_ids as $post_id) {
                     if (!current_user_can($post_type_object->cap->delete_post, $post_id)) {
                         wp_die(__('You are not allowed to delete this item.', 'audiotheme'));
                     }
                     if (!wp_delete_post($post_id)) {
                         wp_die(__('Error in deleting…', 'audiotheme'));
                     }
                     $deleted++;
                 }
                 $sendback = add_query_arg('deleted', $deleted, $sendback);
                 break;
             default:
                 break;
         }
         $sendback = remove_query_arg(array('action', 'action2'), $sendback);
         wp_safe_redirect(esc_url_raw($sendback));
         exit;
     }
     if (!empty($_REQUEST['_wp_http_referer'])) {
         $redirect = remove_query_arg(array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']));
         wp_safe_redirect(esc_url_raw($redirect));
         exit;
     }
 }