Current File : //var/www/vinorea/modules/tvcmsblog/classes/tvcmscategoryclass.php |
<?php
/**
* 2007-2025 PrestaShop.
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2025 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class TvcmsCategoryClass extends ObjectModel
{
public $id;
public $id_tvcmscategory;
public $name;
public $description;
public $link_rewrite;
public $category_img;
public $category_group;
public $category_type;
public $title;
public $meta_description;
public $keyword;
public $position;
public $active;
public static $definition = [
'table' => 'tvcmscategory',
'primary' => 'id_tvcmscategory',
'multilang' => true,
'fields' => [
'name' => ['type' => self::TYPE_STRING, 'validate' => 'isString', 'lang' => true],
'link_rewrite' => ['type' => self::TYPE_STRING, 'validate' => 'isString', 'lang' => true],
'title' => ['type' => self::TYPE_STRING, 'validate' => 'isString', 'lang' => true],
'description' => ['type' => self::TYPE_STRING, 'validate' => 'isString', 'lang' => true],
'meta_description' => ['type' => self::TYPE_STRING, 'validate' => 'isString', 'lang' => true],
'keyword' => ['type' => self::TYPE_STRING, 'validate' => 'isString', 'lang' => true],
'category_img' => ['type' => self::TYPE_STRING, 'validate' => 'isString'],
'category_type' => ['type' => self::TYPE_STRING, 'validate' => 'isString'],
'category_group' => ['type' => self::TYPE_INT, 'validate' => 'isunsignedInt'],
'position' => ['type' => self::TYPE_INT, 'validate' => 'isunsignedInt'],
'active' => ['type' => self::TYPE_BOOL, 'validate' => 'isBool'],
],
];
public function __construct($id = null, $id_lang = null, $id_shop = null)
{
Shop::addTableAssociation('tvcmscategory', ['type' => 'shop']);
parent::__construct($id, $id_lang, $id_shop);
}
public static function categoryExists($id_category = null, $category_type = 'post')
{
if (null == $id_category || 0 == $id_category) {
return false;
}
$sql = 'SELECT xc.`id_tvcmscategory` FROM `' . _DB_PREFIX_ . 'tvcmscategory` xc WHERE '
. 'xc.`category_type` = "' . ($category_type ? $category_type : 'category')
. '" AND xc.active = 1 AND xc.`id_tvcmscategory` = ' . $id_category;
$rslts = Db::getInstance()->getrow($sql);
return (isset($rslts['id_tvcmscategory']) && !empty($rslts['id_tvcmscategory'])) ? true : false;
}
public function update($null_values = false)
{
if (isset($_FILES['category_img'])
&& isset($_FILES['category_img']['tmp_name'])
&& !empty($_FILES['category_img']['tmp_name'])) {
$sql = 'SELECT * FROM `' . _DB_PREFIX_ . 'tvcmscategory` WHERE '
. ' `id_tvcmscategory` = ' . ((int) Tools::getValue('id_tvcmscategory'));
$res = Db::getInstance()->executeS($sql);
if (file_exists(TVCMSBLOG_IMG_DIR . $res['category_img'])) {
unlink(TVCMSBLOG_IMG_DIR . $res['category_img']);
}
$this->category_img = TvcmsBlog::uploadMedia('category_img');
} else {
$sql = 'SELECT * FROM `' . _DB_PREFIX_ . 'tvcmscategory` WHERE '
. ' `id_tvcmscategory` = ' . ((int) Tools::getValue('id_tvcmscategory'));
$res = Db::getInstance()->executeS($sql);
$this->category_img = $res[0]['category_img'];
}
if (!parent::update($null_values)) {
return false;
}
return true;
}
public function add($autodate = true, $null_values = false)
{
if ($this->position <= 0) {
$this->position = self::getTopPosition() + 1;
}
$this->category_img = TvcmsBlog::uploadMedia('category_img');
if (!parent::add($autodate, $null_values) || !Validate::isLoadedObject($this)) {
return false;
}
return true;
}
public static function getTopPosition()
{
$sql = 'SELECT MAX(`position`)
FROM `' . _DB_PREFIX_ . 'tvcmscategory`';
$position = DB::getInstance()->getValue($sql);
return (is_numeric($position)) ? $position : -1;
}
public function updatePosition($way, $position)
{
if (!$res = Db::getInstance()->executeS(
'SELECT `id_tvcmscategory`, `position`
FROM `' . _DB_PREFIX_ . 'tvcmscategory`
ORDER BY `position` ASC'
)) {
return false;
}
if (!empty($res)) {
foreach ($res as $tvcmscategory) {
if ((int) $tvcmscategory['id_tvcmscategory'] == (int) $this->id) {
$moved_tvcmscategory = $tvcmscategory;
}
}
}
if (!isset($moved_tvcmscategory) || !isset($position)) {
return false;
}
$queryx = ' UPDATE `' . _DB_PREFIX_ . 'tvcmscategory`
SET `position`= `position` ' . ($way ? '- 1' : '+ 1') . '
WHERE `position`
' . ($way
? '> ' . (int) $moved_tvcmscategory['position'] . ' AND `position` <= ' . (int) $position
: '< ' . (int) $moved_tvcmscategory['position'] . ' AND `position` >= ' . (int) $position . '
');
$queryy = ' UPDATE `' . _DB_PREFIX_ . 'tvcmscategory`
SET `position` = ' . (int) $position . '
WHERE `id_tvcmscategory` = ' . (int) $moved_tvcmscategory['id_tvcmscategory'];
return Db::getInstance()->execute($queryx)
&& Db::getInstance()->execute($queryy);
}
public static function getCategoryPath($id_category = null, $category_type = 'category')
{
$meta_title = Configuration::get(TvcmsBlog::$tvcmsblogshortname . 'meta_title');
if (null == $id_category) {
return isset($meta_title) ? $meta_title : 'Blog';
}
$pipe = Configuration::get('PS_NAVIGATION_PIPE');
if (empty($pipe)) {
$pipe = '>';
}
$blog_url = TvcmsBlog::tvcmsBlogLink();
$full_paths = '<a href="' . $blog_url . '" title="' . $meta_title . '" data-gg="">' . $meta_title
. '</a><span class="navigation-pipe">' . $pipe . '</span>';
$results = self::getTheTitle($id_category, $category_type);
$str = (isset($results['name']) ? $results['name'] : $meta_title);
return $full_paths . $str;
}
public static function getTheTitle($id_category = null, $category_type = 'category')
{
if (null == $id_category) {
return false;
}
$id_lang = (int) Context::getContext()->language->id;
$id_shop = (int) Context::getContext()->shop->id;
$sql = 'SELECT xc.`id_tvcmscategory`,xcl.`name`,xcl.`link_rewrite` FROM `' . _DB_PREFIX_
. 'tvcmscategory` xc INNER JOIN `' . _DB_PREFIX_ . 'tvcmscategory_lang` xcl ON (xc.`id_tvcmscategory` = '
. 'xcl.`id_tvcmscategory` AND xcl.`id_lang` = ' . $id_lang . ') INNER JOIN `' . _DB_PREFIX_
. 'tvcmscategory_shop` xcs ON (xc.`id_tvcmscategory` = xcs.`id_tvcmscategory` AND xcs.`id_shop` = '
. $id_shop . ') ';
$sql .= ' WHERE xc.`category_type` = "' . ($category_type ? $category_type : 'category') . '" AND '
. 'xc.`id_tvcmscategory` = ' . $id_category;
$rslts = Db::getInstance()->getrow($sql);
return $rslts;
}
public static function getTheId($rewrite = null, $category_type = 'category')
{
if (null == $rewrite) {
return false;
}
$id_lang = (int) Context::getContext()->language->id;
$id_shop = (int) Context::getContext()->shop->id;
$sql = 'SELECT xc.`id_tvcmscategory` FROM `' . _DB_PREFIX_ . 'tvcmscategory` xc INNER JOIN `' . _DB_PREFIX_
. 'tvcmscategory_lang` xcl ON (xc.`id_tvcmscategory` = xcl.`id_tvcmscategory` AND xcl.`id_lang` = '
. $id_lang . ') INNER JOIN `' . _DB_PREFIX_ . 'tvcmscategory_shop` xcs ON (xc.`id_tvcmscategory` = '
. 'xcs.`id_tvcmscategory` AND xcs.`id_shop` = ' . $id_shop . ') ';
$sql .= ' WHERE xc.`category_type` = "' . pSQL($category_type ? $category_type : 'category')
. '" AND xcl.`link_rewrite` = "' . pSQL($rewrite) . '" ';
$rslts = Db::getInstance()->getrow($sql);
return isset($rslts['id_tvcmscategory']) ? $rslts['id_tvcmscategory'] : null;
}
public static function getCategories($category_type = 'category', $category_group = null)
{
$id_lang = (int) Context::getContext()->language->id;
$id_shop = (int) Context::getContext()->shop->id;
$sql = 'SELECT * FROM `' . _DB_PREFIX_ . 'tvcmscategory` xc
INNER JOIN `' . _DB_PREFIX_ . 'tvcmscategory_lang` xcl ON
(xc.`id_tvcmscategory` = xcl.`id_tvcmscategory` '
. 'AND xcl.`id_lang` = ' . $id_lang . ')
INNER JOIN `' . _DB_PREFIX_ . 'tvcmscategory_shop` xcs ON
(xc.`id_tvcmscategory` = xcs.`id_tvcmscategory` '
. 'AND xcs.`id_shop` = ' . $id_shop . ')
';
$sql .= ' WHERE xc.`active` = 1 AND category_type = "' . $category_type . '" ';
if (null != $category_group) {
$sql .= ' AND category_group = ' . $category_group;
}
$sql .= ' ORDER BY xc.`position` ASC ';
return Db::getInstance()->executeS($sql);
}
public static function serializeCategory($brief = true)
{
$results = [];
if (true == $brief) {
$results[0]['id'] = 0;
$results[0]['name'] = 'Select Category';
}
$category = self::getCategories();
if (isset($category) && !empty($category)) {
$i = (int) $brief;
foreach ($category as $categoryvalue) {
$results[$i]['id'] = $categoryvalue['id_tvcmscategory'];
$results[$i]['name'] = $categoryvalue['name'];
++$i;
}
}
return $results;
}
}