From 78a0f0a00650c9a5e3c4d4cadcacc409919067ea Mon Sep 17 00:00:00 2001 From: deva Date: Fri, 26 Feb 2010 16:12:36 +0000 Subject: Add pressrelease module. Make lots of codesharing with the newsletter module. --- utils/modules/pressrelease.php | 183 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 utils/modules/pressrelease.php (limited to 'utils/modules/pressrelease.php') diff --git a/utils/modules/pressrelease.php b/utils/modules/pressrelease.php new file mode 100644 index 0000000..de792d2 --- /dev/null +++ b/utils/modules/pressrelease.php @@ -0,0 +1,183 @@ +file, "w"); + fwrite($fp, "\n"); + + fwrite($fp, "subj_prefix . "\"\n"); + fwrite($fp, " sender=\"" . $this->sender . "\"\n"); + fwrite($fp, " replyto=\"" . $this->replyto . "\">\n"); + fwrite($fp, "
" . $this->footer . "
\n"); + foreach($this->mailinglist as $email) { + fwrite($fp, " email, ENT_QUOTES, "UTF-8") . "\"\n"); + fwrite($fp, " url=\"" . $email->url . "\">\n"); + fwrite($fp, " name=\"" . $email->name . "\">\n"); + fwrite($fp, " \n"); + } + fwrite($fp, "
\n"); + + fclose($fp); + } + + private function read() + { + $dom = new DomDocument; + $dom->preserveWhiteSpace = FALSE; + $dom->load($this->file); + + $nl = $dom->documentElement; + + $this->subj_prefix = $nl->getAttribute('subj_prefix'); + $this->sender = $nl->getAttribute('sender'); + $this->replyto = $nl->getAttribute('replyto'); + $footers = $dom->getElementsByTagName('footer'); + if($footers) { + foreach($footers as $f) { + $this->footer = $f->textContent; + } + } + + $params = $dom->getElementsByTagName('email'); + + $cnt = 1; + foreach ($params as $param) { + $email = new PEmail($param->getAttribute('email'), $cnt++); + $email->url = $param->getAttribute('url'); + $email->name = $param->getAttribute('name'); + $this->add($email); + } + } + + public function PMailinglist($file) + { + $this->file = $file; + if(file_exists($this->file)) $this->read(); + } +} + +class PressRelease { + + private $file; + private $mailinglist; + + // Admin config + public $admin_title = "Press release"; + public $admin_submodules = array("Send pressrelease" => "send", + "Config" => "config"); + + public function admin_send($action, $vars) + { + global $UID, $ICONS_DIR; + + switch($action) { + case "send": + $this->mailinglist->post($vars["subject"], $vars["content"]); + break; + + case "preview": + $testmail = new PEmail($vars["testaddr"], 0); + echo "
\n"; + $this->mailinglist->postSingle($testmail, $vars["subject"], $vars["content"]); + echo "A test mail has been sent to ".$vars["testaddr"]."
\n"; + echo "

Looking ok?

"; + $form = new Form("send"); + $form->addWidget(new Hidden($vars)); + $form->addWidget(new Button("yes")); + $form->render(); + + $form = new Form("retry"); + $form->addWidget(new Hidden($vars)); + $form->addWidget(new Button("no")); + $form->render(); + break; + + case "retry": + $testaddr = $vars["testaddr"]; + $subject = $vars["subject"]; + $content = $vars["content"]; + default: + $form = new Form("preview"); + $form->addWidget(new LineEdit("Test address:", "testaddr", $testaddr)); + $form->addWidget(new LineEdit("Subject:", "subject", $subject)); + $form->addWidget(new TextEdit("Content:", "content", $content)); + $form->addWidget(new Button("Send")); + $form->render(); + break; + } + } + + public function admin_config($action, $vars) + { + switch($action) { + case "update": + $this->mailinglist->subj_prefix = $vars["subj_prefix"]; + $this->mailinglist->sender = $vars["sender"]; + $this->mailinglist->replyto = $vars["replyto"]; + $this->mailinglist->footer = $vars["footer"]; + $this->mailinglist->write(); + break; + + default: + $form = new Form("update"); + $form->addWidget(new LineEdit("Subject prefix:", "subj_prefix", $this->mailinglist->subj_prefix)); + $form->addWidget(new LineEdit("Sender:", "sender", $this->mailinglist->sender)); + $form->addWidget(new LineEdit("Reply to:", "replyto", $this->mailinglist->replyto)); + $form->addWidget(new TextEdit("Footer:", "footer", $this->mailinglist->footer)); + $form->addWidget(new Button("Update")); + $form->render(); + break; + } + } + + public function admin($sub, $action, $vars) + { + switch($sub) { + case "send": + $this->admin_send($action, $vars); + break; + + case "config": + $this->admin_config($action, $vars); + break; + } + } + + public function run($params) + { + return ""; + } + + private function read() + { + $this->mailinglist = new PMailinglist($this->file); + } + + public function PressRelease($file) + { + $this->file = $file; + if(file_exists($file)) $this->read(); + } +} + + +function pressrelease_init() +{ + global $DATA_DIR; + return new PressRelease($DATA_DIR . "/pressrelease.xml"); +} + +?> \ No newline at end of file -- cgit v1.2.3