Skip to content

Commit c411c74

Browse files
author
Sanjeev Papnoi
committed
Merge remote-tracking branch 'origin/1.0' into HEAD
2 parents 51a68cc + 59a087b commit c411c74

File tree

6 files changed

+44
-7
lines changed

6 files changed

+44
-7
lines changed

Console/RefreshMailboxCommand.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ public function refreshMailbox($server_host, $server_username, $server_password,
104104
foreach ($emailCollection as $id => $messageNumber) {
105105
$output->writeln("\n <comment> Converting email </comment><info>$counter</info><comment> out of </comment><info>$emailCount</info><comment>.</comment>");
106106
$message = imap_fetchbody($imap, $messageNumber, "");
107-
$this->pushMessage($message, $useSecureConnection);
107+
$this->pushMessage($message, $useSecureConnection, $output);
108108
if (true == $mailbox['deleted']) {
109109
imap_delete($imap, $messageNumber);
110110
}
@@ -122,7 +122,7 @@ public function refreshMailbox($server_host, $server_username, $server_password,
122122
return;
123123
}
124124

125-
public function pushMessage($message, bool $secure = false)
125+
public function pushMessage($message, bool $secure = false, $output)
126126
{
127127
$router = $this->container->get('router');
128128
$router->getContext()->setHost($this->container->getParameter('uvdesk.site_url'));
@@ -138,9 +138,21 @@ public function pushMessage($message, bool $secure = false)
138138
curl_setopt($curlHandler, CURLOPT_POSTFIELDS, http_build_query(['email' => $message]));
139139

140140
$curlResponse = curl_exec($curlHandler);
141+
if ($curlResponse != 200 ) {
142+
$curlResponse = $this->getTagValue($curlResponse, 'title');
143+
$output->writeln("\n <comment> Error -> </comment><info>$curlResponse</info><comment></comment>");
144+
exit();
145+
}
141146
curl_close($curlHandler);
142147
}
143148

149+
function getTagValue($string, $tag)
150+
{
151+
$pattern = "/<{$tag}>(.*?)<\/{$tag}>/s";
152+
preg_match($pattern, $string, $matches);
153+
return isset($matches[1]) ? $matches[1] : '';
154+
}
155+
144156
protected function isSecureConnectionAvailable()
145157
{
146158
$headers = [CURLOPT_NOBODY => true, CURLOPT_HEADER => false];

Controller/MailboxChannelXHR.php

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,31 @@
99
use Webkul\UVDesk\MailboxBundle\Utils\MailboxConfiguration;
1010
use Webkul\UVDesk\MailboxBundle\Services\MailboxService;
1111
use Symfony\Component\Translation\TranslatorInterface;
12+
use Symfony\Component\HttpKernel\KernelInterface;
1213

1314
class MailboxChannelXHR extends AbstractController
1415
{
1516
private $mailboxService;
1617
private $translator;
18+
private $kernel;
1719

18-
public function __construct(MailboxService $mailboxService, TranslatorInterface $translator)
20+
public function __construct(KernelInterface $kernel, MailboxService $mailboxService, TranslatorInterface $translator)
1921
{
2022
$this->mailboxService = $mailboxService;
2123
$this->translator = $translator;
24+
$this->kernel = $kernel;
25+
}
26+
27+
public function processRawContentMail(Request $request)
28+
{
29+
$rawEmail = file_get_contents($this->kernel->getProjectDir(). "/rawEmailContent.txt");
30+
31+
if ($rawEmail != false && !empty($rawEmail)) {
32+
$this->mailboxService->processMail($rawEmail);
33+
}else{
34+
dump("Empty Text file not allow");
35+
}
36+
exit(0);
2237
}
2338

2439
public function processMailXHR(Request $request)

DependencyInjection/Configuration.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ class Configuration implements ConfigurationInterface
99
{
1010
public function getConfigTreeBuilder()
1111
{
12-
$treeBuilder = new TreeBuilder();
13-
$treeBuilder->root('uvdesk_mailbox')
12+
$treeBuilder = new TreeBuilder('knp_doctrine_behaviors');
13+
$treeBuilder->getRootNode('uvdesk_mailbox')
1414
->children()
1515
->node('emails', 'array')
1616
->children()

Resources/config/routes/private.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,7 @@ helpdesk_member_mailbox_remove_configuration_xhr:
1919
path: /settings/mailbox/remove/{id}
2020
controller: Webkul\UVDesk\MailboxBundle\Controller\MailboxChannelXHR::removeMailboxConfiguration
2121
defaults: { id: ''}
22+
23+
helpdesk_member_mailbox_direct_convert_mail:
24+
path: /processRawEmail
25+
controller: Webkul\UVDesk\MailboxBundle\Controller\MailboxChannelXHR::processRawContentMail

Services/MailboxService.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,12 +384,18 @@ public function processMail($rawEmail)
384384
} else if (false === $ticket->getIsTrashed() && strtolower($ticket->getStatus()->getCode()) != 'spam' && !empty($mailData['inReplyTo'])) {
385385
$mailData['threadType'] = 'reply';
386386
$thread = $this->entityManager->getRepository(Thread::class)->findOneByMessageId($mailData['messageId']);
387+
$ticketRef = $this->entityManager->getRepository(Ticket::class)->findById($ticket->getId());
388+
$referenceIds = explode(' ', $ticketRef[0]->getReferenceIds());
387389

388390
if (!empty($thread)) {
389391
// Thread with the same message id exists skip process.
390392
return;
391393
}
392394

395+
if (in_array($mailData['messageId'], $referenceIds)) {
396+
return ;
397+
}
398+
393399
if ($ticket->getCustomer() && $ticket->getCustomer()->getEmail() == $mailData['from']) {
394400
// Reply from customer
395401
$user = $ticket->getCustomer();

composer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010
}
1111
],
1212
"require": {
13-
"php": "^7.2",
13+
"php": "^7.3 || ^8.0",
1414
"uvdesk/composer-plugin": "^1.0",
1515
"uvdesk/core-framework": "^1.0",
1616
"iamcal/lib_autolink": "^1.7",
17-
"php-mime-mail-parser/php-mime-mail-parser": "^3.0"
17+
"php-mime-mail-parser/php-mime-mail-parser": "^7.0.0"
1818
},
1919
"autoload": {
2020
"psr-4": { "Webkul\\UVDesk\\MailboxBundle\\": "" }

0 commit comments

Comments
 (0)