Commit | Line | Data |
---|---|---|
dd8de1ec PH |
1 | <?php |
2 | /******************************************************************************** | |
3 | * include/plugin.inc.php : The base class for each Plugin (action|match) | |
4 | * ---------------------- | |
5 | * | |
6 | * This file is part of the philter distribution | |
7 | * Copyright: See COPYING files that comes with this distribution | |
8 | ********************************************************************************/ | |
9 | ||
10 | class Plugin { | |
11 | /** constructor | |
12 | */ | |
13 | function Plugin() { } | |
14 | ||
15 | /** runtime id. | |
16 | * this function must return 0 if the class should not have any instance | |
17 | * @returns the rtti of the object | |
18 | */ | |
19 | function rtti() { return 0; } | |
20 | ||
21 | /** name of the plugin (to pick a choice in a select). | |
22 | * @return a string describing the plugin | |
23 | */ | |
24 | function name() { return "abstract class !!"; } | |
25 | ||
26 | /** gives the LEFT JOIN to add to the sql request to have all this plugin datas | |
27 | * @return the LEFT JOIN string, "" if irrelevant | |
28 | */ | |
19c62a84 PH |
29 | // function sql_get() { return ""; } |
30 | // function sql_clean($_uid, $_rid) { } | |
dd8de1ec PH |
31 | |
32 | /** stores the data to the mysql database | |
33 | * @param $_uid the id of the filter | |
34 | * @param $_rid the id of the rule | |
35 | * @param $_data an array or a string containing all the sql data row for this plugin | |
36 | * @return void | |
37 | */ | |
38 | function sql_store($_uid, $_rid, $_data) { } | |
39 | ||
40 | /** converts the row of the mysql SELECT into a shorter and usable $data | |
41 | * @param &$sql a reference on the sql row | |
42 | * @return an array with the shorter datas | |
43 | */ | |
44 | function sql_to_data(&$sql) { | |
deccde63 PH |
45 | if(preg_match('/^a:\d+:\{.*\}$/', $sql['data'])) |
46 | return unserialize($sql['data']); | |
47 | else | |
48 | return array($sql['pid'], $sql['data']); | |
dd8de1ec PH |
49 | } |
50 | ||
51 | /** gives the procmailrc instruction of the data associated with this Plugin | |
52 | * @param $_data an array or a string containing all the sql data row for this plugin | |
53 | * @return the procmailrc string | |
54 | */ | |
55 | function to_string($_data) { return ""; } | |
56 | ||
99dcf940 PH |
57 | function to_header_string() { return ""; } |
58 | ||
dd8de1ec PH |
59 | /** returns the function that creates the form in javascript (@see FwdPlugin for one example). |
60 | * @return the string containing the javascript code | |
61 | */ | |
62 | function to_js() { return ""; } | |
63 | } | |
64 | ||
65 | class ActionPlugin extends Plugin { | |
66 | /** constructor */ | |
67 | function ActionPlugin() { $this->Plugin(); } | |
68 | ||
69 | function sql_store($_uid, $_rid, $_data) { | |
deccde63 PH |
70 | if(count($_data) == 2) |
71 | $data = $_data[1]; | |
72 | else | |
73 | $data = serialize($_data); | |
74 | mysql_query("INSERT INTO ".bd()."actions SET uid='$_uid',rid='$_rid',pid='{$_data[0]}',data='$data'"); | |
dd8de1ec PH |
75 | } |
76 | } | |
77 | ||
78 | class MatchPlugin extends Plugin { | |
79 | /** true if the plugin is used as global */ | |
80 | var $global; | |
81 | ||
82 | /** constructor */ | |
83 | function MatchPlugin($_glob) { | |
84 | $this->Plugin(); | |
85 | $this->global=$_glob; | |
86 | } | |
87 | ||
de47756d | 88 | function sql_store($_uid, $_rid, $_data) { |
deccde63 PH |
89 | if(count($_data) == 2) |
90 | $data = $_data[1]; | |
91 | else | |
92 | $data = serialize($_data); | |
de47756d | 93 | if($this->global) |
deccde63 | 94 | mysql_query("INSERT INTO ".bd()."matches SET uid='$_uid',rid='0',pid='{$_data[0]}',data='$data'"); |
de47756d | 95 | else |
deccde63 | 96 | mysql_query("INSERT INTO ".bd()."matches SET uid='$_uid',rid='$_rid',pid='{$_data[0]}',data='$data'"); |
de47756d PH |
97 | } |
98 | ||
dd8de1ec PH |
99 | /** true if the plugin is used as global rule |
100 | * overload with (return false) if the plugin can not be used as a global rule | |
101 | * overload with (return true) if the plugin can not be used as a normal rule | |
102 | * @return true if usable as a global rule, false else | |
103 | */ | |
de47756d | 104 | function is_global() { return $this->global; } |
dd8de1ec PH |
105 | } |
106 | ||
107 | /******************************************************************************** | |
108 | * $Id$ | |
109 | * vim: set expandtab shiftwidth=4 tabstop=4 softtabstop=4 textwidth=100: | |
110 | ********************************************************************************/ | |
111 | ?> |