0 ) { $er = $wpdb->get_row( 'SELECT COUNT(id) as extras FROM '.$wpdb->prefix.'abc_extras', ARRAY_A ); $extras = $er["extras"]; if( $extras < 2 ) { $name = sanitize_text_field($_POST["name"]); $explanation = sanitize_text_field($_POST["explanation"]); $calculation = sanitize_text_field($_POST["calculation"]); $mandatory = sanitize_text_field($_POST["mandatory"]); $price = sanitize_text_field($_POST["price"]); $persons = intval($_POST["persons"]); $order = intval( $_POST["order"] ); $wpdb->insert( $wpdb->prefix.'abc_extras', array( 'name' => $name, 'explanation' => $explanation, 'calculation' => $calculation, 'mandatory' => $mandatory, 'price' => $price, 'persons' => $persons, 'order' => $order )); if($extras == 0 && strtotime(getAbcSetting('installdate')) < strtotime('2016-07-10')){ $extraLimit = '&setting=extraNew'; } } else { $extraLimit = "&setting=extraLimit"; } } wp_redirect( admin_url( "admin.php?page=advanced-booking-calendar-show-extras".$extraLimit ) ); exit; } //==>addExtra() add_action( 'admin_post_abc_booking_addExtra', 'abc_booking_addExtra' ); // Edit season function abc_booking_editExtra() { global $wpdb; if( !current_user_can( abc_booking_admin_capabilities() ) ) { wp_die("You don't have access to this page."); } if( isset($_POST["id"]) && isset($_POST["name"]) && isset($_POST["mandatory"]) && isset($_POST["calculation"]) && isset($_POST["price"]) && intval($_POST["persons"]) > 0 ) { $name = sanitize_text_field($_POST["name"]); $explanation = sanitize_text_field($_POST["explanation"]); $calculation = sanitize_text_field($_POST["calculation"]); $mandatory = sanitize_text_field($_POST["mandatory"]); $price = sanitize_text_field($_POST["price"]); $persons = intval($_POST["persons"]); $order = intval($_POST["order"]); $wpdb->update($wpdb->prefix.'abc_extras', array( 'name' => $name, 'explanation' => $explanation, 'calculation' => $calculation, 'mandatory' => $mandatory, 'price' => $price, 'persons' => $persons, 'order' => $order), array('id' => intval($_POST["id"]))); } wp_redirect( admin_url("admin.php?page=advanced-booking-calendar-show-extras&setting=changeSaved") ); exit; } //==>editExtra() add_action( 'admin_post_abc_booking_editExtra', 'abc_booking_editExtra' ); // Delete Extra function abc_booking_delExtra() { global $wpdb; if ( !current_user_can( abc_booking_admin_capabilities() ) ) { wp_die("You don't have access to this page."); } if( isset($_POST["id"]) ) { $wpdb->delete($wpdb->prefix.'abc_extras', array('id' => intval($_POST["id"]))); $wpdb->delete($wpdb->prefix.'abc_booking_extras', array('extra_id' => intval($_POST["id"]))); wp_redirect( admin_url( "admin.php?page=advanced-booking-calendar-show-extras&setting=extraDeleted" ) ); } exit; } //==>delExtra() add_action( 'admin_post_abc_booking_delExtra', 'abc_booking_delExtra' ); // Order Extra function abc_booking_orderExtra() { global $wpdb; if ( !current_user_can( abc_booking_admin_capabilities() ) ) { wp_die("You don't have access to this page."); } if( !empty($_POST['extraid']) && is_array($_POST['extraid']) ) { foreach( $_POST['extraid'] as $order => $extraid ) { $wpdb->update($wpdb->prefix.'abc_extras', array( 'order' => intval( $order + 1 ) ), array( 'id' => intval($extraid)) ); } } $redirect = add_query_arg( array( 'page' => 'advanced-booking-calendar-show-extras', 'setting' => 'extraOrdered', ), admin_url('admin.php') ); wp_safe_redirect( $redirect ); exit; } add_action( 'admin_post_abc_booking_orderExtra', 'abc_booking_orderExtra' ); // Output to backend function advanced_booking_calendar_show_extras() { if (!current_user_can(abc_booking_admin_capabilities())) { wp_die("You don't have access to this page."); } global $wpdb, $abcUrl; wp_enqueue_script('uikit-js', $abcUrl.'backend/js/uikit.min.js', array('jquery')); wp_enqueue_style('uikit', $abcUrl.'/frontend/css/uikit.gradient.min.css'); $notices = ''; if(isset($_GET["setting"]) ){ switch($_GET["setting"]){ case 'extraLimit': $notices .= '

'.__('Extras are limited to 2 in the free version! If you need more extras, please download our Pro-Version.', 'advanced-booking-calendar' ).'

'; break; case 'extraAdded': $notices .= '

'.__('Extra has been added.', 'advanced-booking-calendar' ).'

'; break; case 'extraNew': $notices .= '

'.__('Extra has been added.', 'advanced-booking-calendar' ).'
' .__('Make sure to add the placeholdes for extras in your email settings', 'advanced-booking-calendar' ).': '.__('Email Settings', 'advanced-booking-calendar').'

'; break; case 'changeSaved': $notices .= '

'.__('Change has been saved.', 'advanced-booking-calendar' ).'

'; break; case 'extraOrdered': $notices .= '

'.__('Extras have been ordered.', 'advanced-booking-calendar' ).'

'; break; } } $output = '

'.__('Extras', 'advanced-booking-calendar').'

'.$notices.''; if( isset($_GET["action"]) && $_GET["action"] == "abc_booking_editExtra" && intval($_GET["id"]) > 0 ) { // Does the ID exist? $row = $wpdb->get_row( "SELECT COUNT(*) as co FROM ".$wpdb->prefix."abc_extras WHERE id = '".intval($_GET["id"])."'", ARRAY_A ); if($row["co"] == 0) { // ID doesn't exist wp_die( "Error! Unknown id
Please go back" ); } else { //ID exists $row = $wpdb->get_results( "SELECT * FROM ".$wpdb->prefix."abc_extras WHERE id = '".intval($_GET["id"])."'", ARRAY_A ); $mandatoryYes = ''; $mandatoryNo = ''; switch($row[0]["mandatory"]){ case 'yes': $mandatoryYes = 'checked'; break; case 'no': $mandatoryNo = 'checked'; break; } $calculationNight = ''; $calculationDay = ''; $calculationOnce = ''; $calculationPerson = ''; $calculationPersonNight = ''; $calculationPersonDay = ''; switch( $row[0]["calculation"] ) { case 'night': $calculationNight = 'selected'; break; case 'day': $calculationDay = 'selected'; break; case 'once': $calculationOnce = 'selected'; break; case 'person': $calculationPerson = 'selected'; break; case 'personNight': $calculationPersonNight = 'selected'; break; case 'personDay': $calculationPersonDay = 'selected'; break; } $output .= '

'.__('Edit an Extra', 'advanced-booking-calendar').'

'.__('The name will be shown in the booking form.', 'advanced-booking-calendar').'

'.__('Explain what the extra is for.', 'advanced-booking-calendar').'

'.__('Define how the price of the extra is getting charged.', 'advanced-booking-calendar').'

'.__('Mandatory extra', 'advanced-booking-calendar').'

'.__('You can make an extra mandatory, so every guest has to pay for it (eg. final cleaning).', 'advanced-booking-calendar').'

'.__('Enter the price you want to charge for the extra.', 'advanced-booking-calendar').'

'.__('Enter the number of persons in a booking request to activate this extra. For example, if you enter "4", the extra will be shown for 4 or more persons.', 'advanced-booking-calendar').'

'.__('Enter the position of the extra it should appear in. For example 1 for the first position.', 'advanced-booking-calendar').'


' ; } } elseif( isset($_GET["action"]) && $_GET["action"] == "abc_sort_extras" ) { $extras = ''; $query = "SELECT * FROM ".$wpdb->prefix."abc_extras ORDER BY `order` ASC, `id` DESC"; $er = $wpdb->get_results( $query, ARRAY_A ); wp_enqueue_style('abc-adminstyle', $abcUrl.'/backend/css/admin.css'); wp_enqueue_script( 'jquery-ui-sortable' ); wp_enqueue_script( 'abc-admin', $abcUrl.'backend/js/abc-admin.js', array('jquery') ); $foreachcount = 1; foreach( $er as $row ) { if( $foreachcount%2 == 1 ) { $class = 'class="alternate"'; } else { $class = ''; } $mandatory = ''; switch( $row["mandatory"] ){ case 'yes': $mandatory = __( 'Yes', 'advanced-booking-calendar' ); break; case 'no': $mandatory = __( 'No', 'advanced-booking-calendar' ); break; } $calculation = ''; switch($row["calculation"]){ case 'night': $calculation = __('per night', 'advanced-booking-calendar'); break; case 'day': $calculation = __('per day', 'advanced-booking-calendar'); break; case 'once': $calculation = __('once (no matter how many persons)', 'advanced-booking-calendar'); break; case 'person': $calculation = __('per person (once)', 'advanced-booking-calendar'); break; case 'personNight': $calculation = __('per person per night', 'advanced-booking-calendar'); break; case 'personDay': $calculation = __('per person per day', 'advanced-booking-calendar'); break; } $extras .= ' ' .esc_html( $row["order"] ). ' '.esc_html( $row["name"] ).' '.esc_html( $row["explanation"] ).' '.$calculation.' '.$mandatory.' '.abc_booking_formatPrice(esc_html($row["price"])).' '.intval($row["persons"]).' '; $foreachcount++; } $output .= '

'.__('Order Extras', 'advanced-booking-calendar').'

'.$extras.'
'.__('Order', 'advanced-booking-calendar').' '.__('Name', 'advanced-booking-calendar').' '.__('Explanation', 'advanced-booking-calendar').' '.__('Type of calculation', 'advanced-booking-calendar').' '.__('Mandatory', 'advanced-booking-calendar').' '.__('Price', 'advanced-booking-calendar').' '.__('Persons', 'advanced-booking-calendar').'


'.__('Do you want to promote your business using discount codes?', 'advanced-booking-calendar').' '.__('Or do you want to limit an extra to a calendar?', 'advanced-booking-calendar').'
'.__('Take a look at our Pro Version!', 'advanced-booking-calendar').'
'.__('Use discount code BASICUPGRADE to save 10€.', 'advanced-booking-calendar').'

'; } else { $extras = ''; $query = "SELECT * FROM ".$wpdb->prefix."abc_extras ORDER BY `order` ASC, `id` DESC"; $er = $wpdb->get_results( $query, ARRAY_A ); $maxOrder = 1; $foreachcount = 1; foreach( $er as $row ) { if( $maxOrder <= $row["order"] ) $maxOrder = $row["order"]+1; if( $foreachcount%2 == 1 ) { $class = 'class="alternate"'; } else { $class = ''; } $mandatory = ''; switch( $row["mandatory"] ){ case 'yes': $mandatory = __( 'Yes', 'advanced-booking-calendar' ); break; case 'no': $mandatory = __( 'No', 'advanced-booking-calendar' ); break; } $calculation = ''; switch($row["calculation"]){ case 'night': $calculation = __('per night', 'advanced-booking-calendar'); break; case 'day': $calculation = __('per day', 'advanced-booking-calendar'); break; case 'once': $calculation = __('once (no matter how many persons)', 'advanced-booking-calendar'); break; case 'person': $calculation = __('per person (once)', 'advanced-booking-calendar'); break; case 'personNight': $calculation = __('per person per night', 'advanced-booking-calendar'); break; case 'personDay': $calculation = __('per person per day', 'advanced-booking-calendar'); break; } $extras .= ' '.esc_html($row["order"]).' '.esc_html($row["name"]).' '.esc_html($row["explanation"]).' '.$calculation.' '.$mandatory.' '.abc_booking_formatPrice(esc_html($row["price"])).' '.intval($row["persons"]).'
'; $foreachcount++; } $sortURL = add_query_arg( array( 'page' => 'advanced-booking-calendar-show-extras', 'action' => 'abc_sort_extras', ), admin_url('admin.php') ); $output .= '

' .__('Existing Extras', 'advanced-booking-calendar'). '   '.__( 'Sort Extras', 'advanced-booking-calendar' ).'

'.$extras.'
'.__('Order', 'advanced-booking-calendar').' '.__('Name', 'advanced-booking-calendar').' '.__('Explanation', 'advanced-booking-calendar').' '.__('Type of calculation', 'advanced-booking-calendar').' '.__('Mandatory', 'advanced-booking-calendar').' '.__('Price', 'advanced-booking-calendar').' '.__('Persons', 'advanced-booking-calendar').'

'.__('Add new Extra', 'advanced-booking-calendar').'

'.__('The name will be shown in the booking form.', 'advanced-booking-calendar').'

'.__('Explain what the extra is for.', 'advanced-booking-calendar').'

'.__('Define how the price of the extra is getting charged.', 'advanced-booking-calendar').'

'.__('Mandatory extra', 'advanced-booking-calendar').'

'.__('You can make an extra mandatory, so every guest has to pay for it (eg. final cleaning).', 'advanced-booking-calendar').'

'.__('Enter the price you want to charge for the extra.', 'advanced-booking-calendar').'

'.__('Enter the number of persons in a booking request to activate this extra. For example, if you enter "4", the extra will be shown for 4 or more persons.', 'advanced-booking-calendar').'

'.__('Enter the position of the extra it should appear in. For example 1 for the first position.', 'advanced-booking-calendar').'



'.__('Do you want to promote your business using discount codes?', 'advanced-booking-calendar').' '.__('Or do you want to limit an extra to a calendar?', 'advanced-booking-calendar').'
'.__('Take a look at our Pro Version!', 'advanced-booking-calendar').'
'.__('Use discount code BASICUPGRADE to save 10€.', 'advanced-booking-calendar').'

'; } $output .= '
'; echo $output; // id // name // explanation // calculation: night, day, person, once, per night per person // price }