MessagePreview.php
[Pman.Core] / MessagePreview.php
1 <?php
2
3 require_once 'Pman.php';
4
5 class Pman_Core_MessagePreview extends Pman
6 {
7     var $masterTemplate = 'mail/MessagePreview.html';
8     
9     function getAuth()
10     {
11         if (HTML_FlexyFramework::get()->cli) {
12             return true;
13         }
14         $this->authUser = $this->getAuthUser();
15         if (!$this->authUser) {
16             return false;
17         }
18         return true;
19     }
20     
21     function get($v, $opts=array())
22     {
23  
24         if((empty($_REQUEST['_id']) && empty($_REQUEST['template_name']) )|| empty($_REQUEST['_table'])){
25             $this->jerr('Missing Options');
26         }
27         
28         $mlq = DB_DataObject::factory($_REQUEST['_table']);
29         if (!empty($_REQUEST['template_name'])) {
30             $res = $mlq->get('name', $_REQUEST['template_name']);
31         } else {
32             $res = $mlq->get($_REQUEST['_id']);
33         }
34         if (!$res) {
35             $this->jerr("invalid id/name");
36         }
37         
38         
39         if (isset($_REQUEST['ontable']) && !empty($_REQUEST['onid']) && !empty($_REQUEST['evtype'])) {
40             $tn = preg_replace('/[^a-z_]+/i', '', $_REQUEST['ontable']);
41             
42             $t = DB_DataObject::factory($tn);
43             if (!is_a($t, 'DB_DataObject') && !is_a($t, 'PDO_DataObject')) {
44                 $this->jerr("invalid URL");
45             }
46             if (!$t->get($_REQUEST['onid'])) {
47                 $this->jerr("invalid id");
48             }
49             if (!method_exists($t,'notify'.$_REQUEST['evtype'])) {
50                 $this->jerr("invalid evtype");
51             }
52             $m = 'notify'.$_REQUEST['evtype'];
53             $data = $t->$m('test@test.com', false, false, false);
54           
55             $data['subject'] = $data['Subject'];
56              $this->msg = (object )$data;
57             
58              
59
60             return;
61         }
62         
63         $this->msg = $mlq;
64
65         $this->showHtml = isset($_REQUEST['_as_html']) ? true : false;
66         
67     }
68     
69     function post($v)
70     {
71         if(empty($_REQUEST['_id']) || empty($_REQUEST['_table'])){
72             $this->jerr('Missing Options');
73         }
74         
75         if($_REQUEST['_table'] == 'core_email'){
76             $this->coreEmailSendTest();
77         }
78         
79         $cn = DB_DataObject::factory('core_notify');
80         $cn->setFrom(array(
81             'evtype'        => "{$_REQUEST['_table']}::SendPreviewEmail",
82             'onid'          => $_REQUEST['_id'],
83             'ontable'       => $_REQUEST['_table'],
84             'person_id'     => $this->authUser->id,
85             'person_table'  => 'Person',
86             'act_when'      => $cn->sqlValue("NOW() + INTERVAL 10 MINUTE"),
87             'act_start'     => $cn->sqlValue("NOW() + INTERVAL 10 MINUTE")
88         ));
89         
90         $cn->insert();
91         
92         $sent = $cn->sendManual();
93         
94         if(get_class($sent) != 'Pman_Core_NotifySend_Exception_Success'){
95             $this->jerr($sent->getMessage());
96         }
97         
98         $this->jok("SUCCESS");
99         
100         /*
101         $mid = $_REQUEST['_id'];
102         
103         $mlq = DB_DataObject::factory($_REQUEST['_table']);
104         
105         $mlq->get($_REQUEST['_id']);
106         
107         $content = array(
108             'template' => $mlq->name,
109             'person' => $this->authUser
110         );
111         
112         $sent = DB_DataObject::factory($_REQUEST['_table'])->send($content);
113         
114         if(!is_object($sent)){
115             $this->jok('SUCCESS');
116         }
117         
118         $this->jerr('error!!:' . $sent->toString());
119         */
120     }
121     
122     function coreEmailSendTest()
123     {
124         $core_email = DB_DataObject::factory('core_email');
125         
126         if(!$core_email->get($_REQUEST['_id'])){
127             $this->jerr('Invalid Message ID');
128         }
129         
130         if(empty($core_email->test_class)){
131             $this->jerr("[{$core_email->name}] does not has test class");
132         }
133         
134         require_once "{$core_email->test_class}.php";
135         
136         $cls = str_replace('/', '_', $core_email->test_class);
137         
138         $x = new $cls;
139         
140         $method = "test_{$core_email->name}";
141         
142         if(!method_exists($x, $method)){
143             $this->jerr("{$method} does not exists in {$cls}");
144         }
145         /*
146         $content = $x->{$method}($this, $this->authUser);
147         
148         $content['bcc'] = array();
149         */
150         
151         
152         $cn = DB_DataObject::factory('core_notify');
153         $cn->setFrom(array(
154             'evtype'        => 'Core_email::testData',
155             'onid'          => $_REQUEST['_id'],
156             'ontable'       => $_REQUEST['_table'],
157             'person_id'     => $this->authUser->id,
158             'person_table'  => 'Person',
159             'act_when'      => $cn->sqlValue("NOW()"),
160             'act_start'     => $cn->sqlValue("NOW()")
161         ));
162         
163         $cn->insert();
164         
165         $sent = $cn->sendManual();
166         
167         if(get_class($sent) != 'Pman_Core_NotifySend_Exception_Success'){
168             $this->jerr($sent->getMessage());
169         }
170         
171         $this->jok("SUCCESS");
172         
173         
174         
175         
176         
177         $sent = $core_email->send($content);
178         
179         if(is_object($sent)){
180             $this->jerr("Error sending email - " . $sent->toString());
181         }
182         
183         $this->jok('SUCCESS');
184     }
185 }