- Introduced a new YouTube tech integration in `youtube.min.js` for enhanced video playback. - Created new admin template files for managing video settings, including `index.php` and `steasyvideo-pro.tpl`. - Updated hook templates (`device_mode.tpl`, `forquickview.tpl`, `header.tpl`, `miniature.tpl`, `miniature_tb.tpl`, and predefined templates) to include video functionality. - Implemented caching headers in several PHP files to improve performance. - Ensured all new templates include proper licensing information and copyright notices.
169 lines
9.6 KiB
PHP
169 lines
9.6 KiB
PHP
<?php
|
|
/**
|
|
* @author PrestaShop SA and Contributors <contact@prestashop.com>
|
|
* @copyright Since 2007 PrestaShop SA and Contributors
|
|
* @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
|
|
*/
|
|
|
|
if (!defined('_PS_VERSION_')) {
|
|
exit;
|
|
}
|
|
require_once dirname(__FILE__) . '/AdminStEasyVideoListController.php';
|
|
class AdminStEasyVideoProductController extends AdminStEasyVideoListController
|
|
{
|
|
protected $contr = 'product';
|
|
public function addWhere($where = '')
|
|
{
|
|
return $where.' AND id_product!=\'\' AND id_category=0 AND id_manufacturer=0 ';
|
|
}
|
|
public function filterFormFields(&$fileds, $obj)
|
|
{
|
|
$products_html = '';
|
|
if (($id_product = (int)Tools::getValue('id_product')) && Tools::getValue('ref') == 'product') {
|
|
$obj->id_product = (int)$id_product;
|
|
}
|
|
foreach (explode(',', trim($obj->id_product, ',')) as $id_product) {
|
|
if (!(int)$id_product) {
|
|
continue;
|
|
}
|
|
$product = new Product((int)$id_product, false, $this->context->language->id);
|
|
$products_html .= '<li>'.$product->name.'['.$product->reference.']
|
|
<a href="javascript:;" class="stsb_ac_del_product"><img src="../img/admin/delete.gif" /></a>
|
|
<input type="hidden" name="st_id_product[]" value="'.$id_product.'" /></li>';
|
|
}
|
|
|
|
array_splice($fileds['input'], 1, 0, array(
|
|
'products' => array(
|
|
'type' => 'text',
|
|
'label' => $this->l('Products:'),
|
|
'name' => 'ac_products',
|
|
'autocomplete' => false,
|
|
'required' => true,
|
|
'class' => 'fixed-width-xxl ac_products',
|
|
'desc' => $this->l('Enter product names here:').'<br/>'.$this->l('Selected products')
|
|
.': <ul class="curr_products">'.$products_html.'</ul>',
|
|
),
|
|
));
|
|
}
|
|
public function getAjaxProductsList()
|
|
{
|
|
$query = Tools::getValue('q', false);
|
|
if (!$query || $query == '' || strlen($query) < 1) {
|
|
die();
|
|
}
|
|
if ($pos = strpos($query, ' (ref:')) {
|
|
$query = substr($query, 0, $pos);
|
|
}
|
|
|
|
$excludeIds = Tools::getValue('excludeIds', false);
|
|
if ($excludeIds && $excludeIds != 'NaN') {
|
|
$excludeIds = implode(',', array_map('intval', explode(',', $excludeIds)));
|
|
} else {
|
|
$excludeIds = '';
|
|
}
|
|
|
|
// Excluding downloadable products from packs because download from pack is not supported
|
|
$forceJson = Tools::getValue('forceJson', false);
|
|
$disableCombination = Tools::getValue('disableCombination', false);
|
|
$excludeVirtuals = (bool)Tools::getValue('excludeVirtuals', true);
|
|
$exclude_packs = (bool)Tools::getValue('exclude_packs', false);
|
|
|
|
$context = Context::getContext();
|
|
|
|
$sql = 'SELECT p.`id_product`, pl.`link_rewrite`, p.`reference`, pl.`name`, image_shop.`id_image` id_image, il.`legend`, p.`cache_default_attribute`
|
|
FROM `'._DB_PREFIX_.'product` p
|
|
'.Shop::addSqlAssociation('product', 'p').'
|
|
LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (pl.id_product = p.id_product AND pl.id_lang = '.(int)$context->language->id.Shop::addSqlRestrictionOnLang('pl').')
|
|
LEFT JOIN `'._DB_PREFIX_.'image_shop` image_shop
|
|
ON (image_shop.`id_product` = p.`id_product` AND image_shop.cover=1 AND image_shop.id_shop='.(int)$context->shop->id.')
|
|
LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (image_shop.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$context->language->id.')
|
|
WHERE (pl.name LIKE \'%'.pSQL($query).'%\' OR p.reference LIKE \'%'.pSQL($query).'%\')'.
|
|
(!empty($excludeIds) ? ' AND p.id_product NOT IN ('.$excludeIds.') ' : ' ').
|
|
($excludeVirtuals ? 'AND NOT EXISTS (SELECT 1 FROM `'._DB_PREFIX_.'product_download` pd WHERE (pd.id_product = p.id_product))' : '').
|
|
($exclude_packs ? 'AND (p.cache_is_pack IS NULL OR p.cache_is_pack = 0)' : '').
|
|
' GROUP BY p.id_product';
|
|
|
|
$items = Db::getInstance()->executeS($sql);
|
|
|
|
if ($items && ($disableCombination || $excludeIds)) {
|
|
$results = [];
|
|
foreach ($items as $item) {
|
|
if (!$forceJson) {
|
|
$item['name'] = str_replace('|', '|', $item['name']);
|
|
$results[] = trim($item['name']).(!empty($item['reference']) ? ' (ref: '.$item['reference'].')' : '').'|'.(int)($item['id_product']);
|
|
} else {
|
|
$results[] = array(
|
|
'id' => $item['id_product'],
|
|
'name' => $item['name'].(!empty($item['reference']) ? ' (ref: '.$item['reference'].')' : ''),
|
|
'ref' => (!empty($item['reference']) ? $item['reference'] : ''),
|
|
'image' => str_replace('http://', Tools::getShopProtocol(), $context->link->getImageLink($item['link_rewrite'], $item['id_image'], 'home'.'_'.'default')),
|
|
);
|
|
}
|
|
}
|
|
|
|
if (!$forceJson) {
|
|
echo implode("\n", $results);
|
|
} else {
|
|
echo json_encode($results);
|
|
}
|
|
} elseif ($items) {
|
|
// packs
|
|
$results = array();
|
|
foreach ($items as $item) {
|
|
// check if product have combination
|
|
if (Combination::isFeatureActive() && $item['cache_default_attribute']) {
|
|
$sql = 'SELECT pa.`id_product_attribute`, pa.`reference`, ag.`id_attribute_group`, pai.`id_image`, agl.`name` AS group_name, al.`name` AS attribute_name,
|
|
a.`id_attribute`
|
|
FROM `'._DB_PREFIX_.'product_attribute` pa
|
|
'.Shop::addSqlAssociation('product_attribute', 'pa').'
|
|
LEFT JOIN `'._DB_PREFIX_.'product_attribute_combination` pac ON pac.`id_product_attribute` = pa.`id_product_attribute`
|
|
LEFT JOIN `'._DB_PREFIX_.'attribute` a ON a.`id_attribute` = pac.`id_attribute`
|
|
LEFT JOIN `'._DB_PREFIX_.'attribute_group` ag ON ag.`id_attribute_group` = a.`id_attribute_group`
|
|
LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON (a.`id_attribute` = al.`id_attribute` AND al.`id_lang` = '.(int)$context->language->id.')
|
|
LEFT JOIN `'._DB_PREFIX_.'attribute_group_lang` agl ON (ag.`id_attribute_group` = agl.`id_attribute_group` AND agl.`id_lang` = '.(int)$context->language->id.')
|
|
LEFT JOIN `'._DB_PREFIX_.'product_attribute_image` pai ON pai.`id_product_attribute` = pa.`id_product_attribute`
|
|
WHERE pa.`id_product` = '.(int)$item['id_product'].'
|
|
GROUP BY pa.`id_product_attribute`, ag.`id_attribute_group`
|
|
ORDER BY pa.`id_product_attribute`';
|
|
|
|
$combinations = Db::getInstance()->executeS($sql);
|
|
if (!empty($combinations)) {
|
|
foreach ($combinations as $k => $combination) {
|
|
$results[$combination['id_product_attribute']]['id'] = $item['id_product'];
|
|
$results[$combination['id_product_attribute']]['id_product_attribute'] = $combination['id_product_attribute'];
|
|
!empty($results[$combination['id_product_attribute']]['name']) ? $results[$combination['id_product_attribute']]['name'] .= ' '.$combination['group_name'].'-'.$combination['attribute_name']
|
|
: $results[$combination['id_product_attribute']]['name'] = $item['name'].' '.$combination['group_name'].'-'.$combination['attribute_name'];
|
|
if (!empty($combination['reference'])) {
|
|
$results[$combination['id_product_attribute']]['ref'] = $combination['reference'];
|
|
} else {
|
|
$results[$combination['id_product_attribute']]['ref'] = !empty($item['reference']) ? $item['reference'] : '';
|
|
}
|
|
if (empty($results[$combination['id_product_attribute']]['image'])) {
|
|
$results[$combination['id_product_attribute']]['image'] = str_replace('http://', Tools::getShopProtocol(), $context->link->getImageLink($item['link_rewrite'], $combination['id_image'], 'home'.'_'.'default'));
|
|
}
|
|
}
|
|
} else {
|
|
$results[] = array(
|
|
'id' => $item['id_product'],
|
|
'name' => $item['name'],
|
|
'ref' => (!empty($item['reference']) ? $item['reference'] : ''),
|
|
'image' => str_replace('http://', Tools::getShopProtocol(), $context->link->getImageLink($item['link_rewrite'], $item['id_image'], 'home'.'_'.'default')),
|
|
);
|
|
}
|
|
} else {
|
|
$results[] = array(
|
|
'id' => $item['id_product'],
|
|
'name' => $item['name'],
|
|
'ref' => (!empty($item['reference']) ? $item['reference'] : ''),
|
|
'image' => str_replace('http://', Tools::getShopProtocol(), $context->link->getImageLink($item['link_rewrite'], $item['id_image'], 'home'.'_'.'default')),
|
|
);
|
|
}
|
|
}
|
|
echo json_encode(array_values($results));
|
|
} else {
|
|
echo json_encode([]);
|
|
}
|
|
die;
|
|
}
|
|
}
|