/** * wpsc_convert_categories function. * * @access public * @param int $parent_category. (default: 0) * @return void */ function wpsc_convert_categories($new_parent_category, $group_id, $old_parent_category = 0) { global $wpdb, $user_ID; if ($old_parent_category > 0) { $categorisation = $wpdb->get_results("SELECT * FROM `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` WHERE `active` IN ('1') AND `group_id` IN ('{$group_id}') AND `category_parent` IN ('{$old_parent_category}')"); } else { $categorisation = $wpdb->get_results("SELECT * FROM `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` WHERE `active` IN ('1') AND `group_id` IN ('{$group_id}') AND `category_parent` IN (0)"); } if ($categorisation > 0) { foreach ((array) $categorisation as $category) { $category_id = wpsc_get_meta($category->id, 'category_id', 'wpsc_old_category'); if (!is_numeric($category_id) || $category_id < 1) { $new_category = wp_insert_term($category->name, 'wpsc_product_category', array('description' => $category->description, 'parent' => $new_parent_category)); if (!is_wp_error($new_category)) { $category_id = $new_category['term_id']; } } if (is_numeric($category_id)) { wpsc_update_meta($category->id, 'category_id', $category_id, 'wpsc_old_category'); wpsc_update_categorymeta($category_id, 'category_id', $category->id); wpsc_update_categorymeta($category_id, 'image', $category->image); wpsc_update_categorymeta($category_id, 'display_type', $category->display_type); wpsc_update_categorymeta($category_id, 'image_height', $category->image_height); wpsc_update_categorymeta($category_id, 'image_width', $category->image_width); $use_additonal_form_set = wpsc_get_categorymeta($category->id, 'use_additonal_form_set'); if ($use_additonal_form_set != '') { wpsc_update_categorymeta($category_id, 'use_additonal_form_set', $use_additonal_form_set); } else { wpsc_delete_categorymeta($category_id, 'use_additonal_form_set'); } wpsc_update_categorymeta($category_id, 'uses_billing_address', (bool) (int) wpsc_get_categorymeta($category->id, 'uses_billing_address')); } if ($category_id > 0) { wpsc_convert_categories($category_id, $group_id, $category->id); } } } }
function wpsc_install() { global $wpdb, $user_level, $wp_rewrite, $wp_version, $wpsc_page_titles; $table_name = $wpdb->prefix . "wpsc_product_list"; if ($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") !== $table_name) { // Table doesn't exist add_option('wpsc_purchaselogs_fixed', true); } // the only consistent and reliable way to detect whether this is a fresh install is by checking // whether WPSC_TABLE_CART_CONTENTS exists. This is an unfortunate hack, but we can do away with // it in 3.9 as we'll drop support for 3.7.x then if ($wpdb->get_var("SHOW TABLES LIKE '" . WPSC_TABLE_CART_CONTENTS . "'") != WPSC_TABLE_CART_CONTENTS) { add_option('wpsc_db_version', WPSC_DB_VERSION, '', 'no'); } // run the create or update code here. wpsc_create_or_update_tables(); wpsc_create_upload_directories(); // All code to add new database tables and columns must be above here $wpsc_version = get_option('wpsc_version', 0); $wpsc_minor_version = get_option('wpsc_minor_version', 0); if ($wpsc_version === false) { add_option('wpsc_version', WPSC_VERSION, '', 'no'); } else { update_option('wpsc_version', WPSC_VERSION); } if ($wpsc_minor_version === false) { add_option('wpsc_minor_version', WPSC_MINOR_VERSION, '', 'no'); } else { update_option('wpsc_minor_version', WPSC_MINOR_VERSION); } if (version_compare($wpsc_version, '3.8', '<')) { update_option('wpsc_needs_update', true); } else { update_option('wpsc_needs_update', false); } if ('' == get_option('show_subcatsprods_in_cat')) { update_option('show_subcatsprods_in_cat', 0); } if ('' == get_option('wpsc_share_this')) { update_option('wpsc_share_this', 0); } if ('' == get_option('wpsc_crop_thumbnails')) { update_option('wpsc_crop_thumbnails', 0); } if ('' == get_option('wpsc_products_per_page')) { update_option('wpsc_products_per_page', 0); } if ('' == get_option('wpsc_force_ssl')) { update_option('wpsc_force_ssl', 0); } if ('' == get_option('use_pagination')) { update_option('use_pagination', 0); } if ('' == get_option('hide_name_link')) { update_option('hide_name_link', 0); } if ('' == get_option('wpsc_enable_comments')) { update_option('wpsc_enable_comments', 0); } if ('' == get_option('multi_add')) { update_option('multi_add', 1); } if ('' == get_option('hide_addtocart_button')) { update_option('hide_addtocart_button', 0); } if ('' == get_option('wpsc_addtocart_or_buynow')) { update_option('wpsc_addtocart_or_buynow', 0); } add_option('show_thumbnails', 1, '', 'no'); add_option('show_thumbnails_thickbox', 1, '', 'no'); require_once WPSC_FILE_PATH . '/wpsc-core/wpsc-functions.php'; require_once WPSC_FILE_PATH . '/wpsc-includes/wpsc-theme-engine-bootstrap.php'; if (!_wpsc_maybe_activate_theme_engine_v2()) { add_option('product_list_url', '', '', 'no'); add_option('shopping_cart_url', '', '', 'no'); add_option('checkout_url', '', '', 'no'); add_option('transact_url', '', '', 'no'); /* * This part creates the pages and automatically puts their URLs into the options page. * As you can probably see, it is very easily extendable, just pop in your page and the deafult content in the array and you are good to go. */ $post_date = date("Y-m-d H:i:s"); $post_date_gmt = gmdate("Y-m-d H:i:s"); $pages = array('products-page' => array('name' => 'products-page', 'title' => __('Products Page', 'wpsc'), 'tag' => '[productspage]', 'option' => 'product_list_url'), 'checkout' => array('name' => 'checkout', 'title' => __('Checkout', 'wpsc'), 'tag' => '[shoppingcart]', 'option' => 'shopping_cart_url'), 'transaction-results' => array('name' => 'transaction-results', 'title' => __('Transaction Results', 'wpsc'), 'tag' => '[transactionresults]', 'option' => 'transact_url'), 'your-account' => array('name' => 'your-account', 'title' => __('Your Account', 'wpsc'), 'tag' => '[userlog]', 'option' => 'user_account_url')); //indicator. if we will create any new pages we need to flush.. :) $newpages = false; //get products page id. if there's no products page then create one $products_page_id = $wpdb->get_var("SELECT id FROM `" . $wpdb->posts . "` WHERE `post_content` LIKE '%" . $pages['products-page']['tag'] . "%'\tAND `post_type` != 'revision'"); if (empty($products_page_id)) { $products_page_id = wp_insert_post(array('post_title' => $pages['products-page']['title'], 'post_type' => 'page', 'post_name' => $pages['products-page']['name'], 'comment_status' => 'closed', 'ping_status' => 'closed', 'post_content' => $pages['products-page']['tag'], 'post_status' => 'publish', 'post_author' => 1, 'menu_order' => 0)); $newpages = true; } update_option($pages['products-page']['option'], _get_page_link($products_page_id)); //done. products page created. no we can unset products page data and create all other pages. //unset products page unset($pages['products-page']); //create other pages foreach ((array) $pages as $page) { //check if page exists and get it's ID $page_id = $wpdb->get_var("SELECT id FROM `" . $wpdb->posts . "` WHERE `post_content` LIKE '%" . $page['tag'] . "%'\tAND `post_type` != 'revision'"); //if there's no page - create if (empty($page_id)) { $page_id = wp_insert_post(array('post_title' => $page['title'], 'post_type' => 'page', 'post_name' => $page['name'], 'comment_status' => 'closed', 'ping_status' => 'closed', 'post_content' => $page['tag'], 'post_status' => 'publish', 'post_author' => 1, 'menu_order' => 0, 'post_parent' => $products_page_id)); $newpages = true; } //update option update_option($page['option'], get_permalink($page_id)); //also if this is shopping_cart, then update checkout url option if ($page['option'] == 'shopping_cart_url') { update_option('checkout_url', get_permalink($page_id)); } } //if we have created any new pages, then flush... do we need to do this? probably should be removed if ($newpages) { wp_cache_delete('all_page_ids', 'pages'); wpsc_update_permalink_slugs(); } } add_option('payment_gateway', '', '', 'no'); $default_payment_gateways_names = array('chronopay' => '', 'wpsc_merchant_paypal_express' => '', 'wpsc_merchant_paypal_pro' => '', 'wpsc_merchant_paypal_standard' => ''); $existing_payment_gateways_names = get_option('payment_gateway_names'); $new_payment_gatewats_name = array_merge($default_payment_gateways_names, (array) $existing_payment_gateways_names); update_option('payment_gateway_names', $new_payment_gatewats_name); if (function_exists('register_sidebar')) { add_option('cart_location', '4', '', 'no'); } else { add_option('cart_location', '1', '', 'no'); } add_option('currency_type', '156', '', 'no'); add_option('currency_sign_location', '3', '', 'no'); add_option('gst_rate', '1', '', 'no'); add_option('max_downloads', '1', '', 'no'); add_option('display_pnp', '1', '', 'no'); add_option('display_specials', '1', '', 'no'); add_option('do_not_use_shipping', '1', '', 'no'); add_option('postage_and_packaging', '0', '', 'no'); add_option('shipwire', '0', '', 'no'); add_option('shipwire_test_server', '0', '', 'no'); add_option('purch_log_email', '', '', 'no'); add_option('return_email', '', '', 'no'); add_option('terms_and_conditions', '', '', 'no'); add_option('default_brand', 'none', '', 'no'); add_option('wpsc_default_category', 'all', '', 'no'); add_option('product_view', 'default', "", 'no'); add_option('add_plustax', 'default', "", '1'); if (!(get_option('show_categorybrands') > 0 && get_option('show_categorybrands') < 3)) { update_option('show_categorybrands', 2); } // PayPal options add_option('paypal_business', '', '', 'no'); add_option('paypal_url', '', '', 'no'); add_option('paypal_ipn', '1', '', 'no'); add_option('paypal_multiple_business', '', '', 'no'); add_option('paypal_multiple_url', "https://www.paypal.com/cgi-bin/webscr"); add_option('product_ratings', '0', '', 'no'); add_option('wpsc_email_receipt', __('Thank you for purchasing with %shop_name%, any items to be shipped will be processed as soon as possible, any items that can be downloaded can be downloaded using the links on this page. All prices include tax and postage and packaging where applicable. You ordered these items: %product_list%%total_shipping%%total_price%', 'wpsc'), '', 'no'); add_option('wpsc_email_admin', __('%product_list%%total_shipping%%total_price%', 'wpsc'), '', 'no'); add_option('wpsc_selected_theme', 'default', '', 'no'); add_option('product_image_height', 148); add_option('product_image_width', 148); add_option('category_image_height', 148); add_option('category_image_width', 148); add_option('single_view_image_height', 148); add_option('single_view_image_width', 148); add_option('wpsc_gallery_image_height', 31); add_option('wpsc_gallery_image_width', 31); add_option('wpsc_thousands_separator', ','); add_option('wpsc_decimal_separator', '.'); add_option('custom_gateway_options', array('wpsc_merchant_testmode'), '', 'no'); add_option('wpsc_category_url_cache', array(), '', 'no'); // add in some default tax settings add_option('wpec_taxes_inprice', 'exclusive'); add_option('wpec_taxes_product', 'replace'); add_option('wpec_taxes_logic', 'billing'); wpsc_product_files_htaccess(); // Product categories, temporarily register them to create first default category if none exist // @todo: investigate those require once lines and move them to right place (not from here, but from their original location, which seems to be wrong, since i cant access wpsc_register_post_types and wpsc_update_categorymeta here) - Vales <*****@*****.**> wpsc_core_load_page_titles(); wpsc_register_post_types(); $category_list = get_terms('wpsc_product_category', 'hide_empty=0&parent=0'); if (count($category_list) == 0) { require_once WPSC_FILE_PATH . '/wpsc-includes/meta.functions.php'; $new_category = wp_insert_term(__('Product Category', 'wpsc'), 'wpsc_product_category', "parent=0"); $category_id = $new_category['term_id']; $term = get_term_by('id', $new_category['term_id'], 'wpsc_product_category'); $url_name = $term->slug; wpsc_update_categorymeta($category_id, 'nice-name', $url_name); wpsc_update_categorymeta($category_id, 'description', __("This is a description", 'wpsc')); wpsc_update_categorymeta($category_id, 'image', ''); wpsc_update_categorymeta($category_id, 'fee', '0'); wpsc_update_categorymeta($category_id, 'active', '1'); wpsc_update_categorymeta($category_id, 'order', '0'); } flush_rewrite_rules(false); wpsc_theme_engine_v2_activate(); }
/** * wpsc_save_category_set, Saves the category set data * @param nothing * @return nothing */ function wpsc_save_category_set($category_id, $tt_id) { global $wpdb; if (!empty($_POST)) { /* Image Processing Code*/ if (!empty($_FILES['image']) && preg_match("/\\.(gif|jp(e)*g|png){1}\$/i", $_FILES['image']['name'])) { if (function_exists("getimagesize")) { if (isset($_POST['width']) && ((int) $_POST['width'] > 10 && (int) $_POST['width'] < 512) && ((int) $_POST['height'] > 10 && (int) $_POST['height'] < 512)) { $width = (int) $_POST['width']; $height = (int) $_POST['height']; image_processing($_FILES['image']['tmp_name'], WPSC_CATEGORY_DIR . $_FILES['image']['name'], $width, $height, 'image'); } else { image_processing($_FILES['image']['tmp_name'], WPSC_CATEGORY_DIR . $_FILES['image']['name'], null, null, 'image'); } $image = esc_sql($_FILES['image']['name']); } else { $new_image_path = WPSC_CATEGORY_DIR . basename($_FILES['image']['name']); move_uploaded_file($_FILES['image']['tmp_name'], $new_image_path); $stat = stat(dirname($new_image_path)); $perms = $stat['mode'] & 0666; @chmod($new_image_path, $perms); $image = esc_sql($_FILES['image']['name']); } } else { $image = ''; } //Good to here if (isset($_POST['tag_ID'])) { //Editing $category_id = (int) $_POST['tag_ID']; $category = get_term_by('id', $category_id, 'wpsc_product_category'); $url_name = $category->slug; } if (isset($_POST['deleteimage']) && $_POST['deleteimage'] == 1) { wpsc_delete_categorymeta($category_id, 'image'); } else { if ($image != '') { wpsc_update_categorymeta($category_id, 'image', $image); } } if (!empty($_POST['height']) && is_numeric($_POST['height']) && !empty($_POST['width']) && is_numeric($_POST['width']) && $image == null) { $imagedata = wpsc_get_categorymeta($category_id, 'image'); if ($imagedata != null) { $height = (int) $_POST['height']; $width = (int) $_POST['width']; $imagepath = WPSC_CATEGORY_DIR . $imagedata; $image_output = WPSC_CATEGORY_DIR . $imagedata; image_processing($imagepath, $image_output, $width, $height); } } wpsc_update_categorymeta($category_id, 'fee', '0'); wpsc_update_categorymeta($category_id, 'active', '1'); wpsc_update_categorymeta($category_id, 'order', '0'); if (isset($_POST['display_type'])) { wpsc_update_categorymeta($category_id, 'display_type', esc_sql(stripslashes($_POST['display_type']))); } if (isset($_POST['image_height'])) { wpsc_update_categorymeta($category_id, 'image_height', (int) $_POST['image_height']); } if (isset($_POST['image_width'])) { wpsc_update_categorymeta($category_id, 'image_width', (int) $_POST['image_width']); } if (!empty($_POST['use_additional_form_set'])) { wpsc_update_categorymeta($category_id, 'use_additional_form_set', absint($_POST['use_additional_form_set'])); } else { wpsc_delete_categorymeta($category_id, 'use_additional_form_set'); } if (!empty($_POST['uses_billing_address'])) { wpsc_update_categorymeta($category_id, 'uses_billing_address', 1); $uses_additional_forms = true; } else { wpsc_update_categorymeta($category_id, 'uses_billing_address', 0); $uses_additional_forms = false; } if (!empty($_POST['countrylist2']) && $category_id > 0) { $AllSelected = false; $countryList = $wpdb->get_col("SELECT `id` FROM `" . WPSC_TABLE_CURRENCY_LIST . "`"); if ($AllSelected != true) { $posted_countries = array_map('intval', $_POST['countrylist2']); $unselectedCountries = array_diff($countryList, $posted_countries); //find the countries that are selected $selectedCountries = array_intersect($countryList, $posted_countries); wpsc_update_categorymeta($category_id, 'target_market', $selectedCountries); } } elseif (!isset($_POST['countrylist2'])) { wpsc_update_categorymeta($category_id, 'target_market', ''); $AllSelected = true; } } }
function wpsc_display_groups_page() { global $wpdb, $wp_rewrite; if (!is_numeric($_GET['category_group']) || (int) $_GET['category_group'] == null) { $current_categorisation = $wpdb->get_row("SELECT * FROM `" . WPSC_TABLE_CATEGORISATION_GROUPS . "` WHERE `active` IN ('1') AND `default` IN ('1') LIMIT 1 ", ARRAY_A); } else { $current_categorisation = $wpdb->get_row("SELECT * FROM `" . WPSC_TABLE_CATEGORISATION_GROUPS . "` WHERE `active` IN ('1') AND `id` IN ('" . (int) $_GET['category_group'] . "') LIMIT 1 ", ARRAY_A); } if ($_POST['submit_action'] == "add") { //exit("<pre>".print_r($_POST,true)."</pre>"); if ($_FILES['image'] != null && preg_match("/\\.(gif|jp(e)*g|png){1}\$/i", $_FILES['image']['name'])) { if (function_exists("getimagesize")) { if ((int) $_POST['width'] > 10 && (int) $_POST['width'] < 512 && ((int) $_POST['height'] > 10 && (int) $_POST['height'] < 512)) { $width = (int) $_POST['width']; $height = (int) $_POST['height']; image_processing($_FILES['image']['tmp_name'], WPSC_CATEGORY_DIR . $_FILES['image']['name'], $width, $height); } else { image_processing($_FILES['image']['tmp_name'], WPSC_CATEGORY_DIR . $_FILES['image']['name']); } $image = $wpdb->escape($_FILES['image']['name']); } else { $new_image_path = WPSC_CATEGORY_DIR . basename($_FILES['image']['name']); move_uploaded_file($_FILES['image']['tmp_name'], $new_image_path); $stat = stat(dirname($new_image_path)); $perms = $stat['mode'] & 0666; @chmod($new_image_path, $perms); $image = $wpdb->escape($_FILES['image']['name']); } } else { $image = ''; } if (is_numeric($_POST['category_parent'])) { $parent_category = (int) $_POST['category_parent']; } else { $parent_category = 0; } //$tidied_name = sanitize_title(); //$tidied_name = strtolower($tidied_name); $url_name = sanitize_title($_POST['name']); $similar_names = $wpdb->get_row("SELECT COUNT(*) AS `count`, MAX(REPLACE(`nice-name`, '{$url_name}', '')) AS `max_number` FROM `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` WHERE `nice-name` REGEXP '^({$url_name}){1}(\\d)*\$' ", ARRAY_A); $extension_number = ''; if ($similar_names['count'] > 0) { $extension_number = (int) $similar_names['max_number'] + 1; } $url_name .= $extension_number; switch ($_POST['display_type']) { case "grid": $display_type = 'grid'; break; case "list": $display_type = 'list'; break; case "default": $display_type = 'default'; break; default: $display_type = ''; break; } if ($_POST['product_height'] > 0) { $product_height = (int) $_POST['product_height']; } else { $product_height = ''; } if ($_POST['product_width'] > 0) { $product_width = (int) $_POST['product_width']; } else { $product_width = ''; } if (trim($_POST['name']) != null) { //$_POST['name'] = "test"; $insertsql = "INSERT INTO `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` (`group_id`, `name` , `nice-name` , `description`, `image`, `fee` , `active`, `category_parent`, `order` ) VALUES ( '" . (int) $_POST['categorisation_group'] . "', '" . $wpdb->escape(stripslashes($_POST['name'])) . "', '" . $url_name . "', '" . $wpdb->escape(stripslashes($_POST['description'])) . "', '{$image}', '0', '1' ,'{$parent_category}', '0')"; $wp_rewrite->flush_rules(); if ($wpdb->query($insertsql)) { $category_id = $wpdb->get_var("SELECT LAST_INSERT_ID() AS `id` FROM `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` LIMIT 1"); if ($_POST['use_additonal_form_set'] != '') { wpsc_update_categorymeta($category_id, 'use_additonal_form_set', $_POST['use_additonal_form_set']); } else { wpsc_delete_categorymeta($category_id, 'use_additonal_form_set'); } if ((bool) (int) $_POST['uses_billing_address'] == true) { wpsc_update_categorymeta($category_id, 'uses_billing_address', 1); $uses_additional_forms = true; } else { wpsc_update_categorymeta($category_id, 'uses_billing_address', 0); $uses_additional_forms = false; } // if($uses_additional_forms == true) { // $checkout_form_sets = get_option('wpsc_checkout_form_sets'); // $checkout_form_sets[$url_name] = $wpdb->escape(stripslashes($_POST['name'])); // update_option('wpsc_checkout_form_sets', $checkout_form_sets); // } echo "<div class='updated'><p align='center'>" . __('The item has been added', 'wpsc') . "</p></div>"; } else { echo "<div class='updated'><p align='center'>" . __('The item has not been added', 'wpsc') . "</p></div>"; } update_option('wpsc_category_url_cache', array()); $wp_rewrite->flush_rules(); } else { echo "<div class='updated'><p align='center'>" . __('The item has not been added', 'wpsc') . "</p></div>"; } // Jeff 15-04-09 Used for category target market options if ($_POST['countrylist2'] != null && $category_id > 0) { $AllSelected = false; $countryList = $wpdb->get_col("SELECT `id` FROM `" . WPSC_TABLE_CURRENCY_LIST . "`"); if (in_array('all', $_POST['countrylist2'])) { foreach ($countryList as $country) { $wpdb->query("INSERT INTO `" . WPSC_TABLE_CATEGORY_TM . "`(`visible`, `countryid`, `categoryid`) VALUES ('1','{$country}', '{$category_id}' )"); //echo "REPLACE INTO `".WPSC_TABLE_CATEGORY_TM."`(`visible`, `countryid`, `categoryid`) VALUES ('1','{$country}', '{$category_id}' )<br />"; } $AllSelected = true; } if (in_array('none', $_POST['countrylist2'])) { foreach ($countryList as $country) { $wpdb->query("REPLACE INTO `" . WPSC_TABLE_CATEGORY_TM . "`(`visible`, `countryid`, `categoryid`) VALUES ('0','{$country}', '{$category_id}' )"); } $AllSelected = true; } if ($AllSelected != true) { $unselectedCountries = array_diff($countryList, $_POST['countrylist2']); foreach ($unselectedCountries as $unselected) { $wpdb->query("REPLACE INTO `" . WPSC_TABLE_CATEGORY_TM . "`(`visible`, `countryid`, `categoryid`) VALUES ('0','{$unselected}', '{$category_id}' )"); //echo "REPLACE INTO `".WPSC_TABLE_CATEGORY_TM."`(`visible`, `countryid`, `categoryid`) VALUES ('0','{$unselected}', '{$category_id}' )<br />"; } //find the countries that are selected $selectedCountries = array_intersect($countryList, $_POST['countrylist2']); foreach ($selectedCountries as $selected) { $wpdb->query("REPLACE INTO `" . WPSC_TABLE_CATEGORY_TM . "`(`visible`, `countryid`, `categoryid`) VALUES ('1','{$selected}', '{$category_id}' )"); //echo "REPLACE INTO `".WPSC_TABLE_CATEGORY_TM."`(`visible`, `countryid`, `categoryid`) VALUES ('1','{$unselected}', '{$category_id}' )<br />"; } } } } if ($_POST['submit_action'] == "edit" && is_numeric($_POST['prodid'])) { $category_id = absint($_POST['prodid']); if ($_FILES['image'] != null && preg_match("/\\.(gif|jp(e)*g|png){1}\$/i", $_FILES['image']['name'])) { if (function_exists("getimagesize")) { if ((int) $_POST['width'] >= 10 && (int) $_POST['width'] <= 512 && ((int) $_POST['height'] >= 10 && (int) $_POST['height'] <= 512)) { $width = (int) $_POST['width']; $height = (int) $_POST['height']; image_processing($_FILES['image']['tmp_name'], WPSC_CATEGORY_DIR . $_FILES['image']['name'], $width, $height); } else { image_processing($_FILES['image']['tmp_name'], WPSC_CATEGORY_DIR . $_FILES['image']['name']); } $image = $wpdb->escape($_FILES['image']['name']); } else { move_uploaded_file($_FILES['image']['tmp_name'], WPSC_CATEGORY_DIR . $_FILES['image']['name']); $image = $wpdb->escape($_FILES['image']['name']); } } else { $image = ''; } if (is_numeric($_POST['height']) && is_numeric($_POST['width']) && $image == null) { $imagedata = $wpdb->get_var("SELECT `image` FROM `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` WHERE `id`=" . (int) $_POST['prodid'] . " LIMIT 1"); if ($imagedata != null) { $height = $_POST['height']; $width = $_POST['width']; $imagepath = WPSC_CATEGORY_DIR . $imagedata; $image_output = WPSC_CATEGORY_DIR . $imagedata; image_processing($imagepath, $image_output, $width, $height); } } $category_data = $wpdb->get_row("SELECT * FROM `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` WHERE `id` IN ('" . (int) $_POST['prodid'] . "')", ARRAY_A); if ($_POST['title'] != $category_data['name'] && trim($_POST['title']) != null) { $category_name = $_POST['title']; $category_sql_list[] = "`name` = '{$category_name}' "; /* creates and checks the tidy URL name */ // $tidied_name = trim($category_name); // $tidied_name = strtolower($tidied_name); $url_name = sanitize_title($category_name); if ($url_name != $category_data['nice-name']) { $similar_names = $wpdb->get_row("SELECT COUNT(*) AS `count`, MAX(REPLACE(`nice-name`, '{$url_name}', '')) AS `max_number` FROM `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` WHERE `nice-name` REGEXP '^({$url_name}){1}(0-9)*\$' AND `id` NOT IN ('" . (int) $category_data['id'] . "') ", ARRAY_A); //exit("<pre>".print_r($similar_names,true)."</pre>"); $extension_number = ''; if ($similar_names['count'] > 0) { $extension_number = (int) $similar_names['max_number'] + 1; } $url_name .= $extension_number; } /* checks again, just in case */ if ($url_name != $category_data['nice-name']) { $category_sql_list[] = "`nice-name` = '{$url_name}' "; } update_option('wpsc_category_url_cache', array()); $wp_rewrite->flush_rules(); } // Jeff 15-04-09 Used for category target market options if ($_POST['countrylist2'] != null) { $countryList = $wpdb->get_col("SELECT `id` FROM `" . WPSC_TABLE_CURRENCY_LIST . "`"); $AllSelected = false; if (in_array('all', $_POST['countrylist2'])) { foreach ($countryList as $country) { $wpdb->query("REPLACE INTO `" . WPSC_TABLE_CATEGORY_TM . "`(`visible`, `countryid`, `categoryid`) VALUES ('1','{$country}', '{$category_id}' )"); } $AllSelected = true; } if (in_array('none', $_POST['countrylist2'])) { $wpdb->query("UPDATE `" . WPSC_TABLE_CATEGORY_TM . "` SET `visible` = '0' WHERE `categoryid`='{$category_id}'"); $AllSelected = true; } if ($AllSelected != true) { $unselectedCountries = array_diff($countryList, $_POST['countrylist2']); foreach ($unselectedCountries as $unselected) { $wpdb->query("REPLACE INTO `" . WPSC_TABLE_CATEGORY_TM . "` (`visible`, `countryid`, `categoryid`) VALUES (0,'{$unselected}', '{$category_id}' )"); } //find the countries that are selected $selectedCountries = array_intersect($countryList, $_POST['countrylist2']); foreach ($selectedCountries as $selected) { $wpdb->query("REPLACE INTO `" . WPSC_TABLE_CATEGORY_TM . "`(`visible`, `countryid`, `categoryid`) VALUES ('1','{$selected}', '{$category_id}' )"); } } } if ($_POST['description'] != $category_data['description']) { $description = $_POST['description']; $category_sql_list[] = "`description` = '{$description}' "; } if (is_numeric($_POST['category_parent']) and $_POST['category_parent'] != $category_data['category_parent']) { $parent_category = (int) $_POST['category_parent']; $category_sql_list[] = "`category_parent` = '{$parent_category}' "; } if ($_POST['deleteimage'] == 1) { $category_sql_list[] = "`image` = ''"; } else { if ($image != null) { $category_sql_list[] = "`image` = '{$image}'"; } } if ($_POST['display_type'] != $category_data['display_type']) { switch ($_POST['display_type']) { case "grid": $display_type = 'grid'; break; case "list": $display_type = 'list'; break; case "default": $display_type = 'default'; break; default: $display_type = ''; break; } $category_sql_list[] = "`display_type` = '{$display_type}' "; } //echo "<pre>".print_r($category_sql_list,true)."</pre>"; if ($_POST['product_height'] > 0) { $product_height = (int) $_POST['product_height']; } else { $product_height = ''; } $category_sql_list[] = "`image_height` = '{$product_height}' "; if ($_POST['product_width'] > 0) { $product_width = (int) $_POST['product_width']; } else { $product_width = ''; } $category_sql_list[] = "`image_width` = '{$product_width}' "; if (count($category_sql_list) > 0) { $category_sql = implode(", ", $category_sql_list); $wpdb->query("UPDATE `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` SET {$category_sql} WHERE `id`='" . (int) $_POST['prodid'] . "' LIMIT 1"); $category_id = absint($_POST['prodid']); update_option('wpsc_category_url_cache', array()); if ($_POST['use_additonal_form_set'] != '') { wpsc_update_categorymeta($category_id, 'use_additonal_form_set', $_POST['use_additonal_form_set']); } else { wpsc_delete_categorymeta($category_id, 'use_additonal_form_set'); } if ((bool) (int) $_POST['uses_billing_address'] == true) { wpsc_update_categorymeta($category_id, 'uses_billing_address', 1); $uses_additional_forms = true; } else { wpsc_update_categorymeta($category_id, 'uses_billing_address', 0); $uses_additional_forms = false; } // if($uses_additional_forms == true) { // $category_name = $wpdb->escape(stripslashes($_POST['title'])); // $url_name = sanitize_title($category_name); // $checkout_form_sets = get_option('wpsc_checkout_form_sets'); // $checkout_form_sets[$url_name] = $category_name; // //print_r($checkout_form_sets); // //exit(); // update_option('wpsc_checkout_form_sets', $checkout_form_sets); // } $wp_rewrite->flush_rules(); } echo "<div class='updated'><p align='center'>" . __('The product group has been edited.', 'wpsc') . "</p></div>"; } if ($_POST['submit_action'] == "add_categorisation") { $wpdb->query("INSERT INTO `" . WPSC_TABLE_CATEGORISATION_GROUPS . "` ( `name`, `description`, `active`, `default`) VALUES ( '" . $wpdb->escape(stripslashes($_POST['name'])) . "', '" . $wpdb->escape(stripslashes($_POST['description'])) . "', '1', '0')"); echo "<div class='updated'><p align='center'>" . __('The group has been added.', 'wpsc') . "</p></div>"; } if ($_POST['submit_action'] == "edit_categorisation") { $edit_group_id = $_POST['group_id']; $wpdb->query("UPDATE `" . WPSC_TABLE_CATEGORISATION_GROUPS . "` SET `name` = '" . $wpdb->escape(stripslashes($_POST['name'])) . "', `description` = '" . $wpdb->escape(stripslashes($_POST['description'])) . "' WHERE `id` IN('{$edit_group_id}') LIMIT 1 "); echo "<div class='updated'><p align='center'>" . __('The group has been edited.', 'wpsc') . "</p></div>"; if (!is_numeric($_GET['category_group']) || (int) $_GET['category_group'] == null) { $current_categorisation = $wpdb->get_row("SELECT * FROM `" . WPSC_TABLE_CATEGORISATION_GROUPS . "` WHERE `active` IN ('1') AND `default` IN ('1') LIMIT 1 ", ARRAY_A); } else { $current_categorisation = $wpdb->get_row("SELECT * FROM `" . WPSC_TABLE_CATEGORISATION_GROUPS . "` WHERE `active` IN ('1') AND `id` IN ('" . (int) $_GET['category_group'] . "') LIMIT 1 ", ARRAY_A); } } if (is_numeric($_GET['category_delete_id'])) { $delete_id = (int) $_GET['category_delete_id']; $deletesql = "UPDATE `" . WPSC_TABLE_CATEGORISATION_GROUPS . "` SET `active` = '0' WHERE `id`='{$delete_id}' AND `default` IN ('0') LIMIT 1"; $wpdb->query($deletesql); $delete_subcat_sql = "UPDATE `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` SET `active` = '0', `nice-name` = '' WHERE `group_id`='{$delete_id}'"; $wpdb->query($delete_subcat_sql); update_option('wpsc_category_url_cache', array()); $wp_rewrite->flush_rules(); } if (is_numeric($_GET['deleteid'])) { $delete_id = absint($_GET['deleteid']); $deletesql = "UPDATE `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` SET `active` = '0', `nice-name` = '' WHERE `id`='{$delete_id}' LIMIT 1"; if ($wpdb->query($deletesql)) { $delete_subcat_sql = "UPDATE `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` SET `active` = '0', `nice-name` = '' WHERE `category_parent`='{$delete_id}'"; $wpdb->query($delete_subcat_sql); // if this is the default category, we need to find a new default category if ($delete_id == get_option('wpsc_default_category')) { // select the category that is not deleted with the greatest number of products in it $new_default = $wpdb->get_var("SELECT `cat`.`id` FROM `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` AS `cat`\r\n\t\t\t\tLEFT JOIN `" . WPSC_TABLE_ITEM_CATEGORY_ASSOC . "` AS `assoc` ON `cat`.`id` = `assoc`.`category_id`\r\n\t\t\t\tWHERE `cat`.`active` IN ( '1' )\r\n\t\t\t\tGROUP BY `cat`.`id`\r\n\t\t\t\tORDER BY COUNT( `assoc`.`id` ) DESC\r\n\t\t\t\tLIMIT 1"); if ($new_default > 0) { update_option('wpsc_default_category', $new_default); } } update_option('wpsc_category_url_cache', array()); $wp_rewrite->flush_rules(); } } unset($GLOBALS['wpsc_category_url_cache']); update_option('wpsc_category_url_cache', array()); ?> <script language='javascript' type='text/javascript'> function conf() { var check = confirm("<?php echo __('Are you sure you want to delete this category? If the category has any subcategories, they will be deleted too.', 'wpsc'); ?> "); if(check) { return true; } else { return false; } } function categorisation_conf() { var check = confirm("<?php echo __('Are you sure you want to delete this product group? All categories it contains will be deleted too.', 'wpsc'); ?> "); if(check) { return true; } else { return false; } } <?php if (is_numeric($_POST['prodid'])) { echo "fillcategoryform(" . $_POST['prodid'] . ");"; } ?> </script> <div class="wrap"> <h2><?php echo __('Categories', 'wpsc'); ?> </h2> <?php if (function_exists('add_object_page')) { echo "<div id='dashboard-widgets' class='metabox-holder'>"; } ?> <span><?php echo __('Categorizing your products into groups help your customers find them. For instance if you sell hats and trousers you might want to setup a Group called clothes and add hats and trousers to that group.', 'wpsc'); ?> </span> <?php if (function_exists('add_object_page')) { echo "<div class='wpsc_products_nav27'>"; } else { echo "<div class='tablenav wpsc_groups_nav' >"; } ?> <div class="alignleft product_group" style='width: 500px;'> <form action='' method='GET' id='submit_categorisation_form' > <input type='hidden' value='<?php echo $_GET['page']; ?> ' name='page' /> <?php $categorisation_groups = $wpdb->get_results("SELECT * FROM `" . WPSC_TABLE_CATEGORISATION_GROUPS . "` WHERE `active` IN ('1')", ARRAY_A); //echo "<ul class='categorisation_links'>\n\r"; echo "<label for='select_categorisation_group' class='select_categorisation_group'>" . __('Select a Group to Manage', 'wpsc') . ": </label>"; echo "<select name='category_group' id='select_categorisation_group' onchange='submit_status_form(\"submit_categorisation_form\")'>"; foreach ((array) $categorisation_groups as $categorisation_group) { $selected = ''; if ($current_categorisation['id'] == $categorisation_group['id']) { //$selected = "class='selected'"; $selected = "selected='selected'"; } echo "<option value='{$categorisation_group['id']}' {$selected} >{$categorisation_group['name']}</option>"; //echo " <li $selected >\n\r"; //echo " <a href='?page={$_GET['page']}&category_group={$categorisation_group['id']}'>{$categorisation_group['name']}</a> "; //echo " </li>\n\r"; } echo "</select>"; //echo "<li>- <a href='' onclick='return showadd_categorisation_form()'><span>".__('Add New Group', 'wpsc')."</span></a></li>"; //echo "</ul>\n\r"; ?> <span><?php _e('or'); ?> </span> <?php echo "<a class='button add_categorisation_group' href='#' onclick='return showadd_categorisation_form()'><span>" . __('Add New Group', 'wpsc') . "</span></a>"; ?> </form> </div> <!-- <div class="alignright"> <a target="_blank" href='http://www.instinct.co.nz/e-commerce/product-groups/' class='about_this_page'><span><?php //echo __('About This Page', 'wpsc'); ?> </span> </a> </div> --> <br class="clear"/> </div> <div id='add_categorisation'> <strong><?php echo __('Add New Group', 'wpsc'); ?> </strong> <form method='POST' enctype='multipart/form-data'> <fieldset> <label for='add_categorisation_name'>Name</label> <input type='text' name='name' value='' id='add_categorisation_name' /> </fieldset> <fieldset> <label for='add_categorisation_description'>Description</label> <input type='text' name='description' value='' id='add_categorisation_description' /> </fieldset> <fieldset> <label> </label> <input type='hidden' name='submit_action' value='add_categorisation' /> <input type='submit' name='submit_form' value='<?php echo __('Submit', 'wpsc'); ?> ' /> </fieldset> </form> <br/> </div> <div id='edit_categorisation'> <strong><?php echo __('Edit Group', 'wpsc'); ?> </strong> <form method='POST' enctype='multipart/form-data'> <fieldset> <label for='add_categorisation_name'>Name</label> <input type='text' name='name' value='<?php echo $current_categorisation['name']; ?> ' id='add_categorisation_name' /> </fieldset> <fieldset> <label for='add_categorisation_description'>Description</label> <input type='text' name='description' value='<?php echo $current_categorisation['description']; ?> ' id='add_categorisation_description' /> </fieldset> <fieldset> <label> </label> <input type='hidden' name='group_id' value='<?php echo $current_categorisation['id']; ?> ' /> <input type='hidden' name='submit_action' value='edit_categorisation' /> <input type='submit' name='submit_form' value='<?php echo __('Submit', 'wpsc'); ?> ' /> <?php if ($current_categorisation['default'] != 1) { ?> <a href='<?php echo "?page={$_GET['page']}&category_delete_id={$current_categorisation['id']}"; ?> ' onclick='return categorisation_conf()' > <?php echo __('Delete', 'wpsc'); ?> </a> <?php } ?> </fieldset> </form> <br/> </div> <?php $num = 0; echo " <table id='productpage' style='margin-top: 1ex;'>\n\r"; echo " <tr><td class='firstcol' style='width: 297px;'>\n\r"; if (function_exists('add_object_page')) { echo "<div class='postbox' style='margin-right: 15px; min-width:255px;'>"; echo "<h3 class='hndle'>" . str_replace("[categorisation]", $current_categorisation['name'], __('"[categorisation]" Group', 'wpsc')) . "</h3>"; echo "<div class='inside'>"; } //echo "<div class='categorisation_title'><a href='' onclick='return showaddform()' class='add_category_link'><span>". __('+ Add new category to the "[categorisation]" Group', 'wpsc')."</span></a><strong class='form_group'>".str_replace("[categorisation]", $current_categorisation['name'], __('Manage "[categorisation]"', 'wpsc'))." <a href='#' onclick='return showedit_categorisation_form()'>[".__('Edit', 'wpsc')."]</a> </strong></div>"; echo " <table id='itemlist'>\n\r"; if (function_exists('add_object_page')) { echo "<tr></tr>"; } else { echo " <tr class='firstrow categorisation_title'>\n\r"; echo " <td>\n\r"; echo __('Image', 'wpsc'); echo " </td>\n\r"; echo " <td>\n\r"; echo __('Name', 'wpsc'); echo " </td>\n\r"; echo " <td>\n\r"; //echo __('Description', 'wpsc'); echo " </td>\n\r"; echo " <td>\n\r"; echo __('Edit', 'wpsc'); echo " </td>\n\r"; echo " </tr>\n\r"; } echo " <tr>\n\r"; echo " <td colspan='4' class='colspan'>\n\r"; echo "<div class='editing_this_group'><p>"; echo str_replace("[categorisation]", $current_categorisation['name'], __('You are editing the "[categorisation]" Group', 'wpsc')); echo " <a href='#' onclick='return showedit_categorisation_form()'>" . __('Edit', 'wpsc') . "</a>"; echo "</p></div>"; echo " </td>\n\r"; echo " <tr>\n\r"; display_categories($current_categorisation['id']); if (function_exists('add_object_page')) { echo "</table>"; echo "</div>"; //class inside ends echo "</div>"; //class postbox ends } else { echo "</table>\n\r"; } echo " </td><td id='poststuff' class='secondcol product_groups_page'>\n\r"; echo " <div id='productform' class='postbox'>"; echo "<form method='POST' enctype='multipart/form-data' name='editproduct{$num}'>\n\r"; if (function_exists('add_object_page')) { echo "<h3 class='hndle'>" . str_replace("[categorisation]", $current_categorisation['name'], __('You are editing an item in the "[categorisation]" Group', 'wpsc')) . "</h3>"; echo "<div class='inside'>"; } else { echo "<div class='categorisation_title'><strong class='form_group'>" . __('Edit Details', 'wpsc') . " </strong></div>\n\r"; echo "<div class='editing_this_group'><p>" . str_replace("[categorisation]", $current_categorisation['name'], __('You are editing an item in the "[categorisation]" Group', 'wpsc')) . "</p></div>"; } echo " <div id='formcontent'>\n\r"; echo " </div>\n\r"; if (function_exists('add_object_page')) { echo "</div>"; } echo "</form>\n\r"; echo " </div>\n\r"; ?> <div id="blank_item"> <h3 class="form_heading"><?php echo str_replace("[categorisation]", $current_categorisation['name'], __('Add Category', 'wpsc')); ?> </h3> <div class="inside"> <a href='' onclick='return showaddform()' class='add_category_link'><span><?php echo str_replace("[categorisation]", $current_categorisation['name'], __('+ Add new category to the "[categorisation]" Group', 'wpsc')); ?> </span></a> <span class="setting-description"><?php echo __('Adding a new category here will make it available when you add or edit a product.', 'wpsc'); ?> </span> </div> </div> <div id='additem' class='postbox'> <h3 class='hndle'><?php echo str_replace("[categorisation]", $current_categorisation['name'], __('You are adding a new item to the "[categorisation]" Group', 'wpsc')); ?> </h3> <div class='inside'> <form method='post' enctype='multipart/form-data' class='additem'> <div class='editing_this_group'><p> <?php echo "" . str_replace("[categorisation]", $current_categorisation['name'], __('You are adding a new item to the "[categorisation]" Group', 'wpsc')) . ""; ?> </p></div> <table class='category_forms form_table'> <tr> <td> <?php echo __('Name', 'wpsc'); ?> : </td> <td> <input type='text' class="text" name='name' value='' /> </td> </tr> <tr> <td> <?php echo __('Description', 'wpsc'); ?> : </td> <td> <textarea name='description' rows='8'></textarea> </td> </tr> <tr> <td> <?php echo __('Group Parent', 'wpsc'); ?> : </td> <td> <?php echo wpsc_parent_category_list($current_categorisation['id'], 0, 0); ?> </td> </tr> <tr> <td> <?php echo __('Group Image', 'wpsc'); ?> : </td> <td> <input type='file' name='image' value='' /> </td> </tr> <?php if (function_exists("getimagesize")) { ?> <tr> <td> </td> <td> <?php echo __('Height', 'wpsc'); ?> :<input type='text' size='6' name='height' value='<?php echo get_option('category_image_height'); ?> ' /> <?php echo __('Width', 'wpsc'); ?> :<input type='text' size='6' name='width' value='<?php echo get_option('category_image_width'); ?> ' /> <br /> <span class='wpscsmall description'><?php echo __('You can upload thumbnail images for each group. To display Group details in your shop you must configure these settings under <a href="admin.php?page=wpsc-settings&tab=presentation">Presentation Settings</a>.', 'wpsc'); ?> </span> </td> </tr> <?php } ?> <?php wpsc_category_tm(); //category target market checkbox ?> <tr> <td colspan='2' class='category_presentation_settings'> <h4><?php echo __('Presentation Settings', 'wpsc'); ?> </h4> <span class='small'><?php echo __('To over-ride the presentation settings for this group you can enter in your prefered settings here', 'wpsc'); ?> </span> </td> </tr> <tr> <td> <?php echo __('Catalog View', 'wpsc'); ?> : </td> <td> <select name='product_view'> <option value='default' <?php echo $product_view1; ?> ><?php echo __('Default View', 'wpsc'); ?> </option> <?php if (function_exists('product_display_list')) { ?> <option value='list' <?php echo $product_view2; ?> ><?php echo __('List View', 'wpsc'); ?> </option> <?php } else { ?> <option value='list' disabled='disabled' <?php echo $product_view2; ?> ><?php echo __('List View', 'wpsc'); ?> </option> <?php } if (function_exists('product_display_grid')) { ?> <option value='grid' <?php echo $product_view3; ?> ><?php echo __('Grid View', 'wpsc'); ?> </option> <?php } else { ?> <option value='grid' disabled='disabled' <?php echo $product_view3; ?> ><?php echo __('Grid View', 'wpsc'); ?> </option> <?php } ?> </select> </td> </tr> <tr> <td colspan='2'> <?php echo __('Thumbnail Size', 'wpsc'); ?> : <?php echo __('Height', 'wpsc'); ?> : <input type='text' value='' name='product_height' size='6'/> <?php echo __('Width', 'wpsc'); ?> : <input type='text' value='' name='product_width' size='6'/> <br/> </td> </tr> <tr> <td colspan='2' class='category_presentation_settings'> <h4><?php _e('Checkout Settings', 'wpsc'); ?> </h4> <?php /* <span class='small'><?php _e('To over-ride the presentation settings for this group you can enter in your prefered settings here', 'wpsc'); ?></span> */ ?> </td> </tr> <tr> <td><?php _e("This category requires additional checkout form fields", 'wpsc'); ?> :</td> <td> <select name='use_additonal_form_set'> <option value=''>None</option> <?php $checkout_sets = get_option('wpsc_checkout_form_sets'); unset($checkout_sets[0]); foreach ((array) $checkout_sets as $key => $value) { $selected_state = ""; if ($_GET['checkout-set'] == $key) { $selected_state = "selected='selected'"; } echo "<option {$selected_state} value='{$key}'>" . stripslashes($value) . "</option>"; } ?> </select> <?php /* <label><input type="radio" name="uses_additonal_forms" value="1"/><?php _e("Yes",'wpsc'); ?></label> */ /* <label><input type="radio" checked="checked" name="uses_additonal_forms" value="0"/><?php _e("No",'wpsc'); ?></label>*/ ?> </td> </tr> <tr> <td colspan='2'> </td> </tr> <tr> <td><?php _e("Products in this category use the billing address to calculate shipping", 'wpsc'); ?> :</td> <td> <label><input type="radio" name="uses_billing_address" value="1"/><?php _e("Yes", 'wpsc'); ?> </label> <label><input type="radio" checked="checked" name="uses_billing_address" value="0"/><?php _e("No", 'wpsc'); ?> </label> </td> </tr> <tr> <td> </td> <td class='last_row'> <input type='hidden' name='categorisation_group' value='<?php echo $current_categorisation['id']; ?> ' /> <input type='hidden' name='submit_action' value='add' /> <input class='button-primary' type='submit' name='submit' value='<?php echo __('Add Category', 'wpsc'); ?> ' /> </td> </tr> </table> </form> </div> </div> </td></tr> </table> </div> <?php }