Файл: core/includes/pricelist.php
Строк: 247
<?php
#####################################
# ShopCMS: Скрипт интернет-магазина
# Copyright (c) by ADGroup
# http://shopcms.ru
#####################################
// show whole price list
function show_code_p()
{
global $selected_currency_details;
if (!isset($selected_currency_details) || !$selected_currency_details) //no currency found
{
return "";
}
//is exchange rate negative or 0?
if ($selected_currency_details[1] == 0) return "";
return $selected_currency_details[0];
}
function pricessCategories($parent,$level)
{
//same as processCategories(), except it creates a pricelist of the shop
$out = array();
$cnt = 0;
$q1 = db_query("select categoryID, name from ".CATEGORIES_TABLE.
" where parent=".(int)$parent." order by sort_order, name");
while ($row = db_fetch_row($q1))
{
$r = hexdec(substr('999999', 0, 2));
$g = hexdec(substr('999999', 2, 2));
$b = hexdec(substr('999999', 4, 2));
$m = (float)max($r, max($g,$b));
$r = round((190+20*min($level,3))*$r/$m);
$g = round((190+20*min($level,3))*$g/$m);
$b = round((190+20*min($level,3))*$b/$m);
$c = dechex($r).dechex($g).dechex($b); //final color
//add category to the output
$out[$cnt][0] = $row[0];
$out[$cnt][1] = $row[1];
$out[$cnt][2] = $level;
$out[$cnt][3] = 1;
$out[$cnt][4] = 0; //0 is for category, 1 - product
$cnt++;
if ( !isset($_GET["sort"]) )
$order_clause = "order by ".CONF_DEFAULT_SORT_ORDER."";
else
{
//verify $_GET["sort"]
if (!(!strcmp($_GET["sort"],"name") || !strcmp($_GET["sort"],"Price") || !strcmp($_GET["sort"],"customers_rating")))
$_GET["sort"] = "name";
$order_clause = " order by ".xEscSQL($_GET["sort"]);
if ( isset($_GET["direction"]) )
{
if ( !strcmp( $_GET["direction"] , "DESC" ) )
$order_clause .= " DESC ";
else
$order_clause .= " ASC ";
}
}
//add products
$q = db_query("select productID, name, Price, in_stock, product_code from ".PRODUCTS_TABLE.
" where categoryID=".$row[0]." and Price>=0 and enabled=1 ".
$order_clause );
while ($row1 = db_fetch_row($q))
{
if ($row1[2] < 0){
$cennik = "n/a";
$row1[2] = "n/a";
}else{
$cennik = show_price($row1[2]);
$row1[2] = show_price($row1[2], 0, false);
}
$out[$cnt][0] = $row1[0];
$out[$cnt][1] = $row1[1];
$out[$cnt][2] = $level;
$out[$cnt][3] = "FFFFFF";
$out[$cnt][4] = 1; //0 is for category, 1 - product
$out[$cnt][5] = $cennik;
$out[$cnt][6] = $row1[3];
$out[$cnt][7] = $row1[4];
$out[$cnt][8] = $row1[2];
$cnt++;
}
//process all subcategories
$sub_out = pricessCategories($row[0], $level+1);
//add $sub_out to the end of $out
$c_sub_out = count($sub_out);
for ($j=0; $j<$c_sub_out; $j++)
{
$out[] = $sub_out[$j];
$cnt++;
}
}
return $out;
} //pricessCategories
function _sortPriceListSetting( &$smarty, $urlToSort )
{
$sort_string = STRING_PRICELIST_ITEM_SORT;
$sort_string = str_replace( "{ASC_NAME}",
"<a href='".$urlToSort."&sort=name&direction=ASC'>".STRING_ASC."</a>", $sort_string );
$sort_string = str_replace( "{DESC_NAME}",
"<a href='".$urlToSort."&sort=name&direction=DESC'>".STRING_DESC."</a>", $sort_string );
$sort_string = str_replace( "{ASC_PRICE}",
"<a href='".$urlToSort."&sort=Price&direction=ASC'>".STRING_ASC."</a>", $sort_string );
$sort_string = str_replace( "{DESC_PRICE}",
"<a href='".$urlToSort."&sort=Price&direction=DESC'>".STRING_DESC."</a>", $sort_string );
$smarty->assign( "string_product_sort", $sort_string );
}
if (isset($_GET["show_price"])) //show pricelist
{
_sortPriceListSetting( $smarty, "index.php?show_price=yes" );
$pricelist_elements = pricessCategories(1, 0);
$smarty->assign("pricelist_elements", $pricelist_elements);
$smarty->assign("main_content_template", "pricelist.tpl.html");
}
if (isset($_GET["download_price"])) //show pricelist
{
_sortPriceListSetting( $smarty, "index.php?show_price=yes" );
$currentcur = show_code_p();
$ddate = strftime("%Y-%m-%d %H:%M:%S", time()+intval(CONF_TIMEZONE)*3600);
$pricelist_elements2 = pricessCategories(1, 0);
$pricelist_elements = '<?xml version="1.0" encoding="'.DEFAULT_CHARSET.'"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:html="http://www.w3.org/TR/REC-html40"
xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet">
<Styles>
<Style ss:ID="Default" ss:Name="Normal">
<Alignment ss:Horizontal="Left" ss:Vertical="Bottom" />
<Borders>
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" ss:Color="#c0c0c0" />
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" ss:Color="#c0c0c0" />
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" ss:Color="#c0c0c0" />
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" ss:Color="#c0c0c0" />
</Borders>
<Font ss:Size="10" ss:Color="#000000" ss:FontName="Arial" />
<Interior />
<NumberFormat />
<Protection />
</Style>
<Style ss:ID="Hedline1" ss:Name="Hedline1">
<Interior ss:Color="#ccffcc" ss:Pattern="Solid" />
<Font ss:Size="10" ss:Color="#000000" ss:Bold="1" ss:FontName="Arial" />
</Style>
<Style ss:ID="Hedline2" ss:Name="Hedline2">
<Alignment ss:Horizontal="Center" ss:Vertical="Bottom" />
<Font ss:Size="14" ss:Color="#000000" ss:FontName="Arial" />
<Interior ss:Color="#ccffcc" ss:Pattern="Solid" />
</Style>
<Style ss:ID="Tab" ss:Name="Tab">
<Alignment ss:Horizontal="Center" ss:Vertical="Bottom" />
<Font ss:Size="10" ss:Color="#000000" ss:FontName="Arial" />
</Style>
</Styles>
<ss:Worksheet ss:Name="Pricelist"><Table><Column ss:Width="500" />
<Column ss:Width="112" ss:StyleID="Tab" />';
if (CONF_DISPLAY_PRCODE == 1) $pricelist_elements .= '<Column ss:Width="112" ss:StyleID="Tab" />';
$pricelist_elements .= '<Row ss:AutoFitHeight="0" ss:Height="20"><Cell ss:MergeAcross="';
if (CONF_DISPLAY_PRCODE == 1) $pricelist_elements .= '2'; else $pricelist_elements .= '1';
$pricelist_elements .= '" ss:StyleID="Hedline1"><Data ss:Type="String">'.STRING_PRICELIST.' '.CONF_SHOP_NAME.'</Data>
</Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12"><Cell ss:MergeAcross="';
if (CONF_DISPLAY_PRCODE == 1) $pricelist_elements .= '2'; else $pricelist_elements .= '1';
$pricelist_elements .= '" ss:StyleID="Hedline1">
<Data ss:Type="String">'.STRING_PRICE_CREATE.' '.$ddate.'</Data></Cell>
</Row><Row ss:AutoFitHeight="0" ss:Height="20"><Cell ss:StyleID="Hedline2"><Data ss:Type="String">'.STRING_PRICE_PRODUCT_NAME.'</Data>
</Cell><Cell ss:StyleID="Hedline2"><Data ss:Type="String">'.CURRENT_PRICE.'('.$currentcur.')</Data></Cell>';
if (CONF_DISPLAY_PRCODE == 1) $pricelist_elements .= '<Cell ss:StyleID="Hedline2"><Data ss:Type="String">'.STRING_PRODUCT_CODE.'</Data></Cell>';
$pricelist_elements .= '</Row>';
for ($j=0; $j<count($pricelist_elements2); $j++)
{
$pricelist_elements .= '<Row ss:AutoFitHeight="0" ss:Height="12">';
if($pricelist_elements2[$j][4] != 1) {
$pricelist_elements .= '<Cell ss:StyleID="Hedline1"';
$pricelist_elements .= '><Data ss:Type="String">';
for ($h=0; $h<$pricelist_elements2[$j][2]; $h++)
{
$pricelist_elements .= " ";
}
$pricelist_elements .= $pricelist_elements2[$j][1].'</Data></Cell><Cell ss:StyleID="Hedline1"><Data ss:Type="String"></Data></Cell>';
if (CONF_DISPLAY_PRCODE == 1) $pricelist_elements .= '<Cell ss:StyleID="Hedline1"><Data ss:Type="String"></Data></Cell>';
}else{
$pricelist_elements .= '<Cell><Data ss:Type="String">';
for ($h=0; $h<$pricelist_elements2[$j][2]; $h++)
{
$pricelist_elements .= " ";
}
$pricelist_elements .= $pricelist_elements2[$j][1].'</Data></Cell><Cell><Data ss:Type="String">'.$pricelist_elements2[$j][8].'</Data></Cell>';
if (CONF_DISPLAY_PRCODE == 1) $pricelist_elements .= '<Cell><Data ss:Type="String">'.$pricelist_elements2[$j][7].'</Data></Cell>';
}
$pricelist_elements .= '</Row>';
}
$pricelist_elements .= "</Table><x:WorksheetOptions /></ss:Worksheet></Workbook>";
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: application/vnd.ms-excel; charset=".DEFAULT_CHARSET."; format=attachment;");
header("Content-Disposition: attachment; filename=price.xml;");
print $pricelist_elements;
exit();
}
?>