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 | */ | |
29 | function sql_get() { return ""; } | |
30 | ||
31 | function sql_clean($_uid, $_rid) { } | |
32 | ||
33 | /** stores the data to the mysql database | |
34 | * @param $_uid the id of the filter | |
35 | * @param $_rid the id of the rule | |
36 | * @param $_data an array or a string containing all the sql data row for this plugin | |
37 | * @return void | |
38 | */ | |
39 | function sql_store($_uid, $_rid, $_data) { } | |
40 | ||
41 | /** converts the row of the mysql SELECT into a shorter and usable $data | |
42 | * @param &$sql a reference on the sql row | |
43 | * @return an array with the shorter datas | |
44 | */ | |
45 | function sql_to_data(&$sql) { | |
46 | $res = array(); | |
47 | $res[] = $sql['pid']; | |
48 | $res[] = $sql['data']; | |
49 | return $res; | |
50 | } | |
51 | ||
52 | /** gives the procmailrc instruction of the data associated with this Plugin | |
53 | * @param $_data an array or a string containing all the sql data row for this plugin | |
54 | * @return the procmailrc string | |
55 | */ | |
56 | function to_string($_data) { return ""; } | |
57 | ||
58 | /** returns the function that creates the form in javascript (@see FwdPlugin for one example). | |
59 | * @return the string containing the javascript code | |
60 | */ | |
61 | function to_js() { return ""; } | |
62 | } | |
63 | ||
64 | class ActionPlugin extends Plugin { | |
65 | /** constructor */ | |
66 | function ActionPlugin() { $this->Plugin(); } | |
67 | ||
68 | function sql_store($_uid, $_rid, $_data) { | |
69 | mysql_query("INSERT INTO actions SET uid='$_uid',rid='$_rid',pid='{$_data[0]}',data='{$_data[1]}'"); | |
70 | } | |
71 | } | |
72 | ||
73 | class MatchPlugin extends Plugin { | |
74 | /** true if the plugin is used as global */ | |
75 | var $global; | |
76 | ||
77 | /** constructor */ | |
78 | function MatchPlugin($_glob) { | |
79 | $this->Plugin(); | |
80 | $this->global=$_glob; | |
81 | } | |
82 | ||
de47756d PH |
83 | function sql_store($_uid, $_rid, $_data) { |
84 | if($this->global) | |
fe9450a2 | 85 | mysql_query("INSERT INTO matches SET uid='$_uid',rid='0',pid='{$_data[0]}',data='{$_data[1]}'"); |
de47756d | 86 | else |
fe9450a2 | 87 | mysql_query("INSERT INTO matches SET uid='$_uid',rid='$_rid',pid='{$_data[0]}',data='{$_data[1]}'"); |
de47756d PH |
88 | } |
89 | ||
dd8de1ec PH |
90 | /** true if the plugin is used as global rule |
91 | * overload with (return false) if the plugin can not be used as a global rule | |
92 | * overload with (return true) if the plugin can not be used as a normal rule | |
93 | * @return true if usable as a global rule, false else | |
94 | */ | |
de47756d | 95 | function is_global() { return $this->global; } |
dd8de1ec PH |
96 | } |
97 | ||
98 | /******************************************************************************** | |
99 | * $Id$ | |
100 | * vim: set expandtab shiftwidth=4 tabstop=4 softtabstop=4 textwidth=100: | |
101 | ********************************************************************************/ | |
102 | ?> |