Spade
Mini Shell
| Directory:~$ /proc/self/root/home/lmsyaran/public_html/j3/components/com_phocacart/views/feed/tmpl/ |
| [Home] [System Details] [Kill Me] |
<?php
/* @package Joomla
* @copyright Copyright (C) Open Source Matters. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* @extension Phoca Extension
* @copyright Copyright (C) Jan Pavelka www.phoca.cz
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
*/
defined('_JEXEC') or die();
$o = array();
$l = '<';
$r = '>';
$e = '</';
// HEADER
if (isset($this->t['feed']['header']) &&
$this->t['feed']['header'] != '') {
$o['header'] =
$this->t['feed']['header'];
} else {
$o['header'] = '<?xml version="1.0"
encoding="utf-8"?>';
}
// ROOT START
if (isset($this->t['feed']['root']) &&
$this->t['feed']['root'] != '') {
$o['rootstart'] =
$l.$this->t['feed']['root'].$r;
}
// PREPARE FUNCTIONS BEFORE FOREACH, so we save memory
// E.g. currency - to get info about default currency we need to ask sql
but we should to it only
// one time, not in foreach. Of course currency class is singleton so we
don't run sql query many time
// but we don't need to run the function many times too.
$cur = '';
//if ($this->p['item_currency'] != '') {
$cur = PhocacartCurrency::getDefaultCurrencyCode();
//}
// START FOREACH OF PRODUCTS
$o['items'] = '';
$o['params'] = '';
if (!empty($this->t['products'])) {
foreach ($this->t['products'] as $k => $v) {
// PRODUCT - Specific FEED plugin
$paramsFeedA = array();
if (isset($v->params_feed) && $v->params_feed !=
'') {
$registry = new JRegistry;
$registry->loadString($v->params_feed);
$paramsFeedA = $registry->toArray();
$feedName =
trim($this->t['feed']['feed_plugin']);
if
(isset($paramsFeedA[$feedName]['pcf_param_published']) &&
$paramsFeedA[$feedName]['pcf_param_published'] == 0) {
// The product is unpublished from feed
continue;
}
}
$oI = array();
// PRODUCT START
if (isset($this->t['feed']['item'])
&& $this->t['feed']['item'] != '')
{
$oI['itemstart'] =
$l.$this->t['feed']['item'].$r;
}
if ($this->p['item_id'] != '' &&
isset($v->id) && $v->id != '') {
$oI['item_id'] =
$l.$this->p['item_id'].$r.$v->id.$e.$this->p['item_id'].$r;
}
if ($this->p['item_title'] != '' &&
isset($v->title) && $v->title != '') {
$oI['item_article'] =
$l.$this->p['item_title'].$r.htmlspecialchars($v->title).$e.$this->p['item_title'].$r;
}
if ($this->p['item_title_extended'] != ''
&& isset($v->title) && $v->title != '') {
$oI['item_title_extended'] =
$l.$this->p['item_title_extended'].$r.htmlspecialchars($v->title).$e.$this->p['item_title_extended'].$r;
}
if ($this->p['item_description_short'] != ''
&& isset($v->description) && $v->description !=
'') {
if ($this->p['strip_html_tags_desc'] == 1) {
$v->description = strip_tags($v->description);
}
$oI['item_description_short'] =
$l.$this->p['item_description_short'].$r.'<![CDATA['.$v->description.']]>'.$e.$this->p['item_description_short'].$r;
}
if ($this->p['item_description_long'] != ''
&& isset($v->description_long) &&
$v->description_long != '') {
if ($this->p['strip_html_tags_desc'] == 1) {
$v->description_long =
strip_tags($v->description_long);
}
$oI['item_description_long'] =
$l.$this->p['item_description_long'].$r.'<![CDATA['.$v->description_long.']]>'.$e.$this->p['item_description_long'].$r;
}
if ($this->p['item_sku'] != '' &&
isset($v->sku) && $v->sku != '') {
$oI['item_sku'] =
$l.$this->p['item_sku'].$r.$v->sku.$e.$this->p['item_sku'].$r;
}
if ($this->p['item_ean'] != '' &&
isset($v->ean) && $v->ean != '') {
$oI['item_ean'] =
$l.$this->p['item_ean'].$r.$v->ean.$e.$this->p['item_ean'].$r;
}
// PRICE ORIGINAL
if ($this->p['item_original_price_with_vat'] !=
'' || $this->p['item_original_price_without_vat'] !=
''
&& isset($v->price_original) &&
isset($v->taxrate) && isset($v->taxcalculationtype)) {
$priceOc = new PhocacartPrice;
$priceO = $priceOc->getPriceItems($v->price_original,
$v->taxid, $v->taxrate, $v->taxcalculationtype);
if ($this->p['price_decimals'] != '') {
$priceO['netto'] =
number_format($priceO['netto'],
(int)$this->p['price_decimals']);
$priceO['brutto'] =
number_format($priceO['brutto'],
(int)$this->p['price_decimals']);
}
if ($this->p['price_including_currency'] == 1){
$priceO['netto'] = $cur != '' ?
$priceO['netto'] . ' ' . $cur :
$priceO['netto'];
$priceO['brutto'] = $cur != '' ?
$priceO['brutto'] . ' ' . $cur :
$priceO['brutto'];
}
if ($this->p['item_original_price_without_vat'] !=
'' && isset($priceO['netto']) &&
(int)$priceO['netto'] > 0) {
$oI['item_original_price_without_vat'] =
$l.$this->p['item_original_price_without_vat'].$r.$priceO['netto'].$e.$this->p['item_original_price_without_vat'].$r;
}
if ($this->p['item_original_price_with_vat'] !=
'' && isset($priceO['brutto']) &&
(int)$priceO['brutto'] > 0) {
$oI['item_original_price_with_vat'] =
$l.$this->p['item_original_price_with_vat'].$r.$priceO['brutto'].$e.$this->p['item_original_price_with_vat'].$r;
}
}
// PRICE FINAL
if ($this->p['item_final_price_with_vat'] !=
'' || $this->p['item_final_price_without_vat'] !=
''
&& isset($v->price) && isset($v->taxrate)
&& isset($v->taxcalculationtype)) {
$priceFc = new PhocacartPrice;
$priceF = $priceFc->getPriceItems($v->price,
$v->taxid, $v->taxrate, $v->taxcalculationtype);
if ($this->p['price_decimals'] != '') {
$priceF['netto'] =
number_format($priceF['netto'],
(int)$this->p['price_decimals']);
$priceF['brutto'] =
number_format($priceF['brutto'],
(int)$this->p['price_decimals']);
$priceF['tax'] =
number_format($priceF['tax'],
(int)$this->p['price_decimals']);
}
if ($this->p['price_including_currency'] == 1){
$priceF['netto'] = $cur != '' ?
$priceF['netto'] . ' ' . $cur :
$priceF['netto'];
$priceF['brutto'] = $cur != '' ?
$priceF['brutto'] . ' ' . $cur :
$priceF['brutto'];
$priceF['tax'] = $cur != '' ?
$priceF['tax'] . ' ' . $cur :
$priceF['tax'];
}
if ($this->p['item_final_price_without_vat'] !=
'' && isset($priceF['netto']) &&
(int)$priceF['netto'] > 0) {
$oI['item_final_price_without_vat'] =
$l.$this->p['item_final_price_without_vat'].$r.$priceF['netto'].$e.$this->p['item_final_price_without_vat'].$r;
}
if ($this->p['item_final_price_with_vat'] !=
'' && isset($priceF['brutto']) &&
(int)$priceF['brutto'] > 0) {
$oI['item_final_price_with_vat'] =
$l.$this->p['item_final_price_with_vat'].$r.$priceF['brutto'].$e.$this->p['item_final_price_with_vat'].$r;
}
if ($this->p['item_vat'] != ''
&& isset($priceF['tax']) &&
(int)$priceF['tax'] > 0) {
$oI['item_vat'] =
$l.$this->p['item_vat'].$r.$priceF['tax'].$e.$this->p['item_vat'].$r;
}
}
// PRODUCT CURRENCY (DEFAULT)
if ($this->p['item_currency'] != ''
&& $cur != '') {
$oI['item_currency'] =
$l.$this->p['item_currency'].$r.htmlspecialchars($cur).$e.$this->p['item_currency'].$r;
}
// PRODUCT URL
if ($this->p['item_url'] != '' &&
isset($v->id) && $v->id > 0 && isset($v->catid)
&& $v->catid > 0 && isset($v->alias) &&
isset($v->catalias)) {
$itemUrl = PhocacartRoute::getItemRoute($v->id,
$v->catid, $v->alias, $v->catalias);
$itemUrl = PhocacartRoute::getFullUrl($itemUrl);
$oI['item_url'] =
$l.$this->p['item_url'].$r.$itemUrl.$e.$this->p['item_url'].$r;
}
// IMAGE URL
if ($this->p['item_url_image'] != ''
&& isset($v->image) && $v->image != '') {
$image =
PhocacartImage::getThumbnailName($this->t['pathitem'],
$v->image, 'large');
if (isset($image->rel) && $image->rel !=
'') {
$imageUrl = PhocacartRoute::getFullUrl($image->rel);
$oI['item_url_image'] =
$l.$this->p['item_url_image'].$r.$imageUrl.$e.$this->p['item_url_image'].$r;
}
}
// VIDEO URL
if ($this->p['item_url_video'] != ''
&& isset($v->video) && $v->video != '') {
if (PhocacartUtils::isURLAddress($v->video)) {
$oI['item_url_video'] =
$l.$this->p['item_url_video'].$r.$v->video.$e.$this->p['item_url_video'].$r;
}
}
// CATEGORY
if ($this->p['item_category'] != ''
&& isset($v->cattitle) && $v->cattitle !=
'') {
$oI['item_category'] =
$l.$this->p['item_category'].$r.htmlspecialchars($v->cattitle).$e.$this->p['item_category'].$r;
}
// CATEGORIES
if ($this->p['item_categories'] != ''
&& isset($v->categories) && $v->categories !=
'') {
if ($this->p['category_separator'] ==
'') {
$this->p['category_separator'] = '
';
}
$categories = str_replace('|',
$this->p['category_separator'], $v->categories);
$oI['item_categories'] =
$l.$this->p['item_categories'].$r.htmlspecialchars($categories).$e.$this->p['item_categories'].$r;
}
// CATEGORY FEED
if ($this->p['feed_category'] != ''
&& isset($v->cattitlefeed) && $v->cattitlefeed !=
'') {
$oI['feed_category'] =
$l.$this->p['feed_category'].$r.htmlspecialchars($v->cattitlefeed).$e.$this->p['feed_category'].$r;
}
// CATEGORY TYPE OR PRODUCT CATEGORY TYPE
if ($this->p['item_category_type_feed'] !=
'') {
if (isset($v->type_category_feed) &&
$v->type_category_feed != '') {
// 1) Product - the one you can set in product edit in
first tab
$oI['item_category_type_feed'] =
$l.$this->p['item_category_type_feed'].$r.htmlspecialchars($v->type_category_feed).$e.$this->p['item_category_type_feed'].$r;
} else if (isset($v->feedcategories ) &&
$v->feedcategories != '') {
// 2) Categories - loaded by db - generated by categories
set in Phoca Cart
$v->feedcategories = str_replace('|',
$this->p['category_separator'],
htmlspecialchars($v->feedcategories));
$oI['item_category_type_feed'] =
$l.$this->p['item_category_type_feed'].$r.htmlspecialchars($v->feedcategories).$e.$this->p['item_category_type_feed'].$r;
// Only one category possible e.g. in Google Products, so
this can be customized
//$this->t['feed']categories =
explode('|', $v->feedcategories);
//if (isset($this->t['feed']categories[0])
&& $this->t['feed']categories[0] != '') {
// $oI['item_category_type_feed'] =
$l.$this->p['item_category_type_feed'].$r.htmlspecialchars($this->t['feed']categories[0]).$e.$this->p['item_category_type_feed'].$r;
//}
} else if (isset($v->cattypefeed) &&
$v->cattypefeed != '') {
// 3) Category - if not 2) loaded - the one you can set in
category
$oI['item_category_type_feed'] =
$l.$this->p['item_category_type_feed'].$r.htmlspecialchars($v->cattypefeed).$e.$this->p['item_category_type_feed'].$r;
}
}
// MANUFACTURER
if ($this->p['item_manufacturer'] != ''
&& isset($v->manufacturertitle) &&
$v->manufacturertitle != '') {
$oI['item_manufacturer'] =
$l.$this->p['item_manufacturer'].$r.htmlspecialchars($v->manufacturertitle).$e.$this->p['item_manufacturer'].$r;
}
// STOCK (Product edit - Stock Options - In Stock)
if ($this->p['item_stock'] != '' &&
isset($v->stock) && $v->stock != '') {
$oI['item_stock'] =
$l.$this->p['item_stock'].$r.$v->stock.$e.$this->p['item_stock'].$r;
}
// STOCK DELIVERY_DATE (Product edit - Stock Options - Stock
Status)
if ($this->p['item_delivery_date'] != ''
&& isset($v->stock) && isset($v->min_quantity)
&& isset($v->min_multiple_quantity) &&
isset($v->stockstatus_a_id) && isset($v->stockstatus_n_id) )
{
$stockStatus =
PhocacartStock::getStockStatus((int)$v->stock, (int)$v->min_quantity,
(int)$v->min_multiple_quantity, (int)$v->stockstatus_a_id,
(int)$v->stockstatus_n_id);
//$stockText =
PhocacartStock::getStockStatusOutput($stockStatus);
if (isset($stockStatus['stock_status']) &&
$stockStatus['stock_status'] != '') {
$oI['item_delivery_date'] =
$l.$this->p['item_delivery_date'].$r.htmlspecialchars($stockStatus['stock_status']).$e.$this->p['item_delivery_date'].$r;
}
}
// STOCK DELIVERY_DATE - REAL DATE (Product edit - Stock Options -
Product Delivery Date)
if ($this->p['item_delivery_date_date'] !=
'' && isset($v->delivery_date) &&
$v->delivery_date != '' && $v->delivery_date !=
'0000-00-00 00:00:00') {
$oI['item_delivery_date_date'] =
$l.$this->p['item_delivery_date_date'].$r.$v->delivery_date.$e.$this->p['item_delivery_date_date'].$r;
}
// STOCK DELIVERY_DATE FEED (Stock Status Edit - Title (XML Feed))
if ($this->p['feed_delivery_date'] != ''
&& isset($v->stock) && isset($v->min_quantity)
&& isset($v->min_multiple_quantity) &&
isset($v->stockstatus_a_id) && isset($v->stockstatus_n_id) )
{
$stockStatus =
PhocacartStock::getStockStatus((int)$v->stock, (int)$v->min_quantity,
(int)$v->min_multiple_quantity, (int)$v->stockstatus_a_id,
(int)$v->stockstatus_n_id);
if (isset($stockStatus['stock_status_feed'])
&& $stockStatus['stock_status_feed'] != '') {
$oI['stock_status_feed'] =
$l.$this->p['feed_delivery_date'].$r.htmlspecialchars($stockStatus['stock_status_feed']).$e.$this->p['feed_delivery_date'].$r;
}
}
//
// NEEDS TO BE CUSTOMIZED FOR EACH XML FEED
//
if ($this->p['display_attributes'] == 1 &&
$this->p['item_attribute'] != '' &&
$this->p['item_attribute_name'] != '' &&
$this->p['item_attribute_value'] != '') {
// ATTRIBUTES - BE AWARE TO USER ATTRIBUTES
// RENDERING can take a lot of memory
// THE FORMAT can be not correct
$attributes =
PhocacartAttribute::getAttributesAndOptions((int)$v->id);
$oIA = array();
if (!empty($attributes)) {
foreach ($attributes as $k2 => $v2) {
if (isset($v2->title) && $v2->title !=
'') {
$oIA[] =
$l.$this->p['item_attribute'].$r;
$oIA[] =
$l.$this->p['item_attribute_name'].$r.htmlspecialchars($v2->title).$e.$this->p['item_attribute_name'].$r;
if (!empty($v2->options)) {
$opt = array();
foreach ($v2->options as $k3 => $v3) {
$opt[] = $v3->title;
}
$optText = implode(';', $opt);
$oIA[] =
$l.$this->p['item_attribute_value'].$r.htmlspecialchars($optText).$e.$this->p['item_attribute_value'].$r;
}
$oIA[] =
$e.$this->p['item_attribute'].$r;
}
}
}
$oI['attributes'] = implode("\n", $oIA);
}
// SPECIFICATION
if (!empty($this->p['specification_groups_id'])
&& $this->p['item_specification'] != ''
/*&& $this->p['item_specification_group_name']*/
&& $this->p['item_specification_name'] != ''
&& $this->p['item_specification_value'] !=
'') {
$specifications =
PhocacartSpecification::getSpecificationGroupsAndSpecifications((int)$v->id);
$oIS = array();
if (!empty($specifications)) {
foreach ($specifications as $k2 => $v2) {
if (!empty($v2)) {
$specGroup = array_slice($v2, 0, 1);
$specItems = array_slice($v2, 1);
if (!in_array((int)$k2,
$this->p['specification_groups_id'])) {
// The specification is not selected
continue;
}
/*
* Possible feature move the parameter from feed to
product/feed
if
(isset($paramsFeedA[$feedName]['pcf_param_specification_group_id'])
&&
!empty($paramsFeedA[$feedName]['pcf_param_specification_group_id']))
{
if (!in_array((int)$k2,
$paramsFeedA[$feedName]['pcf_param_specification_group_id'])) {
// The specification is not selected
continue;
}
}
*/
if (!empty($specGroup) &&
!empty($specItems)) {
//$oIS[] = $l .
$this->p['item_specification'] . $r;
//$oIS[] = $l .
$this->p['item_specification_group_name'] . $r .
htmlspecialchars($v2[0]) . $e .
$this->p['item_specification_group_name'] . $r;
foreach ($specItems as $k3 => $v3) {
$oIS[] = $l .
$this->p['item_specification'] . $r;
if (isset($v3['title'])
&& $v3['title'] != '') {
$oIS[] = $l .
$this->p['item_specification_name'] . $r .
htmlspecialchars($v3['title']) . $e .
$this->p['item_specification_name'] . $r;
}
if (isset($v3['value'])
&& $v3['value'] != '') {
$oIS[] = $l .
$this->p['item_specification_value'] . $r .
htmlspecialchars($v3['value']) . $e .
$this->p['item_specification_value'] . $r;
}
$oIS[] = $e .
$this->p['item_specification'] . $r;
}
//$oIS[] = $e .
$this->p['item_specification'] . $r;
}
}
}
}
$oI['specifications'] = implode("\n",
$oIS);
}
// PRODUCT CONDITION
if ($this->p['item_condition'] != ''
&& isset($v->condition)) {
$condition =
PhocacartUtilsSettings::getProductConditionValues($v->condition);
$oI['item_condition'] =
$l.$this->p['item_condition'].$r.htmlspecialchars($condition).$e.$this->p['item_condition'].$r;
}
// PRODUCT REWARD POINTS
if ($this->p['item_reward_points'] != ''
&& isset($v->points_received) &&
(int)$v->points_received > 0) {
$oIRP = array();
if ($this->p['item_reward_points_name'] !=
'' && $this->p['item_reward_points_value']
!= '') {
$oIRP[] =
$l.$this->p['item_reward_points'].$r;
$oIRP[] =
$l.$this->p['item_reward_points_name'].$r.JText::_('COM_PHOCACART_FEED_TXT_PRODUCT_REWARD_POINTS').$e.$this->p['item_reward_points_name'].$r;
$oIRP[] =
$l.$this->p['item_reward_points_value'].$r.(int)$v->points_received.$e.$this->p['item_reward_points_value'].$r;
// Possible RATION value
$oIRP[] =
$e.$this->p['item_reward_points'].$r;
} else {
$oIRP[] =
$l.$this->p['item_reward_points'].$r.(int)$v->points_received.$e.$this->p['item_reward_points'].$r;
}
$oI['reward_points'] = implode("\n",
$oIRP);
}
// PRODUCT TYPE FEED
if ($this->p['item_type_feed'] != ''
&& isset($v->type_feed) && $v->type_feed !=
'') {
$oI['item_type_feed'] =
$l.$this->p['item_type_feed'].$r.htmlspecialchars($v->type_feed).$e.$this->p['item_type_feed'].$r;
}
// PRODUCT - Specific FEED plugin
$oIP = array();
if (!empty($paramsFeedA)) {
foreach ($paramsFeedA as $k => $v) {
if (trim($k) ==
trim($this->t['feed']['feed_plugin'])) {
if (!empty($v)) {
foreach ($v as $k2 => $v2) {
// display items except the parameter items
$pos = strpos($k2, 'pcf_param');
if ($pos !== false) {
continue;
}
if (trim($v2) != '') {
// Some feeds have the same parameters but
we cannot store them under the same name
// so internaly they are stored as e.g.:
EXTRA_MESSAGE{1}, EXTRA_MESSAGE{2}
// in XML the {1} and {2} are removed and
there is only one parameter EXTRA_MESSAGE on different places
$k2 =
preg_replace("/\{[^}]+\}/","",$k2);
$oIP[] =
$l.$k2.$r.htmlspecialchars($v2).$e.$k2.$r;
}
}
}
}
}
}
$oI['params'] .= implode("\n", $oIP);
// PRODUCT - Fixed XML Elements
if ($this->p['item_fixed_elements'] != '')
{
$oI['item_fixed_elements'] =
$this->p['item_fixed_elements'];
}
// PRODUCT END
if (isset($this->t['feed']['item'])
&& $this->t['feed']['item'] != '')
{
$oI['itemend'] =
$e.$this->t['feed']['item'].$r;
}
$o['items'] .= implode("\n", $oI) .
"\n";
}
}
// ROOT END
if (isset($this->t['feed']['root']) &&
$this->t['feed']['root'] != '') {
$o['rootend'] =
$e.$this->t['feed']['root'].$r;
}
// FOOTER
if (isset($this->t['feed']['footer']) &&
$this->t['feed']['footer'] != '') {
$o['footer'] =
$this->t['feed']['footer'];
}
echo implode( "\n", $o );
?>