Added mail helper
This commit is contained in:
@@ -27,6 +27,7 @@ use Pimple\Container;
|
|||||||
* @property \Kanboard\Helper\LayoutHelper $layout
|
* @property \Kanboard\Helper\LayoutHelper $layout
|
||||||
* @property \Kanboard\Helper\ProjectHeaderHelper $projectHeader
|
* @property \Kanboard\Helper\ProjectHeaderHelper $projectHeader
|
||||||
* @property \Kanboard\Helper\ProjectActivityHelper $projectActivity
|
* @property \Kanboard\Helper\ProjectActivityHelper $projectActivity
|
||||||
|
* @property \Kanboard\Helper\MailHelper $mail
|
||||||
*/
|
*/
|
||||||
class Helper
|
class Helper
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -12,26 +12,6 @@ use Pimple\Container;
|
|||||||
*/
|
*/
|
||||||
class Tool
|
class Tool
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Get the mailbox hash from an email address
|
|
||||||
*
|
|
||||||
* @static
|
|
||||||
* @access public
|
|
||||||
* @param string $email
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public static function getMailboxHash($email)
|
|
||||||
{
|
|
||||||
if (! strpos($email, '@') || ! strpos($email, '+')) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
list($local_part, ) = explode('@', $email);
|
|
||||||
list(, $identifier) = explode('+', $local_part);
|
|
||||||
|
|
||||||
return $identifier;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Build dependency injection container from an array
|
* Build dependency injection container from an array
|
||||||
*
|
*
|
||||||
|
|||||||
48
app/Helper/MailHelper.php
Normal file
48
app/Helper/MailHelper.php
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Kanboard\Helper;
|
||||||
|
|
||||||
|
use Kanboard\Core\Base;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class MailHelper
|
||||||
|
*
|
||||||
|
* @package Kanboard\Helper
|
||||||
|
* @author Frederic Guillot
|
||||||
|
*/
|
||||||
|
class MailHelper extends Base
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the mailbox hash from an email address
|
||||||
|
*
|
||||||
|
* @access public
|
||||||
|
* @param string $email
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getMailboxHash($email)
|
||||||
|
{
|
||||||
|
if (! strpos($email, '@') || ! strpos($email, '+')) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
list($localPart, ) = explode('@', $email);
|
||||||
|
list(, $identifier) = explode('+', $localPart);
|
||||||
|
|
||||||
|
return $identifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter mail subject
|
||||||
|
*
|
||||||
|
* @access public
|
||||||
|
* @param string $subject
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function filterSubject($subject)
|
||||||
|
{
|
||||||
|
$subject = str_replace('RE: ', '', $subject);
|
||||||
|
$subject = str_replace('FW: ', '', $subject);
|
||||||
|
|
||||||
|
return $subject;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -89,6 +89,22 @@ class SwimlaneModel extends Base
|
|||||||
->findOne();
|
->findOne();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get first active swimlane for a project
|
||||||
|
*
|
||||||
|
* @access public
|
||||||
|
* @param integer $project_id
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getFirstActiveSwimlane($project_id)
|
||||||
|
{
|
||||||
|
return $this->db->table(self::TABLE)
|
||||||
|
->eq('is_active', self::ACTIVE)
|
||||||
|
->eq('project_id', $project_id)
|
||||||
|
->orderBy('position', 'asc')
|
||||||
|
->findOne();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get default swimlane properties
|
* Get default swimlane properties
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ class HelperProvider implements ServiceProviderInterface
|
|||||||
$container['helper']->register('avatar', '\Kanboard\Helper\AvatarHelper');
|
$container['helper']->register('avatar', '\Kanboard\Helper\AvatarHelper');
|
||||||
$container['helper']->register('projectHeader', '\Kanboard\Helper\ProjectHeaderHelper');
|
$container['helper']->register('projectHeader', '\Kanboard\Helper\ProjectHeaderHelper');
|
||||||
$container['helper']->register('projectActivity', '\Kanboard\Helper\ProjectActivityHelper');
|
$container['helper']->register('projectActivity', '\Kanboard\Helper\ProjectActivityHelper');
|
||||||
|
$container['helper']->register('mail', '\Kanboard\Helper\MailHelper');
|
||||||
|
|
||||||
$container['template'] = new Template($container['helper']);
|
$container['template'] = new Template($container['helper']);
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
require_once __DIR__.'/../Base.php';
|
|
||||||
|
|
||||||
use Kanboard\Core\Tool;
|
|
||||||
|
|
||||||
class ToolTest extends Base
|
|
||||||
{
|
|
||||||
public function testMailboxHash()
|
|
||||||
{
|
|
||||||
$this->assertEquals('test1', Tool::getMailboxHash('a+test1@localhost'));
|
|
||||||
$this->assertEquals('', Tool::getMailboxHash('test1@localhost'));
|
|
||||||
$this->assertEquals('', Tool::getMailboxHash('test1'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
24
tests/units/Helper/MailHelperTest.php
Normal file
24
tests/units/Helper/MailHelperTest.php
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
require_once __DIR__.'/../Base.php';
|
||||||
|
|
||||||
|
use Kanboard\Helper\MailHelper;
|
||||||
|
|
||||||
|
class MailHelperTest extends Base
|
||||||
|
{
|
||||||
|
public function testMailboxHash()
|
||||||
|
{
|
||||||
|
$helper = new MailHelper($this->container);
|
||||||
|
$this->assertEquals('test1', $helper->getMailboxHash('a+test1@localhost'));
|
||||||
|
$this->assertEquals('', $helper->getMailboxHash('test1@localhost'));
|
||||||
|
$this->assertEquals('', $helper->getMailboxHash('test1'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testFilterSubject()
|
||||||
|
{
|
||||||
|
$helper = new MailHelper($this->container);
|
||||||
|
$this->assertEquals('Test', $helper->filterSubject('Test'));
|
||||||
|
$this->assertEquals('Test', $helper->filterSubject('RE: Test'));
|
||||||
|
$this->assertEquals('Test', $helper->filterSubject('FW: Test'));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -30,6 +30,19 @@ class SwimlaneTest extends Base
|
|||||||
$this->assertEquals('', $s->getNameById(23));
|
$this->assertEquals('', $s->getNameById(23));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testGetFirstActiveSwimlane()
|
||||||
|
{
|
||||||
|
$projectModel = new ProjectModel($this->container);
|
||||||
|
$swimlaneModel = new SwimlaneModel($this->container);
|
||||||
|
|
||||||
|
$this->assertEquals(1, $projectModel->create(array('name' => 'UnitTest')));
|
||||||
|
$this->assertEquals(1, $swimlaneModel->create(array('project_id' => 1, 'name' => 'Swimlane #1', 'is_active' => 0)));
|
||||||
|
$this->assertEquals(2, $swimlaneModel->create(array('project_id' => 1, 'name' => 'Swimlane #2')));
|
||||||
|
|
||||||
|
$swimlane = $swimlaneModel->getFirstActiveSwimlane(1);
|
||||||
|
$this->assertEquals(2, $swimlane['id']);
|
||||||
|
}
|
||||||
|
|
||||||
public function testGetList()
|
public function testGetList()
|
||||||
{
|
{
|
||||||
$p = new ProjectModel($this->container);
|
$p = new ProjectModel($this->container);
|
||||||
|
|||||||
Reference in New Issue
Block a user