diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/backend-rpc.php | 75 | ||||
-rw-r--r-- | modules/popup-dialog.php | 116 |
2 files changed, 166 insertions, 25 deletions
diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php index 1645db96e..55babdaa7 100644 --- a/modules/backend-rpc.php +++ b/modules/backend-rpc.php @@ -1019,6 +1019,81 @@ return; } + if ($subop == "sendEmail") { + $secretkey = $_REQUEST['secretkey']; + + print "<rpc-reply>"; + + if (DIGEST_ENABLE && $_SESSION['email_secretkey'] && + $secretkey == $_SESSION['email_secretkey']) { + + $_SESSION['email_secretkey'] = ''; + + $destination = $_REQUEST['destination']; + $subject = $_REQUEST['subject']; + $content = $_REQUEST['content']; + + $replyto = strip_tags($_SESSION['email_replyto']); + $fromname = strip_tags($_SESSION['email_fromname']); + + $mail = new PHPMailer(); + + $mail->PluginDir = "lib/phpmailer/"; + $mail->SetLanguage("en", "lib/phpmailer/language/"); + + $mail->CharSet = "UTF-8"; + + $mail->From = $replyto; + $mail->FromName = $fromname; + $mail->AddAddress($destination); + + if (DIGEST_SMTP_HOST) { + $mail->Host = DIGEST_SMTP_HOST; + $mail->Mailer = "smtp"; + $mail->SMTPAuth = DIGEST_SMTP_LOGIN != ''; + $mail->Username = DIGEST_SMTP_LOGIN; + $mail->Password = DIGEST_SMTP_PASSWORD; + } + + $mail->IsHTML(false); + $mail->Subject = $subject; + $mail->Body = $content; + + $rc = $mail->Send(); + + if (!$rc) { + print "<error><![CDATA[" . $mail->ErrorInfo . "]]></error>"; + } else { + save_email_address($link, db_escape_string($destination)); + print "<message>OK</message>"; + } + + } else { + print "<error>Not authorized.</error>"; + } + + print "</rpc-reply>"; + + return; + } + + if ($subop == "completeEmails") { + + $search = db_escape_string($_REQUEST["search"]); + + print "<ul>"; + + foreach ($_SESSION['stored_emails'] as $email) { + if (strpos($email, $search) !== false) { + print "<li>$email</li>"; + } + } + + print "</ul>"; + + return; + } + print "<rpc-reply><error>Unknown method: $subop</error></rpc-reply>"; } ?> diff --git a/modules/popup-dialog.php b/modules/popup-dialog.php index 4d68fb971..fb1921291 100644 --- a/modules/popup-dialog.php +++ b/modules/popup-dialog.php @@ -279,7 +279,7 @@ print "<input size=\"40\" onkeypress=\"return filterCR(event, subscribeToFeed)\" - name=\"feed\" id=\"feed_url\"></td></tr>"; + name=\"feed\" id=\"feed_url\">"; print "<br/>"; @@ -666,47 +666,113 @@ return; } -/* if ($id == "offlineDownload") { - print "<div id=\"infoBoxTitle\">".__('Download articles')."</div>"; + if ($id == "emailArticle") { + + print "<div id=\"infoBoxTitle\">".__('Forward article by email')."</div>"; print "<div class=\"infoBoxContents\">"; - print "<form name='download_ops_form' id='download_ops_form'>"; + print "<form id=\"article_email_form\" onsubmit='return false'>"; - print "<div class=\"dlgSec\">".__("Download")."</div>"; + $secretkey = sha1(make_password(10)); - print "<div class=\"dlgSecCont\">"; + $_SESSION['email_secretkey'] = $secretkey; - $amount = array( - 50 => 50, - 100 => 100, - 250 => 250, - 500 => 500); + print "<input type=\"hidden\" name=\"secretkey\" value=\"$secretkey\">"; + print "<input type=\"hidden\" name=\"op\" value=\"rpc\">"; + print "<input type=\"hidden\" name=\"subop\" value=\"sendEmail\">"; - print_select_hash("amount", 50, $amount); + require_once "lib/MiniTemplator.class.php"; - print " " . __("latest articles for offline reading."); + $tpl = new MiniTemplator; + $tpl_t = new MiniTemplator; - print "<br/>"; + $tpl->readTemplateFromFile("templates/email_article_template.txt"); - print "<input checked='yes' type='checkbox' name='unread_only' id='unread_only'>"; - print "<label for='unread_only'>".__('Only include unread articles')."</label>"; + $result = db_query($link, "SELECT link, content, title + FROM ttrss_user_entries, ttrss_entries WHERE id = ref_id AND + id = '$param' AND owner_uid = " . $_SESSION["uid"]); - print "</div>"; + $line = db_fetch_assoc($result); + + $subject = htmlspecialchars(__("[Forwarded]") . " " . $line["title"]); + + $tpl->setVariable('ARTICLE_TITLE', strip_tags($line["title"])); + +/* $tpl->setVariable('ARTICLE_EXCERPT', + truncate_string(strip_tags($line["content"]), 200)); */ + + $tpl->setVariable('ARTICLE_URL', strip_tags($line["link"])); + + $result = db_query($link, "SELECT email FROM ttrss_users WHERE + id = " . $_SESSION["uid"]); + + $user_email = htmlspecialchars(db_fetch_result($result, 0, "email")); + $user_name = htmlspecialchars($_SESSION["name"]); + + //print "<input type=\"hidden\" name=\"replyto\" value=\"$user_email\">"; + //print "<input type=\"hidden\" name=\"fromname\" value=\"$user_name\">"; + + $_SESSION['email_replyto'] = $user_email; + $_SESSION['email_fromname'] = $user_name; + + $tpl->setVariable('USER_NAME', $_SESSION["name"]); + $tpl->setVariable('USER_EMAIL', $user_email); + $tpl->setVariable('TTRSS_HOST', $_SERVER["HTTP_HOST"]); + + $tpl->addBlock('email'); + + $content = ""; + $tpl->generateOutputToString($content); + + print "<table width='100%'><tr><td>"; + + print __('From:'); + + print "</td><td>"; + + print "<input size=\"40\" disabled + onkeypress=\"return filterCR(event, false)\" + value=\"$user_name <$user_email>\">"; + + print "</td></tr><tr><td>"; + + print __('To:'); + + print "</td><td>"; + + print "<input size=\"40\" + onkeypress=\"return filterCR(event, false)\" + name=\"destination\" id=\"destination\">"; + + print "<div class=\"autocomplete\" id=\"destination_choices\" + style=\"display:none\"></div>"; + + print "</td></tr><tr><td>"; + + print __('Subject:'); + + print "</td><td>"; + + print "<input size=\"60\" class=\"iedit\" + onkeypress=\"return filterCR(event, false)\" + name=\"subject\" value=\"$subject\" id=\"subject\">"; + + print "</td></tr></table>"; + + print "<textarea rows='10' class='iedit' style='font-size : small' + name='content'>$content</textarea>"; print "</form>"; - print "<div class=\"dlgButtons\"> - <input class=\"button\" - type=\"submit\" onclick=\"return initiate_offline_download(0, this)\" value=\"".__('Download')."\"> - <input class=\"button\" - type=\"submit\" onclick=\"return closeInfoBox()\" - value=\"".__('Cancel')."\"></div>"; + print "<div class='dlgButtons'>"; + + print "<button onclick=\"return emailArticleDo()\">".__('Send e-mail')."</button> "; + print "<button onclick=\"return closeInfoBox()\">".__('Cancel')."</button>"; print "</div>"; return; - } */ - + } print "<div id='infoBoxTitle'>Internal Error</div> <div id='infoBoxContents'> |