|
<?php |
|
|
|
namespace Kanboard\Model; |
|
|
|
use Kanboard\Core\Base; |
|
use Kanboard\Core\Security\Token; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class InviteModel extends Base |
|
{ |
|
const TABLE = 'invites'; |
|
|
|
public function createInvites(array $emails, $projectId) |
|
{ |
|
$emails = array_unique($emails); |
|
$nb = 0; |
|
|
|
foreach ($emails as $email) { |
|
$email = trim($email); |
|
|
|
if (! empty($email) && $this->createInvite($email, $projectId)) { |
|
$nb++; |
|
} |
|
} |
|
|
|
return $nb; |
|
} |
|
|
|
protected function createInvite($email, $projectId) |
|
{ |
|
$values = array( |
|
'email' => $email, |
|
'project_id' => $projectId, |
|
'token' => Token::getToken(), |
|
); |
|
|
|
if ($this->db->table(self::TABLE)->insert($values)) { |
|
$this->sendInvite($values); |
|
return true; |
|
} |
|
|
|
return false; |
|
} |
|
|
|
protected function sendInvite(array $values) |
|
{ |
|
$this->emailClient->send( |
|
$values['email'], |
|
$values['email'], |
|
e('Kanboard Invitation'), |
|
$this->template->render('user_invite/email', array('token' => $values['token'])) |
|
); |
|
} |
|
|
|
public function getByToken($token) |
|
{ |
|
return $this->db->table(self::TABLE) |
|
->eq('token', $token) |
|
->findOne(); |
|
} |
|
|
|
public function remove($email) |
|
{ |
|
return $this->db->table(self::TABLE) |
|
->eq('email', $email) |
|
->remove(); |
|
} |
|
} |
|
|