%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/lightco1/upgrade.lightco.com.au/administrator/components/com_csvi/controllers/
Upload File :
Create Path :
Current File : /home/lightco1/upgrade.lightco.com.au/administrator/components/com_csvi/controllers/exports.php

<?php
/**
 * @package     CSVI
 * @subpackage  Export
 *
 * @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;

/**
 * Export Controller.
 *
 * @package     CSVI
 * @subpackage  Export
 * @since       6.0
 */
class CsviControllerExport extends CsviControllerDefault
{
	/**
	 * Executes a given controller task. The onBefore<task> and onAfter<task>
	 * methods are called automatically if they exist.
	 *
	 * @param   string  $task  The task to execute, e.g. "browse"
	 *
	 * @return  null|bool  False on execution failure
	 *
	 * @since   6.0
	 *
	 * @throws  Exception
	 */
	public function execute($task)
	{
		if (!in_array(strtolower($task), array('start', 'export', 'cancel', 'downloadfile', 'getdata', 'loadsites'), true))
		{
			$task = 'detail';
			$this->view = 'exports';
		}

		parent::execute($task);
	}

	/**
	 * Show the detail page.
	 *
	 * @return  boolean  Always returns true.
	 *
	 * @since   6.0
	 *
	 * @throws  Exception
	 */
	public function detail()
	{
		// Load the list of export template

		/** @var CsviModelTemplates $templateModel */
		$templateModel = JModelLegacy::getInstance('Templates', 'CsviModel', array('ignore_request' => true));
		$templateModel->setState('filter.action', 'export');
		$templateModel->setState('filter.enabled', 1);
		$templateModel->setState('list.ordering', 'ordering');
		$templateModel->setState('list.direction', 'ASC');
		$templates = $templateModel->getItems();

		// Get the last template id which was used for export
		$templateModel->setState('list.ordering', 'lastrun');
		$templateModel->setState('list.direction', 'DESC');
		$lastRunItems = $templateModel->getItems();
		$lastRun = array_shift($lastRunItems);
		$lastRunId = '';

		// If template id is set in the URL use that to select the template
		$csvi_template_id = JFactory::getApplication()->input->get('csvi_template_id', 0, 'int');
		$db = JFactory::getDbo();

		if ($csvi_template_id)
		{
			$lastRunId = $csvi_template_id;
		}
		elseif ($lastRun->lastrun !== $db->getNullDate())
		{
			$lastRunId = $lastRun->csvi_template_id;
		}

		// Get the view
		$view = $this->getThisView();

		// Push the template list into the view
		$view->set('templates', $templates);
		$view->set('lastrunid', $lastRunId);

		return parent::detail();
	}

	/**
	 * Load the import page and start the import.
	 *
	 * @return  boolean  Always returns true.
	 *
	 * @since   6.0
	 */
	public function start()
	{
		// Load the model
		$model = $this->getThisModel();

		// Get the template ID
		$template_id = $this->input->get('csvi_template_id', false);

		if (!$template_id)
		{
			// Redirect to the template view
			$this->setRedirect('index.php?option=com_csvi&view=exports', JText::_('COM_CSVI_NO_TEMPLATE_ID_FOUND'), 'error');
			$this->redirect();
		}

		// Initialise
		$model->initialise($template_id);

		// Get the run ID
		$runId = $model->getRunId();

		// Make the template available
		$view = $this->getThisView();

		$view->set('template', $model->getTemplate());
		$view->set('runId', $runId);

		return parent::detail();
	}

	/**
	 * Export the requested data.
	 *
	 * @return  void.
	 *
	 * @since   3.0
	 */
	public function export()
	{
		// Get the run ID
		$runId = $this->input->getInt('runId', false);

		// Get the model
		/** @var CsviModelExports $model */
		$model = $this->getThisModel();

		try
		{
			if ($runId)
			{
				// Load the template
				$templateId = $model->getTemplateId($runId);

				if ($templateId)
				{
					$model->loadTemplate($templateId);

					// Load the template
					$template = $model->getTemplate();

					// Get the component and operation
					$component = $template->get('component');
					$operation = $template->get('operation');
					$override = $template->get('override');
					$adminTemplate = JFactory::getApplication()->getTemplate();

					if ($component && $operation)
					{
						if ($override
							&& file_exists(JPATH_ADMINISTRATOR . '/templates/' . $adminTemplate . '/html/com_csvi/' . $component . '/model/export/' . $override . '.php'))
						{
							JLoader::registerPrefix(ucfirst($component), JPATH_ADMINISTRATOR . '/templates/' . $adminTemplate . '/html/com_csvi/' . $component);
							$classname = ucwords($component) . 'ModelExport' . ucwords($override);
						}

						// If the addon is not installed show message to install it
						if (!file_exists(JPATH_ADMINISTRATOR . '/components/com_csvi/addon/' . $component))
						{
							throw new CsviException(JText::sprintf('COM_CSVI_NO_ADDON_INSTALLED', $component));
						}

						// Setup the component autoloader
						JLoader::registerPrefix(ucfirst($component), JPATH_ADMINISTRATOR . '/components/com_csvi/addon/' . $component);

						if (empty($classname))
						{
							// Load the export routine
							$classname = ucwords($component) . 'ModelExport' . ucwords($operation);
						}

						/** @var CsviModelExports $routine */
						$routine = new $classname;

						// Prepare for export
						$routine->initialiseExport($runId);
						$routine->onBeforeExport($component);

						if ($override)
						{
							// Set the override for the operation model if exists
							$overridefile = JPATH_ADMINISTRATOR . '/templates/' . $adminTemplate . '/html/com_csvi/' . $component . '/model/export/' . $override . '.php';

							if (file_exists($overridefile))
							{
								$this->addModelPath(JPATH_ADMINISTRATOR . '/templates/' . $adminTemplate . '/html/com_csvi/' . $component . 'model/export');
							}
							else
							{
								$this->addModelPath(JPATH_ADMINISTRATOR . '/components/com_csvi/addon/' . $component . '/model/export');
							}
						}

						// Start the export
						try
						{
							$routine->runExport();
							$result['process'] = false;
							$result['records'] = $routine->getRecords();
							$result['downloadurl'] = $routine->getDownloadUrl();
							$returnUrl = JUri::root() . 'administrator/index.php?option=com_csvi&view=exports';
							$result['url'] = JUri::root() . 'administrator/index.php?option=com_csvi&view=logdetails&run_id=' . $routine->getLogId() . '&return=' . base64_encode($returnUrl);

							// Output the results in JSON
							echo json_encode($result);

							JFactory::getApplication()->close();
						}
						catch (Exception $e)
						{
							// Finalize the export
							$routine->setEndTimestamp($runId);

							// Enqueue the message
							$helper = new CsviHelperCsvi;
							$helper->enqueueMessage($e->getMessage(), 'error');

							// Send the user to the log details
							$result['process'] = false;
							$result['url'] = JUri::root() . 'administrator/index.php?option=com_csvi&view=logdetails&run_id=' . $routine->getLogId();

							// Output the results in JSON
							echo json_encode($result);
						}
					}
					else
					{
						throw new CsviException(JText::_('COM_CSVI_EXPORT_NO_COMPONENT_NO_OPERATION'), 514);
					}
				}
				else
				{
					throw new CsviException(JText::_('COM_CSVI_NO_TEMPLATEID_FOUND'), 509);
				}
			}
			else
			{
				throw new CsviException(JText::_('COM_CSVI_NO_VALID_RUNID_FOUND'), 506);
			}
		}
		catch (Exception $e)
		{
			// Finalize the export
			$model->setEndTimestamp($runId);

			// Enqueue the message
			$helper = new CsviHelperCsvi;
			$helper->enqueueMessage($e->getMessage(), 'error');

			// Send the user to the log details
			$result['process'] = false;
			$result['url'] = JUri::root() . 'administrator/index.php?option=com_csvi&view=logs';

			// Output the results in JSON
			echo json_encode($result);
		}
	}

	/**
	 * Cancel the export and return to the export page.
	 *
	 * @return  void.
	 *
	 * @since   6.0
	 */
	public function cancel()
	{
		// Set the end timestamp
		$model = $this->getThisModel();
		$model->setEndTimestamp($this->input->getInt('runId', 0));

		$this->setRedirect('index.php?option=com_csvi&view=exports', JText::_('COM_CSVI_EXPORT_CANCELED'), 'notice');
		$this->redirect();
	}

	/**
	 * Download a generated export file.
	 *
	 * @return  void.
	 *
	 * @since   6.0
	 *
	 * @throws  Exception
	 */
	public function downloadfile()
	{
		// Load the model
		/** @var CsviModelExports $model */
		$model = $this->getThisModel();

		// Retrieve the file to download
		$downloadfile = base64_decode($this->input->getBase64('file', false));

		if ($downloadfile)
		{
			$model->downloadFile($downloadfile);
		}

		JFactory::getApplication()->close();
	}

	/**
	 * Retrieve different kinds of data in JSON format.
	 *
	 * @return  void.
	 *
	 * @since   3.0
	 *
	 * @throws  Exception
	 */
	public function getData()
	{
		$component = $this->input->getCmd('component', 'com_csvi');
		$function = $this->input->getCmd('function', '');
		$filter = $this->input->getCmd('filter', '');
		$db = JFactory::getDbo();
		$result = array();

		// Setup the auto loader
		JLoader::registerPrefix(ucfirst($component), JPATH_ADMINISTRATOR . '/components/com_csvi/addon/' . $component);

		// Load the addon helper
		$addon = ucfirst($component) . 'Helper' . ucfirst($component) . '_Json';

		$helper = new $addon($db);

		if (method_exists($helper, $function))
		{
			$result = $helper->$function($filter);
		}

		echo json_encode($result);
		jexit();
	}

	/**
	 * Load the available sites for XML or HTML export.
	 *
	 * @return  string  JSON encoded string of a select list.
	 *
	 * @since   4.0
	 */
	public function loadSites()
	{
		$model = $this->getThisModel();
		$sites = $model->getExportSites($this->input->get('exportsite'));

		echo json_encode($sites);

		jexit();
	}
}

Zerion Mini Shell 1.0