private function generate_syndicated_feed($owner_uid, $feed, $is_cat,
$limit, $offset, $search, $search_mode,
- $view_mode = false, $format = 'atom', $order = false, $orig_guid = false) {
+ $view_mode = false, $format = 'atom', $order = false, $orig_guid = false, $start_ts = false) {
require_once "lib/MiniTemplator.class.php";
break;
}
+ //function queryFeedHeadlines($feed, $limit, $view_mode, $cat_view, $search, $search_mode, $override_order = false, $offset = 0, $owner_uid = 0, $filter = false, $since_id = 0, $include_children = false, $ignore_vfeed_group = false, $override_strategy = false, $override_vfeed = false, $start_ts = false) {
+
+
$qfh_ret = queryFeedHeadlines($feed,
1, $view_mode, $is_cat, $search, $search_mode,
$date_sort_field, $offset, $owner_uid,
- false, 0, false, true);
+ false, 0, false, true, false, false, $start_ts);
$result = $qfh_ret[0];
$qfh_ret = queryFeedHeadlines($feed,
$limit, $view_mode, $is_cat, $search, $search_mode,
$date_sort_field, $offset, $owner_uid,
- false, 0, false, true);
+ false, 0, false, true, false, false, $start_ts);
$result = $qfh_ret[0];
$search_mode = $this->dbh->escape_string($_REQUEST["smode"]);
$view_mode = $this->dbh->escape_string($_REQUEST["view-mode"]);
$order = $this->dbh->escape_string($_REQUEST["order"]);
+ $start_ts = $this->dbh->escape_string($_REQUEST["ts"]);
$format = $this->dbh->escape_string($_REQUEST['format']);
$orig_guid = sql_bool_to_bool($_REQUEST["orig_guid"]);
if ($owner_id) {
$this->generate_syndicated_feed($owner_id, $feed, $is_cat, $limit,
- $offset, $search, $search_mode, $view_mode, $format, $order, $orig_guid);
+ $offset, $search, $search_mode, $view_mode, $format, $order, $orig_guid, $start_ts);
} else {
header('HTTP/1.1 403 Forbidden');
}
function forgotpass() {
startup_gettext();
+ @$hash = $_REQUEST["hash"];
+
header('Content-Type: text/html; charset=utf-8');
print "<html><head><title>Tiny Tiny RSS</title>
<link rel=\"shortcut icon\" type=\"image/png\" href=\"images/favicon.png\">
@$method = $_POST['method'];
- if (!$method) {
- print_notice(__("You will need to provide valid account name and email. New password will be sent on your email address."));
+ if ($hash) {
+ $login = $_REQUEST["login"];
+
+ if ($login) {
+ $result = $this->dbh->query("SELECT id, resetpass_token FROM ttrss_users
+ WHERE login = '$login'");
+
+ if ($this->dbh->num_rows($result) != 0) {
+ $id = $this->dbh->fetch_result($result, 0, "id");
+ $resetpass_token_full = $this->dbh->fetch_result($result, 0, "resetpass_token");
+ list($timestamp, $resetpass_token) = explode(":", $resetpass_token_full);
+
+ if ($timestamp && $resetpass_token &&
+ $timestamp >= time() - 15*60*60 &&
+ $resetpass_token == $hash) {
+
+ $result = $this->dbh->query("UPDATE ttrss_users SET resetpass_token = NULL
+ WHERE id = $id");
+
+ Pref_Users::resetUserPassword($id, true);
+
+ print "<p>"."Completed."."</p>";
+
+ } else {
+ print_error("Some of the information provided is missing or incorrect.");
+ }
+ } else {
+ print_error("Some of the information provided is missing or incorrect.");
+ }
+ } else {
+ print_error("Some of the information provided is missing or incorrect.");
+ }
+
+ print "<form method=\"GET\" action=\"index.php\">
+ <input type=\"submit\" value=\"".__("Return to Tiny Tiny RSS")."\">
+ </form>";
+
+ } else if (!$method) {
+ print_notice(__("You will need to provide valid account name and email. A password reset link will be sent to your email address."));
print "<form method='POST' action='public.php'>";
print "<input type='hidden' name='method' value='do'>";
} else {
+ print_notice("Password reset instructions are being sent to your email address.");
+
$result = $this->dbh->query("SELECT id FROM ttrss_users
WHERE login = '$login' AND email = '$email'");
if ($this->dbh->num_rows($result) != 0) {
$id = $this->dbh->fetch_result($result, 0, "id");
- Pref_Users::resetUserPassword($id, false);
+ if ($id) {
+ $resetpass_token = sha1(get_random_bytes(128));
+ $resetpass_link = get_self_url_prefix() . "/public.php?op=forgotpass&hash=" . $resetpass_token .
+ "&login=" . urlencode($login);
+
+ require_once 'classes/ttrssmailer.php';
+ require_once "lib/MiniTemplator.class.php";
+
+ $tpl = new MiniTemplator;
+
+ $tpl->readTemplateFromFile("templates/resetpass_link_template.txt");
+
+ $tpl->setVariable('LOGIN', $login);
+ $tpl->setVariable('RESETPASS_LINK', $resetpass_link);
+
+ $tpl->addBlock('message');
+
+ $message = "";
- print "<p>";
+ $tpl->generateOutputToString($message);
- print "<p>"."Completed."."</p>";
+ $mail = new ttrssMailer();
+
+ $rc = $mail->quickMail($email, $login,
+ __("[tt-rss] Password reset request"),
+ $message, false);
+
+ if (!$rc) print_error($mail->ErrorInfo);
+
+ $resetpass_token_full = $this->dbh->escape_string(time() . ":" . $resetpass_token);
+
+ $result = $this->dbh->query("UPDATE ttrss_users
+ SET resetpass_token = '$resetpass_token_full'
+ WHERE login = '$login' AND email = '$email'");
+
+ //Pref_Users::resetUserPassword($id, false);
+
+ print "<p>";
+
+ print "<p>"."Completed."."</p>";
+ } else {
+ print_error("User ID not found.");
+ }
print "<form method=\"GET\" action=\"index.php\">
<input type=\"submit\" value=\"".__("Return to Tiny Tiny RSS")."\">