378 lines
10 KiB
PHP
378 lines
10 KiB
PHP
<?php
|
|
/**
|
|
* Attachments component
|
|
*
|
|
* @package Attachments
|
|
* @subpackage Attachments_Component
|
|
*
|
|
* @copyright Copyright (C) 2007-2018 Jonathan M. Cameron, All Rights Reserved
|
|
* @license http://www.gnu.org/licenses/gpl-3.0.html GNU/GPL
|
|
* @link http://joomlacode.org/gf/project/attachments/frs/
|
|
* @author Jonathan M. Cameron
|
|
*/
|
|
|
|
defined('_JEXEC') or die('Restricted access');
|
|
|
|
// Access check.
|
|
if (!JFactory::getUser()->authorise('core.admin', 'com_attachments')) {
|
|
return JError::raiseError(404, JText::_('JERROR_ALERTNOAUTHOR') . ' (ERR 150)');
|
|
}
|
|
|
|
/** Define the legacy classes, if necessary */
|
|
require_once(JPATH_SITE.'/components/com_attachments/legacy/controller.php');
|
|
|
|
// Load the helper functions
|
|
require_once(JPATH_SITE.'/components/com_attachments/javascript.php');
|
|
|
|
|
|
/**
|
|
* The controller for utils requests
|
|
* (adapted from administrator/components/com_config/controllers/component.php)
|
|
*
|
|
* @package Attachments
|
|
*/
|
|
class AttachmentsControllerUtils extends JControllerLegacy
|
|
{
|
|
/**
|
|
* Constructor.
|
|
*
|
|
* @param array An optional associative array of configuration settings.
|
|
*/
|
|
public function __construct( $default = array())
|
|
{
|
|
$default['default_task'] = 'noop';
|
|
parent::__construct( $default );
|
|
}
|
|
|
|
|
|
/**
|
|
* A noop function so this controller does not have a usable default
|
|
*/
|
|
public function noop()
|
|
{
|
|
echo "<h1>" . JText::_('ATTACH_ERROR_NO_UTILS_FUNCTION_SPECIFIED') . "</h1>";
|
|
exit();
|
|
}
|
|
|
|
|
|
/**
|
|
*
|
|
*/
|
|
|
|
|
|
/**
|
|
* Enqueue a system message.
|
|
*
|
|
* @param string $msg The message to enqueue.
|
|
* @param string $type The message type. Default is message.
|
|
*
|
|
* @return void
|
|
*/
|
|
protected function enqueueSystemMessage($msg, $type = 'message')
|
|
{
|
|
$app = JFactory::getApplication();
|
|
$app->enqueueMessage($msg, $type);
|
|
|
|
// Not sure why I need the extra saving to the session below,
|
|
// but it it seems necessary because I'm doing it from an iframe.
|
|
$session = JFactory::getSession();
|
|
$session->set('application.queue', $app->getMessageQueue());
|
|
}
|
|
|
|
|
|
/**
|
|
* Add icon filenames for attachments missing an icon
|
|
* (See AttachmentsUpdate::add_icon_filenames() in update.php for details )
|
|
*/
|
|
public function add_icon_filenames()
|
|
{
|
|
// Access check.
|
|
if (!JFactory::getUser()->authorise('core.admin', 'com_attachments')) {
|
|
return JError::raiseError(404, JText::_('JERROR_ALERTNOAUTHOR') . ' (ERR 151)');
|
|
}
|
|
|
|
require_once(JPATH_ADMINISTRATOR.'/components/com_attachments/update.php');
|
|
$msg = AttachmentsUpdate::add_icon_filenames();
|
|
$this->setRedirect('index.php?option=' . $this->option, $msg);
|
|
}
|
|
|
|
|
|
/**
|
|
* Update any null dates in any attachments
|
|
* (See AttachmentsUpdate::update_null_dates() in update.php for details )
|
|
*/
|
|
public function update_null_dates()
|
|
{
|
|
// Access check.
|
|
if (!JFactory::getUser()->authorise('core.admin', 'com_attachments')) {
|
|
return JError::raiseError(404, JText::_('JERROR_ALERTNOAUTHOR') . ' (ERR 152)');
|
|
}
|
|
|
|
require_once(JPATH_ADMINISTRATOR.'/components/com_attachments/update.php');
|
|
|
|
$numUpdated = AttachmentsUpdate::update_null_dates();
|
|
$msg = JText::sprintf( 'ATTACH_UPDATED_N_ATTACHMENTS', $numUpdated );
|
|
$this->setRedirect('index.php?option=' . $this->option, $msg);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Disable SQL uninstall of existing attachments (when Attachments is uninstalled)
|
|
* (See AttachmentsUpdate::disable_sql_uninstall() in update.php for details )
|
|
*/
|
|
public function disable_sql_uninstall()
|
|
{
|
|
// Access check.
|
|
if (!JFactory::getUser()->authorise('core.admin', 'com_attachments')) {
|
|
return JError::raiseError(404, JText::_('JERROR_ALERTNOAUTHOR') . ' (ERR 153)');
|
|
}
|
|
|
|
require_once(JPATH_ADMINISTRATOR.'/components/com_attachments/update.php');
|
|
|
|
$msg = AttachmentsUpdate::disable_sql_uninstall();
|
|
|
|
if ( JRequest::getBool('close') ) {
|
|
|
|
$this->enqueueSystemMessage($msg);
|
|
|
|
// Close this window and refesh the parent window
|
|
AttachmentsJavascript::closeModal();
|
|
}
|
|
else {
|
|
$this->setRedirect('index.php?option=com_attachments', $msg);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Regenerate system filenames
|
|
* (See AttachmentsUpdate::regenerate_system_filenames() in update.php for details )
|
|
*/
|
|
public function regenerate_system_filenames()
|
|
{
|
|
// Access check.
|
|
if (!JFactory::getUser()->authorise('core.admin', 'com_attachments')) {
|
|
return JError::raiseError(404, JText::_('JERROR_ALERTNOAUTHOR') . ' (ERR 154)');
|
|
}
|
|
|
|
require_once(JPATH_ADMINISTRATOR.'/components/com_attachments/update.php');
|
|
|
|
$msg = AttachmentsUpdate::regenerate_system_filenames();
|
|
|
|
if ( JRequest::getBool('close') ) {
|
|
|
|
$this->enqueueSystemMessage($msg);
|
|
|
|
// Close this window and refesh the parent window
|
|
AttachmentsJavascript::closeModal();
|
|
}
|
|
else {
|
|
$this->setRedirect('index.php?option=' . $this->option, $msg);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Remove spaces from system filenames for all attachments
|
|
* (See AttachmentsUpdate::remove_spaces_from_system_filenames() in update.php for details )
|
|
*/
|
|
public function remove_spaces_from_system_filenames()
|
|
{
|
|
// Access check.
|
|
if (!JFactory::getUser()->authorise('core.admin', 'com_attachments')) {
|
|
return JError::raiseError(404, JText::_('JERROR_ALERTNOAUTHOR') . ' (ERR 155)');
|
|
}
|
|
|
|
require_once(JPATH_ADMINISTRATOR.'/components/com_attachments/update.php');
|
|
|
|
$msg = AttachmentsUpdate::remove_spaces_from_system_filenames();
|
|
|
|
if ( JRequest::getBool('close') ) {
|
|
|
|
$this->enqueueSystemMessage($msg);
|
|
|
|
// Close this window and refesh the parent window
|
|
AttachmentsJavascript::closeModal();
|
|
}
|
|
else {
|
|
$this->setRedirect('index.php?option=' . $this->option, $msg);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Update file sizes for all attachments
|
|
* (See AttachmentsUpdate::update_file_sizes() in update.php for details )
|
|
*/
|
|
public function update_file_sizes()
|
|
{
|
|
// Access check.
|
|
if (!JFactory::getUser()->authorise('core.admin', 'com_attachments')) {
|
|
return JError::raiseError(404, JText::_('JERROR_ALERTNOAUTHOR') . ' (ERR 156)');
|
|
}
|
|
|
|
require_once(JPATH_ADMINISTRATOR.'/components/com_attachments/update.php');
|
|
|
|
$msg = AttachmentsUpdate::update_file_sizes();
|
|
|
|
if ( JRequest::getBool('close') ) {
|
|
|
|
$this->enqueueSystemMessage($msg);
|
|
|
|
// Close this window and refesh the parent window
|
|
AttachmentsJavascript::closeModal();
|
|
}
|
|
else {
|
|
$this->setRedirect('index.php?option=' . $this->option, $msg);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Check all files in any attachments
|
|
* (See AttachmentsUpdate::check_files() in update.php for details )
|
|
*/
|
|
public function check_files()
|
|
{
|
|
// Access check.
|
|
if (!JFactory::getUser()->authorise('core.admin', 'com_attachments')) {
|
|
return JError::raiseError(404, JText::_('JERROR_ALERTNOAUTHOR') . ' (ERR 157)');
|
|
}
|
|
|
|
require_once(JPATH_ADMINISTRATOR.'/components/com_attachments/update.php');
|
|
|
|
$msg = AttachmentsUpdate::check_files_existance();
|
|
|
|
if ( JRequest::getBool('close') ) {
|
|
|
|
$this->enqueueSystemMessage($msg);
|
|
|
|
// Close this window and refesh the parent window
|
|
AttachmentsJavascript::closeModal();
|
|
}
|
|
else {
|
|
$this->setRedirect('index.php?option=' . $this->option, $msg);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Validate all URLS in any attachments
|
|
* (See AttachmentsUpdate::validate_urls() in update.php for details )
|
|
*/
|
|
public function validate_urls()
|
|
{
|
|
// Access check.
|
|
if (!JFactory::getUser()->authorise('core.admin', 'com_attachments')) {
|
|
return JError::raiseError(404, JText::_('JERROR_ALERTNOAUTHOR') . ' (ERR 158)');
|
|
}
|
|
|
|
require_once(JPATH_ADMINISTRATOR.'/components/com_attachments/update.php');
|
|
|
|
$msg = AttachmentsUpdate::validate_urls();
|
|
|
|
if ( JRequest::getBool('close') ) {
|
|
|
|
$this->enqueueSystemMessage($msg);
|
|
|
|
// Close this window and refesh the parent window
|
|
AttachmentsJavascript::closeModal();
|
|
}
|
|
else {
|
|
$this->setRedirect('index.php?option=' . $this->option, $msg);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Validate all URLS in any attachments
|
|
* (See AttachmentsUpdate::reinstall_permissions() in update.php for details )
|
|
*/
|
|
public function reinstall_permissions()
|
|
{
|
|
// Access check.
|
|
if (!JFactory::getUser()->authorise('core.admin', 'com_attachments')) {
|
|
return JError::raiseError(404, JText::_('JERROR_ALERTNOAUTHOR') . ' (ERR 159)');
|
|
}
|
|
|
|
require_once(JPATH_ADMINISTRATOR.'/components/com_attachments/update.php');
|
|
|
|
$msg = AttachmentsUpdate::installAttachmentsPermissions();
|
|
|
|
if ( JRequest::getBool('close') ) {
|
|
|
|
$this->enqueueSystemMessage($msg);
|
|
|
|
// Close this window and refesh the parent window
|
|
AttachmentsJavascript::closeModal();
|
|
}
|
|
else {
|
|
$this->setRedirect('index.php?option=' . $this->option, $msg);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Install attachments data from CSV file
|
|
*/
|
|
public function installAttachmentsFromCsvFile()
|
|
{
|
|
// Access check.
|
|
if (!JFactory::getUser()->authorise('core.admin', 'com_attachments')) {
|
|
return JError::raiseError(404, JText::_('JERROR_ALERTNOAUTHOR') . ' (ERR 160)');
|
|
}
|
|
|
|
require_once(JPATH_ADMINISTRATOR.'/components/com_attachments/import.php');
|
|
|
|
$filename = JRequest::getString('filename', null);
|
|
if ( $filename == null ) {
|
|
$errmsg = JText::_('ATTACH_ERROR_MUST_ADD_FILENAME_TO_URL') . ' (ERR 161)';
|
|
return JError::raiseError(500, $errmsg);
|
|
}
|
|
$verify_parent = JRequest::getBool('verify_parent', true);
|
|
$update = JRequest::getBool('update', false);
|
|
$dry_run = JRequest::getBool('dry_run', false);
|
|
|
|
$status = AttachmentsImport::importAttachmentsFromCSVFile($filename, $verify_parent,
|
|
$update, $dry_run);
|
|
|
|
// Abort if it is an error message
|
|
if ( is_string($status) ) {
|
|
return JError::raiseError(500, $status);
|
|
}
|
|
|
|
// Otherwise, report the results
|
|
if ( is_array($status) ) {
|
|
$msg = JText::sprintf('ATTACH_ADDED_DATA_FOR_N_ATTACHMENTS', count($status));
|
|
$this->setRedirect('index.php?option=com_attachments', $msg);
|
|
}
|
|
else {
|
|
if ( $dry_run ) {
|
|
$msg = JText::sprintf('ATTACH_DATA_FOR_N_ATTACHMENTS_OK', $status) . ' (ERR 162)';
|
|
return JError::raiseNotice(200, $msg);
|
|
}
|
|
else {
|
|
$errmsg = JText::sprintf('ATTACH_ERROR_IMPORTING_ATTACHMENTS_S', $status) . ' (ERR 163)';
|
|
return JError::raiseError(500, $errmsg);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Test function
|
|
*/
|
|
public function test()
|
|
{
|
|
// Access check.
|
|
if (!JFactory::getUser()->authorise('core.admin', 'com_attachments')) {
|
|
return JError::raiseError(404, JText::_('JERROR_ALERTNOAUTHOR'));
|
|
}
|
|
|
|
echo "Test!";
|
|
|
|
exit();
|
|
}
|
|
|
|
}
|