%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/lightco1/upgrade.lightco.com.au/administrator/components/com_csvi/rantai/import/
Upload File :
Create Path :
Current File : /home/lightco1/upgrade.lightco.com.au/administrator/components/com_csvi/rantai/import/engine.php

<?php
/**
 * @package     CSVI
 * @subpackage  Imports
 *
 * @author      Roland Dalmulder <contact@csvimproved.com>
 * @copyright   Copyright (C) 2006 - 2016 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;

/**
 * Import model class.
 *
 * @package     CSVI
 * @subpackage  Imports
 * @since       6.0
 */
abstract class RantaiImportEngine
{
	/**
	 * A state object
	 *
	 * @var    string
	 * @since  12.2
	 */
	protected $state;

	/**
	 * JDatabase handler
	 *
	 * @var    JDatabaseDriver
	 * @since  6.0
	 */
	protected $db = null;

	/**
	 * Template helper
	 *
	 * @var    CsviHelperTemplate
	 * @since  6.0
	 */
	protected $template = null;

	/**
	 * Logger helper
	 *
	 * @var    CsviHelperLog
	 * @since  6.0
	 */
	protected $log = null;

	/**
	 * CSVI helper
	 *
	 * @var    CsviHelperCsvi
	 * @since  6.0
	 */
	protected $csvihelper = null;

	/**
	 * CSVI fields
	 *
	 * @var    CsviHelperFields
	 * @since  6.0
	 */
	protected $fields = null;

	/**
	 * The addon helper
	 *
	 * @var    object
	 * @since  6.0
	 */
	protected $helper = null;

	/**
	 * The addon config helper
	 *
	 * @var    object
	 * @since  6.0
	 */
	protected $helperconfig = null;

	/**
	 * The Joomla date class
	 *
	 * @var    JDate
	 * @since  6.0
	 */
	protected $date = null;

	/**
	 * The Joomla user ID
	 *
	 * @var    int
	 * @since  6.0
	 */
	protected $userId = 0;

	/**
	 * Set if the product is loaded
	 *
	 * @var    bool
	 * @since  6.0
	 */
	protected  $loaded = true;

	/**
	 * Record identifier
	 *
	 * @var    string
	 * @since  6.0
	 */
	protected $recordIdentity = null;

	/**
	 * Constructor.
	 *
	 * @param   JDatabaseDriver     $db            An instance of JDatabaseDriver.
	 * @param   CsviHelperTemplate  $template      An instance of CsviHelperTemplate.
	 * @param   CsviHelperLog       $log           An instance of CsviHelperLog.
	 * @param   CsviHelperCsvi      $csvihelper    An instance of CsviHelperCsvi.
	 * @param   CsviHelperFields    $fields        An instance of CsviHelperFields.
	 * @param   object              $helper        The component helper.
	 * @param   object              $helperconfig  The component config helper.
	 * @param   int                 $userId        The ID of the user running the import.
	 *
	 * @since   3.4
	 */
	public function __construct(
		JDatabaseDriver $db,
		CsviHelperTemplate $template,
		CsviHelperLog $log,
		CsviHelperCsvi $csvihelper,
		CsviHelperFields $fields,
		$helper,
		$helperconfig,
		$userId)
	{
		// Set the dependencies
		$this->db = $db;
		$this->template = $template;
		$this->log = $log;
		$this->csvihelper = $csvihelper;
		$this->fields = $fields;
		$this->helper = $helper;
		$this->helperconfig = $helperconfig;

		// Load the date helper
		$this->date = JFactory::getDate();

		// Load the user helper
		$this->userId = $userId;

		// Set the state object
		$this->state = new JObject;

		// Set the Joomla version
		require_once JPATH_LIBRARIES . '/cms/version/version.php';
	}

	/**
	 * Here starts the processing.
	 *
	 * @return  bool  Returns true on success | False on failure.
	 *
	 * @since   3.0
	 */
	abstract public function getStart();

	/**
	 * Process each record and store it in the database.
	 *
	 * @return  bool  Returns true if all is OK | Returns false if no product SKU or product ID can be found.
	 *
	 * @since   3.0
	 */
	abstract public function getProcessRecord();

	/**
	 * Method to set model state variables
	 *
	 * @param   string  $property  The name of the property.
	 * @param   mixed   $value     The value of the property to set or null.
	 *
	 * @return  mixed  The previous value of the property or null if not set.
	 *
	 * @since   6.0
	 */
	public function setState($property, $value = null)
	{
		return $this->state->set($property, $value);
	}

	/**
	 * Magic getter; allows to use the name of model state keys as properties
	 *
	 * @param   string  $name  The name of the variable to get
	 *
	 * @return  mixed  The value of the variable
	 */
	public function __get($name)
	{
		return $this->getState($name);
	}

	/**
	 * Get a filtered state variable
	 *
	 * @param   string  $key          The name of the state variable
	 * @param   mixed   $default      The default value to use
	 * @param   string  $filter_type  Filter type
	 *
	 * @return  mixed  The variable value
	 *
	 * @since   6.0
	 */
	protected function getState($key = null, $default = null, $filter_type = 'raw')
	{
		if (empty($key))
		{
			return null;
		}

		$value = $this->state->get($key, $default);

		if (strtoupper($filter_type) == 'RAW')
		{
			return $value;
		}
		else
		{
			JLoader::import('joomla.filter.filterinput');
			$filter = new JFilterInput;

			return $filter->clean($value, $filter_type);
		}
	}

	/**
	 * Empty the state completely.
	 *
	 * @return  bool  Always returns true.
	 *
	 * @since   6.0
	 */
	public function clearState()
	{
		$this->state = new JObject;

		return true;
	}

	/**
	 * Method to get a table object, load it if necessary.
	 *
	 * @param   string  $name     The table name. Optional.
	 * @param   string  $prefix   The class prefix. Optional.
	 * @param   array   $options  Configuration array for model. Optional.
	 *
	 * @return  FOFTable  A FOFTable object
	 *
	 * @since   6.0
	 */
	public function getTable($name = '', $prefix = null, $options = array())
	{
		// Check if we have a template
		if ($this->template)
		{
			// Get the component name
			$component = $this->template->get('component');

			// Set the prefix if needed
			if (empty($prefix))
			{
				$prefix = ucfirst(str_replace('com_', '', $component)) . 'Table';
			}

			// Set the table path
			$options['tablepath'] = JPATH_ADMINISTRATOR . '/components/com_csvi/addon/' . $component . '/table';

			// Add extras to the options
			$options['template'] = $this->template;
			$options['log'] = $this->log;
			$options['helper'] = $this->helper;
			$options['helperconfig'] = $this->helperconfig;

			// Load the table file
			require_once JPATH_ADMINISTRATOR . '/components/com_csvi/addon/' . $component . '/table/' . strtolower($name) . '.php';

			// Create the table name
			$tblName = $prefix . $name;

			// Instantiate the table
			try
			{
				return new $tblName('', '', $this->db, $options);
			}
			catch (Exception $e)
			{
				throw new CsviException(JText::sprintf('COM_CSVI_NO_TABLE_LOADED', $tblName, $e->getMessage()), 513);
			}
		}
		else
		{
			throw new CsviException(JText::_('COM_CSVI_NO_TEMPLATE_LOADED'), 501);
		}
	}

	/**
	 * Converts a price to correct delimiters for database storage.
	 *
	 * @param   string  $value  The value to modify.
	 *
	 * @return  string  The modified price.
	 *
	 * @since   6.0
	 */
	protected function toPeriod($value)
	{
		$clean = str_replace(",", ".", $value);
		$lastpos = strrpos($clean, '.');

		return str_replace('.', '', substr($clean, 0, $lastpos)) . substr($clean, $lastpos);
	}

	/**
	 * Format a datetime format.
	 *
	 * Format of the date is day/month/year or day-month-year.
	 *
	 * @param   string  $date  The date to convert
	 * @param   string  $type  The type of date/time to return
	 * @param   string  $tz    Which timezone to use, joomla or user
	 *
	 * @return  mixed  A timestamp based on the supplied type.
	 *
	 * @since   6.0
	 */
	protected function convertDate($date, $type='sql', $tz='joomla')
	{
		// Check if we have a null date
		if ($date == '0000-00-00 00:00:00' || $date == '0000-00-00')
		{
			return $date;
		}
		else
		{
			$new_date = preg_replace('/-|\./', '/', $date);
			$date_parts = explode(' ', $new_date);
			$date_part = '';
			$time_part = '';

			if (isset($date_parts[0]))
			{
				$date_part = $date_parts[0];
			}

			if (isset($date_parts[1]))
			{
				$time_part = $date_parts[1];
			}

			$date_parts = explode('/', $date_part);
			$time_parts = explode(':', $time_part);

			switch ($type)
			{
				case 'date':
					// Check if the date starts with a year or not
					if (strlen($date_parts[0]) == 4)
					{
						$old_date = mktime(0, 0, 0, $date_parts[1], $date_parts[2], $date_parts[0]);
					}
					elseif (
						(count($date_parts) == 3) &&
						($date_parts[0] > 0 && $date_parts[0] < 32 && $date_parts[1] > 0 && $date_parts[1] < 13 && (strlen($date_parts[2]) == 4  || strlen($date_parts[2]) == 2))
					)
					{
						// Check if the year is only 2 digits, if so add 20 to it.
						if (strlen($date_parts[2]) == 2)
						{
							$date_parts[2] = '20' . $date_parts[2];
						}

						$old_date = mktime(0, 0, 0, $date_parts[1], $date_parts[0], $date_parts[2]);
					}
					else
					{
						$old_date = 0;
					}
					break;
				case 'time':
					if ((count($time_parts) == 3) && ($time_parts[0] > 0 && $time_parts[0] < 24 && $time_parts[1] > 0 && $time_parts[1] < 61))
					{
						$old_date = mktime($time_parts[0], $time_parts[1], $time_parts[2], $date_parts[1], $date_parts[0], $date_parts[2]);
					}
					else
					{
						$old_date = 0;
					}
					break;
				default:
					// Check if the date starts with a year or not
					if (strlen($date_parts[0]) == 4)
					{
						$old_date = mktime(0, 0, 0, $date_parts[1], $date_parts[2], $date_parts[0]);
					}
					elseif (
						(count($date_parts) == 3) &&
						($date_parts[0] > 0 && $date_parts[0] < 32 && $date_parts[1] > 0 && $date_parts[1] < 13 && (strlen($date_parts[2]) == 4 || strlen($date_parts[2]) == 2))
					)
					{
						// Check if the year is only 2 digits, if so add 20 to it.
						if (strlen($date_parts[2]) == 2)
						{
							$date_parts[2] = '20' . $date_parts[2];
						}

						if ((count($time_parts) == 3) && ($time_parts[0] > 0 && $time_parts[0] < 24 && $time_parts[1] > 0 && $time_parts[1] < 61))
						{
							$old_date = mktime($time_parts[0], $time_parts[1], $time_parts[2], $date_parts[1], $date_parts[0], $date_parts[2]);
						}
						else
						{
							$old_date = mktime(0, 0, 0, $date_parts[1], $date_parts[0], $date_parts[2]);
						}
					}
					else
					{
						$old_date = 0;
					}
					break;
			}

			// Convert the old date
			switch ($tz)
			{
				case 'user':
					switch ($type)
					{
						case 'date':
							$new_date = date('Y-m-d', $old_date);
							break;
						case 'time':
							$new_date = date('H:i:s', $old_date);
							break;
						case 'unix':
							$new_date = $old_date;
							break;
						default:
							$new_date = date('Y-m-d H:i:s', $old_date);
							break;
					}
					break;
				case 'joomla':
					$date = JFactory::getDate($old_date);

					switch ($type)
					{
						case 'date':
							$new_date = $date->format('Y-m-d', false, false);
							break;
						case 'time':
							$new_date = $date->format('H:i:s', false, false);
							break;
						case 'unix':
							if ($old_date)
							{
								$new_date = $date->toUnix();
							}
							else
							{
								$new_date = '0';
							}
							break;
						default:
							if ($old_date)
							{
								$new_date = $date->toSql();
							}
							else
							{
								$new_date = '0000-00-00 00:00:00';
							}
							break;
					}
					break;
			}

			return $new_date;
		}
	}

	/**
	 * Return the type of query INSERT / UPDATE.
	 *
	 * @return  string  The name of the type of query performed.
	 *
	 * @since   3.0
	 */
	protected function queryResult()
	{
		return trim(substr($this->db->getQuery(), 0, strpos($this->db->getQuery(), ' ')));
	}

	/**
	 * Clean a price so it is only a price.
	 *
	 * @param   string  $price  The price to clean
	 *
	 * @return  float  The cleaned up price.
	 *
	 * @since   6.0
	 */
	protected function cleanPrice($price)
	{
		$filter = new JFilterInput;

		return $filter->clean($this->toPeriod($price), 'float');
	}
}

Zerion Mini Shell 1.0