function eshop_products_manager() { global $wpdb, $user_ID, $eshopoptions; get_currentuserinfo(); //add in if current user can here if (current_user_can('eShop_admin')) { $eshopfilter = 'all'; if (isset($_POST['eshopfiltering'])) { $eshopfilter = $_POST['eshopfilter']; } ?> <div class="wrap"> <div id="eshopicon" class="icon32"></div><h2><?php _e('Products', 'eshop'); ?> </h2> <?php eshop_admin_mode(); ?> <h3><?php _e('Authors', 'eshop'); ?> </h3> <?php if (isset($msg)) { echo '<div class="updated fade"><p>' . $msg . '</p></div>'; } ?> <form action="" method="post" class="eshop filtering"> <p><label for="eshopfilter"><?php _e('Show products for', 'eshop'); ?> </label><select name="eshopfilter" id="eshopfilter"> <?php echo eshop_authors($eshopfilter); ?> </select><input type="submit" name="eshopfiltering" id="submit" class="submit button-primary" value="Filter" /></p> </form> </div> <?php } ?> <div class="wrap"> <h3><?php _e('Products Table', 'eshop'); ?> </h3> <p><?php _e('A reference table for identifying products', 'eshop'); ?> .</p> <?php if (isset($_POST['eshopqp']) && isset($_POST['product'])) { foreach ($_POST['product'] as $id => $type) { $pid = $id; $stocktable = $wpdb->prefix . "eshop_stock"; $eshop_product = maybe_unserialize(get_post_meta($pid, '_eshop_product', true)); $total = 0; for ($i = 1; $i <= $eshopoptions['options_num']; $i++) { if (isset($type[$i]['stkqty']) && is_numeric($type[$i]['stkqty'])) { $meta_value = $type[$i]['stkqty']; $results = $wpdb->get_results("select post_id from {$stocktable} where post_id={$pid} && option_id={$i}"); if (!empty($results)) { $wpdb->query($wpdb->prepare("UPDATE {$stocktable} SET available=%d WHERE post_id=%d && option_id=%d", $meta_value, $pid, $i)); } else { $wpdb->query($wpdb->prepare("INSERT INTO {$stocktable} (post_id,option_id,available,purchases) VALUES (%d,%d,%d,0)", $pid, $i, $meta_value)); } $total = $total + $type[$i]['stkqty']; } } if (isset($type['sale'])) { $eshop_product['sale'] = 'yes'; update_post_meta($id, '_eshop_sale', 'yes'); } else { $eshop_product['sale'] = 'no'; delete_post_meta($id, '_eshop_sale'); } if (isset($type['featured'])) { $eshop_product['featured'] = 'Yes'; update_post_meta($id, '_eshop_featured', 'Yes'); } else { $eshop_product['featured'] = 'no'; delete_post_meta($id, '_eshop_featured'); } if (isset($type['stkavail'])) { $stkav = '1'; } else { $stkav = '0'; } if ($stkav == '1' && ($eshop_product['description'] == '' || $eshop_product['sku'] == '' || $eshop_product['products']['1']['option'] == '' || $eshop_product['products']['1']['price'] == '')) { $stkav = '0'; $emsg[0] = 'set'; } if ($stkav == '1' && ($total == 0 && 'yes' == $eshopoptions['stock_control'])) { $stkav = '0'; $emsg[1] = 'set'; } if ($stkav == '1') { update_post_meta($pid, '_eshop_stock', $stkav); } else { delete_post_meta($id, '_eshop_stock'); } update_post_meta($pid, '_eshop_product', $eshop_product); } $msg = ''; if (isset($emsg)) { if (isset($emsg[0])) { $msg .= __(' Some products were marked as not available due to missing information, check the individual product pages.', 'eshop'); } if (isset($emsg[1])) { $msg .= __(' Some products were marked as not available as no stock was found.', 'eshop'); } } echo '<div id="message" class="updated fade">' . __('Products have been updated.', 'eshop') . $msg . "</div>\n"; } //sort by switch statement $csa = $csb = $csc = $csd = $cse = $csf = ''; if (isset($_GET['by'])) { switch ($_GET['by']) { case 'sa': //date descending $sortby = 'sku'; $csa = ' class="current"'; break; case 'sb': //description alphabetically $sortby = 'description'; $csb = ' class="current"'; break; /* case'sc'://name alphabetically (last name) $sortby='shiprate'; $csc=' class="current"'; break; */ /* case'sc'://name alphabetically (last name) $sortby='shiprate'; $csc=' class="current"'; break; */ case 'sd': //stock availability $sortby = '_stock'; $csd = ' class="current"'; break; case 'se': //transaction id numerically $sortby = '_featured'; $cse = ' class="current"'; break; case 'sf': //date ascending //date ascending default: $sortby = 'id'; $csf = ' class="current"'; } } else { $csf = ' class="current"'; $sortby = 'id'; } if (current_user_can('eShop_admin')) { if ($eshopfilter == 'all') { $addtoq = ''; } elseif (is_numeric($eshopfilter)) { $addtoq = "AND posts.post_author = {$eshopfilter}"; } else { die('There was an error'); } } else { $addtoq = "AND posts.post_author = {$user_ID} "; } $numoptions = $eshopoptions['options_num']; $metatable = $wpdb->prefix . 'postmeta'; $poststable = $wpdb->prefix . 'posts'; $range = 10; $max = $wpdb->get_var("SELECT COUNT(meta.post_id) FROM {$metatable} as meta, {$poststable} as posts where meta.meta_key='_eshop_product' \r\n\tAND posts.ID = meta.post_id \r\n\tAND posts.post_status != 'trash' AND posts.post_status != 'revision'" . $addtoq); if ($eshopoptions['records'] != '' && is_numeric($eshopoptions['records'])) { $records = $eshopoptions['records']; } else { $records = '10'; } if (isset($_GET['_p']) && is_numeric($_GET['_p'])) { $epage = $_GET['_p']; } else { $epage = '1'; } if (!isset($_GET['eshopall'])) { $page_links = paginate_links(array('base' => add_query_arg('_p', '%#%'), 'format' => '', 'total' => ceil($max / $records), 'current' => $epage, 'type' => 'array')); $offset = $epage * $records - $records; } else { $page_links = paginate_links(array('base' => add_query_arg('_p', '%#%'), 'format' => '', 'total' => ceil($max / $records), 'current' => $epage, 'type' => 'array', 'show_all' => true)); $offset = '0'; $records = $max; } if ($max > 0) { $apge = get_admin_url() . 'admin.php?page=' . $_GET['page']; echo '<ul id="eshopsubmenu" class="stuffbox">'; echo '<li><span>' . __('Sort Products by »', 'eshop') . '</span></li>'; echo '<li><a href="' . $apge . '&by=sf"' . $csf . '>' . __('ID Number', 'eshop') . '</a></li>'; echo '<li><a href="' . $apge . '&by=sa"' . $csa . '>' . __('Sku', 'eshop') . '</a></li>'; echo '<li><a href="' . $apge . '&by=sb"' . $csb . '>' . __('Product', 'eshop') . '</a></li>'; // echo '<li><a href="'.$apge.'&by=sc"'.$csc.'>'.__('Shipping','eshop').'</a></li>'; echo '<li><a href="' . $apge . '&by=sd"' . $csd . '>' . __('Stock', 'eshop') . '</a></li>'; echo '<li><a href="' . $apge . '&by=se"' . $cse . '>' . __('Featured', 'eshop') . '</a></li>'; echo '</ul>'; if (current_user_can('eShop_admin')) { if ($eshopfilter == 'all') { $addtoq = ''; } elseif (is_numeric($eshopfilter)) { $addtoq = "AND posts.post_author = '{$eshopfilter}'"; } else { die('There was an error'); } } else { $addtoq = "AND posts.post_author = '{$user_ID}' "; } $myrowres = $wpdb->get_results("\r\n\t\tSELECT DISTINCT meta.post_id\r\n\t\tFROM {$metatable} as meta, {$poststable} as posts\r\n\t\tWHERE meta.meta_key = '_eshop_product'\r\n\t\tAND posts.ID = meta.post_id\r\n\t\t{$addtoq}\r\n\t\tAND posts.post_status != 'trash' AND posts.post_status != 'revision'\r\n\t\tORDER BY meta.post_id"); $calt = 0; $currsymbol = $eshopoptions['currency_symbol']; $x = 0; //add in post id( doh! ) foreach ($myrowres as $row) { $grabit[$x] = maybe_unserialize(get_post_meta($row->post_id, '_eshop_product', true)); //get_post_custom($row->post_id); $grabit[$x]['_eshop_stock'] = get_post_meta($row->post_id, '_eshop_stock', true); //get_post_custom($row->post_id); $grabit[$x]['id'] = $row->post_id; $grabit[$x]['_featured'] = '1'; $grabit[$x]['_stock'] = '1'; if (strtolower($grabit[$x]['featured']) == 'yes') { $grabit[$x]['_featured'] = '0'; } if (strtolower($grabit[$x]['_eshop_stock']) == '1') { $grabit[$x]['_stock'] = '0'; } $x++; } $array = $grabit; $grab = eshop_subval_sort($array, $sortby); //grabs some tax data if (!isset($eshopoptions['etax'])) { $eshopoptions['etax'] = array(); } $etax = $eshopoptions['etax']; if (!isset($etax['bands']) || $etax['bands'] == '') { $etax['bands'] = '0'; } ?> <form action="" method="post" class="eshop"> <div class="eshopwidetable"> <table class="hidealllabels widefat"> <caption><?php _e('Product Quick reference table', 'eshop'); ?> </caption> <thead> <tr> <th id="sku"><?php _e('Sku', 'eshop'); ?> </th> <th id="ids"><?php _e('ID', 'eshop'); ?> </th> <th id="page"><?php _e('Page', 'eshop'); ?> </th> <th id="desc"><?php _e('Description', 'eshop'); ?> </th> <th id="down"><abbr title="<?php _e('Downloads', 'eshop'); ?> "><?php _e('DL', 'eshop'); ?> </abbr></th> <th id="ship"><abbr title="<?php _e('Shipping Rate', 'eshop'); ?> "><?php _e('S/R', 'eshop'); ?> </abbr></th> <th id="stkavail"><abbr title="<?php _e('Stock Available', 'eshop'); ?> "><?php _e('Stk avail.', 'eshop'); ?> </abbr></th> <th id="purc"><abbr title="<?php _e('Number of Purchases', 'eshop'); ?> "><?php _e('Purc.', 'eshop'); ?> </abbr></th> <th id="ftrd"><abbr title="<?php _e('Marked as Featured', 'eshop'); ?> "><?php _e('Feat.', 'eshop'); ?> </abbr></th> <th id="onsale" title="<?php _e('Product on sale', 'eshop'); ?> "><?php _e('Sale', 'eshop'); ?> </th> <th id="opt"><?php _e('Option/Price', 'eshop'); ?> </th> <?php if ($etax['bands'] > 0) { ?> <th id="tax"><?php _e('Tax', 'eshop'); ?> </th> <?php } ?> <th id="stk"><abbr title="<?php _e('Stock Level', 'eshop'); ?> "><?php _e('Stk', 'eshop'); ?> </abbr></th> <th id="associmg"><?php _e('Thumbnail', 'eshop'); ?> </th> </tr> </thead> <tbody> <?php $scc = 0; $start = $epage * $records - $records; if (isset($_GET['eshopall'])) { $start = 0; } $grab = array_slice($grab, $start, $records); foreach ($grab as $grabit) { $eshop_product = $grabit; if (isset($grabit['_eshop_stock']) && is_numeric($grabit['_eshop_stock'])) { $stkav = $grabit['_eshop_stock']; } else { $stkav = 0; } $pdownloads = 'no'; if (isset($eshop_product['products']['1']['price']) && $eshop_product['products']['1']['price'] != '') { //reset array $purcharray = array(); //get page title $ptitle = get_post($grabit['id']); $getid = $grabit['id']; //get download file title $pdown = ''; //check if downloadable product for ($i = 1; $i <= $eshopoptions['options_num']; $i++) { if ($eshop_product['products'][$i]['option'] != '') { if (isset($eshop_product['products'][$i]['download']) && $eshop_product['products'][$i]['download'] != '') { $dltable = $wpdb->prefix . 'eshop_downloads'; $fileid = $eshop_product['products'][$i]['download']; $filetitle = $wpdb->get_var("SELECT title FROM {$dltable} WHERE id='{$fileid}'"); $pdown .= '<a href="admin.php?page=eshop-downloads.php&edit=' . $fileid . '">' . wp_specialchars(stripslashes($filetitle), 1) . '</a>'; $pdownloads = 'yes'; } else { $pdown .= '<br />'; } } } if ($ptitle->post_title == '') { $posttitle = __('(no title)'); } else { $posttitle = $ptitle->post_title; } $calt++; $alt = $calt % 2 ? '' : ' class="alternate"'; echo '<tr' . $alt . '>'; echo '<td id="sku' . $calt . '" headers="sku">' . $eshop_product['sku'] . '</td>'; echo '<td headers="ids sku' . $calt . '">' . $getid . '<input type="hidden" value="1" name="product[' . $getid . '][theid]" /></td>'; echo '<td headers="page sku' . $calt . '"><a href="post.php?action=edit&post=' . $getid . '" title="id: ' . $getid . '">' . $posttitle . '</a></td>'; echo '<td headers="desc sku' . $calt . '">' . stripslashes(esc_attr($eshop_product['description'])) . '</td>'; echo '<td headers="down sku' . $calt . '">' . $pdown . '</td>'; echo '<td headers="ship sku' . $calt . '">' . $eshop_product['shiprate'] . '</td>'; if ($stkav == '1') { $stkchk = ' checked="checked"'; } else { $stkchk = ''; } echo '<td headers="stkavail sku' . $calt . '"><label for="stkavail' . $calt . '">' . __('Stock Available', 'eshop') . '</label><input type="checkbox" value="1" name="product[' . $getid . '][stkavail]" id="stkavail' . $calt . '"' . $stkchk . ' /></td>'; $purcharray = array(); $dltable = $wpdb->prefix . "eshop_downloads"; $stocktable = $wpdb->prefix . "eshop_stock"; for ($i = 1; $i <= $eshopoptions['options_num']; $i++) { if ($eshop_product['products'][$i]['option'] != '') { if (isset($eshop_product['products'][$i]['download']) && $eshop_product['products'][$i]['download'] != '') { $fileid = $eshop_product['products'][$i]['download']; $purchases = $wpdb->get_var("SELECT purchases FROM {$dltable} WHERE id='{$fileid}'"); if ($purchases != '') { $purcharray[] = $purchases; } else { $purcharray[] = '0'; } } else { $purchases = $wpdb->get_var("select purchases from {$stocktable} where post_id={$getid} && option_id={$i} limit 1"); if ($purchases != '') { $purcharray[] = $purchases; } else { $purcharray[] = '0'; } } } if ($pdownloads == 'no') { break; } } //Featured Product if ($eshop_product['featured'] == 'Yes') { $fchk = ' checked="checked"'; } else { $fchk = ''; } $feat = '<label for="featured' . $calt . '">' . __('Featured Product', 'eshop') . '</label><input type="checkbox" value="1" name="product[' . $getid . '][featured]" id="featured' . $calt . '"' . $fchk . ' />'; echo '<td headers="purc sku' . $calt . '">' . implode("<br />", $purcharray) . '</td>'; echo '<td headers="ftrd sku' . $calt . '">' . $feat . '</td>'; //Sale Product if (isset($eshop_product['sale']) && $eshop_product['sale'] == 'yes') { $salechk = ' checked="checked"'; } else { $salechk = ''; } $onsale = '<label for="sale' . $calt . '">' . __('Product On Sale', 'eshop') . '</label><input type="checkbox" value="1" name="product[' . $getid . '][sale]" id="sale' . $calt . '"' . $salechk . ' />'; echo '<td headers="onsale sku' . $calt . '">' . $onsale . '</td>'; echo '<td headers="opt sku' . $calt . '" class="optline">'; for ($i = 1; $i <= $numoptions; $i++) { if ($eshop_product['products'][$i]['option'] != '') { echo sprintf(__('%1$s @ %2$s%3$s', 'eshop'), stripslashes(esc_attr($eshop_product['products'][$i]['option'])), $currsymbol, number_format_i18n($eshop_product['products'][$i]['price'], __('2', 'eshop'))) . '<br />'; } } echo '</td>'; if ($etax['bands'] > 0) { echo '<td headers="tax sku' . $calt . '" class="optline">'; for ($i = 1; $i <= $numoptions; $i++) { if (isset($eshop_product['products'][$i]['tax']) && $eshop_product['products'][$i]['tax'] != '') { $tzone = sprintf(__('Band %1$d', 'eshop'), $eshop_product['products'][$i]['tax']); $disptzone = apply_filters('eshop_rename_tax_zone', array()); if (isset($disptzone[$eshop_product['products'][$i]['tax']])) { $tzone = $disptzone[$eshop_product['products'][$i]['tax']]; } echo $tzone . '<br />'; } else { echo '<br />'; } } echo '</td>'; } //reset the string to stop multiple boxes! $pravailable = ''; if ($eshopoptions['stock_control'] == 'yes') { for ($i = 1; $i <= $numoptions; $i++) { if ($eshop_product['products'][$i]['option'] != '') { $available = $wpdb->get_var("select available from {$stocktable} where post_id={$getid} && option_id={$i} limit 1"); if ($available == '') { $available = '0'; } if (is_numeric($available) && $eshopoptions['stock_control'] == 'yes') { $pravailable .= '<label for="stock' . $calt . '">' . __('Stock', 'eshop') . '</label><input type="text" value="' . $available . '" id="stock' . $scc . '" name="product[' . $getid . '][' . $i . '][stkqty]" size="4" /><br />' . "\n"; $scc++; } } } } else { $pravailable .= __('n/a', 'eshop') . '<br />'; } echo '<td headers="stk sku' . $calt . '">' . $pravailable . '</td>'; echo '<td headers="associmg sku' . $calt . '">'; $w = get_option('thumbnail_size_w'); $h = get_option('thumbnail_size_h'); $imgsize = '50'; $w = round($w * $imgsize / 100); $h = round($h * $imgsize / 100); if (has_post_thumbnail($getid)) { echo '<a class="itemref" href="' . get_permalink($getid) . '" title="view page">' . get_the_post_thumbnail($getid, array($w, $h)) . '</a>' . "\n"; } else { $eimage = eshop_files_directory(); $eshopnoimage = apply_filters('eshop_no_image', $eimage['1'] . 'noimage.png'); echo '<a class="itemref" href="' . get_permalink($getid) . '" title="view page"><img src="' . $eshopnoimage . '" height="' . $h . '" width="' . $w . '" alt="" /></a>' . "\n"; } echo '</td>'; echo '</tr>' . "\n"; } } ?> </tbody> </table> </div> <p><input type="submit" name="eshopqp" id="submitit" class="submit button-primary" value="<?php _e('Update Products', 'eshop'); ?> " /></p> </form> <?php //paginate echo '<div class="paginate tablenav-pages stuffbox">'; if ($records != $max) { $eecho = $page_links; } if (isset($_GET['eshopall'])) { $eshopdisp = number_format_i18n(1); } else { $eshopdisp = number_format_i18n(($epage - 1) * $records + 1); } echo sprintf('<span class="displaying-num">' . __('Displaying %s–%s of %s', 'eshop') . '</span>', $eshopdisp, number_format_i18n(min($epage * $records, $max)), number_format_i18n($max)); if (isset($eecho)) { $thispage = esc_url(add_query_arg('eshopall', 'yes', $_SERVER['REQUEST_URI'])); echo "<ul class='page-numbers'>\n\t<li>" . join("</li>\n\t<li>", $eecho) . "</li>\n<li>" . '<a href="' . $thispage . '">' . __('View All', 'eshop') . '</a>' . "</li>\n</ul>\n"; } echo '<br /></div>'; //end } else { echo '<p>' . __('There are no products available.', 'eshop') . '</p>'; } echo '</div>'; }
function eshop_base_manager() { global $wpdb, $eshopoptions; include 'eshop-base-functions.php'; if (!isset($_GET['change'])) { ?> <div class="wrap"> <div id="eshopicon" class="icon32"></div><h2><?php _e('eShop Base Products', 'eshop'); ?> </h2> <?php eshop_admin_mode(); ?> <ul> <?php $dlpage = '?page=' . $_GET['page'] . '&eshopbasedl=yes'; ?> <li><a href="<?php echo $dlpage; ?> &d=1"><?php _e('Download the xml file', 'eshop'); ?> </a></li> <li><a href="<?php echo $dlpage; ?> &d=1&os=mac"><?php _e('Mac - Download the xml file', 'eshop'); ?> </a></li> <li><a href="<?php echo $dlpage; ?> "><?php _e('View xml file', 'eshop'); ?> </a></li> <li><?php echo sprintf(__('Direct link to file for Google Base: <a href="%1$s">%1$s</a>', 'eshop'), trim(site_url(), '/') . '/?eshopbasefeed'); ?> </li> </ul> <?php //sort by switch statement $csa = $csb = $csc = $csd = $cse = $csf = ''; if (isset($_GET['by'])) { switch ($_GET['by']) { case 'sa': //date descending $sortby = 'sku'; $csa = ' class="current"'; break; case 'sb': //description alphabetically $sortby = 'description'; $csb = ' class="current"'; break; /* case'sd'://stock availability $sortby='_eshop_stock'; $csd=' class="current"'; break; */ /* case'sd'://stock availability $sortby='_eshop_stock'; $csd=' class="current"'; break; */ case 'sf': //date ascending //date ascending default: $sortby = 'id'; $csf = ' class="current"'; } } else { $csf = ' class="current"'; $sortby = 'id'; } $numoptions = $eshopoptions['options_num']; $metatable = $wpdb->prefix . 'postmeta'; $poststable = $wpdb->prefix . 'posts'; $stocktable = $wpdb->prefix . "eshop_stock"; $range = 10; $max = $wpdb->get_var("SELECT COUNT(meta.post_id) FROM {$metatable} as meta, \n\t{$poststable} as posts where meta.meta_key='_eshop_product' \n\tAND posts.ID = meta.post_id\t\n\tAND posts.post_status != 'trash' AND posts.post_status != 'revision'"); if ($eshopoptions['records'] != '' && is_numeric($eshopoptions['records'])) { $records = $eshopoptions['records']; } else { $records = '10'; } if (isset($_GET['_p']) && is_numeric($_GET['_p'])) { $epage = $_GET['_p']; } else { $epage = '1'; } if (!isset($_GET['eshopall'])) { $page_links = paginate_links(array('base' => add_query_arg('_p', '%#%'), 'format' => '', 'total' => ceil($max / $records), 'current' => $epage, 'type' => 'array')); $offset = $epage * $records - $records; } else { $page_links = paginate_links(array('base' => add_query_arg('_p', '%#%'), 'format' => '', 'total' => ceil($max / $records), 'current' => $epage, 'type' => 'array', 'show_all' => true)); $offset = '0'; $records = $max; } if ($max > 0) { $apge = get_admin_url() . 'admin.php?page=eshop-base.php'; echo '<ul id="eshopsubmenu" class="stuffbox">'; echo '<li><span>' . __('Sort Orders by »', 'eshop') . '</span></li>'; echo '<li><a href="' . $apge . '&by=sf"' . $csf . '>' . __('ID Number', 'eshop') . '</a></li>'; echo '<li><a href="' . $apge . '&by=sa"' . $csa . '>' . __('Sku', 'eshop') . '</a></li>'; echo '<li><a href="' . $apge . '&by=sb"' . $csb . '>' . __('Product', 'eshop') . '</a></li>'; // echo '<li><a href="'.$apge.'&by=sd"'.$csd.'>'.__('Stock','eshop').'</a></li>'; echo '</ul>'; $myrowres = $wpdb->get_results("\n\t\tSELECT DISTINCT meta.post_id\n\t\tFROM {$metatable} as meta, {$poststable} as posts\n\t\tWHERE meta.meta_key = '_eshop_product'\n\t\tAND posts.ID = meta.post_id\n\t\tAND posts.post_status != 'trash' AND posts.post_status != 'revision'\n\t\tORDER BY meta.post_id"); $calt = 0; $currsymbol = $eshopoptions['currency_symbol']; $x = 0; //add in post id( doh! ) foreach ($myrowres as $row) { $grabit[$x] = maybe_unserialize(get_post_meta($row->post_id, '_eshop_product', true)); //get_post_custom($row->post_id); $grabit[$x]['_eshop_stock'] = get_post_meta($row->post_id, '_eshop_stock', true); //get_post_custom($row->post_id); $grabit[$x]['id'] = $row->post_id; $grabit[$x]['_featured'] = '1'; $grabit[$x]['_stock'] = '1'; if (strtolower($grabit[$x]['featured']) == 'yes') { $grabit[$x]['_featured'] = '0'; } if (strtolower($grabit[$x]['_eshop_stock']) == '1') { $grabit[$x]['_stock'] = '0'; } $x++; } $array = $grabit; $grab = eshop_subval_sort($array, $sortby); ?> <table class="widefat"> <caption><?php _e('Product Quick reference table', 'eshop'); ?> </caption> <thead> <tr> <th id="sku"><?php _e('Sku', 'eshop'); ?> </th> <th id="page"><?php _e('Page', 'eshop'); ?> </th> <th id="desc"><?php _e('Description', 'eshop'); ?> </th> <th id="down"><?php _e('Download', 'eshop'); ?> </th> <th id="stkavail"><abbr title="<?php _e('Stock Available', 'eshop'); ?> "><?php _e('Stk avail.', 'eshop'); ?> </abbr></th> <th id="stk"><?php _e('Stock', 'eshop'); ?> </th> <th id="opt"><?php _e('Option/Price', 'eshop'); ?> </th> <th id="imga"><?php _e('Image', 'eshop'); ?> </th> </tr> </thead> <tbody> <?php $start = $epage * $records - $records; if (isset($_GET['eshopall'])) { $start = 0; } $grab = array_slice($grab, $start, $records); foreach ($grab as $foo => $grabit) { $eshop_product = $grabit; if (isset($grabit['_eshop_stock'])) { $stkav = $grabit['_eshop_stock']; } else { $stkav = 0; } if (isset($eshop_product['products']['1']['price']) && $eshop_product['products']['1']['price'] != '') { //get page title $ptitle = get_post($grabit['id']); $pdown = ''; //check if downloadable product for ($i = 1; $i <= $eshopoptions['options_num']; $i++) { if ($eshop_product['products'][$i]['option'] != '') { if (isset($eshop_product['products'][$i]['download']) && $eshop_product['products'][$i]['download'] != '') { $dltable = $wpdb->prefix . 'eshop_downloads'; $fileid = $eshop_product['products'][$i]['download']; $filetitle = $wpdb->get_var("SELECT title FROM {$dltable} WHERE id='{$fileid}'"); $pdown .= '<a href="admin.php?page=eshop-downloads.php&edit=' . $fileid . '">' . $filetitle . '</a>'; $pdownloads = 'yes'; } else { $pdown .= '<br />'; } } } if ($ptitle->post_title == '') { $posttitle = __('(no title)', 'eshop'); } else { $posttitle = $ptitle->post_title; } $calt++; $alt = $calt % 2 ? '' : ' class="alternate"'; echo '<tr' . $alt . '>'; echo '<td id="sku' . $calt . '" headers="sku"><a href="admin.php?page=eshop-base.php&change=' . $grabit['id'] . '" title="' . __('Change details', 'eshop') . '">' . $eshop_product['sku'] . '</a></td>'; echo '<td headers="page sku' . $calt . '"><a href="post.php?action=edit&post=' . $grabit['id'] . '">' . $posttitle . '</a></td>'; echo '<td headers="desc sku' . $calt . '">' . stripslashes(esc_attr($eshop_product['description'])) . '</td>'; echo '<td headers="down sku' . $calt . '">' . $pdown . '</td>'; if ($stkav == '1') { $stkchk = __('Yes', 'eshop'); } else { $stkchk = __('No', 'eshop'); } echo '<td headers="stkavail sku' . $calt . '">' . $stkchk . '</td>'; $pid = $grabit['id']; if ($eshopoptions['stock_control'] == 'yes') { $pravailable = ''; $getid = $grabit['id']; for ($i = 1; $i <= $numoptions; $i++) { if ($eshop_product['products'][$i]['option'] != '') { $available = $wpdb->get_var("select available from {$stocktable} where post_id={$getid} && option_id={$i} limit 1"); if ($available == '' || $available < 0) { $available = '0'; } if (is_numeric($available) && $eshopoptions['stock_control'] == 'yes') { $pravailable .= $available . '<br />' . "\n"; } } } } else { $pravailable = __('n/a', 'eshop') . '<br />'; } echo '<td headers="stk sku' . $calt . '">' . $pravailable . '</td>'; echo '<td headers="opt sku' . $calt . '">'; for ($i = 1; $i <= $numoptions; $i++) { if ($eshop_product['products'][$i]['option'] != '') { echo sprintf(__('%1$s @ %2$s%3$s', 'eshop'), stripslashes(esc_attr($eshop_product['products'][$i]['option'])), $currsymbol, number_format_i18n($eshop_product['products'][$i]['price'], __('2', 'eshop'))) . '<br />'; } } echo '</td>'; echo '<td>'; $getid = $grabit['id']; $w = get_option('thumbnail_size_w'); $h = get_option('thumbnail_size_h'); $imgsize = '50'; $w = round($w * $imgsize / 100); $h = round($h * $imgsize / 100); if (has_post_thumbnail($getid)) { echo '<a class="itemref" href="' . get_permalink($getid) . '">' . get_the_post_thumbnail($getid, array($w, $h)) . '</a>' . "\n"; } else { $eimage = eshop_files_directory(); $eshopnoimage = apply_filters('eshop_no_image', $eimage['1'] . 'noimage.png'); echo '<a class="itemref" href="' . get_permalink($getid) . '"><img src="' . $eshopnoimage . '" height="' . $h . '" width="' . $w . '" alt="" /></a>' . "\n"; } echo '</td>'; echo '</tr>'; } } ?> </tbody> </table> <?php //paginate echo '<div class="paginate tablenav-pages stuffbox">'; if ($records != $max) { $eecho = $page_links; } if (isset($_GET['eshopall'])) { $eshopdisp = number_format_i18n(1); } else { $eshopdisp = number_format_i18n(($epage - 1) * $records + 1); } echo sprintf('<span class="displaying-num">' . __('Displaying %s–%s of %s', 'eshop') . '</span>', $eshopdisp, number_format_i18n(min($epage * $records, $max)), number_format_i18n($max)); if (isset($eecho)) { $thispage = esc_url(add_query_arg('eshopall', 'yes', $_SERVER['REQUEST_URI'])); echo "<ul class='page-numbers'>\n\t<li>" . join("</li>\n\t<li>", $eecho) . "</li>\n<li>" . '<a href="' . $thispage . '">' . __('View All', 'eshop') . '</a>' . "</li>\n</ul>\n"; } echo '<br /></div>'; //end } else { echo '<p>' . __('There are no products available.', 'eshop') . '</p>'; } echo '</div>'; } else { //////////change one. //form checks: $basetable = $wpdb->prefix . "eshop_base_products"; $change = $_GET['change']; if (is_numeric($change)) { if (isset($_POST['submit'])) { include 'cart-functions.php'; if (get_magic_quotes_gpc() == 0) { $_POST = stripslashes_array($_POST); } $_POST = sanitise_array($_POST); $err = ''; if (isset($_POST['baseimg'])) { $baseimg = esc_sql($_POST['baseimg']); } else { $baseimg = ''; } $basebrand = esc_sql($_POST['basebrand']); $baseean = esc_sql($_POST['baseean']); $baseisbn = esc_sql($_POST['baseisbn']); $basempn = esc_sql($_POST['basempn']); $baseptype = esc_sql($_POST['baseptype']); $baseqty = esc_sql($_POST['baseqty']); $basecondition = esc_sql($_POST['basecondition']); $baseexpiration_year = $_POST['baseexpiration_year']; $baseexpiration_month = $_POST['baseexpiration_month']; $baseexpiration_day = $_POST['baseexpiration_day']; if (!is_numeric($baseqty)) { $baseqty = '25'; $err .= '<li>' . __('Quantity was not numeric, a default of 25 has been applied.', 'eshop') . '</li>'; } $baseexpiration = esc_sql($baseexpiration_year . '-' . $baseexpiration_month . '-' . $baseexpiration_day); //enter in db - delete old record first, //then it will always be an insert and easier than checking for update. $wpdb->query("DELETE FROM {$basetable} WHERE post_id = {$change} limit 1"); $wpdb->query("INSERT INTO {$basetable} (\n\t\t\tpost_id,img,brand,ptype,thecondition,expiry,ean,isbn,mpn,qty\n\t\t\t)VALUES(\n\t\t\t'{$change}','{$baseimg}','{$basebrand}','{$baseptype}','{$basecondition}','{$baseexpiration}',\n\t\t\t'{$baseean}','{$baseisbn}','{$basempn}','{$baseqty}'\n\t\t\t)"); if ($err != '') { echo '<div id="message" class="error fade"><p>' . __('<strong>Error</strong> the following were not valid:', 'eshop') . '</p><ul>' . $err . '</ul></div>' . "\n"; } else { echo '<div id="message" class="updated fade"><p>' . __('eshop Base details for this product have been updated.', 'eshop') . '</p></div>' . "\n"; } } $basedata = $wpdb->get_row("SELECT * FROM {$basetable} WHERE post_id = {$change}"); if ($basedata == '') { $basedata->post_id = $basedata->img = $basedata->brand = $basedata->ptype = $basedata->thecondition = $basedata->expiry = $basedata->ean = $basedata->isbn = $basedata->mpn = $basedata->qty = ''; } ?> <div class="wrap"> <div id="eshopicon" class="icon32"></div><h2><?php _e('eShop Base Product', 'eshop'); ?> </h2> <?php eshop_admin_mode(); ?> <?php //sort by switch statement $sortby = 'id'; $csf = ' class="current"'; $numoptions = $eshopoptions['options_num']; $metatable = $wpdb->prefix . 'postmeta'; $calt = 0; $currsymbol = $eshopoptions['currency_symbol']; $x = 0; //add in post id( doh! ) $grabit[$x] = get_post_custom($change); $grabit[$x]['id'] = array($change); $x++; /* * remove the bottom array to try and flatten * could be rather slow, but easier than trying to create * a different method, at least for now! */ foreach ($grabit as $foo => $k) { foreach ($k as $bar => $v) { if ($bar == '_eshop_product') { $y = unserialize($v[0]); foreach ($y as $nowt => $val) { $grab[$foo][$nowt] = $val; } } foreach ($v as $nowt => $val) { $grab[$foo][$bar] = $val; } } } ?> <table class="widefat"> <caption><?php _e('Product Quick reference table', 'eshop'); ?> </caption> <thead> <tr> <th id="sku"><?php _e('Sku', 'eshop'); ?> </th> <th id="page"><?php _e('Page', 'eshop'); ?> </th> <th id="desc"><?php _e('Description', 'eshop'); ?> </th> <th id="down"><?php _e('Download', 'eshop'); ?> </th> <th id="stk"><?php _e('Stock', 'eshop'); ?> </th> <th id="opt"><?php _e('Option/Price', 'eshop'); ?> </th> <th id="imga"><?php _e('Image', 'eshop'); ?> </th> </tr> </thead> <tbody> <?php foreach ($grab as $foo => $grabit) { $pdownloads = 'no'; if ($grabit['products']['1']['price'] != '') { if (isset($grabit['_eshop_stock'])) { $stkav = $grabit['_eshop_stock']; } else { $stkav = 0; } //get page title $ptitle = get_post($grabit['id']); $pdown = ''; //check if downloadable product for ($i = 1; $i <= $eshopoptions['options_num']; $i++) { if (isset($grabit['products'][$i]['option']) && $grabit['products'][$i]['option'] != '') { if (isset($grabit['products'][$i]['download']) && $grabit['products'][$i]['download'] != '') { $dltable = $wpdb->prefix . 'eshop_downloads'; $fileid = $grabit['products'][$i]['download']; $filetitle = $wpdb->get_var("SELECT title FROM {$dltable} WHERE id='{$fileid}'"); $pdown .= '<a href="admin.php?page=eshop-downloads.php&edit=' . $fileid . '">' . $filetitle . '</a>'; $pdownloads = 'yes'; } else { $pdown .= '<br />'; } } } $calt++; $alt = $calt % 2 ? '' : ' class="alternate"'; echo '<tr' . $alt . '>'; echo '<td id="sku' . $calt . '" headers="sku">' . $grabit['sku'] . '</td>'; echo '<td headers="page sku' . $calt . '"><a href="page.php?action=edit&post=' . $grabit['id'] . '">' . $ptitle->post_title . '</a></td>'; echo '<td headers="desc sku' . $calt . '">' . stripslashes(esc_attr($grabit['description'])) . '</td>'; echo '<td headers="down sku' . $calt . '">' . $pdown . '</td>'; $pid = $grabit['id']; $stocktable = $wpdb->prefix . "eshop_stock"; $pravailable = ''; if ($eshopoptions['stock_control'] == 'yes') { for ($i = 1; $i <= $numoptions; $i++) { if ($grabit['products'][$i]['option'] != '') { $available = $wpdb->get_var("select available from {$stocktable} where post_id={$pid} && option_id={$i} limit 1"); if ($available == '' || $available < 0) { $available = '0'; } if (is_numeric($available) && $eshopoptions['stock_control'] == 'yes') { $pravailable .= $available . '<br />' . "\n"; } } } } else { $pravailable .= __('n/a', 'eshop') . '<br />'; } echo '<td headers="stk sku' . $calt . '">' . $pravailable . '</td>'; echo '<td headers="opt sku' . $calt . '">'; for ($i = 1; $i <= $numoptions; $i++) { if (isset($grabit['products'][$i]['option']) && $grabit['products'][$i]['option'] != '') { echo sprintf(__('%1$s @ %2$s%3$s', 'eshop'), stripslashes(esc_attr($grabit['products'][$i]['option'])), $currsymbol, number_format_i18n($grabit['products'][$i]['price'], __('2', 'eshop'))) . '<br />'; } } echo '</td>'; echo '<td>'; $w = get_option('thumbnail_size_w'); $h = get_option('thumbnail_size_h'); $imgsize = '50'; if ($imgsize != '') { $w = round($w * $imgsize / 100); $h = round($h * $imgsize / 100); } if (has_post_thumbnail($change)) { echo '<a class="itemref" href="' . get_permalink($change) . '">' . get_the_post_thumbnail($change, array($w, $h)) . '</a>' . "\n"; } else { $eimage = eshop_files_directory(); $eshopnoimage = apply_filters('eshop_no_image', $eimage['1'] . 'noimage.png'); echo '<a class="itemref" href="' . get_permalink($change) . '"><img src="' . $eshopnoimage . '" height="' . $h . '" width="' . $w . '" alt="" /></a>' . "\n"; } echo '</td>' . "\n"; echo '</tr>' . "\n"; } ?> </tbody> </table> <?php } echo '<h3>' . __('Additional settings', 'eshop') . '</h3>' . "\n"; $id = $grabit['id']; ?> <form method="post" action="" id="eshop-gbase-alt"> <fieldset id="baseothers"><legend><?php _e('Others', 'eshop'); ?> </legend> <?php if (has_post_thumbnail($id)) { $grabimg = get_post_thumbnail_id($id); $src = wp_get_attachment_image_src($grabimg); ?> <input type="hidden" name="baseimg" value="<?php echo $src['0']; ?> " /> <?php } ?> <label for="basebrand"><?php _e('Brand <small>The brand name of the product</small>', 'eshop'); ?> </label> <input type="text" name="basebrand" id="basebrand" value="<?php echo esc_html($basedata->brand); ?> " /> <label for="baseean"><?php _e('EAN <small>European Article Number is a 13 digit number often below the bar code of the item.</small>', 'eshop'); ?> </label> <input type="text" name="baseean" id="baseean" value="<?php echo esc_html($basedata->ean); ?> " /> <label for="baseisbn"><?php _e('ISBN <small>The unique 10- or 13-digit number assigned to every printed book.</small>', 'eshop'); ?> </label> <input type="text" name="baseisbn" id="baseisbn" value="<?php echo esc_html($basedata->isbn); ?> " /> <label for="basempn"><?php _e('MPN <small>Manufacturer\'s Part Number is a unique code determined by the manufacturer for that product.</small>', 'eshop'); ?> </label> <input type="text" name="basempn" id="basempn" value="<?php echo esc_html($basedata->mpn); ?> " /> <label for="baseptype"><?php _e('Product type <small>The type of product being offered.</small>', 'eshop'); ?> </label> <input type="text" name="baseptype" id="baseptype" value="<?php echo esc_html($basedata->ptype); ?> " /> <label for="baseqty"><?php _e('Quantity', 'eshop'); ?> </label> <input type="text" name="baseqty" id="baseqty" value="<?php echo esc_html($basedata->qty); ?> " /> <label for="basecondition"><?php _e('Condition <small>the condition of this product</small>', 'eshop'); ?> </label> <select name="basecondition" id="basecondition"> <?php //' foreach ($currentconditions as $code) { if ($basedata->thecondition == '') { if ($code == $eshopoptions['base_condition']) { $sel = ' selected="selected"'; } else { $sel = ''; } } elseif ($code == $eshopoptions['base_condition']) { $sel = ' selected="selected"'; } else { $sel = ''; } echo '<option value="' . $code . '"' . $sel . '>' . $code . '</option>' . "\n"; } ?> </select> <fieldset><legend><?php _e('Expiration date <small>(or how long a product will be available.)</small>', 'eshop'); ?> </legend> <label for="baseexpiration_year"><?php _e('Year', 'eshop'); ?> </label> <select name="baseexpiration_year" id="baseexpiration_year"> <?php // work this out!!! if ($basedata->expiry == '') { $baseexpiry = $eshopoptions['base_expiry']; $basedate = date('Y-m-d', mktime(0, 0, 0, date("m"), date("d") + $baseexpiry, date("Y"))); list($baseexpiration_year, $baseexpiration_month, $baseexpiration_day) = explode('-', $basedate); } else { list($baseexpiration_year, $baseexpiration_month, $baseexpiration_day) = explode('-', $basedata->expiry); } for ($i = date('Y'); $i <= date('Y') + 5; $i++) { if ($i == $baseexpiration_year) { $sel = ' selected="selected"'; } else { $sel = ''; } echo '<option value="' . $i . '"' . $sel . '>' . $i . '</option>' . "\n"; } ?> </select> <label for="baseexpiration_month"><?php _e('Month', 'eshop'); ?> </label> <select name="baseexpiration_month" id="baseexpiration_month"> <?php for ($i = 1; $i <= 12; $i++) { if ($i == $baseexpiration_month) { $sel = ' selected="selected"'; } else { $sel = ''; } echo '<option value="' . $i . '"' . $sel . '>' . $i . '</option>' . "\n"; } ?> </select> <label for="baseexpiration_day"><?php _e('Day', 'eshop'); ?> </label> <select name="baseexpiration_day" id="baseexpiration_day"> <?php for ($i = 1; $i <= 31; $i++) { if ($i == $baseexpiration_day) { $sel = ' selected="selected"'; } else { $sel = ''; } echo '<option value="' . $i . '"' . $sel . '>' . $i . '</option>' . "\n"; } ?> </select> </fieldset> </fieldset> <p class="submit"> <input type="submit" name="submit" class="button-primary" value="<?php _e('Update'); ?> " /> </p> <?php echo '</form></div>'; } else { ?> <div class="wrap"> <div id="eshopicon" class="icon32"></div><h2><?php _e('Error', 'eshop'); ?> </h2> <p><?php _e('That product does not exist!', 'eshop'); ?> </p> </div> <?php } } }
function eshop_parse_optsets($data) { global $wpdb; $opt['optset'] = $data['optset']; $addoprice = $data['addoprice']; $oset = $qb = array(); $optings = unserialize($opt['optset']); //then sort it how we want. $optings = eshop_subval_sort($optings, 'id'); $c = 0; if (isset($newoptings)) { unset($newoptings); } foreach ($optings as $foo => $opst) { if (!isset($opst['type']) || ($opst['type'] == '2' || $opst['type'] == '3') && (isset($opst['text']) && trim($opst['text']) != '')) { $newoptings[] = $optings[$c]; $qb[] = "id={$opst['id']}"; } $c++; } if (isset($newoptings)) { $qbs = implode(" OR ", $qb); $otable = $wpdb->prefix . 'eshop_option_sets'; $otablename = $wpdb->prefix . 'eshop_option_names'; $orowres = $wpdb->get_results("select o.name, o.price, o.id, t.type,t.name as oname from {$otable} as o, {$otablename} as t where ({$qbs}) && o.optid=t.optid ORDER BY id ASC"); $x = 0; foreach ($orowres as $orow) { if (isset($newoptings[$x]['id']) && $orow->id == $newoptings[$x]['id']) { if (isset($newoptings[$x]['type']) && isset($newoptings[$x]['text']) && trim($newoptings[$x]['text']) != '' && ($newoptings[$x]['type'] == '2' || $newoptings[$x]['type'] == '3')) { $oset[] = '<span class="eshopoptset"><span class="eshopoptname">' . stripslashes($orow->name) . "</span>\n" . '<span class="eshoptext">' . stripslashes($newoptings[$x]['text']) . '</span></span>'; } elseif (($orow->type == '2' || $orow->type == '3') && !isset($newoptings[$x]['text'])) { $xxxx = ''; } else { $oset[] = '<span class="eshopoptset"><span class="eshopoptname">' . stripslashes($orow->oname) . "</span>\n" . '<span class="eshoptext">' . stripslashes($orow->name) . '</span></span>'; } $addoprice = $addoprice + $orow->price; $x++; } } $optset = "\n" . implode("\n", $oset); } else { $optset = ''; } $data['optset'] = $optset; $data['addoprice'] = $addoprice; return $data; }