Files
domokits/local/modules/ColissimoLabel/ColissimoLabel.php
Laurent LE CORRE 649c92e52f Ajout des modules ColissimoWs et ColissimoLabel.php
Ne pas oublier de vérifier si les tables nécessaires sont bien créées en BDD.
2020-05-07 11:45:31 +02:00

171 lines
5.6 KiB
PHP

<?php
/*************************************************************************************/
/* This file is part of the Thelia package. */
/* */
/* Copyright (c) OpenStudio */
/* email : dev@thelia.net */
/* web : http://www.thelia.net */
/* */
/* For the full copyright and license information, please view the LICENSE.txt */
/* file that was distributed with this source code. */
/*************************************************************************************/
namespace ColissimoLabel;
use ColissimoLabel\Request\Helper\OutputFormat;
use Propel\Runtime\Connection\ConnectionInterface;
use Symfony\Component\Filesystem\Filesystem;
use Thelia\Module\BaseModule;
use Thelia\Install\Database;
/**
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
*/
class ColissimoLabel extends BaseModule
{
/** @var string */
const DOMAIN_NAME = 'colissimolabel';
const LABEL_FOLDER = THELIA_LOCAL_DIR . 'colissimo-label';
const BORDEREAU_FOLDER = self::LABEL_FOLDER . DIRECTORY_SEPARATOR . 'bordereau';
const CONFIG_KEY_DEFAULT_LABEL_FORMAT = 'default-label-format';
const CONFIG_KEY_CONTRACT_NUMBER = 'contract-number';
const CONFIG_KEY_PASSWORD = 'password';
const CONFIG_KEY_AUTO_SENT_STATUS = 'auto-sent-status';
const CONFIG_DEFAULT_AUTO_SENT_STATUS = 1;
const CONFIG_KEY_SENT_STATUS_ID = 'sent-status-id';
const CONFIG_DEFAULT_SENT_STATUS_ID = 4;
const CONFIG_KEY_PRE_FILL_INPUT_WEIGHT = 'pre-fill-input-weight';
const CONFIG_DEFAULT_PRE_FILL_INPUT_WEIGHT = 1;
const CONFIG_KEY_LAST_BORDEREAU_DATE = 'last-bordereau-date';
const CONFIG_DEFAULT_KEY_LAST_BORDEREAU_DATE = 1970;
/**
* @param ConnectionInterface $con
*/
public function postActivation(ConnectionInterface $con = null)
{
static::checkLabelFolder();
if (!$this->getConfigValue('is_initialized', false)) {
$database = new Database($con);
$database->insertSql(null, [__DIR__ . "/Config/thelia.sql"]);
$this->setConfigValue('is_initialized', true);
}
$this->checkConfigurationsValues();
}
public function update($currentVersion, $newVersion, ConnectionInterface $con = null)
{
parent::update($currentVersion, $newVersion, $con);
$this->checkConfigurationsValues();
}
protected function checkConfigurationsValues()
{
if (null === self::getConfigValue(self::CONFIG_KEY_DEFAULT_LABEL_FORMAT)) {
self::setConfigValue(
self::CONFIG_KEY_DEFAULT_LABEL_FORMAT,
OutputFormat::OUTPUT_PRINTING_TYPE_DEFAULT
);
}
if (null === self::getConfigValue(self::CONFIG_KEY_CONTRACT_NUMBER)) {
self::setConfigValue(
self::CONFIG_KEY_CONTRACT_NUMBER,
""
);
}
if (null === self::getConfigValue(self::CONFIG_KEY_PASSWORD)) {
self::setConfigValue(
self::CONFIG_KEY_PASSWORD,
""
);
}
if (null === self::getConfigValue(self::CONFIG_KEY_AUTO_SENT_STATUS)) {
self::setConfigValue(
self::CONFIG_KEY_AUTO_SENT_STATUS,
self::CONFIG_DEFAULT_AUTO_SENT_STATUS
);
}
if (null === self::getConfigValue(self::CONFIG_KEY_SENT_STATUS_ID)) {
self::setConfigValue(
self::CONFIG_KEY_SENT_STATUS_ID,
self::CONFIG_DEFAULT_SENT_STATUS_ID
);
}
if (null === self::getConfigValue(self::CONFIG_KEY_AUTO_SENT_STATUS)) {
self::setConfigValue(
self::CONFIG_KEY_AUTO_SENT_STATUS,
self::CONFIG_DEFAULT_AUTO_SENT_STATUS
);
}
if (null === self::getConfigValue(self::CONFIG_KEY_PRE_FILL_INPUT_WEIGHT)) {
self::setConfigValue(
self::CONFIG_KEY_PRE_FILL_INPUT_WEIGHT,
self::CONFIG_DEFAULT_PRE_FILL_INPUT_WEIGHT
);
}
if (null === self::getConfigValue(self::CONFIG_KEY_LAST_BORDEREAU_DATE)) {
self::setConfigValue(
self::CONFIG_KEY_LAST_BORDEREAU_DATE,
self::CONFIG_DEFAULT_KEY_LAST_BORDEREAU_DATE
);
}
}
public static function checkLabelFolder()
{
$fileSystem = new Filesystem();
if (!$fileSystem->exists(self::LABEL_FOLDER)) {
$fileSystem->mkdir(self::LABEL_FOLDER);
}
if (!$fileSystem->exists(self::BORDEREAU_FOLDER)) {
$fileSystem->mkdir(self::BORDEREAU_FOLDER);
}
}
public static function getLabelPath($number, $extension)
{
return self::LABEL_FOLDER . DIRECTORY_SEPARATOR . $number . '.' . $extension;
}
public static function getLabelCN23Path($number, $extension)
{
return self::LABEL_FOLDER . DIRECTORY_SEPARATOR . $number . '.' . $extension;
}
public static function getBordereauPath($date)
{
return self::BORDEREAU_FOLDER . DIRECTORY_SEPARATOR . $date . '.pdf';
}
public static function getExtensionFile()
{
return strtolower(substr(ColissimoLabel::getConfigValue(ColissimoLabel::CONFIG_KEY_DEFAULT_LABEL_FORMAT), 0, 3));
}
}