first commit
This commit is contained in:
146
modules/dpdpoland/controllers/service.php
Normal file
146
modules/dpdpoland/controllers/service.php
Normal file
@@ -0,0 +1,146 @@
|
||||
<?php
|
||||
/**
|
||||
* 2019 DPD Polska Sp. z o.o.
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Open Software License (OSL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://opensource.org/licenses/osl-3.0.php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* prestashop@dpd.com.pl so we can send you a copy immediately.
|
||||
*
|
||||
* @author DPD Polska Sp. z o.o.
|
||||
* @copyright 2019 DPD Polska Sp. z o.o.
|
||||
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
||||
* International Registered Trademark & Property of DPD Polska Sp. z o.o.
|
||||
*/
|
||||
|
||||
if (!defined('_PS_VERSION_'))
|
||||
exit;
|
||||
|
||||
/**
|
||||
* Class DpdPolandService Responsible for DPD services (carriers) management
|
||||
*/
|
||||
class DpdPolandService
|
||||
{
|
||||
/**
|
||||
* DPD carriers images directory name
|
||||
*/
|
||||
const IMG_DIR = 'DPD_services';
|
||||
|
||||
/**
|
||||
* DPD carriers images extension
|
||||
*/
|
||||
const IMG_EXTENSION = 'jpg';
|
||||
|
||||
/**
|
||||
* @var Module Module instance
|
||||
*/
|
||||
protected $module_instance;
|
||||
|
||||
/**
|
||||
* DpdPolandService class constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->module_instance = Module::getInstanceByName('dpdpoland');
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete existing carrier
|
||||
*
|
||||
* @param int $id_carrier ID of carrier to delete
|
||||
* @return boolean Carrier deleted successfully
|
||||
*/
|
||||
protected static function deleteCarrier($id_carrier)
|
||||
{
|
||||
if (!$id_carrier)
|
||||
return true;
|
||||
|
||||
if (version_compare(_PS_VERSION_, '1.5', '<'))
|
||||
{
|
||||
$id_carrier = (int)DpdPolandCarrier::getIdCarrierByReference((int)$id_carrier);
|
||||
$carrier = new Carrier((int)$id_carrier);
|
||||
}
|
||||
else
|
||||
$carrier = Carrier::getCarrierByReference($id_carrier);
|
||||
|
||||
if (!Validate::isLoadedObject($carrier))
|
||||
return true;
|
||||
|
||||
if ($carrier->deleted)
|
||||
return true;
|
||||
|
||||
$carrier->deleted = 1;
|
||||
|
||||
return (bool)$carrier->save();
|
||||
}
|
||||
|
||||
/**
|
||||
* Assigns PrestaShop customer groups for carrier on PS 1.4
|
||||
*
|
||||
* @param int $id_carrier Carrier ID
|
||||
* @param array $groups Groups IDs
|
||||
* @return bool Groups successfully assigned for carrier
|
||||
*/
|
||||
protected static function setGroups14($id_carrier, $groups)
|
||||
{
|
||||
foreach ($groups as $id_group)
|
||||
if (!Db::getInstance()->execute('
|
||||
INSERT INTO `'._DB_PREFIX_.'carrier_group`
|
||||
(`id_carrier`, `id_group`)
|
||||
VALUES
|
||||
("'.(int)$id_carrier.'", "'.(int)$id_group.'")
|
||||
'))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assigns customer groups for carrier on PS 1.5 and PS 1.6
|
||||
*
|
||||
* @param Carrier $carrier Carrier object
|
||||
* @return bool Customer groups successfully assigned for carrier
|
||||
*/
|
||||
protected static function assignCustomerGroupsForCarrier($carrier)
|
||||
{
|
||||
$groups = array();
|
||||
|
||||
foreach (Group::getGroups((int)Context::getContext()->language->id) as $group)
|
||||
$groups[] = $group['id_group'];
|
||||
|
||||
if (version_compare(_PS_VERSION_, '1.5.5', '<'))
|
||||
{
|
||||
if (!self::setGroups14((int)$carrier->id, $groups))
|
||||
return false;
|
||||
}
|
||||
else
|
||||
if (!$carrier->setGroups($groups))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns carrier according to it's reference
|
||||
*
|
||||
* @param string|int $reference Carrier reference
|
||||
* @return bool|Carrier Carrier object
|
||||
*/
|
||||
public static function getCarrierByReference($reference)
|
||||
{
|
||||
if (version_compare(_PS_VERSION_, '1.5', '<'))
|
||||
{
|
||||
$id_carrier = (int)DpdPolandCarrier::getIdCarrierByReference($reference);
|
||||
$carrier = new Carrier((int)$id_carrier);
|
||||
}
|
||||
else
|
||||
$carrier = Carrier::getCarrierByReference((int)$reference);
|
||||
|
||||
return $carrier;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user