Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merged branch devel-api (from r2208 to r2387) back into trunk (omitti…
…ng some sample plugins)
- Loading branch information
1 parent
fb253ee
commit cc97ea0
Showing
75 changed files
with
3,466 additions
and
1,270 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
42 changes: 42 additions & 0 deletions
42
plugins/additional_message_headers/additional_message_headers.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
<?php | ||
|
||
/** | ||
* Additional Message Headers | ||
* | ||
* Very simple plugin which will read additional headers for outgoing messages from the config file. | ||
* | ||
* Enable the plugin in config/main.inc.php and add your desired headers. | ||
* | ||
* @version 1.0 | ||
* @author Ziba Scott | ||
* @website http://roundcube.net | ||
* | ||
* Example: | ||
* | ||
* $rcmail_config['additional_message_headers']['X-Remote-Browser'] = $_SERVER['HTTP_USER_AGENT']; | ||
* $rcmail_config['additional_message_headers']['X-Originating-IP'] = $_SERVER['REMOTE_ADDR']; | ||
* $rcmail_config['additional_message_headers']['X-RoundCube-Server'] = $_SERVER['SERVER_ADDR']; | ||
* if( isset( $_SERVER['MACHINE_NAME'] )) { | ||
* $rcmail_config['additional_message_headers']['X-RoundCube-Server'] .= ' (' . $_SERVER['MACHINE_NAME'] . ')'; | ||
* } | ||
*/ | ||
class additional_message_headers extends rcube_plugin | ||
{ | ||
public $task = 'mail'; | ||
|
||
function init() | ||
{ | ||
$this->add_hook('outgoing_message_headers', array($this, 'message_headers')); | ||
} | ||
|
||
function message_headers($args){ | ||
|
||
// additional email headers | ||
$additional_headers = rcmail::get_instance()->config->get('additional_message_headers',array()); | ||
foreach($additional_headers as $header=>$value){ | ||
$args['headers'][$header] = $value; | ||
} | ||
|
||
return $args; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
<?php | ||
|
||
/** | ||
* Sample plugin to try out some hooks. | ||
* This performs an automatic login if accessed from localhost | ||
*/ | ||
class autologon extends rcube_plugin | ||
{ | ||
|
||
function init() | ||
{ | ||
$this->add_hook('startup', array($this, 'startup')); | ||
$this->add_hook('authenticate', array($this, 'authenticate')); | ||
} | ||
|
||
function startup($args) | ||
{ | ||
$rcmail = rcmail::get_instance(); | ||
|
||
// change action to login | ||
if ($args['task'] == 'mail' && empty($args['action']) && empty($_SESSION['user_id']) && !empty($_GET['_autologin']) && $this->is_localhost()) | ||
$args['action'] = 'login'; | ||
|
||
return $args; | ||
} | ||
|
||
function authenticate($args) | ||
{ | ||
if (!empty($_GET['_autologin']) && $this->is_localhost()) { | ||
$args['user'] = 'me'; | ||
$args['pass'] = '******'; | ||
$args['host'] = 'localhost'; | ||
} | ||
|
||
return $args; | ||
} | ||
|
||
function is_localhost() | ||
{ | ||
return $_SERVER['REMOTE_ADDR'] == '::1' || $_SERVER['REMOTE_ADDR'] == '127.0.0.1'; | ||
} | ||
|
||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,152 @@ | ||
<?php | ||
/** | ||
* Filesystem Attachments | ||
* | ||
* This plugin which provides database backed storage for temporary | ||
* attachment file handling. The primary advantage of this plugin | ||
* is its compatibility with round-robin dns multi-server roundcube | ||
* installations. | ||
* | ||
* This plugin relies on the core filesystem_attachments plugin | ||
* | ||
* @author Ziba Scott <ziba@umich.edu> | ||
* | ||
*/ | ||
require_once('plugins/filesystem_attachments/filesystem_attachments.php'); | ||
class database_attachments extends filesystem_attachments | ||
{ | ||
|
||
// A prefix for the cache key used in the session and in the key field of the cache table | ||
private $cache_prefix = "db_attach"; | ||
|
||
/** | ||
* Helper method to generate a unique key for the given attachment file | ||
*/ | ||
private function _key($filepath) | ||
{ | ||
return $this->cache_prefix.md5(mktime().$filepath.$_SESSION['user_id']); | ||
} | ||
|
||
/** | ||
* Save a newly uploaded attachment | ||
*/ | ||
function upload($args) | ||
{ | ||
$args['status'] = false; | ||
$rcmail = rcmail::get_instance(); | ||
$key = $this->_key($args['path']); | ||
$data = base64_encode(file_get_contents($args['path'])); | ||
|
||
$status = $rcmail->db->query( | ||
"INSERT INTO ".get_table_name('cache')." | ||
(created, user_id, cache_key, data) | ||
VALUES (".$rcmail->db->now().", ?, ?, ?)", | ||
$_SESSION['user_id'], | ||
$key, | ||
$data); | ||
|
||
if ($status) { | ||
$args['id'] = $key; | ||
$args['status'] = true; | ||
unset($args['path']); | ||
} | ||
|
||
return $args; | ||
} | ||
|
||
/** | ||
* Save an attachment from a non-upload source (draft or forward) | ||
*/ | ||
function save($args) | ||
{ | ||
$args['status'] = false; | ||
$rcmail = rcmail::get_instance(); | ||
|
||
$key = $this->_key($args['name']); | ||
$data = base64_encode($args['data']); | ||
|
||
$status = $rcmail->db->query( | ||
"INSERT INTO ".get_table_name('cache')." | ||
(created, user_id, cache_key, data) | ||
VALUES (".$rcmail->db->now().", ?, ?, ?)", | ||
$_SESSION['user_id'], | ||
$key, | ||
$data); | ||
|
||
if ($status) { | ||
$args['id'] = $key; | ||
$args['status'] = true; | ||
} | ||
|
||
return $args; | ||
} | ||
|
||
/** | ||
* Remove an attachment from storage | ||
* This is triggered by the remove attachment button on the compose screen | ||
*/ | ||
function remove($args) | ||
{ | ||
$args['status'] = false; | ||
$rcmail = rcmail::get_instance(); | ||
$status = $rcmail->db->query( | ||
"DELETE FROM ".get_table_name('cache')." | ||
WHERE user_id=? | ||
AND cache_key=?", | ||
$_SESSION['user_id'], | ||
$args['id']); | ||
|
||
if ($status) { | ||
$args['status'] = true; | ||
} | ||
|
||
return $args; | ||
} | ||
|
||
/** | ||
* When composing an html message, image attachments may be shown | ||
* For this plugin, $this->get_attachment will check the file and | ||
* return it's contents | ||
*/ | ||
function display($args) | ||
{ | ||
return $this->get_attachment($args); | ||
} | ||
|
||
/** | ||
* When displaying or sending the attachment the file contents are fetched | ||
* using this method. This is also called by the display_attachment hook. | ||
*/ | ||
function get_attachment($args) | ||
{ | ||
$rcmail = rcmail::get_instance(); | ||
|
||
$sql_result = $rcmail->db->query( | ||
"SELECT cache_id, data | ||
FROM ".get_table_name('cache')." | ||
WHERE user_id=? | ||
AND cache_key=?", | ||
$_SESSION['user_id'], | ||
$args['id']); | ||
|
||
if ($sql_arr = $rcmail->db->fetch_assoc($sql_result)) { | ||
$args['data'] = base64_decode($sql_arr['data']); | ||
$args['status'] = true; | ||
} | ||
|
||
return $args; | ||
} | ||
|
||
/** | ||
* Delete all temp files associated with this user | ||
*/ | ||
function cleanup($args) | ||
{ | ||
$rcmail = rcmail::get_instance(); | ||
$rcmail->db->query( | ||
"DELETE FROM ".get_table_name('cache')." | ||
WHERE user_id=? | ||
AND cache_key like '{$this->cache_prefix}%'", | ||
$_SESSION['user_id']); | ||
} | ||
} |
Oops, something went wrong.