Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
abc3c9ea5f | ||
|
|
148052a6d0 | ||
|
|
7bb10e55d7 |
@@ -19,6 +19,8 @@ CREATE TABLE IF NOT EXISTS ident_switch
|
|||||||
imap_port
|
imap_port
|
||||||
int
|
int
|
||||||
CHECK(imap_port > 0 AND imap_port <= 65535),
|
CHECK(imap_port > 0 AND imap_port <= 65535),
|
||||||
|
imap_delimiter
|
||||||
|
char(1),
|
||||||
label
|
label
|
||||||
varchar(32),
|
varchar(32),
|
||||||
flags
|
flags
|
||||||
|
|||||||
5
SQL/mysql/2019112000.sql
Normal file
5
SQL/mysql/2019112000.sql
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
ALTER TABLE
|
||||||
|
ident_switch
|
||||||
|
ADD COLUMN
|
||||||
|
imap_delimiter
|
||||||
|
char(1);
|
||||||
@@ -21,6 +21,8 @@ CREATE TABLE ident_switch
|
|||||||
imap_port
|
imap_port
|
||||||
integer
|
integer
|
||||||
CHECK(imap_port > 0 AND imap_port <= 65535),
|
CHECK(imap_port > 0 AND imap_port <= 65535),
|
||||||
|
imap_delimiter
|
||||||
|
char(1),
|
||||||
label
|
label
|
||||||
varchar(32),
|
varchar(32),
|
||||||
flags
|
flags
|
||||||
|
|||||||
5
SQL/postgres/2019112000.sql
Normal file
5
SQL/postgres/2019112000.sql
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
ALTER TABLE
|
||||||
|
ident_switch
|
||||||
|
ADD COLUMN
|
||||||
|
imap_delimiter
|
||||||
|
char(1);
|
||||||
@@ -21,6 +21,8 @@ CREATE TABLE ident_switch
|
|||||||
imap_port
|
imap_port
|
||||||
integer
|
integer
|
||||||
CHECK(imap_port > 0 AND imap_port <= 65535),
|
CHECK(imap_port > 0 AND imap_port <= 65535),
|
||||||
|
imap_delimiter
|
||||||
|
char(1),
|
||||||
label
|
label
|
||||||
varchar(32),
|
varchar(32),
|
||||||
flags
|
flags
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ class ident_switch extends rcube_plugin
|
|||||||
function on_smtp_connect($args)
|
function on_smtp_connect($args)
|
||||||
{
|
{
|
||||||
$iid = $_SESSION['iid' . self::MY_POSTFIX];
|
$iid = $_SESSION['iid' . self::MY_POSTFIX];
|
||||||
if (!is_integer($iid) || $iid == -1)
|
if (!is_numeric($iid) || $iid == -1)
|
||||||
return $args;
|
return $args;
|
||||||
|
|
||||||
$rc = rcmail::get_instance();
|
$rc = rcmail::get_instance();
|
||||||
@@ -207,6 +207,7 @@ class ident_switch extends rcube_plugin
|
|||||||
$prefix . 'tls' => array('type' => 'checkbox'),
|
$prefix . 'tls' => array('type' => 'checkbox'),
|
||||||
$prefix . 'username' => array('type' => 'text', 'size' => 64, 'placeholder' => $record['email']),
|
$prefix . 'username' => array('type' => 'text', 'size' => 64, 'placeholder' => $record['email']),
|
||||||
$prefix . 'password' => array('type' => 'password', 'size' => 64),
|
$prefix . 'password' => array('type' => 'password', 'size' => 64),
|
||||||
|
$prefix . 'delimiter' => array('type' => 'text', 'size' => 1, 'placeholder' => '.'),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -246,6 +247,7 @@ class ident_switch extends rcube_plugin
|
|||||||
'label' => 'common.label',
|
'label' => 'common.label',
|
||||||
'imap_host' => 'imap.host',
|
'imap_host' => 'imap.host',
|
||||||
'imap_port' => 'imap.port',
|
'imap_port' => 'imap.port',
|
||||||
|
'imap_delimiter' => 'imap.delimiter',
|
||||||
'username' => 'imap.username',
|
'username' => 'imap.username',
|
||||||
'password' => 'imap.password',
|
'password' => 'imap.password',
|
||||||
'smtp_host' => 'smtp.host',
|
'smtp_host' => 'smtp.host',
|
||||||
@@ -417,6 +419,11 @@ class ident_switch extends rcube_plugin
|
|||||||
if ($retVal['imap.port'] && ($retVal['imap.port'] <= 0 || $retVal['imap.port'] > 65535))
|
if ($retVal['imap.port'] && ($retVal['imap.port'] <= 0 || $retVal['imap.port'] > 65535))
|
||||||
$retVal['err'] = 'port.range';
|
$retVal['err'] = 'port.range';
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
$retVal['imap.delimiter'] = self::get_field_value('imap', 'delimiter');
|
||||||
|
if (strlen($retVal['imap.delimiter']) > 1)
|
||||||
|
$retVal['err'] = 'delim.long';
|
||||||
|
else
|
||||||
{
|
{
|
||||||
$retVal['imap.user'] = self::get_field_value('imap', 'username');
|
$retVal['imap.user'] = self::get_field_value('imap', 'username');
|
||||||
if (strlen($retVal['imap.user']) > 64)
|
if (strlen($retVal['imap.user']) > 64)
|
||||||
@@ -442,6 +449,7 @@ class ident_switch extends rcube_plugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Get also password
|
// Get also password
|
||||||
$retVal['imap.pass'] = self::get_field_value('imap', 'password', false, true);
|
$retVal['imap.pass'] = self::get_field_value('imap', 'password', false, true);
|
||||||
@@ -478,14 +486,14 @@ class ident_switch extends rcube_plugin
|
|||||||
{ // Record already exists, will update it
|
{ // Record already exists, will update it
|
||||||
$sql = 'UPDATE ' .
|
$sql = 'UPDATE ' .
|
||||||
$rc->db->table_name(self::TABLE) .
|
$rc->db->table_name(self::TABLE) .
|
||||||
' SET flags = ?, label = ?, imap_host = ?, imap_port = ?, username = ?, password = ?, smtp_host = ?, smtp_port = ?, user_id = ?, iid = ?' .
|
' SET flags = ?, label = ?, imap_host = ?, imap_port = ?, imap_delimiter = ?, username = ?, password = ?, smtp_host = ?, smtp_port = ?, user_id = ?, iid = ?' .
|
||||||
' WHERE id = ?';
|
' WHERE id = ?';
|
||||||
}
|
}
|
||||||
else if ($data['flags'] & self::DB_ENABLED)
|
else if ($data['flags'] & self::DB_ENABLED)
|
||||||
{ // No record exists, create new one
|
{ // No record exists, create new one
|
||||||
$sql = 'INSERT INTO ' .
|
$sql = 'INSERT INTO ' .
|
||||||
$rc->db->table_name(self::TABLE) .
|
$rc->db->table_name(self::TABLE) .
|
||||||
'(flags, label, imap_host, imap_port, username, password, smtp_host, smtp_port, user_id, iid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
|
'(flags, label, imap_host, imap_port, imap_delimiter, username, password, smtp_host, smtp_port, user_id, iid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($sql)
|
if ($sql)
|
||||||
@@ -500,6 +508,7 @@ class ident_switch extends rcube_plugin
|
|||||||
$data['label'],
|
$data['label'],
|
||||||
$data['imap.host'],
|
$data['imap.host'],
|
||||||
$data['imap.port'],
|
$data['imap.port'],
|
||||||
|
$data['imap.delimiter'],
|
||||||
$data['imap.user'],
|
$data['imap.user'],
|
||||||
$data['imap.pass'],
|
$data['imap.pass'],
|
||||||
$data['smtp.host'],
|
$data['smtp.host'],
|
||||||
@@ -542,7 +551,7 @@ class ident_switch extends rcube_plugin
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$sql = 'SELECT imap_host, flags, imap_port, username, password, iid FROM ' . $rc->db->table_name(self::TABLE) . ' WHERE id = ? AND user_id = ?';
|
$sql = 'SELECT imap_host, flags, imap_port, imap_delimiter, username, password, iid FROM ' . $rc->db->table_name(self::TABLE) . ' WHERE id = ? AND user_id = ?';
|
||||||
$q = $rc->db->query($sql, $identId ,$rc->user->ID);
|
$q = $rc->db->query($sql, $identId ,$rc->user->ID);
|
||||||
$r = $rc->db->fetch_assoc($q);
|
$r = $rc->db->fetch_assoc($q);
|
||||||
if (is_array($r))
|
if (is_array($r))
|
||||||
@@ -558,6 +567,29 @@ class ident_switch extends rcube_plugin
|
|||||||
|
|
||||||
self::write_log("Switching mailbox to one for identity with ID = {$r['iid']} (username = '{$r['username']}').");
|
self::write_log("Switching mailbox to one for identity with ID = {$r['iid']} (username = '{$r['username']}').");
|
||||||
|
|
||||||
|
if ($_SESSION['username'] == $rc->user->data['username'])
|
||||||
|
{ // If we are in default account now - save values
|
||||||
|
foreach ($_SESSION as $k => $v)
|
||||||
|
{
|
||||||
|
if (strncasecmp($k, 'storage', 7) === 0 && substr_compare($k, self::MY_POSTFIX, -$my_postfix_len, $my_postfix_len) !== 0)
|
||||||
|
{
|
||||||
|
if (!$_SESSION[$k . self::MY_POSTFIX])
|
||||||
|
$_SESSION[$k . self::MY_POSTFIX] = $_SESSION[$k];
|
||||||
|
|
||||||
|
$rc->session->remove($k);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$moreToSave = Array('password', 'imap_delimiter');
|
||||||
|
foreach ($moreToSave as $k)
|
||||||
|
{
|
||||||
|
if (!$_SESSION[$k . self::MY_POSTFIX])
|
||||||
|
$_SESSION[$k . self::MY_POSTFIX] = $_SESSION[$k];
|
||||||
|
|
||||||
|
$rc->session->remove($k);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$def_port = 143; // Default IMAP port here!
|
$def_port = 143; // Default IMAP port here!
|
||||||
$ssl = null;
|
$ssl = null;
|
||||||
if ($r['flags'] & self::DB_SECURE_IMAP_TLS)
|
if ($r['flags'] & self::DB_SECURE_IMAP_TLS)
|
||||||
@@ -567,30 +599,16 @@ class ident_switch extends rcube_plugin
|
|||||||
}
|
}
|
||||||
$port = $r['imap_port'] ? $r['imap_port'] : $def_port;
|
$port = $r['imap_port'] ? $r['imap_port'] : $def_port;
|
||||||
|
|
||||||
// If we are in default account now
|
|
||||||
// save everything with STORAGE
|
|
||||||
if ($_SESSION['username'] == $rc->user->data['username'])
|
|
||||||
{
|
|
||||||
foreach ($_SESSION as $k => $v)
|
|
||||||
{
|
|
||||||
if (strncasecmp($k, 'storage', 7) === 0 && substr_compare($k, self::MY_POSTFIX, -$my_postfix_len, $my_postfix_len) !== 0)
|
|
||||||
{
|
|
||||||
if (!$_SESSION[$k . self::MY_POSTFIX])
|
|
||||||
$_SESSION[$k . self::MY_POSTFIX] = $_SESSION[$k];
|
|
||||||
$rc->session->remove($k);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!$_SESSION['password' . self::MY_POSTFIX])
|
|
||||||
$_SESSION['password' . self::MY_POSTFIX] = $_SESSION['password'];
|
|
||||||
|
|
||||||
$host = $r['imap_host'] ? $r['imap_host'] : 'localhost'; // Default IMAP host here!
|
$host = $r['imap_host'] ? $r['imap_host'] : 'localhost'; // Default IMAP host here!
|
||||||
if ($ssl)
|
if ($ssl)
|
||||||
$host = "{$ssl}://{$host}";
|
$host = "{$ssl}://{$host}";
|
||||||
|
|
||||||
|
$delimiter = $r['delimiter'] ? $r['delimiter'] : '.'; // Default delimiter here
|
||||||
|
|
||||||
$_SESSION['storage_host'] = $host;
|
$_SESSION['storage_host'] = $host;
|
||||||
$_SESSION['storage_ssl'] = $ssl;
|
$_SESSION['storage_ssl'] = $ssl;
|
||||||
$_SESSION['storage_port'] = $port;
|
$_SESSION['storage_port'] = $port;
|
||||||
|
$_SESSION['imap_delimiter'] = $delimiter;
|
||||||
$_SESSION['username'] = $r['username'];
|
$_SESSION['username'] = $r['username'];
|
||||||
$_SESSION['password'] = $r['password'];
|
$_SESSION['password'] = $r['password'];
|
||||||
$_SESSION['iid' . self::MY_POSTFIX] = $r['iid'];
|
$_SESSION['iid' . self::MY_POSTFIX] = $r['iid'];
|
||||||
|
|||||||
@@ -29,6 +29,9 @@ $labels['form.imap.tls'] = 'Secure connection (TLS)';
|
|||||||
// Port
|
// Port
|
||||||
$labels['form.imap.port'] = 'Port';
|
$labels['form.imap.port'] = 'Port';
|
||||||
|
|
||||||
|
// Folder hierarchy delimiter
|
||||||
|
$labels['form.delimiter'] = 'Folder hierarchy delimiter';
|
||||||
|
|
||||||
// Username
|
// Username
|
||||||
$labels['form.imap.username'] = 'Username';
|
$labels['form.imap.username'] = 'Username';
|
||||||
|
|
||||||
|
|||||||
@@ -4,47 +4,64 @@
|
|||||||
*/
|
*/
|
||||||
$labels = array();
|
$labels = array();
|
||||||
|
|
||||||
// IMAP
|
// Plugin ident_switch
|
||||||
$labels['form.caption'] = 'IMAP';
|
$labels['form.common.caption'] = 'Plugin ident_switch';
|
||||||
|
|
||||||
// Enabled
|
// Enabled
|
||||||
$labels['form.enabled'] = 'Activé';
|
$labels['form.common.enabled'] = 'Activer';
|
||||||
|
|
||||||
// Label
|
// Label
|
||||||
$labels['form.label'] = 'Nom d\'affichage';
|
$labels['form.common.label'] = 'Nom à afficher';
|
||||||
|
|
||||||
|
// Value in \'Label\' field is too long (32 chars max).
|
||||||
|
$labels['err.label.long'] = 'La valeur du champ \'Nom à afficher\' est trop longue (32 caractères max).';
|
||||||
|
|
||||||
|
|
||||||
|
// IMAP
|
||||||
|
$labels['form.imap.caption'] = 'IMAP';
|
||||||
|
|
||||||
// Server host name
|
// Server host name
|
||||||
$labels['form.host']='Nom d\'hôte du serveur';
|
$labels['form.imap.host'] = 'Serveur';
|
||||||
|
|
||||||
// Secure connection (SSL/TLS)
|
// Secure connection (TLS)
|
||||||
$labels['form.secure']='Sécurité de la connexion';
|
$labels['form.imap.tls'] = 'Connexion sécurisée (TLS)';
|
||||||
|
|
||||||
// Port
|
// Port
|
||||||
$labels['form.port']='Port';
|
$labels['form.imap.port'] = 'Port';
|
||||||
|
|
||||||
// Username
|
// Username
|
||||||
$labels['form.username'] = 'Nom d\'utilisateur';
|
$labels['form.imap.username'] = 'Nom d\'utilisateur';
|
||||||
|
|
||||||
// Password
|
// Password
|
||||||
$labels['form.password'] = 'Mot de passe';
|
$labels['form.imap.password'] = 'Mot de passe';
|
||||||
|
|
||||||
// Folder hierarchy delimiter
|
|
||||||
$labels['form.delimiter'] = 'Délimiteur de la hiérarchie des dossiers';
|
|
||||||
|
|
||||||
// Value in \'Label\' field of IMAP section is too long (32 chars max).
|
|
||||||
$labels['err.label.long'] = 'La valeur du champ \'Nom d\'affichage\' de la section IMAP est trop longue (32 car. max).';
|
|
||||||
|
|
||||||
// Value in \'Server host name\' field of IMAP section is too long (64 chars max).
|
|
||||||
$labels['err.host.long'] = 'La valeur du champ \'Nom d\'hôte du serveur\' de la section IMAP est trop longue (64 car. max).';
|
|
||||||
|
|
||||||
// Value in \'Username\' field of IMAP section is too long (64 chars max).
|
// Value in \'Username\' field of IMAP section is too long (64 chars max).
|
||||||
$labels['err.user.long'] = 'La valeur du champ \'Nom d\'utilisateur\' de la section IMAP est trop longue (64 car. max).';
|
$labels['err.user.long'] = 'La valeur du champ \'Nom d\'utilisateur\' de la section IMAP est trop longue (64 caractères max).';
|
||||||
|
|
||||||
// Value in \'Folder hierarchy delimiter\' field of IMAP section is too long (1 char max).
|
|
||||||
$labels['err.delim.long'] = 'La valeur du champ \'Délimiteur de la hiérarchie des dossiers\' de la section IMAP est trop longue (1 car. max).';
|
|
||||||
|
|
||||||
// Value in \'Port\' field of IMAP section must be a number.
|
// SMTP
|
||||||
$labels['err.port.num'] = 'La valeur du champ \'Port\' de la section IMAP doit être un nombre.';
|
$labels['form.smtp.caption'] = 'SMTP';
|
||||||
|
|
||||||
// Value in \'Port\' field of IMAP section must be between 1 and 65535.
|
// Server host name
|
||||||
$labels['err.port.range'] = 'La valeur du champ \'Port\' de la section IMAP doit être comprise entre 1 et 65535.';
|
$labels['form.smtp.host'] = 'Serveur';
|
||||||
|
|
||||||
|
// Secure connection (TLS)
|
||||||
|
$labels['form.smtp.tls'] = 'Connexion sécurisée (TLS)';
|
||||||
|
|
||||||
|
// Port
|
||||||
|
$labels['form.smtp.port'] = 'Port';
|
||||||
|
|
||||||
|
// Authorization required
|
||||||
|
$labels['form.smtp.auth'] = 'Autorisation requise';
|
||||||
|
|
||||||
|
|
||||||
|
// Errors
|
||||||
|
|
||||||
|
// Value in \'Server host name\' field is too long (64 chars max).
|
||||||
|
$labels['err.host.long'] = 'La valeur du champ \'Serveur\' est trop longue (64 caractères max).';
|
||||||
|
|
||||||
|
// Value in \'Port\' field must be a number.
|
||||||
|
$labels['err.port.num'] = 'La valeur du champ \'Port\' doit être un nombre.';
|
||||||
|
|
||||||
|
// Value in \'Port\' field must be between 1 and 65535.
|
||||||
|
$labels['err.port.range'] = 'La valeur du champ \'Port\' doit être comprise entre 1 et 65535.';
|
||||||
|
|||||||
@@ -29,6 +29,9 @@ $labels['form.imap.tls'] = 'Безопасное подключение (TLS)';
|
|||||||
// Port
|
// Port
|
||||||
$labels['form.imap.port'] = 'Порт';
|
$labels['form.imap.port'] = 'Порт';
|
||||||
|
|
||||||
|
// Folder hierarchy delimiter
|
||||||
|
$labels['form.delimiter'] = 'Разделитель в иерархии папок';
|
||||||
|
|
||||||
// Username
|
// Username
|
||||||
$labels['form.imap.username'] = 'Имя пользователя';
|
$labels['form.imap.username'] = 'Имя пользователя';
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user