File: api.php

package info (click to toggle)
horde-sam 0.1-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 1,292 kB
  • ctags: 363
  • sloc: php: 1,449; xml: 646; makefile: 64; sql: 60; sh: 30
file content (81 lines) | stat: -rw-r--r-- 2,065 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
/**
 * SAM external API interface.
 *
 * $Horde: sam/lib/api.php,v 1.8 2005/06/01 15:26:07 jan Exp $
 *
 * This file defines SAM's external API interface. Other applications
 * can interact with SAM through this API.
 */

$_services['blacklistFrom'] = array(
    'args' => array('addresses' => '{urn:horde}stringArray'),
    'type' => 'boolean'
);

$_services['showBlacklist'] = array(
    'link' => '%application%/blacklist.php'
);

$_services['whitelistFrom'] = array(
    'args' => array('addresses' => '{urn:horde}stringArray'),
    'type' => 'boolean'
);

$_services['showWhitelist'] = array(
    'link' => '%application%/whitelist.php'
);

function _sam_whitelistFrom($addresses)
{
    require_once dirname(__FILE__) . '/../lib/base.php';

    global $sam_driver;
    if (!$sam_driver->hasCapability('whitelist_from')) {
        return false;
    }

    $sam_driver->retrieve();
    $list = $sam_driver->getListOption('whitelist_from');
    $list = preg_split("/\n/", $list);

    if (is_array($addresses)) {
        foreach ($addresses as $address) {
            if (!in_array($address, $list)) {
                $list[] = $address;
            }
        }
    } elseif (!in_array($address, $list)) {
        $list[] = $addresses;
    }

    $sam_driver->setListOption('whitelist_from', implode("\n", $list));
    return $sam_driver->store();
}

function _sam_blacklistFrom($addresses)
{
    require_once dirname(__FILE__) . '/../lib/base.php';

    global $sam_driver;
    if (!$sam_driver->hasCapability('blacklist_from')) {
        return false;
    }

    $sam_driver->retrieve();
    $list = $sam_driver->getListOption('blacklist_from');
    $list = preg_split("/\n/", $list);

    if (is_array($addresses)) {
        foreach ($addresses as $address) {
            if (!in_array($address, $list)) {
                $list[] = $address;
            }
        }
    } elseif (!in_array($address, $list)) {
        $list[] = $addresses;
    }

    $sam_driver->setListOption('blacklist_from', implode("\n", $list));
    return $sam_driver->store();
}