Sh3ll
OdayForums


Server : LiteSpeed
System : Linux premium84.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
User : claqxcrl ( 523)
PHP Version : 8.1.32
Disable Function : NONE
Directory :  /home/claqxcrl/anfangola.com/wp-content/plugins/matomo/app/plugins/CoreAdminHome/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/claqxcrl/anfangola.com/wp-content/plugins/matomo/app/plugins/CoreAdminHome/Controller.php
<?php

/**
 * Matomo - free/libre analytics platform
 *
 * @link https://matomo.org
 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
 *
 */
namespace Piwik\Plugins\CoreAdminHome;

use Exception;
use Piwik\API\ResponseBuilder;
use Piwik\ArchiveProcessor\Rules;
use Piwik\Common;
use Piwik\Config;
use Piwik\Mail;
use Piwik\Menu\MenuTop;
use Piwik\Piwik;
use Piwik\Plugin;
use Piwik\Plugin\ControllerAdmin;
use Piwik\Changes\UserChanges;
use Piwik\Plugins\CorePluginsAdmin\CorePluginsAdmin;
use Piwik\Plugins\Marketplace\Marketplace;
use Piwik\Plugins\CustomVariables\CustomVariables;
use Piwik\Plugins\LanguagesManager\LanguagesManager;
use Piwik\Plugins\PrivacyManager\DoNotTrackHeaderChecker;
use Piwik\Plugins\SitesManager\API as APISitesManager;
use Piwik\Request;
use Piwik\Site;
use Piwik\Translation\Translator;
use Piwik\Url;
use Piwik\View;
use Piwik\Widget\WidgetsList;
use Piwik\SettingsPiwik;
use Piwik\Plugins\UsersManager\Model as UsersModel;
class Controller extends ControllerAdmin
{
    /**
     * @var Translator
     */
    private $translator;
    /** @var OptOutManager */
    private $optOutManager;
    public function __construct(Translator $translator, \Piwik\Plugins\CoreAdminHome\OptOutManager $optOutManager)
    {
        $this->translator = $translator;
        $this->optOutManager = $optOutManager;
        parent::__construct();
    }
    public function home()
    {
        $isInternetEnabled = SettingsPiwik::isInternetEnabled();
        $isMarketplaceEnabled = Marketplace::isMarketplaceEnabled();
        $isFeedbackEnabled = Plugin\Manager::getInstance()->isPluginLoaded('Feedback');
        $widgetsList = WidgetsList::get();
        if ($isInternetEnabled && $isMarketplaceEnabled) {
            $this->securityPolicy->addPolicy('img-src', '*.matomo.org');
        }
        $hasDonateForm = $widgetsList->isDefined('CoreHome', 'getDonateForm');
        $hasPiwikBlog = $widgetsList->isDefined('RssWidget', 'rssPiwik');
        $hasPremiumFeatures = $widgetsList->isDefined('Marketplace', 'getPremiumFeatures');
        $hasNewPlugins = $widgetsList->isDefined('Marketplace', 'getNewPlugins');
        $hasDiagnostics = $widgetsList->isDefined('Installation', 'getSystemCheck');
        $hasTrackingFailures = $widgetsList->isDefined('CoreAdminHome', 'getTrackingFailures');
        $hasQuickLinks = $widgetsList->isDefined('CoreHome', 'quickLinks');
        $hasSystemSummary = $widgetsList->isDefined('CoreHome', 'getSystemSummary');
        return $this->renderTemplate('home', array('isInternetEnabled' => $isInternetEnabled, 'isMarketplaceEnabled' => $isMarketplaceEnabled, 'hasPremiumFeatures' => $hasPremiumFeatures, 'hasNewPlugins' => $hasNewPlugins, 'isFeedbackEnabled' => $isFeedbackEnabled, 'hasDonateForm' => $hasDonateForm, 'hasPiwikBlog' => $hasPiwikBlog, 'hasDiagnostics' => $hasDiagnostics, 'hasTrackingFailures' => $hasTrackingFailures, 'hasQuickLinks' => $hasQuickLinks, 'hasSystemSummary' => $hasSystemSummary));
    }
    public function index()
    {
        $this->redirectToIndex('UsersManager', 'userSettings');
        return;
    }
    public function trackingFailures()
    {
        Piwik::checkUserHasSomeAdminAccess();
        return $this->renderTemplate('trackingFailures');
    }
    public function generalSettings()
    {
        Piwik::checkUserHasSuperUserAccess();
        $view = new View('@CoreAdminHome/generalSettings');
        $this->handleGeneralSettingsAdmin($view);
        $view->trustedHosts = array_values(Url::getTrustedHostsFromConfig());
        $logo = new \Piwik\Plugins\CoreAdminHome\CustomLogo();
        $view->branding = array('use_custom_logo' => $logo->isEnabled());
        $view->fileUploadEnabled = $logo->isFileUploadEnabled();
        $view->logosWriteable = $logo->isCustomLogoWritable();
        $view->customLogoEnabled = $logo->isCustomLogoFeatureEnabled();
        $view->hasUserLogo = \Piwik\Plugins\CoreAdminHome\CustomLogo::hasUserLogo();
        $view->pathUserLogo = \Piwik\Plugins\CoreAdminHome\CustomLogo::getPathUserLogo();
        $view->hasUserFavicon = \Piwik\Plugins\CoreAdminHome\CustomLogo::hasUserFavicon();
        $view->pathUserFavicon = \Piwik\Plugins\CoreAdminHome\CustomLogo::getPathUserFavicon();
        $view->pathUserLogoSmall = \Piwik\Plugins\CoreAdminHome\CustomLogo::getPathUserLogoSmall();
        $view->pathUserLogoSVG = \Piwik\Plugins\CoreAdminHome\CustomLogo::getPathUserSvgLogo();
        $view->pathUserLogoDirectory = realpath(dirname($view->pathUserLogo) . '/');
        $view->mailTypes = array('' => '', 'Plain' => 'Plain', 'Login' => 'Login', 'Cram-md5' => 'Cram-md5');
        $view->mailEncryptions = array('' => 'auto', 'ssl' => 'SSL', 'tls' => 'TLS', 'none' => 'none');
        $mail = new Mail();
        $view->mailHost = $mail->getMailHost();
        $view->language = LanguagesManager::getLanguageCodeForCurrentUser();
        $this->setBasicVariablesView($view);
        return $view->render();
    }
    public function setMailSettings()
    {
        Piwik::checkUserHasSuperUserAccess();
        if (!self::isGeneralSettingsAdminEnabled()) {
            // General settings + Beta channel + SMTP settings is disabled
            return '';
        }
        $response = new ResponseBuilder('json');
        try {
            $this->checkTokenInUrl();
            // Update email settings
            $request = Request::fromRequest();
            $mail = [];
            $mail['transport'] = $request->getBoolParameter('mailUseSmtp') ? 'smtp' : '';
            $mail['port'] = $request->getStringParameter('mailPort', '');
            $mail['host'] = $request->getStringParameter('mailHost', '');
            $mail['type'] = $request->getStringParameter('mailType', '');
            $mail['username'] = $request->getStringParameter('mailUsername', '');
            $mail['password'] = $request->getStringParameter('mailPassword', '');
            if (!array_key_exists('mailPassword', $_POST) && Config::getInstance()->mail['host'] === $mail['host']) {
                // use old password if it wasn't set in request (and the host wasn't changed)
                $mail['password'] = Config::getInstance()->mail['password'];
            }
            $mail['encryption'] = $request->getStringParameter('mailEncryption', '');
            Config::getInstance()->mail = $mail;
            $general = Config::getInstance()->General;
            $fromName = Common::getRequestVar('mailFromName', '');
            $general['noreply_email_name'] = Common::unsanitizeInputValue($fromName);
            $mailFrom = Common::getRequestVar('mailFromAddress', '');
            if (empty($mailFrom)) {
                $mailFrom = 'noreply@{DOMAIN}';
            } else {
                $mailFrom = Common::unsanitizeInputValue($mailFrom);
            }
            if (!Piwik::isValidEmailString($mailFrom) && !Common::stringEndsWith($mailFrom, '@{DOMAIN}')) {
                throw new Exception(Piwik::translate('CoreAdminHome_ErrorEmailFromAddressNotValid'));
            }
            $general['noreply_email_address'] = $mailFrom;
            Config::getInstance()->General = $general;
            Config::getInstance()->forceSave();
            $toReturn = $response->getResponse();
        } catch (Exception $e) {
            $toReturn = $response->getResponseException($e);
        }
        return $toReturn;
    }
    /**
     * Renders and echo's an admin page that lets users generate custom JavaScript
     * tracking code and custom image tracker links.
     */
    public function trackingCodeGenerator()
    {
        Piwik::checkUserHasSomeViewAccess();
        $view = new View('@CoreAdminHome/trackingCodeGenerator');
        $this->setBasicVariablesView($view);
        $view->topMenu = MenuTop::getInstance()->getMenu();
        $viewableIdSites = APISitesManager::getInstance()->getSitesIdWithAtLeastViewAccess();
        $defaultIdSite = reset($viewableIdSites);
        $view->idSite = $this->idSite ?: $defaultIdSite;
        if ($view->idSite) {
            try {
                $view->siteName = Site::getNameFor($view->idSite);
                $view->siteNameDecoded = Common::unsanitizeInputValue($view->siteName);
            } catch (Exception $e) {
                // ignore if site no longer exists
            }
        }
        $view->defaultReportSiteName = Site::getNameFor($view->idSite);
        $view->defaultSiteRevenue = Site::getCurrencySymbolFor($view->idSite);
        $view->maxCustomVariables = 0;
        if (Plugin\Manager::getInstance()->isPluginActivated('CustomVariables')) {
            $view->maxCustomVariables = CustomVariables::getNumUsableCustomVariables();
        }
        $view->defaultSite = array('id' => $view->idSite, 'name' => $view->defaultReportSiteName);
        $view->defaultSiteDecoded = ['id' => $view->idSite, 'name' => Common::unsanitizeInputValue($view->defaultReportSiteName)];
        $allUrls = APISitesManager::getInstance()->getSiteUrlsFromId($view->idSite);
        if (isset($allUrls[1])) {
            $aliasUrl = $allUrls[1];
        } else {
            $aliasUrl = 'x.domain.com';
        }
        $view->defaultReportSiteAlias = $aliasUrl;
        $mainUrl = Site::getMainUrlFor($view->idSite);
        $view->defaultReportSiteDomain = @parse_url($mainUrl, PHP_URL_HOST);
        $dntChecker = new DoNotTrackHeaderChecker();
        $view->serverSideDoNotTrackEnabled = $dntChecker->isActive();
        return $view->render();
    }
    /**
     * Shows the "Track Visits" checkbox - iFrame (deprecated)
     */
    public function optOut()
    {
        return $this->optOutManager->getOptOutViewIframe()->render();
    }
    /**
     * Shows the Javascript opt out
     *
     * @return string
     * @throws Exception
     */
    public function optOutJS() : string
    {
        Common::sendHeader('Content-Type: application/javascript; charset=utf-8');
        Common::sendHeader('Cache-Control: no-store');
        return $this->optOutManager->getOptOutJS();
    }
    public function uploadCustomLogo()
    {
        Piwik::checkUserHasSuperUserAccess();
        $this->checkTokenInUrl();
        $logo = new \Piwik\Plugins\CoreAdminHome\CustomLogo();
        if (!$logo->isCustomLogoFeatureEnabled()) {
            return '0';
        }
        $successLogo = $logo->copyUploadedLogoToFilesystem();
        $successFavicon = $logo->copyUploadedFaviconToFilesystem();
        if ($successLogo || $successFavicon) {
            return '1';
        }
        return '0';
    }
    public static function isGeneralSettingsAdminEnabled()
    {
        return (bool) Config::getInstance()->General['enable_general_settings_admin'];
    }
    private function handleGeneralSettingsAdmin($view)
    {
        // Whether to display or not the general settings (cron, beta, smtp)
        $view->isGeneralSettingsAdminEnabled = self::isGeneralSettingsAdminEnabled();
        $view->isMultiServerEnvironment = SettingsPiwik::isMultiServerEnvironment();
        $view->isPluginsAdminEnabled = CorePluginsAdmin::isPluginsAdminEnabled();
        if ($view->isGeneralSettingsAdminEnabled) {
            $this->displayWarningIfConfigFileNotWritable();
        }
        $enableBrowserTriggerArchiving = Rules::isBrowserTriggerEnabled();
        $todayArchiveTimeToLive = Rules::getTodayArchiveTimeToLive();
        $showWarningCron = false;
        if (!$enableBrowserTriggerArchiving && $todayArchiveTimeToLive < 3600) {
            $showWarningCron = true;
        }
        $view->showWarningCron = $showWarningCron;
        $view->todayArchiveTimeToLive = $todayArchiveTimeToLive;
        $view->todayArchiveTimeToLiveDefault = Rules::getTodayArchiveTimeToLiveDefault();
        $view->enableBrowserTriggerArchiving = $enableBrowserTriggerArchiving;
        $view->showSegmentArchiveTriggerInfo = Rules::isBrowserArchivingAvailableForSegments();
        $mail = Config::getInstance()->mail;
        $mail['noreply_email_address'] = Config::getInstance()->General['noreply_email_address'];
        $mail['noreply_email_name'] = Config::getInstance()->General['noreply_email_name'];
        $mail['password'] = !empty($mail['password']) ? '*****' : '';
        $view->mail = $mail;
    }
    /**
     * Show the what is new changes list
     */
    public function whatIsNew()
    {
        Piwik::checkUserHasSomeViewAccess();
        Piwik::checkUserIsNotAnonymous();
        $model = new UsersModel();
        $user = $model->getUser(Piwik::getCurrentUserLogin());
        if (is_array($user)) {
            $userChanges = new UserChanges($user);
            $changes = $userChanges->getChanges();
            return $this->renderTemplate('whatIsNew', ['changes' => $changes]);
        } else {
            throw new \Exception('Unable to getUser() when attempting to show whatIsNew');
        }
    }
}

ZeroDay Forums Mini