function permalink_save_options()
{
    $data = get_option("bepro_listings");
    if (isset($_POST["bl_permalink_option"])) {
        $data["permalink"] = $_POST["bl_permalink_option"];
        $data["cat_permalink"] = $_POST["bl_cat_permalink_option"];
        update_option("bepro_listings", $data);
    }
    //admin options menu save
    if (!empty($_POST["bpl_update_options"])) {
        //general
        $data["show_cost"] = $_POST["show_cost"];
        $data["show_con"] = $_POST["show_con"];
        $data["show_geo"] = $_POST["show_geo"];
        $data["show_imgs"] = $_POST["show_imgs"];
        $data["num_images"] = $_POST["num_images"];
        $data["cat_heading"] = $_POST["cat_heading"];
        $data["cat_empty"] = $_POST["cat_empty"];
        $data["cat_singular"] = $_POST["cat_singular"];
        //forms
        $data["validate_form"] = $_POST["validate_form"];
        $data["default_user_id"] = $_POST["default_user_id"];
        $data["use_tiny_mce"] = $_POST["use_tiny_mce"];
        $data["default_status"] = $_POST["default_status"];
        $data["success_message"] = $_POST["success_message"];
        $data["fail_message"] = $_POST["fail_message"];
        $data["form_cat_style"] = $_POST["form_cat_style"];
        //check cat exclude
        $data["bepro_listings_cat_exclude"] = bl_check_is_valid_cat($_POST["bepro_listings_cat_exclude"]) ? $_POST["bepro_listings_cat_exclude"] : "";
        //check cat required
        $data["bepro_listings_cat_required"] = bl_check_is_valid_cat($_POST["bepro_listings_cat_required"]) ? $_POST["bepro_listings_cat_required"] : "";
        //search listings
        $data["default_image"] = $_POST["default_image"];
        $data["link_new_page"] = $_POST["link_new_page"];
        $data["ajax_on"] = $_POST["ajax_on"];
        $data["num_listings"] = $_POST["num_listings"];
        $data["distance"] = $_POST["distance"];
        $data["dist_measurement"] = $_POST["dist_measurement"];
        $data["search_names"] = $_POST["search_names"];
        $data["title_length"] = is_numeric($_POST["title_length"]) ? $_POST["title_length"] : $data["title_length"];
        $data["desc_length"] = is_numeric($_POST["desc_length"]) ? $_POST["desc_length"] : $data["desc_length"];
        $data["details_link"] = $_POST["details_link"];
        $data["show_web_link"] = $_POST["show_web_link"];
        $data["show_date"] = $_POST["show_date"];
        $data["currency_sign"] = $_POST["currency_sign"];
        //Page/post
        $data["gallery_size"] = $_POST["gallery_size"];
        $data["gallery_cols"] = $_POST["gallery_cols"];
        $data["page_template"] = $_POST["page_template"];
        $data["show_details"] = $_POST["show_details"];
        $data["add_detail_links"] = $_POST["add_detail_links"];
        $data["protect_contact"] = $_POST["protect_contact"];
        $data["show_content"] = $_POST["show_content"];
        $data["show_comments"] = $_POST["show_comments"];
        $data["tabs_type"] = $_POST["tabs_type"];
        //map
        $data["map_query_type"] = $_POST["map_query_type"];
        $data["map_use_api"] = $_POST["map_use_api"];
        $data["map_zoom"] = $_POST["map_zoom"];
        //3rd party
        $data["buddypress"] = $_POST["buddypress"];
        //payment
        $data["require_payment"] = $_POST["require_payment"];
        $data["cat_fee_duration"] = $_POST["cat_fee_duration"];
        $fee_count = 1;
        $data["add_to_cart"] = $_POST["add_to_cart"];
        $data["publish_after_payment"] = $_POST["publish_after_payment"];
        //repair
        if (!empty($_POST["recreate_templates"]) && $_POST["recreate_templates"] == 2) {
            $data = create_result_listing_templates($data);
        }
        if (!empty($_POST["bepro_email_notifications"]) && $_POST["bepro_email_notifications"] == 2) {
            create_bepro_emails_for_bepro_listings();
        }
        //Support
        $data["footer_link"] = $_POST["footer_link"];
        update_option("bepro_listings", $data);
        if (isset($_FILES["csv_upload"]) && !empty($_FILES["csv_upload"]["size"])) {
            $delimiter = $_POST["csv_upload_delimiter"];
            $file_path = $_FILES["csv_upload"]["tmp_name"];
            $file = fopen($file_path, 'r');
            $csv_titles = array();
            $counter = 0;
            while (($results = fgetcsv($file, 1500, $delimiter)) !== false) {
                if ($counter > 0) {
                    $_POST = "";
                    foreach ($results as $key => $result) {
                        $_POST[$csv_titles[$key]] = $result;
                    }
                    if (!empty($csv_titles[0])) {
                        //check for multiple categories
                        $_POST["categories"] = !empty($_POST["categories"]) && !is_numeric($_POST["categories"]) && strpos($_POST["categories"], '|') !== false ? str_replace("|", ",", $_POST["categories"]) : $_POST["categories"];
                        $_POST["save_bepro_listing"] = 1;
                        $post_id = bepro_listings_save(false, true);
                        if (!empty($_POST["photo"])) {
                            //we only handle single photo uploads
                            if (stristr($_POST["photo"], ",")) {
                                $photos = explode(",", $_POST["photo"]);
                                foreach ($photos as $photo) {
                                    $remote_url = addslashes(strip_tags($_POST["photo"]));
                                    bl_attach_remote_file($post_id, $remote_url);
                                }
                            } else {
                                $remote_url = addslashes(strip_tags($_POST["photo"]));
                                bl_attach_remote_file($post_id, $remote_url);
                            }
                        }
                    }
                } else {
                    $csv_titles = array_values($results);
                }
                $counter++;
            }
            fclose($file);
        }
    }
    //end options menu save
}
function bl_complete_startup()
{
    global $wpdb;
    $data = get_option("bepro_listings");
    if (empty($data)) {
        Bepro_listings::bepro_listings_activate();
    }
    //Load Languages
    load_plugin_textdomain('bepro-listings', false, dirname(plugin_basename(__FILE__)) . '/languages/');
    //load default options if they dont already exist
    if (empty($data["bepro_listings_list_template_1"])) {
        //general
        $data["show_cost"] = 1;
        $data["show_con"] = 1;
        $data["show_geo"] = 1;
        $data["show_imgs"] = 1;
        $data["num_images"] = 3;
        $data["cat_heading"] = __("Categories", "bepro-listings");
        $data["cat_empty"] = __("No Sub Categories", "bepro-listings");
        $data["cat_singular"] = __("Category", "bepro-listings");
        $data["permalink"] = "/" . BEPRO_LISTINGS_SEARCH_SLUG;
        $data["cat_permalink"] = "/" . BEPRO_LISTINGS_CATEGORY_SLUG;
        //forms
        $data["validate_form"] = "on";
        $data["success_message"] = __('Listing Created and pending admin approval.', "bepro-listings");
        $data["use_tiny_mce"] = "";
        $data["default_status"] = 'pending';
        $data["default_user_id"] = get_current_user_id();
        $data["fail_message"] = __("Issue saving listing. Try again or contact the Admin", "bepro-listings");
        $data["form_cat_style"] = 2;
        $data["bepro_listings_cat_required"] = "";
        $data["bepro_listings_cat_exclude"] = "";
        //search listings
        $data["default_image"] = plugins_url("images/no_img.jpg", __FILE__);
        $data["link_new_page"] = 1;
        $data["ajax_on"] = "on";
        $data["num_listings"] = 8;
        $data["distance"] = 150;
        $data["dist_measurement"] = 1;
        $data["search_names"] = 1;
        $data["title_length"] = 18;
        $data["desc_length"] = 80;
        $data["details_link"] = __("Item", "bepro-listings");
        $data["show_web_link"] = "";
        $data["currency_sign"] = "\$";
        $data["show_date"] = 1;
        //Page/post
        $data["gallery_size"] = "thumbnail";
        $data["gallery_cols"] = 3;
        $data["gallery_cols"] = 1;
        $data["show_details"] = 2;
        $data["add_detail_links"] = "on";
        $data["protect_contact"] = "";
        $data["show_content"] = 1;
        $data["tabs_type"] = 1;
        //map
        $data["map_query_type"] = "curl";
        $data["map_use_api"] = 1;
        $data["map_zoom"] = "10";
        //3rd party
        $data["buddypress"] = 0;
        //Payment
        $data["require_payment"] = "";
        $data["publish_after_payment"] = "";
        $data["redirect_need_funds"] = 1;
        $data["charge_amount"] = 1;
        //Support
        $data["footer_link"] = 0;
        //item page template
        $data['bepro_listings_item_title_template'] = 'bepro_listings_item_title';
        $data['bepro_listings_item_gallery_template'] = "bepro_listings_item_gallery";
        $data['bepro_listings_item_after_gallery_template'] = "bepro_listings_item_after_gallery";
        $data['bepro_listings_item_details_template'] = 'bepro_listings_item_details';
        $data['bepro_listings_item_content_template'] = 'bepro_listings_item_content_info';
        //item list template
        $data = create_result_listing_templates($data);
        //save
        update_option("bepro_listings", $data);
    }
    //Things that need to change only if there is an upgrade
    $bepro_listings_version = get_option("bepro_listings_version");
    if (version_compare($bepro_listings_version, '2.1.5', '<')) {
        //upgrade tables to utf8
        if (is_numeric(substr($wpdb->prefix, -2, 1)) && is_multisite()) {
            $blogids = $wpdb->get_col("SELECT blog_id FROM {$wpdb->blogs}");
            foreach ($blogids as $blogid_x) {
                $wpdb->query("ALTER TABLE " . $wpdb->base_prefix . $blogid_x . "_" . BEPRO_LISTINGS_TABLE_BASE . " CONVERT TO CHARACTER SET utf8;");
            }
        } else {
            $wpdb->query("ALTER TABLE " . $wpdb->base_prefix . BEPRO_LISTINGS_TABLE_BASE . " CONVERT TO CHARACTER SET utf8;");
        }
    }
    if (version_compare($bepro_listings_version, '2.1.90', '<')) {
        $data["map_use_api"] = 1;
        $data["map_zoom"] = "10";
        $data["show_imgs"] = 1;
    }
    if (version_compare($bepro_listings_version, '2.1.992', '<')) {
        //support for BePro Cart
        if (is_numeric(substr($wpdb->prefix, -2, 1)) && is_multisite()) {
            $blogids = $wpdb->get_col("SELECT blog_id FROM {$wpdb->blogs}");
            foreach ($blogids as $blogid_x) {
                if ($blogid_x == 1) {
                    $blogid_x = "";
                } else {
                    $blogid_x = $blogid_x . "_";
                }
                $wpdb->query("ALTER TABLE " . $wpdb->base_prefix . $blogid_x . BEPRO_LISTINGS_TABLE_BASE . " ADD COLUMN bl_order_id int(9) DEFAULT NULL AFTER lon, DROP COLUMN bepro_cart_id;");
                //install new payments table
                create_bl_order_table($wpdb->base_prefix . $blogid_x . BEPRO_LISTINGS_ORDERS_TABLE_BASE);
            }
        } else {
            $wpdb->query("ALTER TABLE " . $wpdb->base_prefix . BEPRO_LISTINGS_TABLE_BASE . " ADD COLUMN bl_order_id int(9) DEFAULT NULL AFTER lon, DROP COLUMN bepro_cart_id;");
            //install new payments table
            create_bl_order_table($wpdb->base_prefix . BEPRO_LISTINGS_ORDERS_TABLE_BASE);
        }
        //flat fee now works differently
        if ($data["flat_fee"]) {
            unset($data["flat_fee"]);
        }
    }
    if (version_compare($bepro_listings_version, '2.1.999', '<')) {
        if (is_numeric(substr($wpdb->prefix, -2, 1)) && is_multisite()) {
            $blogids = $wpdb->get_col("SELECT blog_id FROM {$wpdb->blogs}");
            foreach ($blogids as $blogid_x) {
                if ($blogid_x == 1) {
                    $blogid_x = "";
                } else {
                    $blogid_x = $blogid_x . "_";
                }
                $tbl_1 = $wpdb->base_prefix . $blogid_x . BEPRO_LISTINGS_ORDERS_TABLE_BASE;
                $tbl_2 = $wpdb->base_prefix . $blogid_x . BEPRO_LISTINGS_TABLE_BASE;
                $wpdb->query("ALTER TABLE " . $tbl_1 . " ADD COLUMN expires DATETIME DEFAULT NULL AFTER date_paid;");
                $orders = $wpdb->get_results("SELECT * FROM " . $tbl_1);
                foreach ($orders as $order) {
                    $record = $wpdb->get_row("SELECT * FROM " . $tbl_2 . " WHERE bl_order_id = " . $order->bl_order_id . " LIMIT 1");
                    if ($record) {
                        $wpdb->query("UPDATE " . $tbl_1 . " SET expires = '" . $record->expires . "' WHERE bl_order_id = " . $record->bl_order_id);
                    }
                }
                $wpdb->query("ALTER TABLE " . $tbl_2 . " DROP COLUMN expires;");
            }
        } else {
            $tbl_1 = $wpdb->prefix . BEPRO_LISTINGS_ORDERS_TABLE_BASE;
            $tbl_2 = $wpdb->prefix . BEPRO_LISTINGS_TABLE_BASE;
            $wpdb->query("ALTER TABLE " . $tbl_1 . " ADD COLUMN expires DATETIME DEFAULT NULL AFTER date_paid;");
            $orders = $wpdb->get_results("SELECT * FROM " . $tbl_1);
            foreach ($orders as $order) {
                $record = $wpdb->get_row("SELECT * FROM " . $tbl_2 . " WHERE bl_order_id = " . $order->bl_order_id . " LIMIT 1");
                if (@$record) {
                    $wpdb->query("UPDATE " . $tbl_1 . " SET expires = '" . $record->expires . "' WHERE bl_order_id = " . $record->bl_order_id);
                }
            }
            $wpdb->query("ALTER TABLE " . $tbl_2 . " DROP COLUMN expires;");
        }
    }
    if (version_compare($bepro_listings_version, '2.1.9994', '<')) {
        if (!empty($data["show_cost"])) {
            $data["show_cost"] = 1;
        }
        if (!empty($data["show_con"])) {
            $data["show_con"] = 1;
        }
        if (!empty($data["show_geo"])) {
            $data["show_geo"] = 1;
        }
        if (!empty($data["show_imgs"])) {
            $data["show_imgs"] = 1;
        }
        $data["show_details"] = 2;
        $data["show_content"] = 1;
    }
    if (version_compare($bepro_listings_version, '2.1.99995', '<')) {
        if ($data["show_details"] == "on") {
            $data["show_details"] = 2;
        }
        if ($data["show_content"] == "on") {
            $data["show_content"] = 1;
        }
        if ($data["show_geo"] == "on") {
            $data["show_geo"] = 1;
        }
        if ($data["show_con"] == "on") {
            $data["show_con"] = 1;
        }
    }
    if (version_compare($bepro_listings_version, '2.2.0004', '<')) {
        if (empty($data["desc_length"])) {
            $data["desc_length"] = 80;
        }
    }
    if ($bepro_listings_version != BEPRO_LISTINGS_VERSION) {
        $bepro_listings_version = BEPRO_LISTINGS_VERSION;
        //new features
        //show welcome screen to users who are updating
        set_transient('_bepro_listings_activation_redirect', 1, HOUR_IN_SECONDS);
        //set version
        update_option('bepro_listings_version', $bepro_listings_version);
    }
}