%PDF- %PDF-
| Direktori : /home/lightco1/upgrade.lightco.com.au/components/com_csvi/controllers/ |
| Current File : /home/lightco1/upgrade.lightco.com.au/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 CsviControllerExports extends CsviControllerDefault
{
/**
* Export for front-end.
*
* @return void.
*
* @since 3.0
*/
public function export()
{
// Get the template ID
$templateId = $this->input->get('csvi_template_id', false);
if ($templateId)
{
// Load the model
/** @var CsviModelExports $model */
$model = $this->getThisModel();
// Initialise
$model->initialise($templateId);
// Get the run ID
$runId = $model->getRunId();
try
{
if ($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');
if ($component && $operation)
{
if ($template->getEnabled())
{
if ($template->getFrontend())
{
$secret = $template->getSecret();
if (!empty($secret))
{
// Check if the secret key matches
$key = $this->input->get('key', '', 'string');
if ($key == $secret)
{
// Set any template details found in the request
foreach ($_GET as $name => $var)
{
if ($position = stripos($name, 'form_') !== false)
{
// Option name
$option = str_ireplace('form_', '', $name);
// Get the value
$value = $this->input->getString($name, $template->get($name));
if (strlen($value) > 0 )
{
// Check for multiple values
if (strpos($value, '|'))
{
$value = explode('|', $value);
}
// Set the template option name
$template->set($option, $value);
}
}
}
// Setup the component autoloader
JLoader::registerPrefix(ucfirst($component), JPATH_ADMINISTRATOR . '/components/com_csvi/addon/' . $component);
// Load the export routine
$classname = ucwords($component) . 'ModelExport' . ucwords($operation);
$routine = new $classname;
// Prepare for export
$routine->initialiseExport($runId);
$routine->onBeforeExport($component);
// Inject our own template instance because we could have modified the settings
$routine->setTemplate($template);
if (0)
{
// Set the override for the operation model if exists
$overridefile = JPATH_COMPONENT_ADMINISTRATOR . '/addon/' . $component . '/override/export/' . $operation . '.php';
if (file_exists($overridefile))
{
$this->addModelPath(JPATH_COMPONENT_ADMINISTRATOR . '/addon/' . $component . '/override/export/');
}
else
{
$this->addModelPath(JPATH_COMPONENT_ADMINISTRATOR . '/addon/' . $component . '/model/export');
}
}
// Start the export
if ($routine->runExport())
{
// Get the export location from the URL
$exportTo = $this->input->get('exportto', 'tofront');
// Load the destinations
$destinations = array($exportTo);
if ($exportTo === 'template')
{
// Get output destinations from the template
$destinations = $template->get('exportto', 'tofront');
if (!is_array($destinations))
{
$destinations = array($destinations);
}
}
// Load the name of the file to process
$processfile = $routine->getProcessfile();
// Check output destinations
foreach ($destinations as $destination)
{
switch ($destination)
{
case 'tofile':
$model->writeFile($processfile);
break;
case 'toftp':
$model->ftpFile($processfile);
break;
case 'toemail':
$model->emailFile($processfile);
break;
case 'todownload':
$model->downloadFile($processfile);
break;
case 'tofront':
default:
$model->displayFile($processfile);
break;
}
}
// Remove the temporary file if needed
JFile::delete($processfile);
JFactory::getApplication()->close();
}
else
{
throw new CsviException(JText::_('COM_CSVI_EXPORT_RUN_FAILED'), 500);
}
}
else
{
throw new CsviException(JText::sprintf('COM_CSVI_SECRET_KEY_DOES_NOT_MATCH', $key), 518);
}
}
else
{
throw new CsviException(JText::_('COM_CSVI_SECRET_KEY_EMPTY'), 517);
}
}
else
{
throw new CsviException(JText::_('COM_CSVI_EXPORT_TEMPLTE_FRONTEND_NOT_ALLOWED'), 516);
}
}
else
{
throw new CsviException(JText::_('COM_CSVI_EXPORT_TEMPLATE_NOT_ENABLED'), 515);
}
}
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 = $this->getThisModel();
$model->setEndTimestamp($runId);
// Redirect to the template view
$this->setRedirect('index.php', $e->getMessage(), 'error');
$this->redirect();
}
}
else
{
// Redirect to the template view
$this->setRedirect('index.php', JText::_('COM_CSVI_NO_TEMPLATE_ID_FOUND'), 'error');
$this->redirect();
}
}
}