%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/lightco1/upgrade.lightco.com.au/administrator/components/com_csvi/rantai/
Upload File :
Create Path :
Current File : /home/lightco1/upgrade.lightco.com.au/administrator/components/com_csvi/rantai/model.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
 */
class RantaiModel
{
	/**
	 * JDatabase handler
	 *
	 * @var    CsviDatabase
	 * @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;

	/**
	 * Settings helper
	 *
	 * @var    CsviHelperSettings
	 * @since  6.0
	 */
	protected $settings = null;

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

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

	/**
	 * File helper
	 *
	 * @var    CsviHelperFile
	 * @since  6.0
	 */
	protected $file = null;

	/**
	 * Input handler
	 *
	 * @var    JInput
	 * @since  6.0
	 */
	protected $input = 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 ID of the current run
	 *
	 * @var    int
	 * @since  6.0
	 */
	protected $runId = 0;

	/**
	 * The ID of the user initiated the run
	 *
	 * @var    int
	 * @since  6.0
	 */
	protected $userId = 0;

	/**
	 * Name of the file to process
	 *
	 * @var    string
	 * @since  6.0
	 */
	protected $processfile = '';

	/**
	 * Name of the folder to process
	 *
	 * @var    string
	 * @since  6.0
	 */
	protected $processfolder = '';

	/**
	 * Keeps the number of processed records
	 *
	 * @var    int
	 * @since  6.0
	 */
	protected $recordsProcessed = 0;

	/**
	 * Construct the class.
	 *
	 * @param   JInput  $input  The input handler
	 *
	 * @since   6.0
	 */
	public function __construct(JInput $input)
	{
		// Set the input handler
		$this->input = $input;

		// Load the database class
		$this->db = JFactory::getDbo();

		// Load the global CSVI settings
		$this->settings = new CsviHelperSettings($this->db);

		// Load the logger
		$this->log = new CsviHelperLog($this->settings, $this->db);

		// Load the CSVI helper
		$this->csvihelper = new CsviHelperCsvi;
		$this->csvihelper->initialise($this->log);
	}

	/**
	 * Load the template helper.
	 *
	 * @param   int  $template_id  The ID of the template to load
	 *
	 * @return  mixed  True if template is loaded | Throw exception if not loaded.
	 *
	 * @throws  Exception
	 *
	 * @since   6.0
	 */
	protected function loadTemplate($template_id)
	{
		if ($template_id)
		{
			$this->template = new CsviHelperTemplate($template_id, $this->csvihelper);
		}
		else
		{
			throw new Exception(JText::_('COM_CSVI_NO_TEMPLATE_SPECIFIED'));
		}

		return true;
	}

	/**
	 * Get the configuration fields the user wants to use
	 *
	 * The configuration fields can be taken from the uploaded file or from
	 * the database. Depending on the template settings..
	 *
	 * @return  bool  true|false true when there are config fields|false when there are no or unsupported fields.
	 *
	 * @since   3.0
	 */
	protected function loadFields()
	{
		// Get the correct fields helper
		$className = 'CsviHelper' . ucfirst($this->template->get('action')) . 'fields';

		$this->fields = new $className($this->template, $this->log, $this->db);
		$this->fields->setFile($this->file);

		return true;
	}

	/**
	 * Return the log ID.
	 *
	 * @return  int  The ID of the log.
	 *
	 * @since   6.0
	 */
	public function getRunId()
	{
		return $this->log->getLogId();
	}

	/**
	 * Return the number of lines processed.
	 *
	 * @return  int  The number of lines processed.
	 *
	 * @since   6.0
	 */
	public function getLinesProcessed()
	{
		return $this->log->getLinenumber();
	}

	/**
	 * Store the number of lines processed.
	 *
	 * @return  mixed  True on success | Throws exception on failure.
	 *
	 * @since   6.0
	 *          
	 * @throws  RuntimeException
	 */
	public function storeLinesProcessed()
	{
		$query = $this->db->getQuery(true)
			->update($this->db->quoteName('#__csvi_logs'))
			->set($this->db->quoteName('records') . ' = ' . $this->getLinesProcessed())
			->where($this->db->quoteName('csvi_log_id') . ' = ' . (int) $this->log->getLogId());
		$this->db->setQuery($query)->execute();

		return true;
	}

	/**
	 * Get the statistics of import.
	 *
	 * @return  array Details of imported data.
	 *
	 * @since   6.6.0
	 *          
	 * @throws  RuntimeException
	 * @throws  InvalidArgumentException
	 */
	public function getStatistics()
	{
		// Load the log details model
		require_once JPATH_BASE . '/administrator/components/com_csvi/models/logdetails.php';
		$model = new CsviModelLogdetails;

		$result = $model->getStats($this->log->getLogId());

		return $result->resultstats;
	}

	/**
	 * Initialise the addons.
	 *
	 * @return  void.
	 *
	 * @since   6.0
	 */
	public function initialiseAddon()
	{
		// Load the component helpers
		JLoader::import('joomla.filesystem.file');
		$component = $this->template->get('component');

		// Load the helper
		if (JFile::exists(JPATH_ADMINISTRATOR . '/components/com_csvi/addon/' . $component . '/helper/' . $component . '.php'))
		{
			$helperName = ucfirst($component) . 'Helper' . ucfirst($component);
			$this->helper = new $helperName($this->template, $this->log, $this->fields, $this->db);
		}

		// Load the config helper
		if (JFile::exists(JPATH_ADMINISTRATOR . '/components/com_csvi/addon/' . $component . '/helper/' . $component . '_config.php'))
		{
			$helperName = ucfirst($component) . 'Helper' . ucfirst($component) . '_config';
			$this->helperconfig = new $helperName;
		}
	}

	/**
	 * Sets the system limits to user defined values.
	 *
	 * Sets the system limits to user defined values to allow for longer and
	 * bigger uploaded files.
	 *
	 * @return  void.
	 *
	 * @since   3.0
	 */
	protected function systemLimits()
	{
		// See if we need to use the new limits
		if ($this->template->get('use_system_limits'))
		{
			$this->log->add('Setting system limits:');

			// Apply the new memory limits
			$execution_time = $this->template->get('max_execution_time');

			if (strlen($execution_time) > 0)
			{
				$this->log->add('Setting max_execution_time to ' . $execution_time . ' seconds');
				@ini_set('max_execution_time', $execution_time);
			}

			$memory_limit = $this->template->get('memory_limit');

			if ($memory_limit == '-1')
			{
				$this->log->add('Setting memory_limit to ' . $memory_limit);
				@ini_set('memory_limit', $memory_limit);
			}
			elseif (strlen($memory_limit) > 0)
			{
				$this->log->add('Setting memory_limit to ' . $memory_limit . 'M');
				@ini_set('memory_limit', $memory_limit . 'M');
			}

			$post_size = $this->template->get('post_max_size');

			if (strlen($post_size) > 0)
			{
				$this->log->add('Setting post_max_size to ' . $post_size . 'M');
				@ini_set('post_max_size', $post_size . 'M');
			}

			$file_size = $this->template->get('upload_max_filesize');

			if (strlen($file_size) > 0)
			{
				$this->log->add('Setting upload_max_filesize to ' . $file_size . 'M');
				@ini_set('upload_max_filesize', $file_size . 'M');
			}
		}
	}

	/**
	 * Check if there are more files to process.
	 *
	 * @return  bool  True if there are more files | False if there are no more files.
	 *
	 * @since   6.0
	 */
	public function moreFiles()
	{
		if (empty($this->processfolder))
		{
			return false;
		}
		else
		{
			$files = JFolder::files($this->processfolder);

			if (!empty($files))
			{
				return true;
			}
			else
			{
				return false;
			}
		}
	}

	/**
	 * Do a little house keeping and clean up whatever is needed.
	 *
	 * @return  void.
	 *
	 * @since   6.0
	 */
	public function cleanup()
	{
		// Remove the running process
		$query = $this->db->getQuery(true)
			->delete($this->db->quoteName('#__csvi_processes'))
			->where($this->db->quoteName('csvi_process_id') . ' = ' . (int) $this->runId);
		$this->db->setQuery($query)->execute();

		// Set the log end timestamp
		$query = $this->db->getQuery(true)
			->update($this->db->quoteName('#__csvi_logs'))
			->set($this->db->quoteName('end') . ' = ' . $this->db->quote(JFactory::getDate()->toSql()))
			->where($this->db->quoteName('csvi_log_id') . ' = ' . (int) $this->log->getLogId());
		$this->db->setQuery($query)->execute();

		// Remove the temporary folder
		if (JFolder::exists($this->processfolder))
		{
			JFolder::delete($this->processfolder);
		}

		// Trigger any plugins to run after import completes
		$options = array();
		$options[] = $this->template->getSettings();
		$dispatcher = new RantaiPluginDispatcher;
		$dispatcher->importPlugins('csvi', $this->db);
		$dispatcher->trigger('onImportComplete', $options);
	}

	/**
	 * Get administrator active template.
	 *
	 * @return  string  Name of administrator template.
	 *
	 * @since   6.6.0
	 *
	 * @throws  RuntimeException
	 */
	public function getAdminTemplate()
	{
		$query = $this->db->getQuery(true)
			->select('template')
			->from('#__template_styles')
			->where($this->db->quoteName('client_id') . ' = 1')
			->where($this->db->quoteName('home') . ' = 1');
		$this->db->setQuery($query)->execute();

		return $this->db->loadResult();
	}
}

Zerion Mini Shell 1.0