123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- <?php
- /**
- *
- * PHP Pro Bid $Id$ lJDOdMT1an/qHaOrKol6U2qTA6skzLsfxcaYnijNI5s=
- *
- * @link http://www.phpprobid.com
- * @copyright Copyright (c) 2014 Online Ventures Software LTD & CodeCube SRL
- * @license http://www.phpprobid.com/license Commercial License
- *
- * @version 7.0
- */
- /**
- * shipping carriers and carrier settings tables service class
- */
- namespace Ppb\Service\Table;
- use Ppb\Db\Table,
- Cube\Db\Expr;
- class ShippingCarriers extends AbstractServiceTable
- {
- /**
- *
- * gateways settings table
- *
- * @var \Ppb\Db\Table\ShippingCarriersSettings
- */
- protected $_shippingCarriersSettings;
- /**
- *
- * class constructor
- */
- public function __construct()
- {
- parent::__construct();
- $this->setTable(
- new Table\ShippingCarriers());
- $this->setShippingCarriersSettings();
- }
- /**
- *
- * set the table that will be used by the service
- *
- * @param \Ppb\Db\Table\ShippingCarriersSettings $shippingCarriersSettings
- * @return \Ppb\Service\Table\ShippingCarriers
- */
- public function setShippingCarriersSettings(Table\ShippingCarriersSettings $shippingCarriersSettings = null)
- {
- if (!$shippingCarriersSettings instanceof Table\ShippingCarriersSettings) {
- $shippingCarriersSettings = new Table\ShippingCarriersSettings();
- }
- $this->_shippingCarriersSettings = $shippingCarriersSettings;
- return $this;
- }
- /**
- *
- * get gateways data from the 'shipping_carriers' and 'shipping_carriers_settings' tables
- *
- * @param int $carrierIds carrier ids (to fetch data for specific carriers)
- * @param bool $activeOnly show only active carriers
- * @return array
- */
- public function getData($carrierIds = null, $activeOnly = false)
- {
- $select = $this->_table->select();
- if ($carrierIds !== null) {
- $select->where('id IN (?)', new Expr(implode(', ', (array)$carrierIds)));
- }
- if ($activeOnly) {
- $select->where('enabled = ?', 1);
- }
- $carriers = $this->fetchAll($select)->toArray();
- foreach ($carriers as $key => $carrier) {
- $select = $this->_shippingCarriersSettings->select()
- ->where('carrier_id = ?', $carrier['id']);
- $carrierParams = $this->fetchAll($select);
- foreach ($carrierParams as $param) {
- $carriers[$key][$param['name']] = $param['value'];
- }
- }
- return (count($carriers) == 1) ? $carriers[0] : $carriers;
- }
- /**
- *
- * get all active carriers
- *
- * @return array
- */
- public function getMultiOptions()
- {
- $data = array();
- $translate = $this->getTranslate();
- $select = $this->_table->select()
- ->where('enabled = ?', 1);
- $rows = $this->_table->fetchAll($select);
- foreach ($rows as $row) {
- $data[(string)$row['id']] = $translate->_($row['name']);
- }
- return $data;
- }
- /**
- *
- * save data in the tables (for the 'shipping_carriers_settings' table, insert if key doesnt exist or update if it does)
- *
- * @param array $data
- * @return \Ppb\Service\Table\ShippingCarriers
- * @throws \InvalidArgumentException
- */
- public function save(array $data)
- {
- if (!isset($data['id'])) {
- throw new \InvalidArgumentException("The form must use an element with the name 'id'.");
- }
- $columns = array('id', 'enabled');
- $params = $data;
- foreach ($data as $key => $value) {
- if (!in_array($key, $columns)) {
- unset($data[$key]);
- }
- else {
- unset($params[$key]);
- }
- }
- foreach ($params as $key => $param) {
- $carrierId = key($param);
- $value = $param[$carrierId];
- $select = $this->_shippingCarriersSettings->select()
- ->where('name = ?', $key)
- ->where('carrier_id = ?', $carrierId);
- $row = $this->_shippingCarriersSettings->fetchRow($select);
- if (count($row) > 0) {
- $this->_shippingCarriersSettings->update(
- array('value' => $value), "id = '{$row['id']}'");
- }
- else {
- $input = array(
- 'name' => $key,
- 'value' => $value,
- 'carrier_id' => $carrierId,
- );
- $this->_shippingCarriersSettings->insert($input);
- }
- }
- parent::save($data);
- return $this;
- }
- public function getColumns()
- {
- }
- public function getElements()
- {
- }
- }
|