PHPackages                             ondrakoupil/heureka-recenze - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. ondrakoupil/heureka-recenze

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

ondrakoupil/heureka-recenze
===========================

Knihovna pro snadný import recenzí e-shopu a produktů z Heuréka.cz

v1.0.2(9y ago)1192.2k↑51.1%7[3 PRs](https://github.com/ondrakoupil/heureka-recenze/pulls)MITPHPPHP &gt;=5.3.1

Since Jan 10Pushed 9y ago2 watchersCompare

[ Source](https://github.com/ondrakoupil/heureka-recenze)[ Packagist](https://packagist.org/packages/ondrakoupil/heureka-recenze)[ Docs](https://github.com/ondrakoupil/heureka-recenze)[ RSS](/packages/ondrakoupil-heureka-recenze/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (3)Versions (4)Used By (0)

PHP knihovna pro zpracování recenzí z Heuréky
=============================================

[](#php-knihovna-pro-zpracování-recenzí-z-heuréky)

[![Build Status](https://camo.githubusercontent.com/345f78fb81cf7d96b040acae09fa81bc7fd8e0e4c66d61bab368d4d5bda09342/68747470733a2f2f7472617669732d63692e6f72672f6f6e6472616b6f7570696c2f68657572656b612d726563656e7a652e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/ondrakoupil/heureka-recenze.svg?branch=master)

Instalace
---------

[](#instalace)

Nainstalujte knihovnu přes Composer:

```
composer install ondrakoupil\heureka-recenze

```

Nepoužíváte-li Composer, includujte soubor `dist/heureka.php`, který obsahuje celou knihovnu pohromadě, anebo libovolným způsobem zajistěte autoloading tříd z adresáře `src`.

Použití
-------

[](#použití)

Knihovna za vás zajistí stažení a parsování XML souborů s exporty recenzí z Heuréky a v případě recenzí produktů je umí sdružit dle jednotlivých produktů a případně pro ně vytvořit souhrnné hodnocení. Co naopak neřeší je ukládání načtených recenzí a integraci s vaším webem / eshopem / aplikací - tuto část si musíte doprogramovat sami.

Jak jistě víte, Heuréka sbírá od vašich zákazníků dva typy recenzí - jednak názory na váš e-shop jako takový, kde se zákazníci mohou vyjádřit k spolehlivosti, komunikaci, dodacím lhůtám, přehlednosti webu apod., a jednak ke konkrétním produktům, které koupili. Heuréka bohužel poskytne jen recenze k objednávkám z vašeho e-shopu, i když daný produkt nakoupilo spousta lidí na jiných e-shopech.

Recenzím e-shopu se věnují třídy `EshopReviewsClient` a `EshopReview`, recenzím produktů se věnují `ProductReviewsClient`, `ProductReview` a `ProductReviewSummary`.

Kromě knihovny budete potřebovat ještě tajný klíč, který váš e-shop používá pro komunikaci s Heurékou. Klíč kdyžtak získáte v administraci Heuréky ve svém účtu v sekci [Ověřeno zákazníky](http://sluzby.heureka.cz/sluzby/certifikat-spokojenosti/), podrobnější popis exportu recenzí najdete [zde](http://sluzby.heureka.cz/napoveda/widget-a-ikonky-ze-sluzby-overeno-zakazniky/).

Následující příklady neuvádějí celá jména tříd - buď si před ně doplňte namespace `OndraKoupil\Heureka`, anebo na začátek programu doplňte

```
use \OndraKoupil\Heureka\EshopReviewsClient, \OndraKoupil\Heureka\EshopReview,
    \OndraKoupil\Heureka\ProductReviewsClient, \OndraKoupil\Heureka\ProductReview, \OndraKoupil\Heureka\ProductReviewSummary;
```

### Vytvoření klienta

[](#vytvoření-klienta)

Při instancování třídy klienta lze zadat rovnou tajný klíč, anebo celou adresu (vhodné pro SK Heuréku). U recenzí produktů lze navíc omezit, jak staré recenze chcete (max. 6 měsíců). U recenzí e-shopu tento parametr Heuréka nepodporuje.

```
$client  = new   EshopReviewsClient("my-secret-key");
$client2 = new   EshopReviewsClient("http://www.heureka.sk/direct/dotaznik/export-review.php?key=my-secret-key");
$client3 = new ProductReviewsClient("my-secret-key");
$client4 = new ProductReviewsClient("http://www.heureka.sk/direct/dotaznik/export-product-review.php?key=my-secret-key");
$client5 = new ProductReviewsClient("my-secret-key", new DateTime("now - 1 month") );

$client6 = new EshopReviewsClient();
$client6->setSourceAddress("http://www.heureka.cz/direct/dotaznik/export-review.php?key=my-secret-key");
```

### Nastavení

[](#nastavení)

Oba klienti interně využívají XmlReader, stažené XML zpracovávají sekvenčně a jsou tedy schopni zprocesovat i velké XML soubory s relativně malými nároky na paměť. K tomu ale potřebují možnost stáhnout si nejprve XML soubor z Heuréky někam do dočasného umístění a odtamtud si je postupně číst. Druhý argument umožňuje nastavit, zda po úspěšném zpracování má být dočasný soubor automaticky smazán (default true).

```
$client->setTempFile("tempfile.xml");
```

Dále je třeba implementovat nějakou funkci, která bude načtené recenze zpracovávat. Funkce dostane jako argument objekt třídy `EshopReview` nebo `ProductReview` a s ní si může dělat, co chce. Nejspíš recenzi uloží někam do databáze. Obě třídy jsou obyčejné hloupé třídy s public proměnnými (více v jejich [dokumentaci](docs/index.html)) a s metodou `getAsArray()`, která je kdyžtak převede do podoby obyčejného pole.

Určená funkce se zavolá jednou pro každou recenzi, která je z Heuréky stažena.

```
$client->setCallback(
	function(EshopReview $review) {
		// ... zde si udělejte, co hrdlo ráčí
		print_r($review->getAsArray());
	}
);
```

### Stažení a zpracování souboru

[](#stažení-a-zpracování-souboru)

A pak už jen stačí zavolat metodu `run()`. Klient stáhne soubor a jeho obsah recenzi po recenzi postupně předá dříve definované funkci.

```
$client->run();
```

Pokud byste z nějakého důvodu nechtěli soubor rovnou zpracovávat, lze ho pouze stáhnout:

```
$client->download("heureka-recenze.xml");
```

Anebo naopak, pokud již máte soubor stažený, lze klientovi říct, že ho nemá stahovat a místo toho použít zadaný soubor:

```
$client->useFile("path/to/downloaded/file.xml");
$client->run();
```

### Recenze produktů

[](#recenze-produktů)

U recenzí produktů může být užitečné je sdružovat podle jednotlivých produktů, kterých se týkají, případně vás může zajímat jen souhrnné hodnocení a ne jednotlivé recenze. Heuréka bohužel vyexportuje nesetříděnou hromadu recenzí a o jejich roztřídění se musíte postarat sami. Knihovna vám s tím pomůže a data z XML souboru přelouská do podoby přehledných výsledků v objektech třídy `ProductReviewSummary`.

První zádrhel bude, že v exportu z Heuréky nenajdete žádný jednoznačný identifikátor produktu (alespoň ne nyní), i když ve vašem feedu máte uvedeno &lt;ITEM\_ID&gt;. To celou věc trochu komplikuje. Nejprve je tedy třeba implementovat nějakou funkci, která převádí dostupná data na jednoznačné ID ve vašem e-shopu. ID může být číslo nebo řetězec, zkrátka libovolná skalární hodnota. V tomto příkladu prostě předpokládám, že každý produkt má právě jednu URL, která je vždy jedinečná a stejná. Pro stejné produkty se definovaná funkce spustí jen jednou.

Pokud funkci nenastavíte, nic se neděje, jen nebude možné používat proměnnou `$productId` v objektech ProductReview a žádné z níže uvedených funkcí.

```
$client->setIdResolver(
	function(ProductReview $review) {
		return $review->productUrl;
	}
);
```

Dále si můžete nastavit, zda chcete nebo nechcete zpracovávat souhrnné informace o produktech. Pokud to neuděláte, funkce pracující s ProductReviewSummary budou vracet null nebo prázdné pole.

```
$client->setSaveSummary(true);
$client2->setSaveSummary(true, true);
```

Druhý argument říká, zda chcete ukládat pro pozdější použítí úplně všechny recenze (u větších feedů to může být dost náročné na paměť). Pokud ho dáte false (nebo vynecháte úplně), tak budou mít poskytované objekty ProductReviewSummary v proměnné `$reviews` vždy jen prázdné pole. Recenze si můžete tak jako tak postupně poukládat ve funkci definované přes `setCallback()`.

Poté lze klasicky spustit `run()` a využít různé metody vracející souhrnná data.

```
$client->run();

// Všechna nalezená ID produktů jako array
$client->getAllProductIds();

// Všechny souhrnné informace jako array [ID_produktu] => ProductReviewSummary
$client->getAllSummaries();

// Souhrn recenzí o produktu s konkrétním ID jako objekt ProductReviewSummary
$summary = $client->getSummaryOfProduct(12345);
echo "Celkem $summary->reviewCount recenzí, hodnocení $summary->averageRating z 5";

// Všechny recenze týkající se konkrétního produktu
$reviews = $client->getReviewsOfProduct(12345);
```

Samozřejmě, celou taškařici okolo ProductReviewSummary můžete ignorovat a jen načtené recenze dál zpracovat pomocí funkce definované v `setCallback()`.

Problémy?
---------

[](#problémy)

Pokud jste narazili na bug, něco nefunguje nebo máte návrh na zlepšení, přidejte issue nebo mě bez obav [kontaktujte napřímo](mailto:ondrej.koupil@optimato.cz) :-)

###  Health Score

36

—

LowBetter than 82% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity39

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~199 days

Total

3

Last Release

3382d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1243051?v=4)[Ondřej Koupil](/maintainers/ondrakoupil)[@ondrakoupil](https://github.com/ondrakoupil)

---

Top Contributors

[![ondrakoupil](https://avatars.githubusercontent.com/u/1243051?v=4)](https://github.com/ondrakoupil "ondrakoupil (15 commits)")

---

Tags

merchantreviewsfeedbackcommerceratingse-shopheureka.cz

### Embed Badge

![Health badge](/badges/ondrakoupil-heureka-recenze/health.svg)

```
[![Health](https://phpackages.com/badges/ondrakoupil-heureka-recenze/health.svg)](https://phpackages.com/packages/ondrakoupil-heureka-recenze)
```

###  Alternatives

[mydnic/nova-kustomer

Laravel Nova Kustomer Feedback Tool

2017.8k](/packages/mydnic-nova-kustomer)[mydnic/laravel-subscribers

Easily Manage Internal Newsletter Subscribers in Laravel — with campaigns, mail sending, and tracking

264.8k](/packages/mydnic-laravel-subscribers)[oveleon/contao-recommendation-bundle

Recommendation integration for Contao Open Source CMS

107.1k2](/packages/oveleon-contao-recommendation-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
