@@ -228,15 +228,19 @@ function handle_admin_action() {
228228 $ ad_code_vals = array (
229229 'priority ' => $ priority ,
230230 );
231- foreach ( $ this ->current_provider ->columns as $ slug => $ title ) {
232- $ ad_code_vals [$ slug ] = sanitize_text_field ( $ _REQUEST ['acm-column ' ][$ slug ] );
231+ foreach ( $ this ->current_provider ->ad_code_args as $ arg ) {
232+ $ ad_code_vals [$ arg [ ' key ' ]] = sanitize_text_field ( $ _REQUEST ['acm-column ' ][$ arg [ ' key ' ] ] );
233233 }
234234 if ( $ _REQUEST ['method ' ] == 'add ' )
235235 $ id = $ this ->create_ad_code ( $ ad_code_vals );
236236 else
237237 $ id = $ this ->edit_ad_code ( $ id , $ ad_code_vals );
238238 if ( is_wp_error ( $ id ) ) {
239- $ message = 'error-adding-editing-ad-code ' ;
239+ // We can die with an error if this is an edit/ajax request
240+ if ( isset ( $ id ->errors ['edit-error ' ][0 ] ) )
241+ die ( '<div class="error"> ' . $ id ->errors ['edit-error ' ][0 ] . '</div> ' );
242+ else
243+ $ message = 'error-adding-editing-ad-code ' ;
240244 break ;
241245 }
242246 $ new_conditionals = array ();
@@ -323,8 +327,8 @@ function get_ad_codes( $query_args = array() ) {
323327 foreach ( $ ad_codes as $ ad_code_cpt ) {
324328 $ provider_url_vars = array ();
325329
326- foreach ( $ this ->current_provider ->columns as $ slug => $ title ) {
327- $ provider_url_vars [$ slug ] = get_post_meta ( $ ad_code_cpt ->ID , $ slug , true );
330+ foreach ( $ this ->current_provider ->ad_code_args as $ arg ) {
331+ $ provider_url_vars [$ arg [ ' key ' ]] = get_post_meta ( $ ad_code_cpt ->ID , $ arg [ ' key ' ] , true );
328332 }
329333
330334 $ priority = get_post_meta ( $ ad_code_cpt ->ID , 'priority ' , true );
@@ -355,8 +359,8 @@ function get_ad_code( $post_id ) {
355359 return false ;
356360
357361 $ provider_url_vars = array ();
358- foreach ( $ this ->current_provider ->columns as $ slug => $ title ) {
359- $ provider_url_vars [$ slug ] = get_post_meta ( $ post ->ID , $ slug , true );
362+ foreach ( $ this ->current_provider ->ad_code_args as $ arg ) {
363+ $ provider_url_vars [$ arg [ ' key ' ]] = get_post_meta ( $ post ->ID , $ arg [ ' key ' ] , true );
360364 }
361365
362366 $ priority = get_post_meta ( $ post_id , 'priority ' , true );
@@ -401,13 +405,13 @@ function get_conditionals( $ad_code_id ) {
401405 */
402406 function create_ad_code ( $ ad_code = array () ) {
403407 $ titles = array ();
404- foreach ( $ this ->current_provider ->columns as $ slug => $ col_title ) {
408+ foreach ( $ this ->current_provider ->ad_code_args as $ arg ) {
405409 // We shouldn't create an ad code,
406410 // If any of required fields is not set
407- if ( ! $ ad_code [$ slug ] ) {
408- return ;
411+ if ( ! isset ( $ ad_code [$ arg [ ' key ' ]] ) && $ arg [ ' required ' ] === true ) {
412+ return new WP_Error () ;
409413 }
410- $ titles [] = $ ad_code [$ slug ];
414+ $ titles [] = $ ad_code [$ arg [ ' key ' ] ];
411415 }
412416 $ acm_post = array (
413417 'post_title ' => implode ( '- ' , $ titles ),
@@ -418,8 +422,8 @@ function create_ad_code( $ad_code = array() ) {
418422 );
419423
420424 if ( ! is_wp_error ( $ acm_inserted_post_id = wp_insert_post ( $ acm_post , true ) ) ) {
421- foreach ( $ this ->current_provider ->columns as $ slug => $ title ) {
422- update_post_meta ( $ acm_inserted_post_id , $ slug , $ ad_code [$ slug ] );
425+ foreach ( $ this ->current_provider ->ad_code_args as $ arg ) {
426+ update_post_meta ( $ acm_inserted_post_id , $ arg [ ' key ' ] , $ ad_code [$ arg [ ' key ' ] ] );
423427 }
424428 update_post_meta ( $ acm_inserted_post_id , 'priority ' , $ ad_code ['priority ' ] );
425429 $ this ->flush_cache ();
@@ -432,16 +436,15 @@ function create_ad_code( $ad_code = array() ) {
432436 * Update an existing ad code
433437 */
434438 function edit_ad_code ( $ ad_code_id , $ ad_code = array ()) {
435- foreach ( $ this ->current_provider ->columns as $ slug => $ title ) {
436- // We shouldn't update an ad code,
437- // If any of required fields is not set
438- if ( ! $ ad_code [$ slug ] ) {
439- return new WP_Error ();
439+ foreach ( $ this ->current_provider ->ad_code_args as $ arg ) {
440+ // If a required argument is not set, we return an error message with the missing parameter
441+ if ( ! isset ( $ ad_code [$ arg ['key ' ]] ) && $ arg ['required ' ] === true ) {
442+ return new WP_Error ( 'edit-error ' , 'Error updating ad code, a parameter for ' . esc_html ( $ arg ['key ' ] ) . ' is required. ' );
440443 }
441444 }
442445 if ( 0 !== $ ad_code_id ) {
443- foreach ( $ this ->current_provider ->columns as $ slug => $ title ) {
444- update_post_meta ( $ ad_code_id , $ slug , $ ad_code [$ slug ] );
446+ foreach ( $ this ->current_provider ->ad_code_args as $ arg ) {
447+ update_post_meta ( $ ad_code_id , $ arg [ ' key ' ] , $ ad_code [$ arg [ ' key ' ] ] );
445448 }
446449 update_post_meta ( $ ad_code_id , 'priority ' , $ ad_code ['priority ' ] );
447450 }
0 commit comments