X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=Import%2FCore_email.php;h=db526e76185f5e4f2a300b04aa51bccda120fe9f;hb=cd0367f0b1c72b3bf7140f594c7e54ef2ed94c9e;hp=b669ad2a180bbf17fd6721f63d4f4b9c44fe68dd;hpb=f1d7be6d5baa97abb70361761287052fd6d2b9cc;p=Pman.Core diff --git a/Import/Core_email.php b/Import/Core_email.php index b669ad2a..db526e76 100644 --- a/Import/Core_email.php +++ b/Import/Core_email.php @@ -4,7 +4,7 @@ require_once 'Pman.php'; -class Pman_Hydra_Import_Core_email extends Pman +class Pman_Core_Import_Core_email extends Pman { static $cli_desc = "Import an email into core_email template"; @@ -16,7 +16,28 @@ class Pman_Hydra_Import_Core_email extends Pman 'max' => 1, ), - + 'master' => array( + 'desc' => 'Master template (wrapper to body)', + 'short' => 'm', + 'default' => '', + 'min' => 1, + 'max' => 1, + + ), + 'update' => array( + 'desc' => 'Update template (deletes old version?)', + 'short' => 'u', + 'default' => '', + 'min' => 0, + 'max' => 0, + ), + 'use-file' => array( + 'desc' => 'Force usage of file (so content is not editable in Management system)', + 'short' => 'F', + 'default' => '', + 'min' => 0, + 'max' => 0, + ), ); function getAuth() @@ -26,40 +47,101 @@ class Pman_Hydra_Import_Core_email extends Pman if (!$ff->cli) { die("cli only"); } - + } + + function get($part = '', $opts=array()) { + $this->updateOrCreateEmail($part, $opts, false); } - function get($part='', $opts){ + function updateOrCreateEmail($part='', $opts, $cm = false, $mapping = false){ + // DB_DataObject::debugLevel(1); - $template_name = preg_replace('/\.[a-z]+$/i',dirname($opts['file']),''); + $template_name = preg_replace('/\.[a-z]+$/i', '', basename($opts['file'])); if (!file_exists($opts['file'])) { $this->jerr("file does not exist : " . $opts['file']); } - $c = DB_dataObject::factory('core_email'); - $ret = $c->get('name',$template_name); - if($ret ) { - $this->jerr("we do not support updating the files ... - especially if the user has changed them!!"); + if (!empty($opts['master']) && !file_exists($opts['master'])) { + $this->jerr("master file does not exist : " . $opts['master']); + } + + + if (empty($cm)) { + $cm = DB_dataObject::factory('core_email'); + $ret = $cm->get('name',$template_name); + if($ret && empty($opts['update'])) { + $this->jerr("use --update to update the template.."); + } } $mailtext = file_get_contents($opts['file']); - - require_once 'Mail/mimeDecode.php'; + + if (!empty($opts['master'])) { + $body = $mailtext; + $mailtext = file_get_contents($opts['master']); + $mailtext = str_replace('{outputBody():h}', $body, $mailtext); + } + + if($mapping) { + foreach ($mapping as $k => $v) { + $mailtext = str_replace($k, $v, $mailtext); + } + } + + require_once 'Mail/mimeDecode.php'; + require_once 'Mail/RFC822.php'; + $decoder = new Mail_mimeDecode($mailtext); $parts = $decoder->getSendArray(); - $from_name = explode(" ", $parts[0])[0]; - $from_email = explode(" ", $parts[0])[1]; - $c->setFrom(array( - 'from_name' => $from_name, - 'from_email' => $from_email, - 'subject' => $parts[1]['Subject'], - 'name' => $template_name, - 'bodytext' => $parts[2] - )); - $c->insert(); + if (is_a($parts,'PEAR_Error')) { + echo $parts->toString() . "\n"; + exit; + } + + $headers = $parts[1]; + $from = new Mail_RFC822(); + $from_str = $from->parseAddressList($headers['From']); + + $from_name = trim($from_str[0]->personal, '"'); + + $from_email = $from_str[0]->mailbox . '@' . $from_str[0]->host; + + + if (!empty($opts['use-file'])) { + $parts[2] = ''; + } + + if ($cm->id) { + + $cc =clone($cm); + $cm->setFrom(array( + 'bodytext' => !empty($opts['use-file']) ? '' : $parts[2], + 'updated_dt' => date('Y-m-d H:i:s'), + 'use_file' => !empty($opts['use-file']) ? realpath($opts['file']) : '', + )); + + $cm->update($cc); + } else { + + $cm->setFrom(array( + 'from_name' => $from_name, + 'from_email' => $from_email, + 'subject' => $headers['Subject'], + 'name' => $template_name, + 'bodytext' => !empty($opts['use-file']) ? '' : $parts[2], + 'updated_dt' => date('Y-m-d H:i:s'), + 'created_dt' => date('Y-m-d H:i:s'), + 'use_file' => !empty($opts['use-file']) ? realpath($opts['file']) : '', + )); + + $cm->insert(); + } + return $cm; + } + function output() { die("done\n"); } } \ No newline at end of file