css default modifications
[old-projects.git] / philter / philter / include / plugin.inc.php
CommitLineData
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
10class 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
64class ActionPlugin extends Plugin {
65 /** constructor */
66 function ActionPlugin() { $this->Plugin(); }
67
68 function sql_store($_uid, $_rid, $_data) {
772509f3 69 mysql_query("INSERT INTO ".bd()."actions SET uid='$_uid',rid='$_rid',pid='{$_data[0]}',data='{$_data[1]}'");
dd8de1ec
PH
70 }
71}
72
73class 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)
772509f3 85 mysql_query("INSERT INTO ".bd()."matches SET uid='$_uid',rid='0',pid='{$_data[0]}',data='{$_data[1]}'");
de47756d 86 else
772509f3 87 mysql_query("INSERT INTO ".bd()."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?>