122 lines
4.3 KiB
PHP
122 lines
4.3 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 Mailjet;
|
|
|
|
use Propel\Runtime\Connection\ConnectionInterface;
|
|
use Symfony\Component\Filesystem\Filesystem;
|
|
use Thelia\Install\Database;
|
|
use Thelia\Model\Config;
|
|
use Thelia\Model\ConfigQuery;
|
|
use Thelia\Module\BaseModule;
|
|
|
|
/**
|
|
* Class Mailjet
|
|
* @package Mailjet
|
|
* @author Benjamin Perche <bperche@openstudio.com>
|
|
*/
|
|
class Mailjet extends BaseModule
|
|
{
|
|
const MESSAGE_DOMAIN = "mailjet";
|
|
|
|
const CONFIG_NEWSLETTER_LIST = "mailjet.newsletter_list";
|
|
const CONFIG_API_KEY = "mailjet.api.key";
|
|
const CONFIG_API_SECRET = "mailjet.api.secret";
|
|
const CONFIG_API_WS_ADDRESS = "mail.api.webservice_address";
|
|
const CONFIG_THROW_EXCEPTION_ON_ERROR = "mailjet.throw_exception_on_error";
|
|
|
|
public function postActivation(ConnectionInterface $con = null)
|
|
{
|
|
$con->beginTransaction();
|
|
|
|
try {
|
|
if (null === ConfigQuery::read(static::CONFIG_API_KEY)) {
|
|
$this->createConfigValue(static::CONFIG_API_KEY, [
|
|
"fr_FR" => "Clé d'API pour mailjet",
|
|
"en_US" => "Api key for mailjet",
|
|
]);
|
|
}
|
|
|
|
if (null === ConfigQuery::read(static::CONFIG_API_SECRET)) {
|
|
$this->createConfigValue(static::CONFIG_API_SECRET, [
|
|
"fr_FR" => "Secret d'API pour mailjet",
|
|
"en_US" => "Api secret for mailjet",
|
|
]);
|
|
}
|
|
|
|
if (null === ConfigQuery::read(static::CONFIG_NEWSLETTER_LIST)) {
|
|
$this->createConfigValue(static::CONFIG_NEWSLETTER_LIST, [
|
|
"fr_FR" => "ALT de la liste de diffusion mailjet",
|
|
"en_US" => "Diffusion list ALT of mailjet",
|
|
]);
|
|
}
|
|
|
|
if (null === ConfigQuery::read(static::CONFIG_API_WS_ADDRESS)) {
|
|
$this->createConfigValue(
|
|
static::CONFIG_API_WS_ADDRESS,
|
|
[
|
|
"fr_FR" => "Adresse du webservice mailjet",
|
|
"en_US" => "Address of the mailjet webservice",
|
|
],
|
|
"https://api.mailjet.com/v3/REST"
|
|
);
|
|
}
|
|
|
|
$database = new Database($con);
|
|
$database->insertSql(null, [__DIR__ . "/Config/thelia.sql"]);
|
|
|
|
$con->commit();
|
|
} catch (\Exception $e) {
|
|
$con->rollBack();
|
|
|
|
throw $e;
|
|
}
|
|
}
|
|
|
|
protected function createConfigValue($name, array $translation, $value = '')
|
|
{
|
|
$config = new Config();
|
|
$config
|
|
->setName($name)
|
|
->setValue($value)
|
|
;
|
|
|
|
foreach ($translation as $locale => $title) {
|
|
$config->getTranslation($locale)
|
|
->setTitle($title)
|
|
;
|
|
}
|
|
|
|
$config->save();
|
|
}
|
|
|
|
|
|
/**
|
|
* @param string $currentVersion
|
|
* @param string $newVersion
|
|
* @param ConnectionInterface $con
|
|
*/
|
|
public function update($currentVersion, $newVersion, ConnectionInterface $con = null)
|
|
{
|
|
if ($newVersion === '1.3.2') {
|
|
$db = new Database($con);
|
|
|
|
$tableExists = $db->execute("SHOW TABLES LIKE 'mailjet_newsletter'")->rowCount();
|
|
|
|
if ($tableExists) {
|
|
// Le champ relation ID change de format.
|
|
$db->execute("ALTER TABLE `mailjet_newsletter` CHANGE `relation_id` `relation_id` varchar(255) NOT NULL AFTER `email`");
|
|
}
|
|
}
|
|
}
|
|
}
|