Show spam aliases #
This commit is contained in:
24
data/web/rc/plugins/example_addressbook/composer.json
Normal file
24
data/web/rc/plugins/example_addressbook/composer.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "roundcube/example_addressbook",
|
||||
"type": "roundcube-plugin",
|
||||
"description": "Sample plugin to add a new address book with just a static list of contacts",
|
||||
"license": "GPLv3+",
|
||||
"version": "1.0",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Thomas Bruederli",
|
||||
"email": "roundcube@gmail.com",
|
||||
"role": "Lead"
|
||||
}
|
||||
],
|
||||
"repositories": [
|
||||
{
|
||||
"type": "composer",
|
||||
"url": "http://plugins.roundcube.net"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.0",
|
||||
"roundcube/plugin-installer": ">=0.1.3"
|
||||
}
|
||||
}
|
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
require_once(__DIR__ . '/example_addressbook_backend.php');
|
||||
|
||||
/**
|
||||
* Sample plugin to add a new address book
|
||||
* with just a static list of contacts
|
||||
*
|
||||
* @license GNU GPLv3+
|
||||
* @author Thomas Bruederli
|
||||
*/
|
||||
class example_addressbook extends rcube_plugin
|
||||
{
|
||||
private $abook_id = 'static';
|
||||
private $abook_name = 'Static List';
|
||||
|
||||
public function init()
|
||||
{
|
||||
$this->add_hook('addressbooks_list', array($this, 'address_sources'));
|
||||
$this->add_hook('addressbook_get', array($this, 'get_address_book'));
|
||||
|
||||
// use this address book for autocompletion queries
|
||||
// (maybe this should be configurable by the user?)
|
||||
$config = rcmail::get_instance()->config;
|
||||
$sources = (array) $config->get('autocomplete_addressbooks', array('sql'));
|
||||
if (!in_array($this->abook_id, $sources)) {
|
||||
$sources[] = $this->abook_id;
|
||||
$config->set('autocomplete_addressbooks', $sources);
|
||||
}
|
||||
}
|
||||
|
||||
public function address_sources($p)
|
||||
{
|
||||
$abook = new example_addressbook_backend($this->abook_name);
|
||||
$p['sources'][$this->abook_id] = array(
|
||||
'id' => $this->abook_id,
|
||||
'name' => $this->abook_name,
|
||||
'readonly' => $abook->readonly,
|
||||
'groups' => $abook->groups,
|
||||
);
|
||||
return $p;
|
||||
}
|
||||
|
||||
public function get_address_book($p)
|
||||
{
|
||||
if ($p['id'] === $this->abook_id) {
|
||||
$p['instance'] = new example_addressbook_backend($this->abook_name);
|
||||
}
|
||||
|
||||
return $p;
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,116 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Example backend class for a custom address book
|
||||
*
|
||||
* This one just holds a static list of address records
|
||||
*
|
||||
* @author Thomas Bruederli
|
||||
*/
|
||||
class example_addressbook_backend extends rcube_addressbook
|
||||
{
|
||||
public $primary_key = 'ID';
|
||||
public $readonly = true;
|
||||
public $groups = true;
|
||||
|
||||
private $filter;
|
||||
private $result;
|
||||
private $name;
|
||||
|
||||
public function __construct($name)
|
||||
{
|
||||
$this->ready = true;
|
||||
$this->name = $name;
|
||||
}
|
||||
|
||||
public function get_name()
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
public function set_search_set($filter)
|
||||
{
|
||||
$this->filter = $filter;
|
||||
}
|
||||
|
||||
public function get_search_set()
|
||||
{
|
||||
return $this->filter;
|
||||
}
|
||||
|
||||
public function reset()
|
||||
{
|
||||
$this->result = null;
|
||||
$this->filter = null;
|
||||
}
|
||||
|
||||
function list_groups($search = null, $mode = 0)
|
||||
{
|
||||
return array(
|
||||
array('ID' => 'testgroup1', 'name' => "Testgroup"),
|
||||
array('ID' => 'testgroup2', 'name' => "Sample Group"),
|
||||
);
|
||||
}
|
||||
|
||||
public function list_records($cols=null, $subset=0)
|
||||
{
|
||||
$this->result = $this->count();
|
||||
$this->result->add(array('ID' => '111', 'name' => "Example Contact", 'firstname' => "Example", 'surname' => "Contact", 'email' => "example@roundcube.net"));
|
||||
|
||||
return $this->result;
|
||||
}
|
||||
|
||||
public function search($fields, $value, $strict=false, $select=true, $nocount=false, $required=array())
|
||||
{
|
||||
// no search implemented, just list all records
|
||||
return $this->list_records();
|
||||
}
|
||||
|
||||
public function count()
|
||||
{
|
||||
return new rcube_result_set(1, ($this->list_page-1) * $this->page_size);
|
||||
}
|
||||
|
||||
public function get_result()
|
||||
{
|
||||
return $this->result;
|
||||
}
|
||||
|
||||
public function get_record($id, $assoc=false)
|
||||
{
|
||||
$this->list_records();
|
||||
$first = $this->result->first();
|
||||
$sql_arr = $first['ID'] == $id ? $first : null;
|
||||
|
||||
return $assoc && $sql_arr ? $sql_arr : $this->result;
|
||||
}
|
||||
|
||||
|
||||
function create_group($name)
|
||||
{
|
||||
$result = false;
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
function delete_group($gid)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
function rename_group($gid, $newname, &$newid)
|
||||
{
|
||||
return $newname;
|
||||
}
|
||||
|
||||
function add_to_group($group_id, $ids)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
function remove_from_group($group_id, $ids)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
class ExampleAddressbook_Plugin extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
function setUp()
|
||||
{
|
||||
include_once __DIR__ . '/../example_addressbook.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* Plugin object construction test
|
||||
*/
|
||||
function test_constructor()
|
||||
{
|
||||
$rcube = rcube::get_instance();
|
||||
$plugin = new example_addressbook($rcube->api);
|
||||
|
||||
$this->assertInstanceOf('example_addressbook', $plugin);
|
||||
$this->assertInstanceOf('rcube_plugin', $plugin);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user