<?php

namespace Tygh\Addons\Ab_priceComparison\Rules\Processing;

use Tygh\Addons\Ab_priceComparison\Rules\AbstractRule;
use Tygh\Addons\Ab_priceComparison\Libs\DiDom;

class RuleXpath extends AbstractRule
{
    public function execute($params, $content)
    {
        parent::execute($params, $content);

        if (empty($params['value'])) {
            $this->error_message = 'xpath_is_empty';
        } else {
            $document = new DiDom\Document($content);

            $element = $document->find($params['value'], DiDom\Query::TYPE_XPATH);

            if (count($element) == 0) {
                $this->error_message = 'xpath_does_not_match';
            } elseif (count($element) > 1) {
                $this->error_message = 'xpath_has_multi_matches';

                for ($i = 0; $i < count($element); $i++) {
                    $this->value .= ($i ? "\n\n" : '') . 'Match ' . $i . ". ---------------\n" . $element[$i]->html();
                }
            } elseif (count($element) == 1) {
                $this->value = $element[0]->html();
                $this->status = true;
            }
        }

        return $this->getResult();
    }
}
