\x89PNG\r\n\x1a\n\x00\x00\x00\x0DIHDR\x00\x00\x00\x01\x00 \x00\x00\x01\x08\x06\x00\x00\x00\x1F\x15\xC4\x89\x00\x00\x00 \x0AIDATx\x9Ccb\x00\x00\x00\x06\x00\x03\x1A\x05\x9D\x00\x00 \x00\x00IEND\xAE\x42\x60\x82 csarite.com
KUJUNTI.ID MINISH3LL
Path : /var/www/html/ob-wp-eski/core/Report/
(S)h3ll Cr3at0r :
F!le Upl0ad :

B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H

Current File : /var/www/html/ob-wp-eski/core/Report/ReportWidgetFactory.php


<?php
/**
 * Piwik - free/libre analytics platform
 *
 * @link http://piwik.org
 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
 *
 */
namespace Piwik\Report;

use Piwik\Plugin\Report;
use Piwik\Widget\WidgetContainerConfig;

/**
 * Report widget factory. This factory allows you to create widgets for a given report without having to re-specify
 * redundant information like module, action, category, subcategory, order, ... When creating a widget from a report
 * these values will be automatically specified so that ideally `$factory->createWidget()` is all one has to do in
 * order to create a new widget.
 *
 * @api since Piwik 3.0.0
 */
class ReportWidgetFactory
{
    /**
     * @var Report
     */
    private $report = null;

    /**
     * Generates a new report widget factory.
     * @param Report $report  A report instance, widgets will be created based on the data provided by this report.
     */
    public function __construct(Report $report)
    {
        $this->report = $report;
    }

    /**
     * Creates a widget based on the specified report in {@link construct()}.
     *
     * It will automatically use the report's name, categoryId, subcategoryId (if specified),
     * defaultViewDataTable, module, action, order and parameters in order to create the widget.
     *
     * @return ReportWidgetConfig
     */
    public function createWidget()
    {
        $widget = new ReportWidgetConfig();
        $widget->setName($this->report->getName());
        $widget->setCategoryId($this->report->getCategoryId());

        if ($this->report->getDefaultTypeViewDataTable()) {
            $widget->setDefaultViewDataTable($this->report->getDefaultTypeViewDataTable());
        }

        if ($this->report->getSubcategoryId()) {
            $widget->setSubcategoryId($this->report->getSubcategoryId());
        }

        $widget->setModule($this->report->getModule());
        $widget->setAction($this->report->getAction());

        $orderThatListsReportsAtTheEndOfEachCategory = 100 + $this->report->getOrder();
        $widget->setOrder($orderThatListsReportsAtTheEndOfEachCategory);

        $parameters = $this->report->getParameters();
        if (!empty($parameters)) {
            $widget->setParameters($parameters);
        }

        return $widget;
    }

    /**
     * Creates a new container widget based on the specified report in {@link construct()}.
     *
     * It will automatically use the report's categoryId, subcategoryId (if specified) and order in order to
     * create the container.
     *
     * @param string $containerId eg 'Products' or 'Contents' see {Piwik\Widget\WidgetContainerConfig::setId()}.
     *                            Other reports or widgets will be able to add more widgets to this container.
     *                            This is useful when you want to show for example multiple related widgets
     *                            together.
     * @return WidgetContainerConfig
     */
    public function createContainerWidget($containerId)
    {
        $widget = new WidgetContainerConfig();
        $widget->setCategoryId($this->report->getCategoryId());
        $widget->setId($containerId);

        if ($this->report->getSubcategoryId()) {
            $widget->setSubcategoryId($this->report->getSubcategoryId());
        }

        $orderThatListsReportsAtTheEndOfEachCategory = 100 + $this->report->getOrder();
        $widget->setOrder($orderThatListsReportsAtTheEndOfEachCategory);

        return $widget;
    }

    /**
     * Creates a custom widget that doesn't use a viewDataTable to render the report but instead a custom
     * controller action. Make sure the specified `$action` exists in the plugin's controller. Otherwise
     * behaves as {@link createWidget()}.
     *
     * @param string $action  eg 'conversionReports' (requires a method `public function conversionReports()` in
     *                        the plugin's controller).
     * @return ReportWidgetConfig
     */
    public function createCustomWidget($action)
    {
        $widget = $this->createWidget();
        $widget->setDefaultViewDataTable(null);
        $widget->setAction($action);

        return $widget;
    }
}

© KUJUNTI.ID