You've already forked joomla_test
first commit
This commit is contained in:
241
administrator/components/com_finder/controllers/filter.php
Normal file
241
administrator/components/com_finder/controllers/filter.php
Normal file
@ -0,0 +1,241 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_finder
|
||||
*
|
||||
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
|
||||
* @license GNU General Public License version 2 or later; see LICENSE
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die;
|
||||
|
||||
/**
|
||||
* Indexer controller class for Finder.
|
||||
*
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_finder
|
||||
* @since 2.5
|
||||
*/
|
||||
class FinderControllerFilter extends JControllerForm
|
||||
{
|
||||
/**
|
||||
* Method to save a record.
|
||||
*
|
||||
* @param string $key The name of the primary key of the URL variable.
|
||||
* @param string $urlVar The name of the URL variable if different from the primary key (sometimes required to avoid router collisions).
|
||||
*
|
||||
* @return boolean True if successful, false otherwise.
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
public function save($key = null, $urlVar = null)
|
||||
{
|
||||
// Check for request forgeries.
|
||||
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
|
||||
|
||||
$app = JFactory::getApplication();
|
||||
$input = $app->input;
|
||||
$lang = JFactory::getLanguage();
|
||||
$model = $this->getModel();
|
||||
$table = $model->getTable();
|
||||
$data = $input->post->get('jform', array(), 'array');
|
||||
$checkin = property_exists($table, 'checked_out');
|
||||
$context = "$this->option.edit.$this->context";
|
||||
$task = $this->getTask();
|
||||
|
||||
// Determine the name of the primary key for the data.
|
||||
if (empty($key))
|
||||
{
|
||||
$key = $table->getKeyName();
|
||||
}
|
||||
|
||||
// To avoid data collisions the urlVar may be different from the primary key.
|
||||
if (empty($urlVar))
|
||||
{
|
||||
$urlVar = $key;
|
||||
}
|
||||
|
||||
$recordId = $input->get($urlVar, '', 'int');
|
||||
|
||||
if (!$this->checkEditId($context, $recordId))
|
||||
{
|
||||
// Somehow the person just went to the form and tried to save it. We don't allow that.
|
||||
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $recordId));
|
||||
$this->setMessage($this->getError(), 'error');
|
||||
$this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_list . $this->getRedirectToListAppend(), false));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Populate the row id from the session.
|
||||
$data[$key] = $recordId;
|
||||
|
||||
// The save2copy task needs to be handled slightly differently.
|
||||
if ($task == 'save2copy')
|
||||
{
|
||||
// Check-in the original row.
|
||||
if ($checkin && $model->checkin($data[$key]) === false)
|
||||
{
|
||||
// Check-in failed. Go back to the item and display a notice.
|
||||
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_CHECKIN_FAILED', $model->getError()));
|
||||
$this->setMessage($this->getError(), 'error');
|
||||
$this->setRedirect('index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend($recordId, $urlVar));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Reset the ID and then treat the request as for Apply.
|
||||
$data[$key] = 0;
|
||||
$task = 'apply';
|
||||
}
|
||||
|
||||
// Access check.
|
||||
if (!$this->allowSave($data, $key))
|
||||
{
|
||||
$this->setError(JText::_('JLIB_APPLICATION_ERROR_SAVE_NOT_PERMITTED'));
|
||||
$this->setMessage($this->getError(), 'error');
|
||||
$this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_list . $this->getRedirectToListAppend(), false));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Validate the posted data.
|
||||
// Sometimes the form needs some posted data, such as for plugins and modules.
|
||||
$form = $model->getForm($data, false);
|
||||
|
||||
if (!$form)
|
||||
{
|
||||
$app->enqueueMessage($model->getError(), 'error');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Test whether the data is valid.
|
||||
$validData = $model->validate($form, $data);
|
||||
|
||||
// Check for validation errors.
|
||||
if ($validData === false)
|
||||
{
|
||||
// Get the validation messages.
|
||||
$errors = $model->getErrors();
|
||||
|
||||
// Push up to three validation messages out to the user.
|
||||
for ($i = 0, $n = count($errors); $i < $n && $i < 3; $i++)
|
||||
{
|
||||
if (($errors[$i]) instanceof Exception)
|
||||
{
|
||||
$app->enqueueMessage($errors[$i]->getMessage(), 'warning');
|
||||
}
|
||||
else
|
||||
{
|
||||
$app->enqueueMessage($errors[$i], 'warning');
|
||||
}
|
||||
}
|
||||
|
||||
// Save the data in the session.
|
||||
$app->setUserState($context . '.data', $data);
|
||||
|
||||
// Redirect back to the edit screen.
|
||||
$this->setRedirect(
|
||||
JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend($recordId, $key), false)
|
||||
);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Get and sanitize the filter data.
|
||||
$validData['data'] = $input->post->get('t', array(), 'array');
|
||||
$validData['data'] = array_unique($validData['data']);
|
||||
JArrayHelper::toInteger($validData['data']);
|
||||
|
||||
// Remove any values of zero.
|
||||
if (array_search(0, $validData['data'], true))
|
||||
{
|
||||
unset($validData['data'][array_search(0, $validData['data'], true)]);
|
||||
}
|
||||
|
||||
// Attempt to save the data.
|
||||
if (!$model->save($validData))
|
||||
{
|
||||
// Save the data in the session.
|
||||
$app->setUserState($context . '.data', $validData);
|
||||
|
||||
// Redirect back to the edit screen.
|
||||
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_SAVE_FAILED', $model->getError()));
|
||||
$this->setMessage($this->getError(), 'error');
|
||||
$this->setRedirect(
|
||||
JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend($recordId, $key), false)
|
||||
);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Save succeeded, so check-in the record.
|
||||
if ($checkin && $model->checkin($validData[$key]) === false)
|
||||
{
|
||||
// Save the data in the session.
|
||||
$app->setUserState($context . '.data', $validData);
|
||||
|
||||
// Check-in failed, so go back to the record and display a notice.
|
||||
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_CHECKIN_FAILED', $model->getError()));
|
||||
$this->setMessage($this->getError(), 'error');
|
||||
$this->setRedirect('index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend($recordId, $key));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->setMessage(
|
||||
JText::_(
|
||||
($lang->hasKey($this->text_prefix . ($recordId == 0 && $app->isSite() ? '_SUBMIT' : '') . '_SAVE_SUCCESS')
|
||||
? $this->text_prefix : 'JLIB_APPLICATION') . ($recordId == 0 && $app->isSite() ? '_SUBMIT' : '') . '_SAVE_SUCCESS'
|
||||
)
|
||||
);
|
||||
|
||||
// Redirect the user and adjust session state based on the chosen task.
|
||||
switch ($task)
|
||||
{
|
||||
case 'apply':
|
||||
// Set the record data in the session.
|
||||
$recordId = $model->getState($this->context . '.id');
|
||||
$this->holdEditId($context, $recordId);
|
||||
$app->setUserState($context . '.data', null);
|
||||
$model->checkout($recordId);
|
||||
|
||||
// Redirect back to the edit screen.
|
||||
$this->setRedirect(
|
||||
JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend($recordId, $key), false)
|
||||
);
|
||||
|
||||
break;
|
||||
|
||||
case 'save2new':
|
||||
// Clear the record id and data from the session.
|
||||
$this->releaseEditId($context, $recordId);
|
||||
$app->setUserState($context . '.data', null);
|
||||
|
||||
// Redirect back to the edit screen.
|
||||
$this->setRedirect(
|
||||
JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend(null, $key), false)
|
||||
);
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
// Clear the record id and data from the session.
|
||||
$this->releaseEditId($context, $recordId);
|
||||
$app->setUserState($context . '.data', null);
|
||||
|
||||
// Redirect to the list screen.
|
||||
$this->setRedirect(
|
||||
JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_list . $this->getRedirectToListAppend(), false)
|
||||
);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
// Invoke the postSave method to allow for the child class to access the model.
|
||||
$this->postSaveHook($model, $validData);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
37
administrator/components/com_finder/controllers/filters.php
Normal file
37
administrator/components/com_finder/controllers/filters.php
Normal file
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_finder
|
||||
*
|
||||
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
|
||||
* @license GNU General Public License version 2 or later; see LICENSE
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die;
|
||||
|
||||
/**
|
||||
* Filters controller class for Finder.
|
||||
*
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_finder
|
||||
* @since 2.5
|
||||
*/
|
||||
class FinderControllerFilters extends JControllerAdmin
|
||||
{
|
||||
/**
|
||||
* Method to get a model object, loading it if required.
|
||||
*
|
||||
* @param string $name The model name. Optional.
|
||||
* @param string $prefix The class prefix. Optional.
|
||||
* @param array $config Configuration array for model. Optional.
|
||||
*
|
||||
* @return object The model.
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
public function getModel($name = 'Filter', $prefix = 'FinderModel', $config = array('ignore_request' => true))
|
||||
{
|
||||
$model = parent::getModel($name, $prefix, $config);
|
||||
return $model;
|
||||
}
|
||||
}
|
@ -0,0 +1 @@
|
||||
<!DOCTYPE html><title></title>
|
70
administrator/components/com_finder/controllers/index.php
Normal file
70
administrator/components/com_finder/controllers/index.php
Normal file
@ -0,0 +1,70 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_finder
|
||||
*
|
||||
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
|
||||
* @license GNU General Public License version 2 or later; see LICENSE
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die;
|
||||
|
||||
/**
|
||||
* Index controller class for Finder.
|
||||
*
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_finder
|
||||
* @since 2.5
|
||||
*/
|
||||
class FinderControllerIndex extends JControllerAdmin
|
||||
{
|
||||
/**
|
||||
* Method to get a model object, loading it if required.
|
||||
*
|
||||
* @param string $name The model name. Optional.
|
||||
* @param string $prefix The class prefix. Optional.
|
||||
* @param array $config Configuration array for model. Optional.
|
||||
*
|
||||
* @return object The model.
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
public function getModel($name = 'Index', $prefix = 'FinderModel', $config = array('ignore_request' => true))
|
||||
{
|
||||
$model = parent::getModel($name, $prefix, $config);
|
||||
return $model;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to purge all indexed links from the database.
|
||||
*
|
||||
* @return boolean True on success.
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
public function purge()
|
||||
{
|
||||
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
|
||||
|
||||
// Remove the script time limit.
|
||||
@set_time_limit(0);
|
||||
|
||||
$model = $this->getModel('Index', 'FinderModel');
|
||||
|
||||
// Attempt to purge the index.
|
||||
$return = $model->purge();
|
||||
|
||||
if (!$return)
|
||||
{
|
||||
$message = JText::_('COM_FINDER_INDEX_PURGE_FAILED', $model->getError());
|
||||
$this->setRedirect('index.php?option=com_finder&view=index', $message);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$message = JText::_('COM_FINDER_INDEX_PURGE_SUCCESS');
|
||||
$this->setRedirect('index.php?option=com_finder&view=index', $message);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
384
administrator/components/com_finder/controllers/indexer.json.php
Normal file
384
administrator/components/com_finder/controllers/indexer.json.php
Normal file
@ -0,0 +1,384 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_finder
|
||||
*
|
||||
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
|
||||
* @license GNU General Public License version 2 or later; see LICENSE
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die;
|
||||
|
||||
// Register dependent classes.
|
||||
JLoader::register('FinderIndexer', JPATH_COMPONENT_ADMINISTRATOR . '/helpers/indexer/indexer.php');
|
||||
|
||||
/**
|
||||
* Indexer controller class for Finder.
|
||||
*
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_finder
|
||||
* @since 2.5
|
||||
*/
|
||||
class FinderControllerIndexer extends JControllerLegacy
|
||||
{
|
||||
/**
|
||||
* Method to start the indexer.
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
public function start()
|
||||
{
|
||||
static $log;
|
||||
|
||||
$params = JComponentHelper::getParams('com_finder');
|
||||
|
||||
if ($params->get('enable_logging', '0'))
|
||||
{
|
||||
if ($log == null)
|
||||
{
|
||||
$options['format'] = '{DATE}\t{TIME}\t{LEVEL}\t{CODE}\t{MESSAGE}';
|
||||
$options['text_file'] = 'indexer.php';
|
||||
$log = JLog::addLogger($options);
|
||||
}
|
||||
}
|
||||
|
||||
// Log the start
|
||||
JLog::add('Starting the indexer', JLog::INFO);
|
||||
|
||||
// We don't want this form to be cached.
|
||||
header('Pragma: no-cache');
|
||||
header('Cache-Control: no-cache');
|
||||
header('Expires: -1');
|
||||
|
||||
// Check for a valid token. If invalid, send a 403 with the error message.
|
||||
JSession::checkToken('request') or $this->sendResponse(new Exception(JText::_('JINVALID_TOKEN'), 403));
|
||||
|
||||
// Put in a buffer to silence noise.
|
||||
ob_start();
|
||||
|
||||
// Reset the indexer state.
|
||||
FinderIndexer::resetState();
|
||||
|
||||
// Import the finder plugins.
|
||||
JPluginHelper::importPlugin('finder');
|
||||
|
||||
// Add the indexer language to JS
|
||||
JText::script('COM_FINDER_AN_ERROR_HAS_OCCURRED');
|
||||
JText::script('COM_FINDER_NO_ERROR_RETURNED');
|
||||
|
||||
// Start the indexer.
|
||||
try
|
||||
{
|
||||
// Trigger the onStartIndex event.
|
||||
JEventDispatcher::getInstance()->trigger('onStartIndex');
|
||||
|
||||
// Get the indexer state.
|
||||
$state = FinderIndexer::getState();
|
||||
$state->start = 1;
|
||||
|
||||
// Send the response.
|
||||
$this->sendResponse($state);
|
||||
}
|
||||
// Catch an exception and return the response.
|
||||
catch (Exception $e)
|
||||
{
|
||||
$this->sendResponse($e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to run the next batch of content through the indexer.
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
public function batch()
|
||||
{
|
||||
static $log;
|
||||
|
||||
$params = JComponentHelper::getParams('com_finder');
|
||||
|
||||
if ($params->get('enable_logging', '0'))
|
||||
{
|
||||
if ($log == null)
|
||||
{
|
||||
$options['format'] = '{DATE}\t{TIME}\t{LEVEL}\t{CODE}\t{MESSAGE}';
|
||||
$options['text_file'] = 'indexer.php';
|
||||
$log = JLog::addLogger($options);
|
||||
}
|
||||
}
|
||||
|
||||
// Log the start
|
||||
JLog::add('Starting the indexer batch process', JLog::INFO);
|
||||
|
||||
// We don't want this form to be cached.
|
||||
header('Pragma: no-cache');
|
||||
header('Cache-Control: no-cache');
|
||||
header('Expires: -1');
|
||||
|
||||
// Check for a valid token. If invalid, send a 403 with the error message.
|
||||
JSession::checkToken('request') or $this->sendResponse(new Exception(JText::_('JINVALID_TOKEN'), 403));
|
||||
|
||||
// Put in a buffer to silence noise.
|
||||
ob_start();
|
||||
|
||||
// Remove the script time limit.
|
||||
@set_time_limit(0);
|
||||
|
||||
// Get the indexer state.
|
||||
$state = FinderIndexer::getState();
|
||||
|
||||
// Reset the batch offset.
|
||||
$state->batchOffset = 0;
|
||||
|
||||
// Update the indexer state.
|
||||
FinderIndexer::setState($state);
|
||||
|
||||
// Import the finder plugins.
|
||||
JPluginHelper::importPlugin('finder');
|
||||
|
||||
/*
|
||||
* We are going to swap out the raw document object with an HTML document
|
||||
* in order to work around some plugins that don't do proper environment
|
||||
* checks before trying to use HTML document functions.
|
||||
*/
|
||||
$raw = clone(JFactory::getDocument());
|
||||
$lang = JFactory::getLanguage();
|
||||
|
||||
// Get the document properties.
|
||||
$attributes = array (
|
||||
'charset' => 'utf-8',
|
||||
'lineend' => 'unix',
|
||||
'tab' => ' ',
|
||||
'language' => $lang->getTag(),
|
||||
'direction' => $lang->isRTL() ? 'rtl' : 'ltr'
|
||||
);
|
||||
|
||||
// Get the HTML document.
|
||||
$html = JDocument::getInstance('html', $attributes);
|
||||
$doc = JFactory::getDocument();
|
||||
|
||||
// Swap the documents.
|
||||
$doc = $html;
|
||||
|
||||
// Get the admin application.
|
||||
$admin = clone(JFactory::getApplication());
|
||||
|
||||
// Get the site app.
|
||||
include_once JPATH_SITE . '/includes/application.php';
|
||||
$site = JApplication::getInstance('site');
|
||||
|
||||
// Swap the app.
|
||||
$app = JFactory::getApplication();
|
||||
$app = $site;
|
||||
|
||||
// Start the indexer.
|
||||
try
|
||||
{
|
||||
// Trigger the onBeforeIndex event.
|
||||
JEventDispatcher::getInstance()->trigger('onBeforeIndex');
|
||||
|
||||
// Trigger the onBuildIndex event.
|
||||
JEventDispatcher::getInstance()->trigger('onBuildIndex');
|
||||
|
||||
// Get the indexer state.
|
||||
$state = FinderIndexer::getState();
|
||||
$state->start = 0;
|
||||
$state->complete = 0;
|
||||
|
||||
// Swap the documents back.
|
||||
$doc = $raw;
|
||||
|
||||
// Swap the applications back.
|
||||
$app = $admin;
|
||||
|
||||
// Send the response.
|
||||
$this->sendResponse($state);
|
||||
}
|
||||
// Catch an exception and return the response.
|
||||
catch (Exception $e)
|
||||
{
|
||||
// Swap the documents back.
|
||||
$doc = $raw;
|
||||
|
||||
// Send the response.
|
||||
$this->sendResponse($e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to optimize the index and perform any necessary cleanup.
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
public function optimize()
|
||||
{
|
||||
// We don't want this form to be cached.
|
||||
header('Pragma: no-cache');
|
||||
header('Cache-Control: no-cache');
|
||||
header('Expires: -1');
|
||||
|
||||
// Check for a valid token. If invalid, send a 403 with the error message.
|
||||
JSession::checkToken('request') or $this->sendResponse(new Exception(JText::_('JINVALID_TOKEN'), 403));
|
||||
|
||||
// Put in a buffer to silence noise.
|
||||
ob_start();
|
||||
|
||||
// Import the finder plugins.
|
||||
JPluginHelper::importPlugin('finder');
|
||||
|
||||
try
|
||||
{
|
||||
// Optimize the index
|
||||
FinderIndexer::getInstance()->optimize();
|
||||
|
||||
// Get the indexer state.
|
||||
$state = FinderIndexer::getState();
|
||||
$state->start = 0;
|
||||
$state->complete = 1;
|
||||
|
||||
// Send the response.
|
||||
$this->sendResponse($state);
|
||||
}
|
||||
// Catch an exception and return the response.
|
||||
catch (Exception $e)
|
||||
{
|
||||
$this->sendResponse($e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to handle a send a JSON response. The body parameter
|
||||
* can be a Exception object for when an error has occurred or
|
||||
* a JObject for a good response.
|
||||
*
|
||||
* @param mixed $data JObject on success, Exception on error. [optional]
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
public static function sendResponse($data = null)
|
||||
{
|
||||
static $log;
|
||||
|
||||
$params = JComponentHelper::getParams('com_finder');
|
||||
|
||||
if ($params->get('enable_logging', '0'))
|
||||
{
|
||||
if ($log == null)
|
||||
{
|
||||
$options['format'] = '{DATE}\t{TIME}\t{LEVEL}\t{CODE}\t{MESSAGE}';
|
||||
$options['text_file'] = 'indexer.php';
|
||||
$log = JLog::addLogger($options);
|
||||
}
|
||||
}
|
||||
|
||||
// Send the assigned error code if we are catching an exception.
|
||||
if ($data instanceof Exception)
|
||||
{
|
||||
JLog::add($data->getMessage(), JLog::ERROR);
|
||||
JResponse::setHeader('status', $data->getCode());
|
||||
JResponse::sendHeaders();
|
||||
}
|
||||
|
||||
// Create the response object.
|
||||
$response = new FinderIndexerResponse($data);
|
||||
|
||||
// Add the buffer.
|
||||
$response->buffer = JDEBUG ? ob_get_contents() : ob_end_clean();
|
||||
|
||||
// Send the JSON response.
|
||||
echo json_encode($response);
|
||||
|
||||
// Close the application.
|
||||
JFactory::getApplication()->close();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Finder Indexer JSON Response Class
|
||||
*
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_finder
|
||||
* @since 2.5
|
||||
*/
|
||||
class FinderIndexerResponse
|
||||
{
|
||||
/**
|
||||
* Class Constructor
|
||||
*
|
||||
* @param mixed $state The processing state for the indexer
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
public function __construct($state)
|
||||
{
|
||||
static $log;
|
||||
|
||||
$params = JComponentHelper::getParams('com_finder');
|
||||
|
||||
if ($params->get('enable_logging', '0'))
|
||||
{
|
||||
if ($log == null)
|
||||
{
|
||||
$options['format'] = '{DATE}\t{TIME}\t{LEVEL}\t{CODE}\t{MESSAGE}';
|
||||
$options['text_file'] = 'indexer.php';
|
||||
$log = JLog::addLogger($options);
|
||||
}
|
||||
}
|
||||
|
||||
// The old token is invalid so send a new one.
|
||||
$this->token = JFactory::getSession()->getFormToken();
|
||||
|
||||
// Check if we are dealing with an error.
|
||||
if ($state instanceof Exception)
|
||||
{
|
||||
// Log the error
|
||||
JLog::add($state->getMessage(), JLog::ERROR);
|
||||
|
||||
// Prepare the error response.
|
||||
$this->error = true;
|
||||
$this->header = JText::_('COM_FINDER_INDEXER_HEADER_ERROR');
|
||||
$this->message = $state->getMessage();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Prepare the response data.
|
||||
$this->batchSize = (int) $state->batchSize;
|
||||
$this->batchOffset = (int) $state->batchOffset;
|
||||
$this->totalItems = (int) $state->totalItems;
|
||||
|
||||
$this->startTime = $state->startTime;
|
||||
$this->endTime = JFactory::getDate()->toSQL();
|
||||
|
||||
$this->start = !empty($state->start) ? (int) $state->start : 0;
|
||||
$this->complete = !empty($state->complete) ? (int) $state->complete : 0;
|
||||
|
||||
// Set the appropriate messages.
|
||||
if ($this->totalItems <= 0 && $this->complete)
|
||||
{
|
||||
$this->header = JText::_('COM_FINDER_INDEXER_HEADER_COMPLETE');
|
||||
$this->message = JText::_('COM_FINDER_INDEXER_MESSAGE_COMPLETE');
|
||||
}
|
||||
elseif ($this->totalItems <= 0)
|
||||
{
|
||||
$this->header = JText::_('COM_FINDER_INDEXER_HEADER_OPTIMIZE');
|
||||
$this->message = JText::_('COM_FINDER_INDEXER_MESSAGE_OPTIMIZE');
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->header = JText::_('COM_FINDER_INDEXER_HEADER_RUNNING');
|
||||
$this->message = JText::_('COM_FINDER_INDEXER_MESSAGE_RUNNING');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Register the error handler.
|
||||
JError::setErrorHandling(E_ALL, 'callback', array('FinderControllerIndexer', 'sendResponse'));
|
37
administrator/components/com_finder/controllers/maps.php
Normal file
37
administrator/components/com_finder/controllers/maps.php
Normal file
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_finder
|
||||
*
|
||||
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
|
||||
* @license GNU General Public License version 2 or later; see LICENSE
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die;
|
||||
|
||||
/**
|
||||
* Maps controller class for Finder.
|
||||
*
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_finder
|
||||
* @since 2.5
|
||||
*/
|
||||
class FinderControllerMaps extends JControllerAdmin
|
||||
{
|
||||
/**
|
||||
* Method to get a model object, loading it if required.
|
||||
*
|
||||
* @param string $name The model name. Optional.
|
||||
* @param string $prefix The class prefix. Optional.
|
||||
* @param array $config Configuration array for model. Optional.
|
||||
*
|
||||
* @return object The model.
|
||||
*
|
||||
* @since 1.6
|
||||
*/
|
||||
public function getModel($name = 'Maps', $prefix = 'FinderModel', $config = array('ignore_request' => true))
|
||||
{
|
||||
$model = parent::getModel($name, $prefix, $config);
|
||||
return $model;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user