Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
Roundcube Plugin Filters
============================

Roundcube Webmail 1.6 compatible.
Plugin that adds a new tab to the settings section to create client-side e-mail filtering.

@version 2.2.0
@author Roberto Zarrelli <zarrelli@unimol.it>
@version 2.3.0
@author Yoshioki Matsunaga <yoshioki@matsunaga.me.uk>
@developer Artur Petrov <artur@phpchain.ru>

Installation
Expand All @@ -29,7 +30,7 @@ Installation (ISPConfig 3.1)
```
#!/bin/bash
cd /usr/share/roundcube/plugins
wget https://github.com/6ec123321/filters/archive/master.zip
wget https://github.com/yoshioki/filters/archive/master.zip
unzip master.zip && mv filters-master filters
cd filters && mkdir /etc/roundcube/plugins/filters
mv config.inc.php /etc/roundcube/plugins/filters/config.inc.php
Expand Down Expand Up @@ -118,3 +119,5 @@ History
* 2.2.0:
- Fixed error "filters have stopped working after an update from version 2.1.7 to 2.1.9" (https://github.com/6ec123321/filters/issues/46);
- Fixed error "Folder name with single quotation marks not filtered".
* 2.3.0
- Fixed for Roundcubemail 1.6.6;
2 changes: 1 addition & 1 deletion filters.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
*
* Plugin that adds a new tab to the settings section to create client-side e-mail filtering.
*
* @version 2.2.0
* @version 2.3.0
* @author Roberto Zarrelli <zarrelli@unimol.it>
* @developer Artur Petrov <artur@phpchain.ru>
*/
Expand Down
38 changes: 22 additions & 16 deletions filters.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ class filters extends rcube_plugin{

public $task = 'login|mail|settings';

private $rc;
private $autoAddSpamFilterRule;
private $spam_subject;
private $spam_headers = array();
Expand Down Expand Up @@ -64,7 +65,13 @@ function init(){
function storage_init($p)
{
if ($add_headers = (array)$this->rc->config->get('spam_headers', array()))
$p['fetch_headers'] = trim($p['fetch_headers'].' ' . strtoupper(join(' ', $add_headers)));
if (isset($p['fetch_headers'])) {
$p['fetch_headers'] .= trim(' ' . strtoupper(join(' ', $add_headers)));
}
else {
$p['fetch_headers'] = trim(strtoupper(join(' ', $add_headers)));
}

return $p;
}

Expand All @@ -81,14 +88,8 @@ function settings_actions($args){

function filters_checkmsg($mlist){
$user = $this->rc->user;
if (method_exists($this->rc->imap,'get_mailbox_name')) {
$imap = $this->rc->imap;
$open_mbox = $imap->get_mailbox_name();
}
else{
$imap = $this->rc->storage;
$open_mbox = $imap->get_folder();
}
$imap = $this->rc->storage;
$open_mbox = $imap->get_folder();

$this->open_mbox=$open_mbox;

Expand All @@ -103,20 +104,22 @@ function filters_checkmsg($mlist){
// if saved source folder not exists set to INBOX
if (empty($saved_filter['srcfolder'])) $saved_filter['srcfolder'] = 'INBOX';
// if saved destination folder exists and current folder is "check folder"
$filterpriority = isset($saved_filter['filterpriority']) ? $saved_filter['filterpriority'] : '';
$markread = isset($saved_filter['markread']) ? $saved_filter['markread'] : '';
if (method_exists($imap,'mailbox_exists')){
if ($imap->mailbox_exists($saved_filter['destfolder']) && $imap->mailbox_exists($saved_filter['srcfolder']) && $saved_filter['srcfolder']==$open_mbox && $saved_filter['destfolder']!=$saved_filter['srcfolder']){
$saved_filter['searchstring'] = html_entity_decode($saved_filter['searchstring']);
// destfolder#messages#filterpriority#markread
$this->searchstring[ $saved_filter['whatfilter'] ][ $saved_filter['searchstring'] ] =
$saved_filter['destfolder']."#".$saved_filter['messages']."#".$saved_filter['filterpriority']."#".$saved_filter['markread'];
$saved_filter['destfolder']."#".$saved_filter['messages']."#".$filterpriority."#".$markread;
}
}
if (!method_exists($imap,'mailbox_exists')){
if ($imap->folder_exists($saved_filter['destfolder']) && $imap->folder_exists($saved_filter['srcfolder']) && $saved_filter['srcfolder']==$open_mbox && $saved_filter['destfolder']!=$saved_filter['srcfolder']){
$saved_filter['searchstring'] = html_entity_decode($saved_filter['searchstring']);
// destfolder#messages#filterpriority#markread
$this->searchstring[ $saved_filter['whatfilter'] ][ $saved_filter['searchstring'] ] =
$saved_filter['destfolder']."#".$saved_filter['messages']."#".$saved_filter['filterpriority']."#".$saved_filter['markread'];
$saved_filter['destfolder']."#".$saved_filter['messages']."#".$filterpriority."#".$markread;
}
}
}
Expand Down Expand Up @@ -168,7 +171,8 @@ function filters_save(){
$destfolder = trim(rcube_utils::get_input_value('_folders', rcube_utils::INPUT_POST, true));
$whatfilter = trim(rcube_utils::get_input_value('_whatfilter', rcube_utils::INPUT_POST, true));
$messages = trim(rcube_utils::get_input_value('_messages', rcube_utils::INPUT_POST, true));
$filterpriority = trim(rcube_utils::get_input_value('_checkbox', rcube_utils::INPUT_POST, true));
$filterpriority = rcube_utils::get_input_value('_checkbox', rcube_utils::INPUT_POST, true);
$filterpriority = !empty($filterpriority) ? trim($filterpriority) : $filterpriority;
$markread = trim(rcube_utils::get_input_value('_markread', rcube_utils::INPUT_POST, true));

if ($searchstring == "")
Expand Down Expand Up @@ -199,11 +203,13 @@ function filters_delete(){
$this->register_handler('plugin.body', array($this, 'filters_form'));
$this->rc->output->set_pagetitle($this->gettext('filters'));

if (isset($_GET[filterid])){
$filter_id = $_GET[filterid];
if (isset($_GET["filterid"])){
$filter_id = $_GET["filterid"];
$arr_prefs = $user->get_prefs();
$arr_prefs['filters'][$filter_id] = '';
$arr_prefs['filters'] = array_diff($arr_prefs['filters'], array(''));
foreach ($arr_prefs['filters'] as $key => $saved_filter){
if (empty($saved_filter)) unset($arr_prefs['filters'][$key]);
}
if ($user->save_prefs($arr_prefs))
$this->rc->output->command('display_message', $this->gettext('successfullydeleted'), 'confirmation');
else
Expand Down Expand Up @@ -321,7 +327,7 @@ function filters_form(){
'label' => 'save'
)))));
$out.= html::div(array('id' => 'prefs-title','class' => 'boxtitle'), $this->gettext('storedfilters')).
html::div(array('class' => 'uibox listbox scroller','style'=>'margin-top:250px;'),
html::div(array('class' => 'uibox listbox scroller','style'=>'margin-top:50px;overflow-y: scroll;height: calc( 100dvh - 500px );'),
html::div(array('class' => 'boxcontent'), $table2->show() ));

$this->rc->output->add_gui_object('filtersform', 'filters-form');
Expand Down