276 lines
9.5 KiB
PHP
276 lines
9.5 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');
|
|
|
|
/** Define the legacy classes, if necessary */
|
|
require_once(JPATH_SITE.'/components/com_attachments/legacy/controller.php');
|
|
|
|
|
|
/**
|
|
* Define the main attachments controller class
|
|
*
|
|
* @package Attachments
|
|
*/
|
|
class AttachmentsController extends JControllerLegacy
|
|
{
|
|
|
|
/** List the attachments
|
|
*
|
|
* @param bool $cachable If true, the view output will be cached
|
|
* @param array $urlparams (ignored)
|
|
* @return void
|
|
*/
|
|
public function display($cachable = false, $urlparams = false)
|
|
{
|
|
// Set the default view (if not specified)
|
|
JRequest::setVar('view', JRequest::getCmd('view', 'Attachments'));
|
|
|
|
// Call parent to display
|
|
parent::display($cachable);
|
|
}
|
|
|
|
|
|
/**
|
|
* Set up to display the entity selection view
|
|
*
|
|
* This allows users to select entities (sections, categories, and other
|
|
* content items that are supported with Attachments plugins).
|
|
*/
|
|
public function selectEntity()
|
|
{
|
|
// Get the parent type
|
|
$parent_type = JRequest::getCmd('parent_type');
|
|
if ( !$parent_type ) {
|
|
$errmsg = JText::sprintf('ATTACH_ERROR_INVALID_PARENT_TYPE_S', $parent_type) .
|
|
$db->getErrorMsg() . ' (ERR 65)';
|
|
JError::raiseError(500, $errmsg);
|
|
}
|
|
|
|
// Parse the parent type and entity
|
|
$parent_entity = JRequest::getCmd('parent_entity', 'default');
|
|
if ( strpos($parent_type, '.') ) {
|
|
$parts = explode('.', $parent_type);
|
|
$parent_type = $parts[0];
|
|
$parent_entity = $parts[1];
|
|
}
|
|
|
|
// Get the content parent object
|
|
JPluginHelper::importPlugin('attachments');
|
|
$apm = getAttachmentsPluginManager();
|
|
$parent = $apm->getAttachmentsPlugin($parent_type);
|
|
$parent_entity = $parent->getCanonicalEntityId($parent_entity);
|
|
$parent_entity_name = JText::_('ATTACH_' . $parent_entity);
|
|
|
|
// Get the URL to repost (for filtering)
|
|
$post_url = $parent->getSelectEntityURL($parent_entity);
|
|
|
|
// Set up the display lists
|
|
$lists = Array();
|
|
|
|
// table ordering
|
|
$app = JFactory::getApplication();
|
|
$filter_order =
|
|
$app->getUserStateFromRequest('com_attachments.selectEntity.filter_order',
|
|
'filter_order', '', 'cmd');
|
|
$filter_order_Dir =
|
|
$app->getUserStateFromRequest('com_attachments.selectEntity.filter_order_Dir',
|
|
'filter_order_Dir','', 'word');
|
|
$lists['order_Dir'] = $filter_order_Dir;
|
|
$lists['order'] = $filter_order;
|
|
|
|
// search filter
|
|
$search_filter = $app->getUserStateFromRequest('com_attachments.selectEntity.search',
|
|
'search', '', 'string' );
|
|
$lists['search'] = $search_filter;
|
|
|
|
// Get the list of items to display
|
|
$items = $parent->getEntityItems($parent_entity, $search_filter);
|
|
|
|
// Set up the view
|
|
require_once(JPATH_COMPONENT_ADMINISTRATOR.'/views/entity/view.html.php');
|
|
$view = new AttachmentsViewEntity( );
|
|
$view->option = JRequest::getCmd('option');
|
|
$view->from = 'closeme';
|
|
$view->post_url = $post_url;
|
|
$view->parent_type = $parent_type;
|
|
$view->parent_entity = $parent_entity;
|
|
$view->parent_entity_name = $parent_entity_name;
|
|
$view->lists = $lists;
|
|
$view->items = $items;
|
|
|
|
$view->display();
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Display links for the admin Utility functions
|
|
*/
|
|
public function adminUtils()
|
|
{
|
|
// Access check
|
|
if (!JFactory::getUser()->authorise('core.admin', 'com_attachments')) {
|
|
return JError::raiseError(404, JText::_('JERROR_ALERTNOAUTHOR') . ' (ERR 66)');
|
|
}
|
|
|
|
// Set up the tooltip behavior
|
|
$opts = Array( 'hideDelay' => 0, 'showDelay' => 0 );
|
|
JHtml::_('behavior.tooltip', '.hasTip', $opts);
|
|
|
|
// Set up url/link/tooltip for each command
|
|
$uri = JFactory::getURI();
|
|
$url_top = $uri->base(true) . "/index.php?option=com_attachments&controller=special";
|
|
$closeme = '&tmpl=component&close=1';
|
|
|
|
// Set up the array of entries
|
|
$entries = Array();
|
|
|
|
// Set up the HTML for the 'Disable MySQL uninstallation' command
|
|
$disable_mysql_uninstall_url =
|
|
"$url_top&task=utils.disable_sql_uninstall" . $closeme;
|
|
$disable_mysql_uninstall_tooltip =
|
|
JText::_('ATTACH_DISABLE_MYSQL_UNINSTALLATION') . '::' . JText::_('ATTACH_DISABLE_MYSQL_UNINSTALLATION_TOOLTIP');
|
|
$entries[] = JHtml::_('tooltip', $disable_mysql_uninstall_tooltip, null, null,
|
|
JText::_('ATTACH_DISABLE_MYSQL_UNINSTALLATION'),
|
|
$disable_mysql_uninstall_url );
|
|
|
|
// Set up the HTML for the 'Reinstall Attachments Permissions' command
|
|
$reinstall_permissions_url = "$url_top&task=utils.reinstall_permissions" . $closeme;
|
|
$reinstall_permissions_tooltip = JText::_('ATTACH_REINSTALL_PERMISSIONS') . '::' . JText::_('ATTACH_REINSTALL_PERMISSIONS_TOOLTIP');
|
|
$entries[] = JHtml::_('tooltip', $reinstall_permissions_tooltip, null, null,
|
|
JText::_('ATTACH_REINSTALL_PERMISSIONS'), $reinstall_permissions_url);
|
|
|
|
// Set up the HTML for the 'Regenerate attachment system filenames' command
|
|
$regenerate_system_filenames_url =
|
|
"$url_top&task=utils.regenerate_system_filenames" . $closeme;
|
|
$regenerate_system_filenames_tooltip =
|
|
JText::_('ATTACH_REGENERATE_ATTACHMENT_SYSTEM_FILENAMES') . '::' .
|
|
JText::_('ATTACH_REGENERATE_ATTACHMENT_SYSTEM_FILENAMES_TOOLTIP');
|
|
$entries[] = JHtml::_('tooltip', $regenerate_system_filenames_tooltip, null, null,
|
|
JText::_('ATTACH_REGENERATE_ATTACHMENT_SYSTEM_FILENAMES'),
|
|
$regenerate_system_filenames_url);
|
|
|
|
// Set up the HTML for the 'Remove spaces from system filenames' command
|
|
$unspacify_system_filenames_url =
|
|
"$url_top&task=utils.remove_spaces_from_system_filenames" . $closeme;
|
|
$unspacify_system_filenames_tooltip =
|
|
JText::_('ATTACH_DESPACE_ATTACHMENT_SYSTEM_FILENAMES') . '::' .
|
|
JText::_('ATTACH_DESPACE_ATTACHMENT_SYSTEM_FILENAMES_TOOLTIP');
|
|
$entries[] = JHtml::_('tooltip', $unspacify_system_filenames_tooltip, null, null,
|
|
JText::_('ATTACH_DESPACE_ATTACHMENT_SYSTEM_FILENAMES'),
|
|
$unspacify_system_filenames_url);
|
|
|
|
// Set up the HTML for the 'Update attachment file sizes' command
|
|
$update_file_sizes_url =
|
|
"$url_top&task=utils.update_file_sizes" . $closeme;
|
|
$update_file_sizes_tooltip =
|
|
JText::_('ATTACH_UPDATE_ATTACHMENT_FILE_SIZES') . '::' .
|
|
JText::_('ATTACH_UPDATE_ATTACHMENT_FILE_SIZES_TOOLTIP');
|
|
$entries[] = JHtml::_('tooltip', $update_file_sizes_tooltip, null, null,
|
|
JText::_('ATTACH_UPDATE_ATTACHMENT_FILE_SIZES'),
|
|
$update_file_sizes_url);
|
|
|
|
// Set up the HTML for the 'Check Files' command
|
|
$check_files_url = "$url_top&task=utils.check_files" . $closeme;
|
|
$check_files_tooltip = JText::_('ATTACH_CHECK_FILES') . '::' . JText::_('ATTACH_CHECK_FILES_TOOLTIP');
|
|
$entries[] = JHtml::_('tooltip', $check_files_tooltip, null, null,
|
|
JText::_('ATTACH_CHECK_FILES'), $check_files_url);
|
|
|
|
// Set up the HTML for the 'Validate URLs' command
|
|
$validate_urls_url = "$url_top&task=utils.validate_urls" . $closeme;
|
|
$validate_urls_tooltip = JText::_('ATTACH_VALIDATE_URLS') . '::' . JText::_('ATTACH_VALIDATE_URLS_TOOLTIP');
|
|
$entries[] = JHtml::_('tooltip', $validate_urls_tooltip, null, null,
|
|
JText::_('ATTACH_VALIDATE_URLS'), $validate_urls_url);
|
|
|
|
// Test ???
|
|
// $utils_test_url = "$url_top&task=utils.test" . $closeme;
|
|
// $utils_test_tooltip = 'Test';
|
|
// $entries[] = JHtml::_('tooltip', $utils_test_tooltip, null, null, 'TEST', $utils_test_url);
|
|
|
|
// Get the view
|
|
require_once(JPATH_COMPONENT_ADMINISTRATOR.'/views/utils/view.html.php');
|
|
$view = new AttachmentsViewUtils();
|
|
$view->entries = $entries;
|
|
|
|
$view->display();
|
|
}
|
|
|
|
|
|
/**
|
|
* Return the attachments list as HTML (for use by Ajax)
|
|
*/
|
|
public function attachmentsList()
|
|
{
|
|
$parent_id = JRequest::getInt('parent_id', false);
|
|
$parent_type = JRequest::getWord('parent_type', '');
|
|
$parent_entity = JRequest::getWord('parent_entity', 'default');
|
|
$show_links = JRequest::getBool('show_links', true);
|
|
$allow_edit = JRequest::getBool('allow_edit', true);
|
|
$from = JRequest::getWord('from', 'closeme');
|
|
$title = '';
|
|
|
|
$response = '';
|
|
|
|
if ( ($parent_id === false) || ($parent_type == '') ) {
|
|
return '';
|
|
}
|
|
|
|
// Allow remapping of parent ID (eg, for Joomfish)
|
|
$lang = JRequest::getWord('lang', '');
|
|
if ($lang and jimport('attachments_remapper.remapper'))
|
|
{
|
|
$parent_id = AttachmentsRemapper::remapParentID($parent_id, $parent_type, $parent_entity);
|
|
}
|
|
|
|
require_once(JPATH_ADMINISTRATOR.'/components/com_attachments/controllers/list.php');
|
|
$controller = new AttachmentsControllerList();
|
|
$response = $controller->displayString($parent_id, $parent_type, $parent_entity,
|
|
$title, $show_links, $allow_edit, false, $from);
|
|
echo $response;
|
|
}
|
|
|
|
|
|
|
|
/** Show the help page
|
|
*/
|
|
public function help()
|
|
{
|
|
// Set up the view
|
|
require_once(JPATH_COMPONENT_ADMINISTRATOR . '/views/help/view.html.php');
|
|
$view = new AttachmentsViewHelp();
|
|
|
|
// Load language(s)
|
|
$view->lang = JFactory::getLanguage();
|
|
|
|
// Now load the help page file
|
|
// (Load the component file first since the help pages share some items)
|
|
if ( $view->lang->getTag() != 'en-GB' )
|
|
{
|
|
// First load English for any untranslated items
|
|
$view->lang->load('com_attachments', dirname(__FILE__), 'en-GB');
|
|
$view->lang->load('com_attachments.help', dirname(__FILE__), 'en-GB');
|
|
}
|
|
|
|
// Load current language
|
|
$view->lang->load('com_attachments', dirname(__FILE__), null, true);
|
|
$view->lang->load('com_attachments.help', dirname(__FILE__), null, true);
|
|
|
|
// Call parent to display
|
|
$view->display();
|
|
}
|
|
|
|
|
|
}
|
|
|