Compare commits

...

18 Commits

Author SHA1 Message Date
llaniau 992ba3a103 MEP V2.5.0 2021-01-05 17:52:14 +01:00
llaniau 992f61867e Modif User 2021-01-05 17:32:57 +01:00
llaniau 72b119ac0c Mail envoyé avec tous les environnements 2021-01-05 15:19:37 +01:00
llaniau 831f7696ac REdirection dashboard 2021-01-05 13:28:59 +01:00
llaniau 5a44f7d6ec Bug170 : suppression user 2021-01-05 11:13:38 +01:00
llaniau ddbfcc8a69 Changement de version 2021-01-04 14:08:07 +01:00
llaniau 61925ebb38 Mise en place de mailJet
Bug de connexion
2020-12-24 10:18:57 +01:00
llaniau 0bb341b7ce version patch prod 2020-12-24 09:33:47 +01:00
llaniau 74f2e45edf Changement de version dans config.yml 2020-12-21 10:07:28 +01:00
llaniau 5d660ebc8b Patch pour pallier parameters 2020-12-17 08:53:23 +01:00
llaniau a31e49278b V2.4.0.1 2020-12-16 15:36:48 +01:00
llaniau b13d0d939f version sur footer 2020-12-16 15:34:57 +01:00
llaniau e470c8dce1 patch 5 prod 2020-12-16 10:35:00 +01:00
llaniau 8eeaf240de patch 4 prod 2020-12-16 10:33:28 +01:00
llaniau 18144e395c Patch 3 Prod 2020-12-16 10:26:29 +01:00
llaniau f53815aa1a Patch 2 prod 2020-12-16 10:16:42 +01:00
llaniau bab23a58ac Patch prod V2.4.0 2020-12-16 10:10:52 +01:00
llaniau 9346635ca7 Packaging MEP V2.4.0 2020-12-15 13:32:21 +01:00
23 changed files with 1628 additions and 42 deletions
@@ -0,0 +1,8 @@
UPDATE ad SET competences = '{"competences" : [{ "id1" : "libelle 1"},{ "id2" : "libelle 2"},{ "id3" : "libelle 3" }]}' WHERE id =1;
UPDATE ad SET competences = '{ "id1" : "libelle 1", "id2" : "libelle 2", "id3" : "libelle 3" }' WHERE id =1;
UPDATE ad SET competences = '{ "id1" : "libelle 1" }' WHERE id =31;
UPDATE ad SET competences = '{ "id2" : "libelle 2", "id3" : "libelle 3"}' WHERE id =29;
SELECT id FROM "ad" WHERE competences::jsonb @> '{ "id1" : "libelle 1"}'::jsonb LIMIT 10;
SELECT id FROM "ad" WHERE competences::jsonb ? 'id1' LIMIT 10;
SELECT competences::jsonb @> '{ "id1" : "libelle 1"}'::jsonb FROM "ad" WHERE id=1 LIMIT 1;
SELECT * FROM "ad" WHERE id = 1 or id=31 or id =29;
@@ -15,7 +15,7 @@
<!-- Required Meta Tags Always Come First -->
<meta charset="utf-8">
<meta name="robots" content="noindex,nofollow">
{# <meta name="robots" content="noindex,nofollow"> #}
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
{% block meta %}
{% endblock %}
@@ -49,6 +49,10 @@
<a href="{{ path('company_profile') }}">à les remplir ici. <i class="fa fa-link" aria-hidden="true"></i></a>
</div>
</div>
<script>
document.location.href="/entreprise/me/profil";
</script>
{# {{ render("/entreprise/me/profil") }} #}
</div>
{% endif %}
@@ -19,7 +19,8 @@
<!-- Title -->
<header class="text-center mb-5">
<h2 class="h4 mb-0">Connexion</h2>
<p>Connectez-vous pour gérer votre compte</p>
<p>Connectez-vous pour gérer votre compte </p>
{% if erreur is defined and erreur %}<p class="text-danger">Votre dernière tentative de connexion a échoué. Vérifiez votre email ou votre mot de passe</p>{% endif %}
</header>
@@ -143,4 +144,4 @@
<!-- End Content -->
</div>
<!-- End Signup Modal Window -->
<!-- ========== END SECONDARY CONTENTS ========== -->
<!-- ========== END SECONDARY CONTENTS ========== -->
@@ -36,8 +36,7 @@
<li><a class="list-group-item list-group-item-action" href="{{ path('cgu') }}" target="_blank">CGU</a></li>
<li><a class="list-group-item list-group-item-action" href="{{ path('politique-confidentialite') }}" target="_blank">Politique de confidentialité</a></li>
<li><a class="list-group-item list-group-item-action" href="{{ path('abonnement') }}" >Tarifs</a></li>
<li><a class="list-group-item list-group-item-action" href="https://blog.talentstube.com/contact" target="_blank"
">Contact</a></li>
<li><a class="list-group-item list-group-item-action" href="https://blog.talentstube.com/contact" target="_blank">Contact</a></li>
</ul>
<!-- End Links -->
</div>
+2 -1
View File
@@ -80,7 +80,8 @@ twig:
globals:
push_public_key: "%push_params.public_key%"
fairlane_cookie_consent: '@fairlane_cookie_consent.twig'
version: '%app.version%'
version: '2.5.0'
# Swiftmailer Configuration
@@ -26,7 +26,7 @@ parameters:
elastic_host: tt-website.elasticsearch.dev
elastic_port: 9200
delivery_addresses: l.laniau@talentstube.com
app.version: 2.3.5
app.version: 2.3.6
push_params:
push_notification_file_path: '%kernel.root_dir%/../web/push/'
push_network_config:
@@ -31,7 +31,7 @@ parameters:
elastic_host: tt-website.elasticsearch.preprod
elastic_port: 9200
delivery_addresses: l.laniau@talentstube.com
app.version: 2.3.5
app.version: 2.3.6
push_params:
push_notification_file_path: '%kernel.root_dir%/../web/push/'
push_network_config:
@@ -30,7 +30,7 @@ parameters:
elastic_host: tt-website.elasticsearch.prod
elastic_port: 9200
delivery_addresses: l.laniau@talentstube.com
app.version: 2.3.4
app.version: 2.4.0
push_params:
push_notification_file_path: '%kernel.root_dir%/../web/push/'
push_network_config:
+2 -1
View File
@@ -60,7 +60,8 @@
"willdurand/hateoas-bundle": "^1.4",
"lexik/jwt-authentication-bundle": "^2.5",
"nelmio/cors-bundle": "^1.5",
"onurb/doctrine-yuml-bundle": "^1.1"
"onurb/doctrine-yuml-bundle": "^1.1",
"mailjet/mailjet-apiv3-php": "^1.5"
},
"require-dev": {
"sensio/generator-bundle": "^3.0",
@@ -108,12 +108,16 @@ class UserController extends Controller
}
\assert(!\is_null($user));
// $company = $user->getCompany();
$company = $user->getCompany();
// if ($company) {
// $company->setPresentationVideo(null);
// $em->persist($company);
// $em->flush();
// $em->remove($company);
// $em->flush();
// }
if ($company) {
$company->setPresentationVideo(null);
$em->persist($company);
$em->flush();
}
$this->deleteRelation($user);
$em->remove($user);
$em->flush();
@@ -125,7 +129,7 @@ class UserController extends Controller
// if ($company) {
// $em->remove($company);
// }
$em->flush();
//$em->flush();
return $this->redirectToRoute('admin_config_others_user');
}
@@ -133,13 +137,14 @@ class UserController extends Controller
public function deleteRelation($user)
{
$em = $this->getDoctrine()->getManager();
//$company = $em->getRepository('AppBundle:Company')->find($companyId);
$sendMessage = $em->getRepository('AppBundle:Message')->findBy(array('sender' => $user));
if ($sendMessage) {
foreach ($sendMessage as $key => $message) {
$message->setSender(null);
$message->setAnswer(null);
}
$em->flush();
}
@@ -160,6 +165,14 @@ class UserController extends Controller
$em->flush();
}
$subscriptions = $em->getRepository('AppBundle:UserSubscription')->findBy(array('user' => $user));
if ($subscriptions) {
foreach ($subscriptions as $key => $subscription) {
$em->remove($subscription);
}
$em->flush();
}
$answers = $em->getRepository('AppBundle:Answer')->findBy(array('user' => $user));
if ($answers) {
foreach ($answers as $key => $answer) {
@@ -194,6 +207,12 @@ class UserController extends Controller
$medias = $em->getRepository('AppBundle:Media')->findBy(array('creator' => $user));
if ($medias) {
// foreach ($medias as $key => $media) {
// $media->setCompany(null);
// $em->persist($media);
// $em->flush();
// }
foreach ($medias as $key => $media) {
$em->remove($media);
}
@@ -160,7 +160,7 @@ class AnswerController extends FOSRestController
$message->setVideo($video);
$em->persist($message);
$em->flush();*/
if ($this->container->get( 'kernel' )->getEnvironment() != "dev") {
// if ($this->container->get( 'kernel' )->getEnvironment() != "dev") {
$mailManager = $this->get('app.mail_manager');
foreach ($usersCompany as $user){
$link = $this->generateUrl('company_answer_show', array('id' => $answer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
@@ -188,7 +188,7 @@ class AnswerController extends FOSRestController
'contact_default'
);
}
}
// }
$status = array('status' => "success", "idAnswer" => $answer->getId()/*, "idMessage" => $message->getId()*/);
}
} else {
@@ -322,6 +322,7 @@ class AnswerController extends FOSRestController
$status = array('status' => "success", "companyUpdated" => false);
//dump($file);
// If a file was uploaded
//TODO Controle sur l'extension du fichier (pdf, word)
if (!is_null($file)) {
$companyManager = $this->get('app.company_manager');
@@ -17,6 +17,11 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;
use AppBundle\Entity\Mailjet;
use AppBundle\Entity\Response;
use AppBundle\Entity\Resources;
use AppBundle\Entity\Config;
use AppBundle\Entity\Client;
class CompanyController extends Controller
{
@@ -222,16 +227,30 @@ class CompanyController extends Controller
'message' => $message,
'type' => 'html'
));
$body ="";
$email = \Swift_Message::newInstance()
->setSubject("Rejoignez l'équipe ".$company->getBrandName()." sur Talents Tube." )
->setFrom($this->getParameter('mailer_user'))
->setReplyTo($this->getParameter('mailer_user'))
->setTo($user->getEmail())
->setBody($plainView, 'text/html')
// ->addPart($plainView, 'text/plain')
;
$retour = $this->get('mailer')->send($email);
//$body ="";
$mj = new Client('355697fac93fca865660734b4fdffaeb', 'ddecf75321ca89c09e561857b13534c8');
$body = [
'FromEmail' => $this->getParameter('mailer_user'),
'FromName' => "Talents Tube",
'Subject' => "Rejoignez l'équipe ".$company->getBrandName()." sur Talents Tube.",
//'Text-part' => "Dear passenger, welcome to Mailjet! May the delivery force be with you!",
'Html-part' => $plainView,
'Recipients' => [
['Email' => $user->getEmail()]
]
];
$response = $mj->post(Resources::$Email, ['body' => $body]);
$response->success() && var_dump($response->getData());
// $email = \Swift_Message::newInstance()
// ->setSubject("Rejoignez l'équipe ".$company->getBrandName()." sur Talents Tube." )
// ->setFrom($this->getParameter('mailer_user'))
// ->setReplyTo($this->getParameter('mailer_user'))
// ->setTo($user->getEmail())
// ->setBody($plainView, 'text/html')
// // ->addPart($plainView, 'text/plain')
// ;
// $retour = $this->get('mailer')->send($email);
//var_dump($mailManager);
return $this->redirectToRoute('users');
}else{
@@ -6,7 +6,11 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Core\Security;
use AppBundle\Entity\Mailjet;
use AppBundle\Entity\Response;
use AppBundle\Entity\Resources;
use AppBundle\Entity\Config;
use AppBundle\Entity\Client;
class DefaultController extends Controller
{
/**
@@ -69,7 +73,27 @@ class DefaultController extends Controller
*/
public function homepagev2Action(Request $request)
{
//$em = $this->getDoctrine()->getManager();
//US444
// $mj = new Client('805b8adce80bc6aa9422ddff20bb4171', 'f3bce955f21bc9456d65245c50e8c512');
// $body = [
// 'FromEmail' => "l.laniau@talentstube.com",
// 'FromName' => "Mailjet Pilot",
// 'Subject' => "Your email flight plan!",
// 'MJ-TemplateID' =>2087555 ,
// 'MJ-TemplateLanguage' => true,
// 'Recipients' => [
// ['Email' => "l.laniau@talentstube.com", 'Vars' => ['lien' => 'www.talentstube.com']]
// ]
// ];
// $response = $mj->post(Resources::$Email, ['body' => $body]);
// $response->success() && var_dump($response->getData());
// dump($response);
//FIN US444
//$em = $this->getDoctrine()->getManager();
// $ads = $em->getRepository('AppBundle:Ad')->findBy(array("status" => "PUBLISHED", "emphasis" => true, "isPromoted" => false), array('emphasisOrder' => 'DESC'));
// if (!$ads) {
// $ads = $em->getRepository('AppBundle:Ad')->findBy(array("status" => "PUBLISHED", "isPromoted" => false), array('id' => 'DESC'));
@@ -111,14 +135,20 @@ class DefaultController extends Controller
$csrfToken = $params["csrfToken"];
$error = $params["error"];
$destination_login = "admin/dashboard";
$erreur = false;
if($request->query->get('erreur')){
$erreur = $request->query->get('erreur');
}
//$mj = new \Mailjet\Client('805b8adce80bc6aa9422ddff20bb4171', 'f3bce955f21bc9456d65245c50e8c512');
//dump($mj);
//var_dump($mailManager);
return $this->render(
'defaultv2/accueil/index.html.twig', [
'last_username' => $usename,
'csrf_token' => $csrfToken,
'error' => $error,
'destination_login' => $destination_login
'destination_login' => $destination_login,
'erreur' => $erreur
//'ads' => $ads,
//'companies' => $arrayCompany,
//'talents' => $arrayTalents,
@@ -331,17 +361,18 @@ class DefaultController extends Controller
return $this->redirectToRoute('admin_dashboard');
} elseif ($user->hasRole('ROLE_TALENT')) {
return $this->redirectToRoute('talent_dashboard');
return $this->redirect('https://www.talentstube.com');
//return $this->redirectToRoute('talent_dashboard');
} elseif ($user->hasRole('ROLE_COMPANY')) {
return $this->redirectToRoute('company_dashboard');
// return $this->redirectToRoute('company_profile');
}
} else {
return $this->redirectToRoute('homepage');
return $this->redirectToRoute('/homepage');
}
return $this->redirectToRoute('homepage');
return $this->redirectToRoute('/homepage');
}
@@ -0,0 +1,425 @@
<?php
declare(strict_types=1);
/*
* Copyright (C) 2013 Mailgun
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
namespace AppBundle\Entity;
class Client
{
const WRAPPER_VERSION = Config::WRAPPER_VERSION;
/**
* connect_timeout: (float, default=2) Float describing the number of
* seconds to wait while trying to connect to a server. Use 0 to wait
* indefinitely (the default behavior).
*/
const CONNECT_TIMEOUT = 'connect_timeout';
/**
* timeout: (float, default=15) Float describing the timeout of the
* request in seconds. Use 0 to wait indefinitely (the default behavior).
*/
const TIMEOUT = 'timeout';
/**
* proxy: (array, default=none) Array describing the proxy options used by guzzle client
* See guzzle-http for specification.
*/
const PROXY = 'proxy';
private $apikey;
private $apisecret;
private $apitoken;
private $version = Config::MAIN_VERSION;
private $url = Config::MAIN_URL;
private $secure = Config::SECURED;
private $call = true;
private $settings = [];
private $changed = false;
private $requestOptions = [
self::TIMEOUT => 15,
self::CONNECT_TIMEOUT => 2,
];
private $smsResources = [
'send',
'sms',
'sms-send',
];
private $dataAction = [
'csverror/text:csv',
'csvdata/text:plain',
'JSONError/application:json/LAST',
];
/**
* Client constructor requires:.
*
* @param string $key Mailjet API Key
* @param string|null $secret Mailjet API Secret
* @param bool $call performs the call or not
* @param array $settings
*/
public function __construct(string $key, string $secret = null, bool $call = true, array $settings = [])
{
$this->setAuthentication($key, $secret, $call, $settings);
}
/**
* Trigger a POST request.
*
* @param array $resource Mailjet Resource/Action pair
* @param array $args Request arguments
* @param array $options
* @return Response
*/
public function post(array $resource, array $args = [], array $options = []): Response
{
if (!empty($options)) {
$this->setOptions($options, $resource);
}
$result = $this->_call('POST', $resource[0], $resource[1], $args);
if (!empty($this->changed)) {
$this->setSettings();
}
return $result;
}
/**
* Trigger a GET request.
*
* @param array $resource Mailjet Resource/Action pair
* @param array $args Request arguments
* @param array $options
* @return Response
*/
public function get(array $resource, array $args = [], array $options = []): Response
{
if (!empty($options)) {
$this->setOptions($options, $resource);
}
$result = $this->_call('GET', $resource[0], $resource[1], $args);
if (!empty($this->changed)) {
$this->setSettings();
}
return $result;
}
/**
* Trigger a POST request.
*
* @param array $resource Mailjet Resource/Action pair
* @param array $args Request arguments
* @param array $options
* @return Response
*/
public function put(array $resource, array $args = [], array $options = []): Response
{
if (!empty($options)) {
$this->setOptions($options, $resource);
}
$result = $this->_call('PUT', $resource[0], $resource[1], $args);
if (!empty($this->changed)) {
$this->setSettings();
}
return $result;
}
/**
* Trigger a GET request.
*
* @param array $resource Mailjet Resource/Action pair
* @param array $args Request arguments
* @param array $options
* @return Response
*/
public function delete(array $resource, array $args = [], array $options = []): Response
{
if (!empty($options)) {
$this->setOptions($options, $resource);
}
$result = $this->_call('DELETE', $resource[0], $resource[1], $args);
if (!empty($this->changed)) {
$this->setSettings();
}
return $result;
}
/**
* Sets if we need to use https or http protocol while using API Url.
*
* @param bool|mixed $bIsSecured True use https / false use http
*
* @return bool true if we set value false otherwise
*/
public function setSecureProtocol($bIsSecured = null): bool
{
if (\is_bool($bIsSecured)) {
$this->secure = $bIsSecured;
return true;
}
return false;
}
/**
* Set HTTP request Timeout.
* @param int $timeout
*/
public function setTimeout(int $timeout): void
{
$this->requestOptions[self::TIMEOUT] = $timeout;
}
/**
* Set HTTP proxy options
* See: http://docs.guzzlephp.org/en/stable/request-options.html#proxy.
* @param array $proxyArray
*/
public function setHttpProxy(array $proxyArray): void
{
$this->requestOptions[self::PROXY] = $proxyArray;
}
/**
* Set HTTP connection Timeout.
* @param int $timeout
*/
public function setConnectionTimeout(int $timeout): void
{
$this->requestOptions[self::CONNECT_TIMEOUT] = $timeout;
}
/**
* Get HTTP request Timeout
* $return int|null.
*/
public function getTimeout(): ?int
{
return $this->requestOptions[self::TIMEOUT];
}
/**
* Get HTTP connection Timeout
* $return int|null.
*/
public function getConnectionTimeout(): ?int
{
return $this->requestOptions[self::CONNECT_TIMEOUT];
}
/**
* Add a HTTP request option.
*
* @param string $key
* @param mixed $value
* [IMPORTANT]Default options will be overwritten
* if such option is provided
*
* @see \GuzzleHttp\RequestOptions for a list of available request options.
*/
public function addRequestOption(string $key, $value): void
{
if ((null !== $key) && (null !== $value)) {
$this->requestOptions[$key] = $value;
}
}
/**
* Get HTTP connection options
* $return array.
*/
public function getRequestOptions(): array
{
return $this->requestOptions;
}
/**
* Set auth.
*
* @param string $key
* @param string|null $secret
* @param bool $call
* @param array $settings
*/
private function setAuthentication(string $key, string $secret, bool $call, array $settings = []): void
{
$isBasicAuth = $this->isBasicAuthentication($key, $secret);
if ($isBasicAuth) {
$this->apikey = $key;
$this->apisecret = $secret;
} else {
$this->apitoken = $key;
$this->version = Config::SMS_VERSION;
}
$this->initSettings($call, $settings);
$this->setSettings();
}
/**
* Magic method to call a mailjet resource.
*
* @param string $method Http method
* @param string $resource mailjet resource
* @param string $action mailjet resource action
* @param array $args Request arguments
*
* @return Response server response
*/
private function _call(string $method, string $resource, string $action, array $args): Response
{
$args = array_merge([
'id' => '',
'actionid' => '',
'filters' => [],
'body' => 'GET' === $method ? null : '{}',
], array_change_key_case($args));
$url = $this->buildURL($resource, $action, (string) $args['id'], $args['actionid']);
$contentType = ('csvdata/text:plain' === $action || 'csverror/text:csv' === $action) ? 'text/plain' : 'application/json';
$isBasicAuth = $this->isBasicAuthentication($this->apikey, $this->apisecret);
$auth = $isBasicAuth ? [$this->apikey, $this->apisecret] : [$this->apitoken];
$request = new Request(
$auth,
$method,
$url,
$args['filters'],
$args['body'],
$contentType,
$this->requestOptions
);
return $request->call($this->call);
}
/**
* Build the base API url depending on wether user need a secure connection
* or not.
*
* @return string the API url;
*/
private function getApiUrl(): string
{
$h = true === $this->secure ? 'https' : 'http';
return sprintf('%s://%s/%s/', $h, $this->url, $this->version);
}
/**
* Checks that both parameters are strings, which means
* that basic authentication will be required.
*
* @param string $key
* @param string $secret
* @return bool flag
*/
private function isBasicAuthentication(string $key, string $secret): bool
{
return !empty($key) && !empty($secret);
}
/**
* Build the final call url without query strings.
*
* @param string $resource Mailjet resource
* @param string $action Mailjet resource action
* @param string $id mailjet resource id
* @param string $actionid mailjet resource actionid
*
* @return string final call url
*/
private function buildURL(string $resource, string $action, string $id, string $actionid): string
{
$path = 'REST';
if (\in_array($resource, $this->smsResources, true)) {
$path = '';
} elseif (\in_array($action, $this->dataAction, true)) {
$path = 'DATA';
} elseif ('v4' === $this->version) {
$path = '';
}
$arrayFilter = [$path, $resource, $id, $action, $actionid];
return $this->getApiUrl().implode('/', array_filter($arrayFilter));
}
/**
* Temporary set the variables generating the url.
*
* @param array $options contain temporary modifications for the client
* @param array $resource may contain the version linked to the resource
*/
private function setOptions(array $options, array $resource): void
{
$this->version = (string) ($options['version'] ?? $resource[2] ?? Config::MAIN_VERSION);
$this->url = (string) ($options['url'] ?? Config::MAIN_URL);
$this->secure = $options['secured'] ?? Config::SECURED;
$this->call = $options['call'] ?? true;
$this->changed = true;
}
/**
* set back the variables generating the url.
*/
private function setSettings(): void
{
if (!empty($this->settings['url']) && \is_string($this->settings['url'])) {
$this->url = $this->settings['url'];
}
if (!empty($this->settings['version']) && \is_string($this->settings['version'])) {
$this->version = $this->settings['version'];
}
if (isset($this->settings['call']) && \is_bool($this->settings['call'])) {
$this->call = $this->settings['call'];
}
if (isset($this->settings['secured']) && \is_bool($this->settings['secured'])) {
$this->secure = $this->settings['secured'];
}
$this->changed = false;
}
/**
* Set a backup if the variables generating the url are change during a call.
* @param bool $call
* @param array $settings
*/
private function initSettings(bool $call, array $settings = []): void
{
$this->settings['url'] = $settings['url'] ?? $this->url;
$this->settings['version'] = $settings['version'] ?? $this->version;
$this->settings['call'] = $call;
$this->settings['secured'] = $settings['secured'] ?? $this->secure;
$this->changed = false;
}
}
@@ -0,0 +1,22 @@
<?php
declare(strict_types=1);
/*
* Copyright (C) 2013 Mailgun
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
namespace AppBundle\Entity;
class Config
{
const WRAPPER_VERSION = 'v2.0.0';
const USER_AGENT = 'mailjet-apiv3-php/';
const MAIN_VERSION = 'v3';
const MAIN_URL = 'api.mailjet.com';
const SECURED = true;
const SMS_VERSION = 'v4';
}
@@ -0,0 +1,593 @@
<?php
namespace AppBundle\Entity;
/**
* Mailjet Public API
*
* @package API v0.3
* @author Mailjet
* @link http://api.mailjet.com/
*
* For PHP v >= 5.3
*
*/
class Mailjet
{
# Wrapper version, changed for each release
const WRAPPER_VERSION = '1.1.0';
# Mailjet API version
var $version = 'v3';
# Connect with https protocol
var $secure = true;
# Mode debug ? 0 : none; 1 : errors only; 2 : all
var $debug = 0;
# Edit with your Mailjet API keys (you can find them here : https://app.mailjet.com/account/api_keys)
var $apiKey = '';
var $secretKey = '';
// Ressources arrays
/*
* Newsletter resources
*/
private static $_newsletterResources = array(
"newsletterDetailContent",
"newsletterSend",
"newsletterSchedule",
"newsletterTest",
"newsletterStatus"
);
/*
* Contact resources
* "contactManageManyContacts" not in as it is a special case.
*/
private static $_contactResources = array(
"contactManageContactsLists",
"contactGetContactsLists"
);
/*
* Contactslist resources
*/
private static $_contactslistResources = array (
"contactslistManageContact",
"contactslistManageManyContacts"
);
/*
* Template resources
*/
private static $_templateResources = array (
"templateDetailContent"
);
/*
* dns resources
*/
private static $_dnsResources = array (
"dnsCheck"
);
# Constructor function
public function __construct($apiKey = false, $secretKey = false, $preprod = false)
{
if ($apiKey) {
$this->apiKey = $apiKey;
}
if ($secretKey) {
$this->secretKey = $secretKey;
}
$this->apiUrl = $this->getApiUrl($preprod);
$this->wrapperVersion = $this->readWrapperVersion();
}
private function getApiUrl ($preprod)
{
if ($preprod)
{
return (($this->secure) ? 'https' : 'http') . '://api.preprod.mailjet.com/' . $this->version . '0';
}
else
{
return (($this->secure) ? 'https' : 'http') . '://api.mailjet.com/' . $this->version;
}
}
public function curl_setopt_custom_postfields($curl_handle, $postfields, $headers = null) {
$algos = hash_algos();
$hashAlgo = null;
foreach (array('sha1', 'md5') as $preferred) {
if (in_array($preferred, $algos)) {
$hashAlgo = $preferred;
break;
}
}
if ($hashAlgo === null) {
list($hashAlgo) = $algos;
}
$boundary =
'----------------------------' .
substr(hash($hashAlgo, 'cURL-php-multiple-value-same-key-support' . microtime()), 0, 12);
$body = array();
$crlf = "\r\n";
foreach ($postfields as $key => $value) {
if (is_array($value)) {
foreach ($value as $filename => $path) {
// attachment
if (strpos($path, '@') === 0) {
preg_match('/^@(.*?)$/', $path, $matches);
list($dummy, $path) = $matches;
if (is_int($filename)) {
$filename = basename($path);
}
$body[] = '--' . $boundary;
$body[] = 'Content-Disposition: form-data; name="' . $key . '"; filename="' . $filename . '"';
$body[] = 'Content-Type: application/octet-stream';
$body[] = '';
$body[] = file_get_contents($path);
}
// Array of recipients
else if ('to' == $key || 'cc' == $key || 'bcc' == $key) {
$body[] = '--' . $boundary;
$body[] = 'Content-Disposition: form-data; name="' . $key . '"';
$body[] = '';
$body[] = trim($path);
}
}
}
else {
$body[] = '--' . $boundary;
$body[] = 'Content-Disposition: form-data; name="' . $key . '"';
$body[] = '';
$body[] = $value;
}
}
$body[] = '--' . $boundary . '--';
$body[] = '';
$contentType = 'multipart/form-data; boundary=' . $boundary;
$content = join($crlf, $body);
$contentLength = strlen($content);
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array(
'Content-Length: ' . $contentLength,
'Expect: 100-continue',
'Content-Type: ' . $contentType,
));
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $content);
}
public function __call($resource, $args)
{
# Parameters array
$params = (sizeof($args) > 0) ? $args[0] : array();
# Request method, GET by default
if (isset($params["method"]))
{
$request = strtoupper($params["method"]);
unset($params['method']);
}
else
{
$request = 'GET';
}
# Request ID, empty by default
$id = isset($params["ID"]) ? $params["ID"] : '';
/*
Using SendAPI without the "to" parameter but with "cc" AND/OR "bcc"
Our API needs the "to" parameter filled to send email
We give it a default value with an email @example.org. See http://en.wikipedia.org/wiki/Example.com
*/
if ($resource == "sendEmail" && (empty($params["to"]) && (!empty($params["cc"]) || !empty($params["bcc"])))) {
$params["to"] = "mailjet@example.org";
}
if ($id == '')
{
# Request Unique field, empty by default
$unique = isset($params["unique"]) ? $params["unique"] : '';
unset($params["unique"]);
# Make request
$result = $this->sendRequest($resource, $params, $request, $unique);
}
else
{
# Make request
$result = $this->sendRequest($resource, $params, $request, $id);
}
# Return result
$return = ($result === true) ? $this->_response : false;
if ($this->debug == 2 || ($this->debug == 1 && $return == false)) {
$this->debug();
}
return $return;
}
/**
*
* @param string $method REST or DATA
* @param string $resourceBase Base resource
* @param int $resourceID Base resource ID
* @param string $action Action on resource
*
* @return string Returns the call's url.
*/
private function makeUrl($method, $resourceBase, $resourceID, $action)
{
return $this->apiUrl.'/'.$method.'/'.$resourceBase.'/'.$resourceID.'/'.strtolower($action);
}
/**
*
* @param string $method REST or DATA
* @param string $resourceBase Base resource
* @param int $resourceID Base resource ID
* @param string $resource The whole resource, before parsing
*
* @return string Returns the call's url.
*/
private function makeUrlFromFilter($method, $resourceBase, $resourceID, $resource)
{
$matches = array();
preg_match('/'.$resourceBase.'([a-zA-Z]+)/', $resource, $matches);
$action = $matches[1];
return $this->makeUrl($method, $resourceBase, $resourceID, $action);
}
public function requestUrlBuilder($resource, $params = array(), $request, $id)
{
if ($resource == "sendEmail") {
$this->call_url = $this->apiUrl."/send/message";
}
else if ($resource == "send") {
$this->call_url = $this->apiUrl."/send"; //json support for SendAPI
}
else if ($resource == "uploadCSVContactslistData") {
if (!empty($params['_contactslist_id'])) {
$contactslist_id = $params['_contactslist_id'];
}
else if (!empty($params['ID'])) {
$contactslist_id = $params['ID'];
}
$this->call_url = $this->makeUrl('DATA', 'Contactslist', $contactslist_id, 'CSVData/text:plain'); // Was $this->call_url = $this->apiUrl."/DATA/contactslist/". $contactslist_id ."/CSVData/text:plain";
}
else if (($resource == "addHTMLbody") || ($resource == "getHTMLbody")) {
if (!empty($params['_newsletter_id'])) {
$newsletter_id = $params['_newsletter_id'];
}
else if (!empty($params['ID'])) {
$newsletter_id = $params['ID'];
}
$this->call_url = $this->makeUrl('DATA', 'NewsLetter', $newsletter_id, 'HTML/text/html/LAST');
}
else if (in_array($resource, self::$_newsletterResources))
{
$this->call_url = $this->makeUrlFromFilter('REST', 'newsletter', $params['ID'], $resource); // Was $this->call_url = $this->apiUrl."/REST/newsletter/". $newsletter_id ."/".strtolower($action);
}
else if (in_array($resource, self::$_templateResources))
{
$this->call_url = $this->makeUrlFromFilter('REST', 'template', $params['ID'], $resource);
}
else if (in_array($resource, self::$_dnsResources))
{
$this->call_url = $this->makeUrlFromFilter('REST', 'dns', $params['ID'], $resource);
}
else if (in_array($resource, self::$_contactResources))
{
$this->call_url = $this->makeUrlFromFilter('REST', 'contact', $params['ID'], $resource); // Was $this->call_url = $this->apiUrl."/REST/contact/". $contact_id . "/".strtolower($action);
}
else if ($resource == "contactManageManyContacts")
{
$this->call_url = $this->apiUrl."/REST/contact/managemanycontacts";
}
else if (in_array($resource, self::$_contactslistResources))
{
$this->call_url = $this->makeUrlFromFilter('REST', 'contactslist', $params['ID'], $resource); // Was $this->call_url = $this->apiUrl."/REST/contactslist/". $contactslist_id . "/".strtolower($action);
}
else {
$this->call_url = $this->apiUrl . '/REST/' . $resource;
}
if ($request == "GET" || $request == "POST") {
if (count($params) > 0)
{
$this->call_url .= '?';
foreach ($params as $key => $value) {
// In a GET request, put an underscore char in front of params to avoid it being treated as a filter
$firstChar = substr($key, 0, -(strlen($key) - 1));
if ($request == "GET") {
$okFirstChar = ($firstChar != "_");
$queryStringKey = $key;
}
else {
$okFirstChar = ($firstChar == "_");
$queryStringKey = substr($key, 1);
}
if ($okFirstChar && ($key != "ID"))
{
$query_string[$queryStringKey] = $queryStringKey . '=' . urlencode($value);
$this->call_url .= $query_string[$queryStringKey] . '&';
}
}
$this->call_url = substr($this->call_url, 0, -1);
}
}
if (($request == "VIEW" || $request == "DELETE" || $request == "PUT") && $resource != "addHTMLbody" && $resource != "uploadCSVContactslistData")
{
if ($id != '')
{
if ($resource == "contactslistManageManyContacts")
{
$this->call_url .= '/' . $params["JobID"];
}
else
{
$this->call_url .= '/' . $id;
}
}
}
return $this->call_url;
}
public function sendRequest($resource = false, $params = array(), $request = "GET", $id = '')
{
# Method
$this->_method = $resource;
$this->_request = $request;
# Build request URL
$url = $this->requestUrlBuilder($resource, $params, $request, $id);
// fix bug for sort (ID+DESC), replace %2B in url by +
$url = preg_replace('#Sort=(.+)%2B(DESC|ASC|)?#sUi', 'Sort=$1+$2', $url);
# Set up and execute the curl process
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, $url);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'mailjet-api-v3-php-simple/' . $this->wrapperVersion . '; PHP v. ' . phpversion());
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($curl_handle, CURLOPT_USERPWD, $this->apiKey . ':' . $this->secretKey);
$this->_request_post = false;
if (($request == 'POST') || ($request == 'PUT')):
curl_setopt($curl_handle, CURLOPT_POST, 1);
// Exclude filters from payload. See http://stackoverflow.com/questions/4260086/php-how-to-use-array-filter-to-filter-array-keys
$paramsFiltered = array_filter(array_keys($params), function($k) {
return substr($k, 0, 1) != '_';
});
$params = array_intersect_key($params, array_flip($paramsFiltered));
if ($this->debug == 2) {
var_dump($params);
}
if ($resource == "sendEmail") {
$this->curl_setopt_custom_postfields($curl_handle, $params);
}
else if ($resource == "addHTMLbody")
{
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $params['html_content']);
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array(
'Content-Type: text/html'
));
}
//
else if ($resource == "uploadCSVContactslistData")
{
curl_setopt($curl_handle, CURLOPT_BINARYTRANSFER, TRUE);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $params['csv_content']);
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array(
'Content-Type: text/plain'
));
}
//
else
{
if ((in_array($resource, self::$_newsletterResources)) ||
($resource == "contactManageContactsLists") ||
($resource == "contactManageManyContacts") ||
(in_array($resource, self::$_contactslistResources)) ||
(in_array($resource, self::$_templateResources)) ||
(in_array($resource, self::$_dnsResources)))
{
unset($params['ID']);
}
$j_e = null;
if (version_compare(phpversion(), '5.4.0', '<')) {
$j_e = str_replace('\\/', '/', json_encode($params));
} else {
// 64 => unescaped_slashes
$j_e = json_encode($params, 64);
}
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $j_e);
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json'
));
}
$this->_request_post = $params;
endif;
if ($request == 'DELETE') {
curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, "DELETE");
}
if ($request == 'PUT') {
curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, "PUT");
}
$buffer = curl_exec($curl_handle);
if ($this->debug == 2) {
var_dump($buffer);
}
# Response code
$this->_response_code = curl_getinfo($curl_handle, CURLINFO_HTTP_CODE);
# Close curl process
curl_close($curl_handle);
# Return response
if (($this->_response_code == 200) && ($resource == "getHTMLbody")) {
$this->_response = $buffer;
}
else
{
/*
* This prevents the rounding error on 32 bits systems with PHP version >= 5.4
*/
if (defined('JSON_BIGINT_AS_STRING'))
{
$this->_response = json_decode($buffer, false, 512, JSON_BIGINT_AS_STRING);
}
else
{ // PHP v <= 5.3.* doens't support the fourth parameter of json_decode
$this->_response = json_decode($buffer, false, 512);
}
}
if ($request == 'POST') {
return ($this->_response_code == 201 || $this->_response_code == 200) ? true : false;
}
if ($request == 'DELETE') {
return ($this->_response_code == 204) ? true : false;
}
return ($this->_response_code == 200) ? true : false;
}
public function debug()
{
echo '<style type="text/css">';
echo '
#debugger {width: 100%; font-family: arial;}
#debugger table {padding: 0; margin: 0 0 20px; width: 100%; font-size: 11px; text-align: left;border-collapse: collapse;}
#debugger th, #debugger td {padding: 2px 4px;}
#debugger tr.h {background: #999; color: #fff;}
#debugger tr.Success {background:#90c306; color: #fff;}
#debugger tr.Error {background:#c30029 ; color: #fff;}
#debugger tr.Not-modified {background:orange ; color: #fff;}
#debugger th {width: 20%; vertical-align:top; padding-bottom: 8px;}
';
echo '</style>';
echo '<div id="debugger">';
if (isset($this->_response_code)):
if (($this->_response_code == 200) || ($this->_response_code == 201) || ($this->_response_code == 204)):
echo '<table>';
echo '<tr class="Success"><th>Success</th><td></td></tr>';
echo '<tr><th>Status code</th><td>' . $this->_response_code . '</td></tr>';
if (isset($this->_response)):
echo '<tr><th>Response</th><td><pre>' . utf8_decode(print_r($this->_response, 1)) . '</pre></td></tr>';
endif;
echo '</table>';
elseif ($this->_response_code == 304):
echo '<table>';
echo '<tr class="Not-modified"><th>Error</th><td></td></tr>';
echo '<tr><th>Error no</th><td>' . $this->_response_code . '</td></tr>';
echo '<tr><th>Message</th><td>Not Modified</td></tr>';
echo '</table>';
else:
echo '<table>';
echo '<tr class="Error"><th>Error</th><td></td></tr>';
echo '<tr><th>Error no</th><td>' . $this->_response_code . '</td></tr>';
if (isset($this->_response)):
if (is_array($this->_response) OR is_object($this->_response)):
echo '<tr><th>Status</th><td><pre>' . print_r($this->_response, true) . '</pre></td></tr>';
else:
echo '<tr><th>Status</th><td><pre>' . $this->_response . '</pre></td></tr>';
endif;
endif;
echo '</table>';
endif;
endif;
$call_url = parse_url($this->call_url);
echo '<table>';
echo '<tr class="h"><th>API config</th><td></td></tr>';
echo '<tr><th>Protocole</th><td>' . $call_url['scheme'] . '</td></tr>';
echo '<tr><th>Host</th><td>' . $call_url['host'] . '</td></tr>';
echo '<tr><th>Version</th><td>' . $this->version . '</td></tr>';
echo '<tr><th>Wrapper Version</th><td>' . $this->readWrapperVersion() . '</td></tr>';
echo '</table>';
echo '<table>';
echo '<tr class="h"><th>Call infos</th><td></td></tr>';
echo '<tr><th>Resource</th><td>' . $this->_method . '</td></tr>';
echo '<tr><th>Request type</th><td>' . $this->_request . '</td></tr>';
echo '<tr><th>Get Arguments</th><td>';
if (isset($call_url['query'])) {
$args = explode("&", $call_url['query']);
foreach ($args as $arg) {
$arg = explode("=", $arg);
echo '' . $arg[0] . ' = <span style="color:#ff6e56;">' . $arg[1] . '</span><br/>';
}
}
echo '</td></tr>';
if ($this->_request_post) {
echo '<tr><th>Post Arguments</th><td>';
foreach ($this->_request_post as $k => $v) {
if (is_array($v))
{
foreach ($v as $key => $value)
{
echo $key . ' = <span style="color:#ff6e56;">' . $value . '</span><br/>';
}
}
else
{
echo $k . ' = <span style="color:#ff6e56;">' . $v . '</span><br/>';
}
}
echo '</td></tr>';
}
echo '<tr><th>Call url</th><td>' . $this->call_url . '</td></tr>';
echo '</table>';
echo '</div>';
}
private function readWrapperVersion() {
return Mailjet::WRAPPER_VERSION;
}
}
@@ -0,0 +1,189 @@
<?php
declare(strict_types=1);
/*
* Copyright (C) 2013 Mailgun
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
namespace AppBundle\Entity;
use GuzzleHttp\Client as GuzzleClient;
use GuzzleHttp\Exception\ClientException;
use GuzzleHttp\Exception\ServerException;
class Request extends GuzzleClient
{
/**
* @var string
*/
private $method;
/**
* @var string
*/
private $url;
/**
* @var array
*/
private $filters;
/**
* @var array
*/
private $body;
/**
* @var array
*/
private $auth;
/**
* @var string
*/
private $type;
/**
* @var array
*/
private $requestOptions = [];
/**
* Build a new Http request.
*
* @param array $auth [apikey, apisecret]
* @param string $method http method
* @param string $url call url
* @param array $filters Mailjet resource filters
* @param array|null $body Mailjet resource body
* @param string $type Request Content-type
* @param array $requestOptions
*/
public function __construct(
array $auth,
string $method,
string $url,
array $filters,
?array $body,
string $type,
array $requestOptions = []
) {
parent::__construct(['defaults' => [
'headers' => [
'user-agent' => Config::USER_AGENT.PHP_VERSION.'/'.Client::WRAPPER_VERSION,
],
]]);
$this->type = $type;
$this->auth = $auth;
$this->method = $method;
$this->url = $url;
$this->filters = $filters;
$this->body = $body;
$this->requestOptions = $requestOptions;
}
/**
* Trigger the actual call
* TODO: DATA API.
*
* @param $call
*
* @return Response the call response
*/
public function call($call)
{
$payload = [
'query' => $this->filters,
('application/json' === $this->type ? 'json' : 'body') => $this->body,
];
$authArgsCount = \count($this->auth);
$headers = [
'content-type' => $this->type,
];
if ($authArgsCount > 1) {
$payload['auth'] = $this->auth;
} else {
$headers['Authorization'] = 'Bearer '.$this->auth[0];
}
$payload['headers'] = $headers;
if ((!empty($this->requestOptions)) && (\is_array($this->requestOptions))) {
$payload = array_merge_recursive($payload, $this->requestOptions);
}
$response = null;
if ($call) {
try {
$response = \call_user_func_array(
[$this, strtolower($this->method)],
[$this->url, $payload]
);
} catch (ClientException $e) {
$response = $e->getResponse();
} catch (ServerException $e) {
$response = $e->getResponse();
}
}
return new Response($this, $response);
}
/**
* Filters getters.
*
* @return array Request filters
*/
public function getFilters(): array
{
return $this->filters;
}
/**
* Http method getter.
*
* @return string Request method
*/
public function getMethod(): string
{
return $this->method;
}
/**
* Call Url getter.
*
* @return string Request Url
*/
public function getUrl(): string
{
return $this->url;
}
/**
* Request body getter.
*
* @return array request body
*/
public function getBody(): array
{
return $this->body;
}
/**
* Auth getter. to discuss.
*
* @return array Request auth
*/
public function getAuth(): array
{
return $this->auth;
}
}
@@ -0,0 +1,121 @@
<?php
declare(strict_types=1);
/*
* Copyright (C) 2013 Mailgun
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
namespace AppBundle\Entity;
/**
* PHP version 7.2.
*
* This is the Mailjet Resources Class
*
* @category Mailjet_API
*
* @author Guillaume Badi <gbadi@mailjet.com>
* @license MIT https://opensource.org/licenses/MIT
*
* @see dev.mailjet.com
*/
class Resources
{
public static $Email = ['send', ''/*, 'v3.1'*/];
public static $Aggregategraphstatistics = ['aggregategraphstatistics', ''];
public static $Apikey = ['apikey', ''];
public static $Apikeyaccess = ['apikeyaccess', ''];
public static $Apikeytotals = ['apikeytotals', ''];
public static $Apitoken = ['apitoken', ''];
public static $Axtesting = ['axtesting', ''];
public static $Batchjob = ['batchjob', ''];
public static $BatchjobCsverror = ['batchjob', 'csverror/text:csv'];
public static $BatchjobJsonerror = ['batchjob', 'JSONError/application:json/LAST'];
public static $Bouncestatistics = ['bouncestatistics', ''];
public static $Campaign = ['campaign', ''];
public static $Campaignaggregate = ['campaignaggregate', ''];
public static $Campaigndraft = ['campaigndraft', ''];
public static $CampaigndraftSchedule = ['campaigndraft', 'schedule'];
public static $CampaigndraftStatus = ['campaigndraft', 'status'];
public static $CampaigndraftSend = ['campaigndraft', 'send'];
public static $CampaigndraftTest = ['campaigndraft', 'test'];
public static $CampaigndraftDetailcontent = ['campaigndraft', 'detailcontent'];
public static $Campaigngraphstatistics = ['campaigngraphstatistics', ''];
public static $Campaignoverview = ['campaignoverview', ''];
public static $Campaignstatistics = ['campaignstatistics', ''];
public static $Clickstatistics = ['clickstatistics', ''];
public static $Contact = ['contact', ''];
public static $ContactManagecontactslists = ['contact', 'managecontactslists'];
public static $ContactGetcontactslists = ['contact', 'getcontactslists'];
public static $ContactManagemanycontacts = ['contact', 'managemanycontacts'];
public static $Contactdata = ['contactdata', ''];
public static $Contactfilter = ['contactfilter', ''];
public static $Contacthistorydata = ['contacthistorydata', ''];
public static $Contactmetadata = ['contactmetadata', ''];
public static $Contactslist = ['contactslist', ''];
public static $ContactslistCsvdata = ['contactslist', 'csvdata/text:plain'];
public static $ContactslistManagecontact = ['contactslist', 'ManageContact'];
public static $ContactslistManagemanycontacts = ['contactslist', 'ManageManyContacts'];
public static $ContactslistImportlist = ['contactslist', 'ImportList'];
public static $Contactslistsignup = ['contactslistsignup', ''];
public static $Contactstatistics = ['contactstatistics', ''];
public static $Csvimport = ['csvimport', ''];
public static $Dns = ['dns', ''];
public static $DnsCheck = ['dns', 'check'];
public static $Domainstatistics = ['domainstatistics', ''];
public static $Eventcallbackurl = ['eventcallbackurl', ''];
public static $Geostatistics = ['geostatistics', ''];
public static $Graphstatistics = ['graphstatistics', ''];
public static $Listrecipient = ['listrecipient', ''];
public static $Listrecipientstatistics = ['listrecipientstatistics', ''];
public static $Liststatistics = ['liststatistics', ''];
public static $Message = ['message', ''];
public static $Messagehistory = ['messagehistory', ''];
public static $Messageinformation = ['messageinformation', ''];
public static $Messagesentstatistics = ['messagesentstatistics', ''];
public static $Messagestate = ['messagestate', ''];
public static $Messagestatistics = ['messagestatistics', ''];
public static $Metadata = ['metadata', ''];
public static $Metasender = ['metasender', ''];
public static $Myprofile = ['myprofile', ''];
public static $Newsletter = ['newsletter', ''];
public static $NewsletterSchedule = ['newsletter', 'schedule'];
public static $NewsletterStatus = ['newsletter', 'status'];
public static $NewsletterSend = ['newsletter', 'send'];
public static $NewsletterTest = ['newsletter', 'test'];
public static $NewsletterDetailcontent = ['newsletter', 'detailcontent'];
public static $Newslettertemplate = ['newslettertemplate', ''];
public static $Newslettertemplatecategory = ['newslettertemplatecategory', ''];
public static $Openinformation = ['openinformation', ''];
public static $Openstatistics = ['openstatistics', ''];
public static $Parseroute = ['parseroute', ''];
public static $Preferences = ['preferences', ''];
public static $Preset = ['preset', ''];
public static $Sender = ['sender', ''];
public static $SenderValidate = ['sender', 'validate'];
public static $Senderstatistics = ['senderstatistics', ''];
public static $Template = ['template', ''];
public static $TemplateDetailcontent = ['template', 'detailcontent'];
public static $TemplateDetailpreviews = ['template', 'detailpreviews'];
public static $TemplateDisplaypreview = ['template', 'displaypreview'];
public static $TemplateDetailthumbnail = ['template', 'detailthumbnail'];
public static $TemplateDisplaythumbnail = ['template', 'displaythumbnail'];
public static $Toplinkclicked = ['toplinkclicked', ''];
public static $Trigger = ['trigger', ''];
public static $User = ['user', ''];
public static $UserActivate = ['user', 'activate'];
public static $Useragentstatistics = ['useragentstatistics', ''];
public static $Widget = ['widget', ''];
public static $Widgetcustomvalue = ['widgetcustomvalue', ''];
public static $Statcounters = ['statcounters', ''];
public static $StatisticsLinkclick = ['statistics', 'link-click'];
public static $StatisticsRecipientesp = ['statistics', 'recipient-esp'];
public static $Sms = ['sms', ''];
public static $SmsSend = ['sms-send', ''];
public static $SmsExport = ['sms', 'export'];
public static $SmsCount = ['sms', 'count'];
}
@@ -0,0 +1,147 @@
<?php
declare(strict_types=1);
/*
* Copyright (C) 2013 Mailgun
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
namespace AppBundle\Entity;
use Psr\Http\Message\ResponseInterface;
class Response
{
/**
* @var int
*/
private $status;
/**
* @var bool
*/
private $success;
/**
* @var array
*/
private $body = [];
/**
* @var ResponseInterface
*/
private $rawResponse;
/**
* @var Request
*/
private $request;
/**
* Construct a Mailjet response.
*
* @param Request $request Mailjet actual request
* @param ResponseInterface $response Guzzle response
*/
public function __construct(Request $request, ResponseInterface $response)
{
$this->request = $request;
if ($response) {
$this->rawResponse = $response;
$this->status = $response->getStatusCode();
$this->body = $this->decodeBody($response->getBody()->getContents());
$this->success = 2 === floor($this->status / 100);
}
}
/**
* Status Getter
* return the http status code.
*
* @return int status
*/
public function getStatus()
{
return $this->status;
}
/**
* Status Getter
* return the entire response array.
*/
public function getBody(): array
{
return $this->body;
}
/**
* Data Getter
* The data returned by the mailjet call.
*
* @return array data
*/
public function getData(): array
{
return $this->body['Data'] ?? $this->body;
}
/**
* Count getter
* return the resulting array size.
*/
public function getCount(): ?int
{
return $this->body['Count'] ?? null;
}
/**
* Error Reason getter
* return the resulting error message.
*/
public function getReasonPhrase(): ?string
{
return $this->rawResponse->getReasonPhrase();
}
/**
* Total getter
* return the total count of all results.
*
* @return int|null count
*/
public function getTotal(): ?int
{
return $this->body['Total'] ?? null;
}
/**
* Success getter.
*
* @return bool true is return code is 2**
*/
public function success(): ?bool
{
return $this->success;
}
public function getRequest(): Request
{
return $this->request;
}
/**
* Decodes a mailjet string response to an object representing that response.
*
* @param string $body The mailjet response as string
*
* @return array Object representing the mailjet response
*/
protected function decodeBody(string $body): array
{
return json_decode($body, true, 512, JSON_BIGINT_AS_STRING) ?: [];
}
}
@@ -377,7 +377,7 @@ class User extends BaseUser
$zipCode = "";
$city = "";
$country = "";
$type=null;
if($this->getCompany()->getPresentationVideo())
{
$pres= $this->getCompany()->getPresentationVideo()->getCdnUrl();
@@ -424,6 +424,10 @@ class User extends BaseUser
}
}
}
if($this->getCompany()->getType()){
$type=$this->getCompany()->getType();
}
}
$card = array(
@@ -443,6 +447,7 @@ class User extends BaseUser
"zipCode" => $zipCode,
"city" => $city,
"country" => $country,
"type" => $type,
"currentJob" => $this->getCompany()->getExtra()["titleTalent"],
"website" => $this->getCompany()->getWebsite(),
);
@@ -96,12 +96,12 @@ class MailManager
$email = \Swift_Message::newInstance()
->setSubject($subject)
->setFrom('noreply@talentstube.io')
->setTo('c.leveque@talentstube.com')
->setTo('l.laniau@talentstube.com')
->setBody($message, 'text/html')
;
if ($this->mailer->send($email)) {
// $spool = $this->mailer->getTransport()->getSpool();
// $spool->flushQueue($this->transport);
// $spool = $this->mailer->getTransport()->getSpool();
// $spool->flushQueue($this->transport);
$message = array('success' => 200);
} else {
$message = array('success' => 500);
@@ -35,7 +35,7 @@ abstract class AbstractFactory implements SecurityFactoryInterface
protected $defaultSuccessHandlerOptions = [
'always_use_default_target_path' => false,
'default_target_path' => '/',
'login_path' => '/login',
'login_path' => '/',
'target_path_parameter' => '_target_path',
'use_referer' => false,
];
@@ -43,7 +43,7 @@ abstract class AbstractFactory implements SecurityFactoryInterface
protected $defaultFailureHandlerOptions = [
'failure_path' => null,
'failure_forward' => false,
'login_path' => '/login',
'login_path' => '/?erreur=1',
'failure_path_parameter' => '_failure_path',
];