/** * register a template * * @param string $code the template identifier / code * @param array $template * 'template' => string (optional) * %s as text placeholder, * not set = '%s' (plain text) * 'color' => string (optional) * a \Zend\Console\ColorInterface defined constant name, * not set = default / normal color * @return self */ public function addTemplate($code, array $template) { ArgValidator::assert($code, 'string'); ArgValidator::arrayAssert($template, array('template' => array('string', 'notSet'), 'color' => array('string', 'notSet'))); $this->templates[$code] = $template; return $this; }
/** * findPlace * * @param array $criteria (all optional) * 'countryCode' => (e.g.) 'DE' * 'admin1Code' => (e.g.) '03' * 'admin2Code' => (e.g.) '00' * 'admin3Code' => (same) * 'admin4Code' => (same) * 'featureClass' => (e.g.) 'A' * 'featureCode' => (e.g.) 'ADM1' * @param int|null $limit = null * @return array of Place */ public function findPlace(array $criteria = array(), $limit = null) { ArgValidator::arrayAssert($criteria, array('countryCode' => array('string', 'notSet'), 'admin1Code' => array('string', 'notSet'), 'admin2Code' => array('string', 'notSet'), 'admin3Code' => array('string', 'notSet'), 'admin4Code' => array('string', 'notSet'), 'featureClass' => array('string', 'notSet'), 'featureCode' => array('string', 'notSet'))); ArgValidator::assert($limit, array('int', 'null')); if (empty($criteria)) { return $this->findAll(); } $dqb = $this->_em->createQueryBuilder(); $dqb->select(array('p'))->from('Yalesov\\Geoname\\Entity\\Place', 'p'); if (isset($criteria['featureCode']) || isset($criteria['featureClass'])) { $dqb->join('p.feature', 'f'); if (isset($criteria['featureClass'])) { $dqb->join('f.parent', 'fp'); } } $dqb->where($dqb->expr()->andX(isset($criteria['countryCode']) ? $dqb->expr()->orX($dqb->expr()->eq('p.countryCode', ':countryCode'), empty($criteria['countryCode']) ? $dqb->expr()->isNull('p.countryCode') : null) : null, isset($criteria['admin1Code']) ? $dqb->expr()->orX($dqb->expr()->eq('p.admin1Code', ':admin1Code'), empty($criteria['admin1Code']) ? $dqb->expr()->isNull('p.admin1Code') : null) : null, isset($criteria['admin2Code']) ? $dqb->expr()->orX($dqb->expr()->eq('p.admin2Code', ':admin2Code'), empty($criteria['admin2Code']) ? $dqb->expr()->isNull('p.admin2Code') : null) : null, isset($criteria['admin3Code']) ? $dqb->expr()->orX($dqb->expr()->eq('p.admin3Code', ':admin3Code'), empty($criteria['admin3Code']) ? $dqb->expr()->isNull('p.admin3Code') : null) : null, isset($criteria['admin4Code']) ? $dqb->expr()->orX($dqb->expr()->eq('p.admin4Code', ':admin4Code'), empty($criteria['admin4Code']) ? $dqb->expr()->isNull('p.admin4Code') : null) : null, isset($criteria['featureCode']) ? $dqb->expr()->orX($dqb->expr()->eq('f.code', ':featureCode'), empty($criteria['featureCode']) ? $dqb->expr()->isNull('f.code') : null) : null, isset($criteria['featureClass']) ? $dqb->expr()->orX($dqb->expr()->eq('fp.code', ':featureClass'), empty($criteria['featureClass']) ? $dqb->expr()->isNull('fp.code') : null) : null))->setMaxResults($limit); foreach ($criteria as $key => $value) { $dqb->setParameter($key, $value); } return $dqb->getQuery()->getResult(); }
/** * Update pickup place * * @param string $code Pickup place code * @param array $placeData Place data * @param string $errorMessage Error message * * @return bool|string Return place code or false in case of an error */ public function updatePlace($code, array $placeData, &$errorMessage = '') { ArgValidator::assert($code, ['string', 'int', 'notEmpty']); ArgValidator::arrayAssert($placeData, $this->requiredFieldsForAddPlace); return $this->_updatePlace(array_merge($placeData, ['code' => $code]), $errorMessage); }
/** * Get delivery tariffs * * @param array $parameters Parameters * * @return bool|array|null Return all delivery tariffs, null if result is empty or false in case of an error */ public function getTariffs(array $parameters) { ArgValidator::arrayAssert($parameters, ['from_city_code' => 'int', 'weight' => ['float', 'int', 'notEmpty'], 'order_length' => ['float', 'int', 'notSet'], 'order_width' => ['float', 'int', 'notSet'], 'order_height' => ['float', 'int', 'notSet'], 'delivery_type' => ['string', 'notEmpty'], 'num' => ['int', 'notEmpty'], 'max_price' => ['int', 'min' => 0, 'notEmpty']]); if (!$this->callMethod('get_all_tarifs', $parameters)) { return false; } return $this->returnAsArrayList('tarifs', 'tarif'); }