Documentation is available at basic_event.php
1 <?php
2 /**
3 * @author Jan H. Andersen <jha@ipwsystems.dk>
4 * @copyright {@link http://www.metajour.org/ Jan H. Andersen}
5 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
6 * @package METAjour
7 * @subpackage handler
8 * $Id: basic_event.php,v 1.8 2005/02/07 09:59:09 jan Exp $
9 */
10 require_once('ow.php');
11
12 class basic_event {
13 var $_events = null;
14 var $userhandler;
15
16 function parseEventContent($objectid,$eventid) {
17 $smarty =& $this->userhandler->getSmarty();
18 $smarty->default_resource_type = 'event';
19 $obj = owRead($objectid[0]);
20 $this->userhandler =& getUserHandler();
21
22 $eventobj = owRead($eventid);
23 $smarty->assign('user',$this->userhandler->getSmartyVars());
24 $smarty->assign('result',$obj->elements);
25 $smarty->assign('subject',$eventobj->elements[0]['subject']);
26 $arr['content'] = $smarty->fetch($eventid);
27 $arr['emailto'] = explode(';',$smarty->get_template_vars('emailto'));
28 $arr['msgto'] = explode(';',$smarty->get_template_vars('msgto'));
29 $arr['subject'] = $smarty->get_template_vars('subject');
30 $arr['skip'] = $smarty->get_template_vars('skip');
31 $arr['attach'] = $smarty->get_template_vars('attach');
32 return $arr;
33 }
34
35 function fireEvent($objectid,$eventid) {
36 global $CONFIG
37 $this->userhandler =& getUserHandler();
38 $this->userhandler->setUnlimitedAccess(true);
39 $resultarr = $this->parseEventContent($objectid,$eventid);
40 $obj = owRead($eventid);
41
42 if ($CONFIG['eventmail']) {
43 require_once('core/mimemail/htmlMimeMail.php');
44 $mail = new htmlMimeMail();
45 if ($obj->elements[0]['html'] == 1) {
46 $mail->setHTML($resultarr['content']);
47 $mail->setHTMLEncoding('8bit');
48 } else {
49 $mail->setText($resultarr['content']);
50 $mail->setTextEncoding('8bit');
51 }
52 }
53 if (is_array($resultarr['msgto'])) $obj->elements[0]['msgdest2'] = array_merge($obj->elements[0]['msgdest2'],$resultarr['msgto']);
54
55 $dest1to = array(); # array of objectid's of users
56 $dest2to = array(); # array of objectid's of users
57 if (is_array($obj->elements[0]['msgdest1'])) {
58 foreach ($obj->elements[0]['msgdest1'] as $dest) {
59 switch($dest) {
60 case 1:
61 $curobj = owRead($objectid[0]);
62 $dest1to[] = $curobj->getCreatedBy();
63 break;
64 case 2:
65 $usrobj = owRead($obj->getCreatedBy());
66 $dest1to[] = $userobj->getParentId();
67 break;
68 case 3:
69 $dest1to[] = $obj->getCheckedBy();
70 break;
71 case 4:
72 $dest1to[] = $this->userhandler->getObjectId();
73 break;
74 case 5:
75 $dest1to[] = $this->userhandler->getCreatedBy();
76 break;
77 }
78 }
79 }
80
81 if (is_array($obj->elements[0]['msgdest2'])) {
82 foreach ($obj->elements[0]['msgdest2'] as $dest) {
83 if ($dest != 0) {
84 $uobj = owRead($dest);
85 if ($uobj->type == 'usergroup') {
86 $dest2to = array_merge($dest2to,$uobj->getMembers());
87 } else {
88 $dest2to[] = $dest;
89 }
90 }
91 }
92 }
93
94 $internalto = array();
95 $emailto = array();
96
97 if (is_array($obj->elements[0]['msgtype1'])) {
98 foreach ($obj->elements[0]['msgtype1'] as $type) {
99 switch($type) {
100 case 1:
101 $internalto = array_merge($internalto,$dest1to);
102 break;
103 case 2:
104 $emailto = array_merge($emailto,$dest1to);
105 break;
106 }
107 }
108 }
109
110 if (is_array($obj->elements[0]['msgtype2'])) {
111 foreach ($obj->elements[0]['msgtype2'] as $type) {
112 switch($type) {
113 case 1:
114 $internalto = array_merge($internalto,$dest2to);
115 break;
116 case 2:
117 $emailto = array_merge($emailto,$dest2to);
118 break;
119 }
120 }
121 }
122
123
124 $internalto = array_unique($internalto);
125 $emailto = array_unique($emailto);
126 $emailadr = array();
127
128 if (is_array($emailto)) {
129 foreach ($emailto as $usrid) {
130 $usrobj = owRead($usrid);
131 if ($usrobj->elements[0]['email'] != '') $emailadr[] = $usrobj->elements[0]['email'];
132 }
133 }
134
135 if (is_array($resultarr['emailto'])) $emailadr = array_merge($emailadr,$resultarr['emailto']);
136
137 $emailadr = array_unique($emailadr);
138
139 $this->userhandler->setUnlimitedAccess(false);
140
141 if ($CONFIG['eventmail']) {
142 $mail->setSubject($resultarr['subject']);
143 $mail->setFrom($CONFIG['eventfrom']);
144 }
145 if ($resultarr['skip'] != '1') {
146 if ($CONFIG['eventmail']) {
147 foreach ($emailadr as $email) $mail->send(array($email));
148 }
149
150 if ($resultarr['attach'] == '1') {
151 $fobj = owNew('binfile');
152 $arr['mimetype'] = 'text/plain';
153 $arr['name'] = $resultarr['subject'];
154 $arr['_makecontent_'] = $resultarr['content'];
155 $fobj->createObject($arr,$objectid[0]);
156 }
157 }
158 }
159
160 function event($event='', $otype='', $objectid=array()) {
161 if (null == $this->_events) {
162 $obj = owNew('event');
163 $obj->setlistaccess(true);
164 $obj->listobjects();
165 $this->_events = $obj->elements;
166 }
167
168 if (is_array($this->_events)) {
169 foreach($this->_events as $curr) {
170 if ($curr['triggerevent'] == $event && ($curr['triggertype'] == $otype)) {
171 $this->fireEvent($objectid,$curr['objectid']);
172 }
173 }
174 }
175
176 }
177
178 }
179
180 function &GetEventHandler() {
181 static $_eventhandler = null;
182 if (null == $_eventhandler) {
183 $_eventhandler = new basic_event;
184 }
185 return $_eventhandler;
186 }
187
188 ?>
Documentation generated on Thu, 9 Jun 2005 06:51:04 +0200 by phpDocumentor 1.2.3