application/modules/xbanners/src/UrlFinder/Finders/Products.php
<?php
namespace xbanners\src\UrlFinder\Finders;
use Propel\Runtime\ActiveQuery\Criteria;
use xbanners\src\UrlFinder\Results\Result;
final class Products extends BaseFinder
{
protected $table = 'shop_products';
protected $translations = 'shop_products_i18n';
protected $nameColumn = 'shop_products_i18n.name';
protected $urlColumn = 'shop_products.url';
protected $langColumn = 'shop_products_i18n.locale';
/**
* @return string
*/
public function getGroupName() {
return lang('Products', 'xbanners');
}
/**
* @param string $word
* @param string $language
* @param integer $limit
* @return Result
*/
public function getResultsFor($word, $language, $limit = 10) {
/* @var $db \CI_DB_active_record */
$products = \SProductsQuery::create()
->joinWithI18n($language)
->joinWithRoute()
->useI18nQuery($language, null, Criteria::INNER_JOIN)
->filterByName('%' . $word . '%', Criteria::LIKE)
->endUse()
->limit($limit)
->find();
$result = new Result($this->getGroupName());
foreach ($products as $oneResult) {
$result->addResult($oneResult->getName(), $this->formUrl($oneResult->getRouteUrl()));
}
return $result;
}
/**
* @param string $url
* @return string
*/
public function formUrl($url) {
return '/' . $url;
}
}