1487db19b41ebd68f1740015987c2553ea0f76e1
[Pman.Core] / Import / Core_email.php
1 <?php
2
3
4
5 require_once 'Pman.php';
6
7 class Pman_Core_Import_Core_email extends Pman 
8 {
9     static $cli_desc = "Import an email into core_email template"; 
10     
11     static $cli_opts = array(
12         'file' => array(
13             'desc' => 'File to import',
14             'short' => 'f',
15             'min' => 1,
16             'max' => 1,
17             
18         ),
19         'master' => array(
20             'desc' => 'Master template (wrapper to body)',
21             'short' => 'm',
22             'default' => '',
23             'min' => 1,
24             'max' => 1,
25             
26         ),
27         'update' => array(
28             'desc' => 'Update template (deletes old version?)',
29             'short' => 'u',
30             'default' => '',
31             'min' => 1,
32             'max' => 1,  
33         ),
34     );
35     
36     function getAuth()
37     {
38         $ff = HTML_FlexyFramework::get();
39         
40         if (!$ff->cli) {
41             die("cli only");
42         }
43         
44     }
45     
46     function get($part = '', $opts=array()) {
47         $this->updateOrCreateEmail($part, $opts, false);
48     }
49
50     function updateOrCreateEmail($part='', $opts, $cm = false){
51         
52        // DB_DataObject::debugLevel(1);
53         
54         $template_name = preg_replace('/\.[a-z]+$/i', '', basename($opts['file']));
55         
56         if (!file_exists($opts['file'])) {
57             $this->jerr("file does not exist : " . $opts['file']);
58         }
59         
60         
61         if (!empty($opts['master']) && !file_exists($opts['master'])) {
62             $this->jerr("master file does not exist : " . $opts['master']);
63         }
64         
65         
66         if (empty($cm)) {
67             $cm = DB_dataObject::factory('core_email');
68             $ret = $cm->get('name',$template_name);
69             if($ret && empty($opts['update'])) {
70                 $this->jerr("use --update 1 to update the template..");
71             }
72         }
73         
74         $mailtext = file_get_contents($opts['file']);
75         
76         if (!empty($opts['master'])) {
77             $body = $mailtext;
78             $mailtext = file_get_contents($opts['master']);
79             $mailtext = str_replace('{outputBody():h}', $body, $mailtext);
80         }
81         
82         require_once 'Mail/mimeDecode.php';
83         require_once 'Mail/RFC822.php';
84         
85         $decoder = new Mail_mimeDecode($mailtext);
86         $parts = $decoder->getSendArray();
87         if (is_a($parts,'PEAR_Error')) {
88             echo $parts->toString() . "\n";
89             exit;
90         }
91         
92         $headers = $parts[1];
93         $from = new Mail_RFC822();
94         $from_str = $from->parseAddressList($headers['From']);
95         
96         $from_name  = trim($from_str[0]->personal, '"');
97         
98         $from_email = $from_str[0]->mailbox . '@' . $from_str[0]->host;
99         
100      
101         
102         
103         if ($cm->id) {
104             
105             $cc =clone($cm);
106             $cm->setFrom(array(
107                'bodytext'      => $parts[2],
108                'updated_dt'     => date('Y-m-d H:i:s'),   
109             ));
110             
111             $cm->update($cc);
112         } else {
113             
114             $cm->setFrom(array(
115                 'from_name'     => $from_name,
116                 'from_email'    => $from_email,
117                 'subject'       => $headers['Subject'],
118                 'name'          => $template_name,
119                 'bodytext'      => $parts[2],
120                 'updated_dt'     => date('Y-m-d H:i:s'),
121                 'created_dt'     => date('Y-m-d H:i:s'),
122             ));
123             
124             $cm->insert();
125         }
126         return $cm;
127     }
128     function output() {
129         die("done\n");
130     }
131 }