%PDF- %PDF-
| Direktori : /home1/lightco1/www/plugins/csviaddon/virtuemart/com_virtuemart/table/ |
| Current File : //home1/lightco1/www/plugins/csviaddon/virtuemart/com_virtuemart/table/manufacturerlang.php |
<?php
/**
* @package CSVI
* @subpackage VirtueMart
*
* @author Roland Dalmulder <contact@csvimproved.com>
* @copyright Copyright (C) 2006 - 2015 RolandD Cyber Produksi. All rights reserved.
* @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
* @link http://www.csvimproved.com
*/
defined('_JEXEC') or die;
/**
* Manufacturer language table.
*
* @package CSVI
* @subpackage VirtueMart
* @since 6.0
*/
class VirtueMartTableManufacturerLang extends CsviTableDefault
{
/**
* Table constructor.
*
* @param string $table Name of the database table to model.
* @param string $key Name of the primary key field in the table.
* @param JDatabase &$db Database driver
* @param array $config The configuration parameters array
*
* @since 4.0
*/
public function __construct($table, $key, &$db, $config = array())
{
if (isset($config['template']))
{
$this->template = $config['template'];
}
if ($this->template->get('operation') == 'manufacturer')
{
if ($this->template->get('language') == $this->template->get('target_language'))
{
$lang = $this->template->get('language');
}
else
{
$lang = $this->template->get('target_language');
}
}
else
{
$lang = $this->template->get('language');
}
parent::__construct('#__virtuemart_manufacturers_' . $lang, 'virtuemart_manufacturer_id', $db, $config);
}
/**
* Check if the manufacturer exists.
*
* @param bool $create Set to true if manufacturer should be created
*
* @return bool True if manufacturer exists | False if manufacturer does not exist.
*
* @since 4.0
*/
public function check($create = true)
{
if (!empty($this->virtuemart_manufacturer_id))
{
$query = $this->db->getQuery(true);
$query->select($this->db->quoteName($this->_tbl_key))
->from($this->db->quoteName($this->_tbl))
->where($this->db->quoteName($this->_tbl_key) . ' = ' . (int) $this->virtuemart_manufacturer_id);
$this->db->setQuery($query);
$id = $this->db->loadResult();
if ($id > 0)
{
// Load the existing data so we have a slug
$this->load();
$this->log->add('Manufacturer already exists', true);
// Check if the main entry exists
$query = $this->db->getQuery(true);
$query->select($this->db->quoteName('virtuemart_manufacturer_id'))
->from($this->db->quoteName('#__virtuemart_manufacturers'))
->where($this->db->quoteName('virtuemart_manufacturer_id') . ' = ' . (int) $this->virtuemart_manufacturer_id);
$this->db->setQuery($query);
$mf = $this->db->loadObject();
if (empty($mf))
{
$this->log->add('Found a manufacturer language but no manufacturer !!!!!');
// Not good, no main entry found so let's create one
$query = $this->db->getQuery(true)
->insert($this->db->quoteName('#__virtuemart_manufacturers'))
->columns(array($this->db->quoteName('virtuemart_manufacturer_id')))
->values($this->db->quote($this->virtuemart_manufacturer_id));
$this->db->setQuery($query)->execute();
}
return true;
}
else
{
if ($create)
{
// Create a dummy entry for updating
$query->insert($this->db->quoteName($this->_tbl))
->columns(array($this->db->quoteName($this->_tbl_key)))
->values($this->db->quote($this->virtuemart_manufacturer_id));
$this->db->setQuery($query);
if ($this->db->execute())
{
return true;
}
else
{
$this->log->add('Manufacturer does not exist', true);
return false;
}
}
else
{
$this->log->add('Manufacturer does not exist', true);
return false;
}
}
}
else
{
// We have no manufacturer ID yet, try to find it
$query = $this->db->getQuery(true)
->select($this->db->quoteName($this->_tbl_key))
->from($this->db->quoteName($this->_tbl))
->where($this->db->quoteName('mf_name') . ' = ' . $this->db->quote($this->mf_name));
$this->db->setQuery($query);
$id = $this->db->loadResult();
if ($id > 0)
{
$this->log->add('Manufacturer exists', true);
$this->virtuemart_manufacturer_id = $id;
$this->load();
return true;
}
else
{
if (isset($this->mf_name_trans))
{
// Check if we can find it by the original name
$query = $this->db->getQuery(true)
->select($this->db->quoteName($this->_tbl_key))
->from($this->db->quoteName('#__virtuemart_manufacturers_' . $this->template->get('language')))
->where($this->db->quoteName('mf_name') . ' = ' . $this->db->quote($this->mf_name_trans));
$this->db->setQuery($query);
$id = $this->db->loadResult();
if ($id > 0)
{
$this->log->add('Manufacturer exists', true);
$this->virtuemart_manufacturer_id = $id;
// Create a dummy entry for updating
$query = $this->db->getQuery(true)
->insert($this->db->quoteName($this->_tbl))
->columns(array($this->db->quoteName($this->_tbl_key)))
->values($this->db->quote($id));
$this->db->setQuery($query);
if ($this->db->execute())
{
$this->virtuemart_manufacturer_id = $id;
}
return true;
}
}
if ($create)
{
// Find the highest ID
$query = $this->db->getQuery(true)
->select('MAX(' . $this->db->quoteName('virtuemart_manufacturer_id') . ')')
->from($this->db->quoteName($this->_tbl));
$this->db->setQuery($query);
$maxid = $this->db->loadResult();
$maxid++;
// Create a dummy entry for updating
$query = $this->db->getQuery(true)
->insert($this->db->quoteName($this->_tbl))
->columns(array($this->db->quoteName($this->_tbl_key)))
->values($this->db->quote($maxid));
$this->db->setQuery($query);
if ($this->db->execute())
{
$this->virtuemart_manufacturer_id = $maxid;
return true;
}
else
{
$this->log->add('COM_CSVI_DEBUG_MANUFACTURER_NOT_EXISTS', true);
return false;
}
}
else
{
$this->log->add('COM_CSVI_DEBUG_MANUFACTURER_NOT_EXISTS', true);
return false;
}
}
}
}
/**
* Create a slug if needed and store the product.
*
* @param boolean $updateNulls True to update fields even if they are null.
*
* @return boolean True on success | False on failure.
*
* @since 4.0
*/
public function store($updateNulls = false)
{
if (empty($this->slug))
{
// Create the slug
$this->validateSlug();
}
// Remove the translation name
unset($this->mf_name_trans);
return parent::store($updateNulls);
}
/**
* Validate a slug.
*
* @return void.
*
* @since 4.0
*/
private function validateSlug()
{
// Create the slug
$this->slug = $this->helper->createSlug($this->mf_name);
// Check if the slug exists
$query = $this->db->getQuery(true)
->select('COUNT(' . $this->db->quoteName($this->_tbl_key) . ')')
->from($this->db->quoteName($this->_tbl))
->where($this->db->quoteName('slug') . ' = ' . $this->db->quote($this->slug));
$this->db->setQuery($query);
$slugs = $this->db->loadResult();
$this->log->add('Check manufacturer slug', true);
if ($slugs > 0)
{
$jdate = JFactory::getDate();
$this->slug .= $jdate->format("Y-m-d-h-i-s") . mt_rand();
}
}
/**
* Reset the primary key.
*
* @return boolean Always returns true.
*
* @since 6.0
*/
public function reset()
{
parent::reset();
// Empty the primary key
$this->set('virtuemart_manufacturer_id', null);
return true;
}
}