X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=plugins%2Fmail%2Finit.php;h=1b31a220b06b82aa828fa23e0300709ceb6e57df;hb=57932e183745bada9c6183056597cb5276f68d10;hp=a4817a15d11450f0a8100b998277902d0e68c6b9;hpb=707ad6ddf7b199e202fc39f61ffd08a4bc5bacc1;p=tt-rss.git diff --git a/plugins/mail/init.php b/plugins/mail/init.php index a4817a15..1b31a220 100644 --- a/plugins/mail/init.php +++ b/plugins/mail/init.php @@ -1,7 +1,7 @@ link = $host->get_link(); $this->host = $host; $host->add_hook($host::HOOK_ARTICLE_BUTTON, $this); + $host->add_hook($host::HOOK_PREFS_TAB, $this); } function get_js() { return file_get_contents(dirname(__FILE__) . "/mail.js"); } + function save() { + $addresslist = $_POST["addresslist"]; + + $this->host->set($this, "addresslist", $addresslist); + + echo __("Mail addresses saved."); + } + + function hook_prefs_tab($args) { + if ($args != "prefPrefs") return; + + print "
"; + + print "

" . __("You can set predefined email addressed here (comma-separated list):") . "

"; + + print "
"; + + print ""; + + print_hidden("op", "pluginhandler"); + print_hidden("method", "save"); + print_hidden("plugin", "mail"); + + $addresslist = $this->host->get($this, "addresslist"); + + print ""; + + print "

"; + + print "

"; + + print "
"; + } + function hook_article_button($line) { return "link, $_REQUEST['param']); - - $secretkey = sha1(uniqid(rand(), true)); + $ids = explode(",", $_REQUEST['param']); + $ids_qmarks = arr_qmarks($ids); - $_SESSION['email_secretkey'] = $secretkey; + print_hidden("op", "pluginhandler"); + print_hidden("plugin", "mail"); + print_hidden("method", "sendEmail"); - print ""; - print ""; - print ""; - print ""; + $sth = $this->pdo->prepare("SELECT email, full_name FROM ttrss_users WHERE + id = ?"); + $sth->execute([$_SESSION['uid']]); - $result = db_query($this->link, "SELECT email, full_name FROM ttrss_users WHERE - id = " . $_SESSION["uid"]); - - $user_email = htmlspecialchars(db_fetch_result($result, 0, "email")); - $user_name = htmlspecialchars(db_fetch_result($result, 0, "full_name")); + if ($row = $sth->fetch()) { + $user_email = htmlspecialchars($row['email']); + $user_name = htmlspecialchars($row['full_name']); + } if (!$user_name) $user_name = $_SESSION['name']; - $_SESSION['email_replyto'] = $user_email; - $_SESSION['email_fromname'] = $user_name; + print_hidden("from_email", "$user_email"); + print_hidden("from_name", "$user_name"); require_once "lib/MiniTemplator.class.php"; $tpl = new MiniTemplator; - $tpl_t = new MiniTemplator; $tpl->readTemplateFromFile("templates/email_article_template.txt"); @@ -63,20 +109,26 @@ class Mail extends Plugin { $tpl->setVariable('USER_EMAIL', $user_email, true); $tpl->setVariable('TTRSS_HOST', $_SERVER["HTTP_HOST"], true); - $result = db_query($this->link, "SELECT link, content, title + $sth = $this->pdo->prepare("SELECT DISTINCT link, content, title, note FROM ttrss_user_entries, ttrss_entries WHERE id = ref_id AND - id IN ($param) AND owner_uid = " . $_SESSION["uid"]); + id IN ($ids_qmarks) AND owner_uid = ?"); + $sth->execute(array_merge($ids, [$_SESSION['uid']])); - if (db_num_rows($result) > 1) { + if (count($ids) > 1) { $subject = __("[Forwarded]") . " " . __("Multiple articles"); } - while ($line = db_fetch_assoc($result)) { + while ($line = $sth->fetch()) { if (!$subject) $subject = __("[Forwarded]") . " " . htmlspecialchars($line["title"]); $tpl->setVariable('ARTICLE_TITLE', strip_tags($line["title"])); + $tnote = strip_tags($line["note"]); + if( $tnote != ''){ + $tpl->setVariable('ARTICLE_NOTE', $tnote, true); + $tpl->addBlock('note'); + } $tpl->setVariable('ARTICLE_URL', strip_tags($line["link"])); $tpl->addBlock('article'); @@ -89,25 +141,20 @@ class Mail extends Plugin { print ""; - print "
"; - print __('From:'); - - print ""; - - print "\">"; - - print "
"; + $addresslist = explode(",", $this->host->get($this, "addresslist")); print __('To:'); print ""; - print ""; + name=\"destination\" id=\"emailArticleDlg_destination\">"; */ + + print_select("destination", "", $addresslist, 'style="width: 30em" dojoType="dijit.form.ComboBox"'); - print "
"; +/* print "
"; */ print "
"; @@ -121,7 +168,8 @@ class Mail extends Plugin { print "
"; print "
"; @@ -135,65 +183,45 @@ class Mail extends Plugin { } function sendEmail() { - $secretkey = $_REQUEST['secretkey']; - - require_once 'lib/phpmailer/class.phpmailer.php'; - $reply = array(); - if ($_SESSION['email_secretkey'] && - $secretkey == $_SESSION['email_secretkey']) { + /*$mail->AddReplyTo(strip_tags($_REQUEST['from_email']), + strip_tags($_REQUEST['from_name'])); + //$mail->AddAddress($_REQUEST['destination']); + $addresses = explode(';', $_REQUEST['destination']); + foreach($addresses as $nextaddr) + $mail->AddAddress($nextaddr); - $_SESSION['email_secretkey'] = ''; + $mail->IsHTML(false); + $mail->Subject = $_REQUEST['subject']; + $mail->Body = $_REQUEST['content']; - $destination = $_REQUEST['destination']; - $subject = $_REQUEST['subject']; - $content = $_REQUEST['content']; + $rc = $mail->Send(); */ - $replyto = strip_tags($_SESSION['email_replyto']); - $fromname = strip_tags($_SESSION['email_fromname']); + $to = $_REQUEST["destination"]; + $subject = strip_tags($_REQUEST["subject"]); + $message = strip_tags($_REQUEST["content"]); + $from = strip_tags($_REQUEST["from_email"]); - $mail = new PHPMailer(); + $mailer = new Mailer(); - $mail->PluginDir = "lib/phpmailer/"; - $mail->SetLanguage("en", "lib/phpmailer/language/"); - - $mail->CharSet = "UTF-8"; - - $mail->From = $replyto; - $mail->FromName = $fromname; - $mail->AddAddress($destination); - - if (SMTP_HOST) { - $mail->Host = SMTP_HOST; - $mail->Mailer = "smtp"; - $mail->SMTPAuth = SMTP_LOGIN != ''; - $mail->Username = SMTP_LOGIN; - $mail->Password = SMTP_PASSWORD; - } - - $mail->IsHTML(false); - $mail->Subject = $subject; - $mail->Body = $content; - - $rc = $mail->Send(); - - if (!$rc) { - $reply['error'] = $mail->ErrorInfo; - } else { - save_email_address($this->link, db_escape_string($this->link, $destination)); - $reply['message'] = "UPDATE_COUNTERS"; - } + $mailer->mail(["to" => $to, + "headers" => ["Reply-To: $from"], + "subject" => $subject, + "message" => $message]); + if (!$rc) { + $reply['error'] = $mailer->error(); } else { - $reply['error'] = "Not authorized."; + //save_email_address($destination); + $reply['message'] = "UPDATE_COUNTERS"; } print json_encode($reply); } - function completeEmails() { - $search = db_escape_string($this->link, $_REQUEST["search"]); + /* function completeEmails() { + $search = $_REQUEST["search"]; print ""; - } + } */ + function api_version() { + return 2; + } } -?>