<?php

/**
 * Matomo - free/libre analytics platform
 *
 * @link    https://matomo.org
 * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
 */

namespace Piwik\Plugins\SEO\Metric;

/**
 * Describes a SEO metric.
 */
class Metric
{
    /**
     * @var string
     */
    private $id;

    /**
     * @var string
     */
    private $name;

    /**
     * @var string
     */
    private $value;

    /**
     * @var string
     */
    private $logo;

    /**
     * @var string|null
     */
    private $logoLink;

    /**
     * @var string|null
     */
    private $logoTooltip;

    /**
     * @var string|null
     */
    private $valueSuffix;

    /**
     * @param string $id
     * @param string $name Can be a string or a translation ID.
     * @param string $value Rank value.
     * @param string $logo URL to a logo.
     * @param string|null $logoLink
     * @param string|null $logoTooltip
     * @param string|null $valueSuffix
     */
    public function __construct($id, $name, $value, $logo, $logoLink = null, $logoTooltip = null, $valueSuffix = null)
    {
        $this->id = $id;
        $this->name = $name;
        $this->value = $value;
        $this->logo = $logo;
        $this->logoLink = $logoLink;
        $this->logoTooltip = $logoTooltip;
        $this->valueSuffix = $valueSuffix;
    }

    /**
     * @return string
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * @return string
     */
    public function getValue()
    {
        return $this->value;
    }

    /**
     * @return string
     */
    public function getLogo()
    {
        return $this->logo;
    }

    /**
     * @return string|null
     */
    public function getLogoLink()
    {
        return $this->logoLink;
    }

    /**
     * @return string|null
     */
    public function getLogoTooltip()
    {
        return $this->logoTooltip;
    }

    /**
     * @return null|string
     */
    public function getValueSuffix()
    {
        return $this->valueSuffix;
    }

    /**
     * Allows the class to be serialized with var_export (in the cache).
     *
     * @param array $array
     * @return Metric
     */
    public static function __set_state($array)
    {
        return new self(
            $array['id'],
            $array['name'],
            $array['value'],
            $array['logo'],
            $array['logoLink'],
            $array['logoTooltip'],
            $array['valueSuffix']
        );
    }
}
