get_row('SELECT SUM(maxAvailabilities) as rooms FROM '.$wpdb->prefix.'advanced_booking_calendar_calendars', ARRAY_A); $rooms = $er["rooms"]; $maxAvailabilities = intval($_POST["maxAvailabilities"]); if($rooms + $maxAvailabilities <= 15){ $name = sanitize_text_field($_POST["name"]); $maxUnits = intval($_POST["maxUnits"]); $pricePreset = sanitize_text_field($_POST["pricePreset"]); $infoPage = intval($_POST["page_id"]); $infoText = implode( "\n", array_map( 'sanitize_text_field', explode( "\n", $_POST["infotext"]) ) ); $wpdb->insert( $wpdb->prefix.'advanced_booking_calendar_calendars', array('name' => $name, 'maxUnits' => $maxUnits, 'maxAvailabilities' => $maxAvailabilities, 'pricePreset' => $pricePreset, 'infoPage' => $infoPage, 'infoText' => $infoText )); $calendarId = $wpdb->insert_id; for ($i =1; $i <= $maxAvailabilities; $i++) { $name = $name.'-'.$i; $wpdb->insert( $wpdb->prefix.'advanced_booking_calendar_rooms', array( 'calendar_id' => $calendarId, 'name' => $name )); } } else { $roomLimit = "&setting=roomLimit"; } } wp_redirect( admin_url( "admin.php?page=advanced-booking-calendar-show-seasons-calendars".$roomLimit ) ); exit; } //==>addCalendar() add_action( 'admin_post_abc_booking_addCalendar', 'abc_booking_addCalendar' ); // Edit Calendar after update via form function abc_booking_editCalendar() { global $wpdb; if ( !current_user_can( 'manage_options' ) ) { wp_die("Go away"); } $roomLimit = ''; if ( isset($_POST["id"]) && isset($_POST["name"]) && isset($_POST["maxAvailabilities"]) && isset($_POST["maxUnits"]) && isset($_POST["page_id"])) { $er = $wpdb->get_row('SELECT SUM(maxAvailabilities) as rooms FROM '.$wpdb->prefix.'advanced_booking_calendar_calendars', ARRAY_A); $rooms = $er["rooms"]; $er = $wpdb->get_row('SELECT maxAvailabilities FROM '.$wpdb->prefix.'advanced_booking_calendar_calendars WHERE id = '.$_POST["id"], ARRAY_A); $rooms -= $er["maxAvailabilities"]; $maxAvailabilities = intval($_POST["maxAvailabilities"]); if($rooms + $maxAvailabilities <= 15){ $name = sanitize_text_field($_POST["name"]); $maxUnits = intval($_POST["maxUnits"]); $pricePreset = sanitize_text_field($_POST["pricePreset"]); $infoPage = intval($_POST["page_id"]); $infoText = implode( "\n", array_map( 'sanitize_text_field', explode( "\n", $_POST["infotext"]) ) ); $wpdb->update($wpdb->prefix.'advanced_booking_calendar_calendars', array('name' => $name, 'maxUnits' => $maxUnits, 'maxAvailabilities' => $maxAvailabilities, 'pricePreset' => $pricePreset, 'infoPage' => $infoPage, 'infoText' => $infoText ), array('id' => intval($_POST["id"]))); } else { $roomLimit = "&setting=roomLimit"; } } wp_redirect( admin_url( "admin.php?page=advanced-booking-calendar-show-seasons-calendars".$roomLimit ) ); exit; } //==>editCalendar() add_action( 'admin_post_abc_booking_editCalendar', 'abc_booking_editCalendar' ); // Delete Calendar function abc_booking_delCalendar() { global $wpdb; if ( !current_user_can( 'manage_options' ) ) { wp_die("Go away"); } if ( isset($_POST["id"]) ) { $wpdb->delete($wpdb->prefix.'advanced_booking_calendar_calendars', array('id' => intval($_POST["id"]))); $wpdb->delete($wpdb->prefix.'advanced_booking_calendar_rooms', array('calendar_id' => intval($_POST["id"]))); } wp_redirect( admin_url( "admin.php?page=advanced-booking-calendar-show-seasons-calendars" ) ); exit; } //==>delCalendar() add_action( 'admin_post_abc_booking_delCalendar', 'abc_booking_delCalendar' ); // Add season to DB function abc_booking_addSeason() { global $wpdb; if ( !current_user_can( 'manage_options' ) ) { wp_die("Go away"); } if ( isset($_POST["title"]) && isset($_POST["price"]) ) { $wpdb->insert( $wpdb->prefix.'advanced_booking_calendar_seasons', array('title' => sanitize_text_field($_POST["title"]), 'price' => sanitize_text_field($_POST["price"]), 'lastminute' => 0)); } wp_redirect( admin_url( "admin.php?page=advanced-booking-calendar-show-seasons-calendars" ) ); exit; } //==>addSeason() add_action( 'admin_post_abc_booking_addSeason', 'abc_booking_addSeason' ); // Edit season function abc_booking_editSeason() { global $wpdb; if ( !current_user_can( 'manage_options' ) ) { wp_die("Go away"); } if ( isset($_POST["id"]) && isset($_POST["title"]) && isset($_POST["price"])) { $wpdb->update($wpdb->prefix.'advanced_booking_calendar_seasons', array('title' => sanitize_text_field($_POST["title"]), 'price' => sanitize_text_field($_POST["price"])), array('id' => sanitize_text_field($_POST["id"]))); } wp_redirect( admin_url( "admin.php?page=advanced-booking-calendar-show-seasons-calendars" ) ); exit; } //==>editSeason() add_action( 'admin_post_abc_booking_editSeason', 'abc_booking_editSeason' ); // Delete season function abc_booking_delSeason() { global $wpdb; if ( !current_user_can( 'manage_options' ) ) { wp_die("Go away"); } if ( isset($_POST["id"]) ) { $wpdb->delete($wpdb->prefix.'advanced_booking_calendar_seasons', array('id' => sanitize_text_field($_POST["id"]))); } wp_redirect( admin_url( "admin.php?page=advanced-booking-calendar-show-seasons-calendars" ) ); exit; } //==>delSeasons() add_action( 'admin_post_abc_booking_delSeason', 'abc_booking_delSeason' ); // Edit room names function abc_booking_editRoomNames() { global $wpdb; if ( !current_user_can( 'manage_options' ) ) { wp_die("Go away"); } if ( isset($_POST["name-0"]) && isset($_POST["calendarId"])) { $er = $wpdb->get_row('SELECT * FROM '.$wpdb->prefix.'advanced_booking_calendar_calendars WHERE id = '.intval($_POST["calendarId"]), ARRAY_A); $maxAvailabilities = $er["maxAvailabilities"]; for ($i = 0; $i <= ($maxAvailabilities-1); $i++){ $wpdb->update($wpdb->prefix.'advanced_booking_calendar_rooms', array('name' => sanitize_text_field($_POST["name-".$i])), array('id' => sanitize_text_field($_POST["id-".$i] ))); } } wp_redirect( admin_url( "admin.php?page=advanced-booking-calendar-show-seasons-calendars" ) ); exit; } //==>editSeason() add_action( 'admin_post_abc_booking_editRoomNames', 'abc_booking_editRoomNames' ); // Adding assignment function abc_booking_addSeasonAssignment() { global $wpdb; if (!current_user_can('manage_options')) { wp_die("Go away"); } if (isset($_POST["calendar"]) && isset($_POST["season"]) && isset($_POST["dateStart"]) && isset($_POST["dateEnd"])) { // Check if end date later as start date if($_POST["dateStart"] > $_POST["dateEnd"]) { wp_die("End Date > Start Date", "Seasons assignment", array('back_link' => true)); } //check if dates overlap somehow $query = "SELECT COUNT(*) as co FROM ".$wpdb->prefix."advanced_booking_calendar_seasons_assignment WHERE calendar_id = '".sanitize_text_field($_POST["calendar"])."' AND (start < '".abc_booking_formatDateToDB($_POST["dateEnd"])."' AND end > '".abc_booking_formatDateToDB($_POST["dateStart"])."')"; $row = $wpdb->get_results($query, ARRAY_A); if($row[0]["co"] > 0) { wp_die("Overlap", "Seasons assignment", array('back_link' => true)); } $wpdb->insert( $wpdb->prefix.'advanced_booking_calendar_seasons_assignment', array('calendar_id' => sanitize_text_field($_POST["calendar"]), 'season_id' => sanitize_text_field($_POST["season"]), 'start' => abc_booking_formatDateToDB($_POST["dateStart"]), 'end' => abc_booking_formatDateToDB($_POST["dateEnd"]) )); } wp_redirect(admin_url("admin.php?page=advanced-booking-calendar-show-seasons-calendars")); exit; } //==>addSeasonAssignment() add_action('admin_post_abc_booking_addSeasonAssignment', 'abc_booking_addSeasonAssignment'); // Edit Assignment function abc_booking_editSeasonAssignment() { global $wpdb; if (!current_user_can('manage_options')) { wp_die("Go away"); } // Check if start end is larger than end date if($_POST["dateStart"] > $_POST["dateEnd"]) { wp_die("End Date < Start Date", "Seasons assignment", array('back_link' => true)); } if ( isset($_POST["id"]) && isset($_POST["calendar"]) && isset($_POST["season"]) && isset($_POST["dateStart"]) && isset($_POST["dateEnd"])) { // Check if dates overlap $row = $wpdb->get_results("SELECT COUNT(*) as co FROM ".$wpdb->prefix."advanced_booking_calendar_seasons_assignment WHERE calendar_id = '".sanitize_text_field($_POST["calendar"])."' AND (start < '".abc_booking_formatDateToDB($_POST["dateEnd"])."' AND end > '".abc_booking_formatDateToDB($_POST["dateStart"])."')", ARRAY_A); if($row[0]["co"] > 0) { wp_die("Overlap", "Seasons assignment", array('back_link' => true)); } $wpdb->update($wpdb->prefix.'advanced_booking_calendar_seasons_assignment', array('calendar_id' => sanitize_text_field($_POST["calendar"]), 'season_id' => intval($_POST["season"]), 'start' => abc_booking_formatDateToDB($_POST["dateStart"]), 'end' => abc_booking_formatDateToDB($_POST["dateEnd"]) ), array('id' => intval($_POST["id"]))); } wp_redirect( admin_url( "admin.php?page=advanced-booking-calendar-show-seasons-calendars" ) ); exit; } //==>editSeason() add_action( 'admin_post_abc_booking_editSeasonAssignment', 'abc_booking_editSeasonAssignment' ); // Delete Assignment function abc_booking_delSeasonAssignment() { global $wpdb; if (!current_user_can( 'manage_options')) { wp_die("Go away"); } if (isset($_POST["id"])) { $wpdb->delete($wpdb->prefix.'advanced_booking_calendar_seasons_assignment', array('id' => intval($_POST["id"]))); } wp_redirect(admin_url("admin.php?page=advanced-booking-calendar-show-seasons-calendars")); exit; } //==>delSeasons() add_action('admin_post_abc_booking_delSeasonAssignment', 'abc_booking_delSeasonAssignment'); // Output to backend function advanced_booking_calendar_show_seasons_calendars() { if (!current_user_can('manage_options')) { wp_die("Go away"); } global $wpdb; global $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'); wp_enqueue_style('abc-datepicker', $abcUrl.'/frontend/css/jquery-ui.min.css'); wp_enqueue_script('jquery-ui-datepicker'); wp_enqueue_script('abc-functions', plugin_dir_url(__FILE__) . 'js/abc-functions.js', array('jquery')); wp_localize_script( 'abc-functions', 'abc_functions_vars', array( 'dateformat' => abc_booking_dateFormatToJS(getAbcSetting('dateformat')), 'firstday' => getAbcSetting('firstdayofweek'))); if(isset($_GET["action"])) { $getAction = $_GET["action"]; } else { $getAction = ""; } $calendars = ""; $output = ""; $seasons = ""; $calendarsAs = ""; $seasonsAs = ""; $assignments = ""; $priceformat = getAbcSetting('priceformat'); $currency = getAbcSetting('currency'); $notices = ""; if(isset($_GET["setting"]) && $_GET["setting"] == 'roomLimit') { $notices .= '

'.__('Number of rooms is limited to 15 rooms! If you need more rooms, please download our Pro-Version.', 'abc-booking' ).'

'; } //Show standard page or action page switch($getAction){ case "abc_booking_editCalendar": // Does the ID exist? $row = $wpdb->get_row("SELECT COUNT(*) as co FROM ".$wpdb->prefix."advanced_booking_calendar_calendars WHERE id = '".$_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."advanced_booking_calendar_calendars WHERE id = '".$_GET["id"]."'", ARRAY_A); $output = '

'.__('Edit existing Calendar', 'abc-booking').'

'.__('Please choose a meaningful title.', 'abc-booking').'

'.__('eg. max. 10 Rooms available', 'abc-booking').'

'.__('eg. max. 5 persons in one room', 'abc-booking').'

'.__('If no season is active, the price preset will be used for price calculations', 'abc-booking').'

'.wp_dropdown_pages(array('echo' => 0, 'show_option_none' => "Don't link", 'option_none_value' => "0", 'selected' => $row[0]["infoPage"])).' '.__('Manage Pages', 'abc-booking').'

'.__('You can link to an existing Page for further information.', 'abc-booking').'


'.__('Maximum 200 chars', 'abc-booking').'


'; } break; case "abc_booking_editSeason": //Does the ID exist? $row = $wpdb->get_results("SELECT COUNT(*) as co FROM ".$wpdb->prefix."advanced_booking_calendar_seasons WHERE id = '".intval($_GET["id"])."'", ARRAY_A); if($row[0]["co"] == 0) { // ID doesn't exist wp_die("Error! Unknown id
Please go back"); } else { //ID exists $row = $wpdb->get_results("SELECT title,price FROM ".$wpdb->prefix."advanced_booking_calendar_seasons WHERE id = '".intval($_GET["id"])."'", ARRAY_A); $output = '

'.__('Edit existing Season', 'abc-booking').'

'.__('Please choose a meaningful title.', 'abc-booking').'

'.__('The currency code will be attached automatically.', 'abc-booking').'


'; } break; case "abc_booking_editSeasonAssignment": //Does the ID exist? $row = $wpdb->get_results("SELECT COUNT(*) as co FROM ".$wpdb->prefix."advanced_booking_calendar_seasons_assignment WHERE id = '".intval($_GET["id"])."'", ARRAY_A); if($row[0]["co"] == 0) { // ID doesn't exist wp_die("Error! Unknown id
Please go back"); } else { $row = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."advanced_booking_calendar_seasons_assignment WHERE id = '".intval($_GET["id"])."'", ARRAY_A); $row = $row[0]; // Getting calendars $calendarRows = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."advanced_booking_calendar_calendars", ARRAY_A); foreach($calendarRows as $crow) { if($crow["id"] == $row["calendar_id"]) { $selected = 'selected'; } else { $selected = ""; } $calendarsAs .= ''; } // Getting seasons $seasonRows = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."advanced_booking_calendar_seasons", ARRAY_A); foreach($seasonRows as $srow) { if($srow["id"] == $row["season_id"]) { $selected = 'selected'; } else { $selected = ""; } $seasonsAs .= ''; } //ID exists $output .= '

'.__('Edit existing Assignment', 'abc-booking').'


'; } break; case "abc_booking_editRoomNames": //Does the ID exist? $row = $wpdb->get_results("SELECT COUNT(*) as co FROM ".$wpdb->prefix."advanced_booking_calendar_rooms WHERE calendar_id = '".intval($_GET["id"])."'", ARRAY_A); if($row[0]["co"] == 0) { // ID doesn't exist wp_die("Error! Unknown id
Please go back"); } else { $er = $wpdb->get_row('SELECT * FROM '.$wpdb->prefix.'advanced_booking_calendar_calendars WHERE id = '.intval($_GET["id"]), ARRAY_A); $calendarName = esc_html($er["name"]); $maxAvailabilities = esc_html($er["maxAvailabilities"]); $row = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."advanced_booking_calendar_rooms WHERE calendar_id = '".intval($_GET["id"])."'", ARRAY_A); $output = '

'.sprintf( __('Edit room names for calendar "%s"', 'abc-bookings'), $calendarName ).'

'; for ($i = 0; $i <= ($maxAvailabilities-1); $i++){ $output .= ''; } $output .= '

'; } break; default: $output .= '

'.__('Seasons & Calendars', 'abc-booking').'

'.$notices.'
'; } echo $output; }//==>advanced_booking_calendar_show_calendars() ?>