Merge branch 'master' of git.fakecake.org:tt-rss
This commit is contained in:
commit
e993d4feb2
|
@ -112,7 +112,7 @@ class Counters {
|
|||
|
||||
$id = $line["id"];
|
||||
$last_error = htmlspecialchars($line["last_error"]);
|
||||
$last_updated = make_local_datetime($line['last_updated'], false);
|
||||
$last_updated = TimeHelper::make_local_datetime($line['last_updated'], false);
|
||||
|
||||
if (Feeds::feedHasIcon($id)) {
|
||||
$has_img = filemtime(Feeds::getIconFile($id));
|
||||
|
|
|
@ -97,7 +97,7 @@ class Digest
|
|||
$tpl_t->readTemplateFromFile("digest_template.txt");
|
||||
|
||||
$user_tz_string = get_pref('USER_TIMEZONE', $user_id);
|
||||
$local_ts = convert_timestamp(time(), 'UTC', $user_tz_string);
|
||||
$local_ts = TimeHelper::convert_timestamp(time(), 'UTC', $user_tz_string);
|
||||
|
||||
$tpl->setVariable('CUR_DATE', date('Y/m/d', $local_ts));
|
||||
$tpl->setVariable('CUR_TIME', date('G:i', $local_ts));
|
||||
|
@ -159,7 +159,7 @@ class Digest
|
|||
|
||||
array_push($affected_ids, $line["ref_id"]);
|
||||
|
||||
$updated = make_local_datetime($line['last_updated'], false,
|
||||
$updated = TimeHelper::make_local_datetime($line['last_updated'], false,
|
||||
$user_id);
|
||||
|
||||
if (get_pref('ENABLE_FEED_CATS', $user_id)) {
|
||||
|
|
|
@ -211,7 +211,7 @@ class Feeds extends Handler_Protected {
|
|||
$feed_site_url = $qfh_ret[2];
|
||||
$last_error = $qfh_ret[3];
|
||||
$last_updated = strpos($qfh_ret[4], '1970-') === false ?
|
||||
make_local_datetime($qfh_ret[4], false) : __("Never");
|
||||
TimeHelper::make_local_datetime($qfh_ret[4], false) : __("Never");
|
||||
$highlight_words = $qfh_ret[5];
|
||||
$reply['first_id'] = $qfh_ret[6];
|
||||
$reply['is_vfeed'] = $qfh_ret[7];
|
||||
|
@ -343,12 +343,12 @@ class Feeds extends Handler_Protected {
|
|||
}
|
||||
}
|
||||
|
||||
$line["updated_long"] = make_local_datetime($line["updated"],true);
|
||||
$line["updated"] = make_local_datetime($line["updated"], false, false, false, true);
|
||||
$line["updated_long"] = TimeHelper::make_local_datetime($line["updated"],true);
|
||||
$line["updated"] = TimeHelper::make_local_datetime($line["updated"], false, false, false, true);
|
||||
|
||||
|
||||
$line['imported'] = T_sprintf("Imported at %s",
|
||||
make_local_datetime($line["date_entered"], false));
|
||||
TimeHelper::make_local_datetime($line["date_entered"], false));
|
||||
|
||||
if ($line["tag_cache"])
|
||||
$tags = explode(",", $line["tag_cache"]);
|
||||
|
@ -426,7 +426,7 @@ class Feeds extends Handler_Protected {
|
|||
$sth->execute([$_SESSION['uid']]);
|
||||
$row = $sth->fetch();
|
||||
|
||||
$last_updated = make_local_datetime($row["last_updated"], false);
|
||||
$last_updated = TimeHelper::make_local_datetime($row["last_updated"], false);
|
||||
|
||||
$reply['content'] .= sprintf(__("Feeds last updated at %s"), $last_updated);
|
||||
|
||||
|
@ -580,7 +580,7 @@ class Feeds extends Handler_Protected {
|
|||
$sth->execute([$_SESSION['uid']]);
|
||||
$row = $sth->fetch();
|
||||
|
||||
$last_updated = make_local_datetime($row["last_updated"], false);
|
||||
$last_updated = TimeHelper::make_local_datetime($row["last_updated"], false);
|
||||
|
||||
$reply['headlines']['content'] .= sprintf(__("Feeds last updated at %s"), $last_updated);
|
||||
|
||||
|
@ -2239,7 +2239,7 @@ class Feeds extends Handler_Protected {
|
|||
|
||||
$user_tz_string = get_pref('USER_TIMEZONE', $_SESSION['uid']);
|
||||
$orig_ts = strtotime(substr($k, 1));
|
||||
$k = date("Y-m-d", convert_timestamp($orig_ts, $user_tz_string, 'UTC'));
|
||||
$k = date("Y-m-d", TimeHelper::convert_timestamp($orig_ts, $user_tz_string, 'UTC'));
|
||||
|
||||
//$k = date("Y-m-d", strtotime(substr($k, 1)));
|
||||
|
||||
|
|
|
@ -414,7 +414,7 @@ class Handler_Public extends Handler {
|
|||
$rv .= "<div class='row'>"; # row
|
||||
|
||||
//$entry_author = $line["author"] ? " - " . $line["author"] : "";
|
||||
$parsed_updated = make_local_datetime($line["updated"], true,
|
||||
$parsed_updated = TimeHelper::make_local_datetime($line["updated"], true,
|
||||
$owner_uid, true);
|
||||
|
||||
$rv .= "<div>".$line['author']."</div>";
|
||||
|
|
|
@ -101,7 +101,7 @@ class Pref_Feeds extends Handler_Protected {
|
|||
$feed['unread'] = -1;
|
||||
$feed['error'] = $feed_line['last_error'];
|
||||
$feed['icon'] = Feeds::getFeedIcon($feed_line['id']);
|
||||
$feed['param'] = make_local_datetime(
|
||||
$feed['param'] = TimeHelper::make_local_datetime(
|
||||
$feed_line['last_updated'], true);
|
||||
$feed['updates_disabled'] = (int)($feed_line['update_interval'] < 0);
|
||||
|
||||
|
@ -268,7 +268,7 @@ class Pref_Feeds extends Handler_Protected {
|
|||
$feed['checkbox'] = false;
|
||||
$feed['error'] = $feed_line['last_error'];
|
||||
$feed['icon'] = Feeds::getFeedIcon($feed_line['id']);
|
||||
$feed['param'] = make_local_datetime(
|
||||
$feed['param'] = TimeHelper::make_local_datetime(
|
||||
$feed_line['last_updated'], true);
|
||||
$feed['unread'] = -1;
|
||||
$feed['type'] = 'feed';
|
||||
|
@ -303,7 +303,7 @@ class Pref_Feeds extends Handler_Protected {
|
|||
$feed['checkbox'] = false;
|
||||
$feed['error'] = $feed_line['last_error'];
|
||||
$feed['icon'] = Feeds::getFeedIcon($feed_line['id']);
|
||||
$feed['param'] = make_local_datetime(
|
||||
$feed['param'] = TimeHelper::make_local_datetime(
|
||||
$feed_line['last_updated'], true);
|
||||
$feed['unread'] = -1;
|
||||
$feed['type'] = 'feed';
|
||||
|
@ -1478,7 +1478,7 @@ class Pref_Feeds extends Handler_Protected {
|
|||
htmlspecialchars($line["title"])."</a>";
|
||||
|
||||
print "</td><td class='text-muted' align='right'>";
|
||||
print make_local_datetime($line['last_article'], false);
|
||||
print TimeHelper::make_local_datetime($line['last_article'], false);
|
||||
print "</td>";
|
||||
print "</tr>";
|
||||
|
||||
|
|
|
@ -302,7 +302,7 @@ class Pref_Filters extends Handler_Protected {
|
|||
$filter['name'] = $name[0];
|
||||
$filter['param'] = $name[1];
|
||||
$filter['checkbox'] = false;
|
||||
$filter['last_triggered'] = $line["last_triggered"] ? make_local_datetime($line["last_triggered"], false) : null;
|
||||
$filter['last_triggered'] = $line["last_triggered"] ? TimeHelper::make_local_datetime($line["last_triggered"], false) : null;
|
||||
$filter['enabled'] = sql_bool_to_bool($line["enabled"]);
|
||||
$filter['rules'] = $this->getfilterrules_list($line['id']);
|
||||
|
||||
|
|
|
@ -1320,11 +1320,11 @@ class Pref_Prefs extends Handler_Protected {
|
|||
print "<td>" . htmlspecialchars($row["title"]) . "</td>";
|
||||
|
||||
print "<td align='right' class='text-muted'>";
|
||||
print make_local_datetime($row['created'], false);
|
||||
print TimeHelper::make_local_datetime($row['created'], false);
|
||||
print "</td>";
|
||||
|
||||
print "<td align='right' class='text-muted'>";
|
||||
print make_local_datetime($row['last_used'], false);
|
||||
print TimeHelper::make_local_datetime($row['last_used'], false);
|
||||
print "</td>";
|
||||
|
||||
print "</tr>";
|
||||
|
|
|
@ -26,7 +26,7 @@ class Pref_System extends Handler_Protected {
|
|||
function index() {
|
||||
|
||||
print "<div dojoType=\"dijit.layout.AccordionContainer\" region=\"center\">";
|
||||
print "<div dojoType=\"dijit.layout.AccordionPane\"
|
||||
print "<div dojoType=\"dijit.layout.AccordionPane\"
|
||||
title=\"<i class='material-icons'>report</i> ".__('Event Log')."\">";
|
||||
|
||||
if (LOG_DESTINATION == "sql") {
|
||||
|
@ -66,8 +66,7 @@ class Pref_System extends Handler_Protected {
|
|||
print "<td class='login'>" . $line["login"] . "</td>";
|
||||
|
||||
print "<td class='timestamp'>" .
|
||||
make_local_datetime(
|
||||
$line["created_at"], false) . "</td>";
|
||||
TimeHelper::make_local_datetime($line["created_at"], false) . "</td>";
|
||||
|
||||
print "</tr>";
|
||||
}
|
||||
|
@ -81,7 +80,7 @@ class Pref_System extends Handler_Protected {
|
|||
|
||||
print "</div>";
|
||||
|
||||
print "<div dojoType=\"dijit.layout.AccordionPane\"
|
||||
print "<div dojoType=\"dijit.layout.AccordionPane\"
|
||||
title=\"<i class='material-icons'>info</i> ".__('PHP Information')."\">";
|
||||
|
||||
ob_start();
|
||||
|
|
|
@ -137,10 +137,10 @@ class Pref_Users extends Handler_Protected {
|
|||
if ($row = $sth->fetch()) {
|
||||
print "<table width='100%'>";
|
||||
|
||||
$last_login = make_local_datetime(
|
||||
$last_login = TimeHelper::make_local_datetime(
|
||||
$row["last_login"], true);
|
||||
|
||||
$created = make_local_datetime(
|
||||
$created = TimeHelper::make_local_datetime(
|
||||
$row["created"], true);
|
||||
|
||||
$stored_articles = $row["stored_articles"];
|
||||
|
@ -399,8 +399,8 @@ class Pref_Users extends Handler_Protected {
|
|||
print "<tr data-row-id='$uid' onclick='Users.edit($uid)'>";
|
||||
|
||||
$line["login"] = htmlspecialchars($line["login"]);
|
||||
$line["created"] = make_local_datetime($line["created"], false);
|
||||
$line["last_login"] = make_local_datetime($line["last_login"], false);
|
||||
$line["created"] = TimeHelper::make_local_datetime($line["created"], false);
|
||||
$line["last_login"] = TimeHelper::make_local_datetime($line["last_login"], false);
|
||||
|
||||
print "<td align='center'><input onclick='Tables.onRowChecked(this); event.stopPropagation();'
|
||||
dojoType='dijit.form.CheckBox' type='checkbox'></td>";
|
||||
|
|
|
@ -647,8 +647,6 @@ class RPC extends Handler_Protected {
|
|||
$params["php_platform"] = PHP_OS;
|
||||
$params["php_version"] = PHP_VERSION;
|
||||
|
||||
$params["sanity_checksum"] = sha1(file_get_contents("include/sanity_check.php"));
|
||||
|
||||
$pdo = Db::pdo();
|
||||
|
||||
$sth = $pdo->prepare("SELECT MAX(id) AS mid, COUNT(*) AS nf FROM
|
||||
|
|
|
@ -0,0 +1,88 @@
|
|||
<?php
|
||||
class TimeHelper {
|
||||
|
||||
static function smart_date_time($timestamp, $tz_offset = 0, $owner_uid = false, $eta_min = false) {
|
||||
if (!$owner_uid) $owner_uid = $_SESSION['uid'];
|
||||
|
||||
if ($eta_min && time() + $tz_offset - $timestamp < 3600) {
|
||||
return T_sprintf("%d min", date("i", time() + $tz_offset - $timestamp));
|
||||
} else if (date("Y.m.d", $timestamp) == date("Y.m.d", time() + $tz_offset)) {
|
||||
$format = get_pref('SHORT_DATE_FORMAT', $owner_uid);
|
||||
if (strpos((strtolower($format)), "a") === false)
|
||||
return date("G:i", $timestamp);
|
||||
else
|
||||
return date("g:i a", $timestamp);
|
||||
} else if (date("Y", $timestamp) == date("Y", time() + $tz_offset)) {
|
||||
$format = get_pref('SHORT_DATE_FORMAT', $owner_uid);
|
||||
return date($format, $timestamp);
|
||||
} else {
|
||||
$format = get_pref('LONG_DATE_FORMAT', $owner_uid);
|
||||
return date($format, $timestamp);
|
||||
}
|
||||
}
|
||||
|
||||
static function make_local_datetime($timestamp, $long, $owner_uid = false,
|
||||
$no_smart_dt = false, $eta_min = false) {
|
||||
|
||||
if (!$owner_uid) $owner_uid = $_SESSION['uid'];
|
||||
if (!$timestamp) $timestamp = '1970-01-01 0:00';
|
||||
|
||||
global $utc_tz;
|
||||
global $user_tz;
|
||||
|
||||
if (!$utc_tz) $utc_tz = new DateTimeZone('UTC');
|
||||
|
||||
$timestamp = substr($timestamp, 0, 19);
|
||||
|
||||
# We store date in UTC internally
|
||||
$dt = new DateTime($timestamp, $utc_tz);
|
||||
|
||||
$user_tz_string = get_pref('USER_TIMEZONE', $owner_uid);
|
||||
|
||||
if ($user_tz_string != 'Automatic') {
|
||||
|
||||
try {
|
||||
if (!$user_tz) $user_tz = new DateTimeZone($user_tz_string);
|
||||
} catch (Exception $e) {
|
||||
$user_tz = $utc_tz;
|
||||
}
|
||||
|
||||
$tz_offset = $user_tz->getOffset($dt);
|
||||
} else {
|
||||
$tz_offset = (int) -$_SESSION["clientTzOffset"];
|
||||
}
|
||||
|
||||
$user_timestamp = $dt->format('U') + $tz_offset;
|
||||
|
||||
if (!$no_smart_dt) {
|
||||
return self::smart_date_time($user_timestamp,
|
||||
$tz_offset, $owner_uid, $eta_min);
|
||||
} else {
|
||||
if ($long)
|
||||
$format = get_pref('LONG_DATE_FORMAT', $owner_uid);
|
||||
else
|
||||
$format = get_pref('SHORT_DATE_FORMAT', $owner_uid);
|
||||
|
||||
return date($format, $user_timestamp);
|
||||
}
|
||||
}
|
||||
|
||||
static function convert_timestamp($timestamp, $source_tz, $dest_tz) {
|
||||
|
||||
try {
|
||||
$source_tz = new DateTimeZone($source_tz);
|
||||
} catch (Exception $e) {
|
||||
$source_tz = new DateTimeZone('UTC');
|
||||
}
|
||||
|
||||
try {
|
||||
$dest_tz = new DateTimeZone($dest_tz);
|
||||
} catch (Exception $e) {
|
||||
$dest_tz = new DateTimeZone('UTC');
|
||||
}
|
||||
|
||||
$dt = new DateTime(date('Y-m-d H:i:s', $timestamp), $source_tz);
|
||||
return $dt->format('U') + $dest_tz->getOffset($dt);
|
||||
}
|
||||
|
||||
}
|
|
@ -168,26 +168,46 @@
|
|||
Debug::log($msg);
|
||||
}
|
||||
|
||||
// @deprecated
|
||||
function getFeedUnread($feed, $is_cat = false) {
|
||||
return Feeds::getFeedArticles($feed, $is_cat, true, $_SESSION["uid"]);
|
||||
}
|
||||
|
||||
// @deprecated
|
||||
function sanitize($str, $force_remove_images = false, $owner = false, $site_url = false, $highlight_words = false, $article_id = false) {
|
||||
return Sanitizer::sanitize($str, $force_remove_images, $owner, $site_url, $highlight_words, $article_id);
|
||||
}
|
||||
|
||||
// @deprecated
|
||||
function fetch_file_contents($params) {
|
||||
return UrlHelper::fetch($params);
|
||||
}
|
||||
|
||||
// @deprecated
|
||||
function rewrite_relative_url($url, $rel_url) {
|
||||
return UrlHelper::rewrite_relative($url, $rel_url);
|
||||
}
|
||||
|
||||
// @deprecated
|
||||
function validate_url($url) {
|
||||
return UrlHelper::validate($url);
|
||||
}
|
||||
|
||||
// @deprecated
|
||||
function authenticate_user($login, $password, $check_only = false, $service = false) {
|
||||
return UserHelper::authenticate($login, $password, $check_only, $service);
|
||||
}
|
||||
|
||||
// @deprecated
|
||||
function smart_date_time($timestamp, $tz_offset = 0, $owner_uid = false, $eta_min = false) {
|
||||
return TimeHelper::smart_date_time($timestamp, $tz_offset, $owner_uid, $eta_min);
|
||||
}
|
||||
|
||||
// @deprecated
|
||||
function make_local_datetime($timestamp, $long, $owner_uid = false, $no_smart_dt = false, $eta_min = false) {
|
||||
return TimeHelper::make_local_datetime($timestamp, $long, $owner_uid, $no_smart_dt, $eta_min);
|
||||
}
|
||||
|
||||
/* end compat shims */
|
||||
|
||||
function get_ssl_certificate_id() {
|
||||
|
@ -271,90 +291,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
function convert_timestamp($timestamp, $source_tz, $dest_tz) {
|
||||
|
||||
try {
|
||||
$source_tz = new DateTimeZone($source_tz);
|
||||
} catch (Exception $e) {
|
||||
$source_tz = new DateTimeZone('UTC');
|
||||
}
|
||||
|
||||
try {
|
||||
$dest_tz = new DateTimeZone($dest_tz);
|
||||
} catch (Exception $e) {
|
||||
$dest_tz = new DateTimeZone('UTC');
|
||||
}
|
||||
|
||||
$dt = new DateTime(date('Y-m-d H:i:s', $timestamp), $source_tz);
|
||||
return $dt->format('U') + $dest_tz->getOffset($dt);
|
||||
}
|
||||
|
||||
function make_local_datetime($timestamp, $long, $owner_uid = false,
|
||||
$no_smart_dt = false, $eta_min = false) {
|
||||
|
||||
if (!$owner_uid) $owner_uid = $_SESSION['uid'];
|
||||
if (!$timestamp) $timestamp = '1970-01-01 0:00';
|
||||
|
||||
global $utc_tz;
|
||||
global $user_tz;
|
||||
|
||||
if (!$utc_tz) $utc_tz = new DateTimeZone('UTC');
|
||||
|
||||
$timestamp = substr($timestamp, 0, 19);
|
||||
|
||||
# We store date in UTC internally
|
||||
$dt = new DateTime($timestamp, $utc_tz);
|
||||
|
||||
$user_tz_string = get_pref('USER_TIMEZONE', $owner_uid);
|
||||
|
||||
if ($user_tz_string != 'Automatic') {
|
||||
|
||||
try {
|
||||
if (!$user_tz) $user_tz = new DateTimeZone($user_tz_string);
|
||||
} catch (Exception $e) {
|
||||
$user_tz = $utc_tz;
|
||||
}
|
||||
|
||||
$tz_offset = $user_tz->getOffset($dt);
|
||||
} else {
|
||||
$tz_offset = (int) -$_SESSION["clientTzOffset"];
|
||||
}
|
||||
|
||||
$user_timestamp = $dt->format('U') + $tz_offset;
|
||||
|
||||
if (!$no_smart_dt) {
|
||||
return smart_date_time($user_timestamp,
|
||||
$tz_offset, $owner_uid, $eta_min);
|
||||
} else {
|
||||
if ($long)
|
||||
$format = get_pref('LONG_DATE_FORMAT', $owner_uid);
|
||||
else
|
||||
$format = get_pref('SHORT_DATE_FORMAT', $owner_uid);
|
||||
|
||||
return date($format, $user_timestamp);
|
||||
}
|
||||
}
|
||||
|
||||
function smart_date_time($timestamp, $tz_offset = 0, $owner_uid = false, $eta_min = false) {
|
||||
if (!$owner_uid) $owner_uid = $_SESSION['uid'];
|
||||
|
||||
if ($eta_min && time() + $tz_offset - $timestamp < 3600) {
|
||||
return T_sprintf("%d min", date("i", time() + $tz_offset - $timestamp));
|
||||
} else if (date("Y.m.d", $timestamp) == date("Y.m.d", time() + $tz_offset)) {
|
||||
$format = get_pref('SHORT_DATE_FORMAT', $owner_uid);
|
||||
if (strpos((strtolower($format)), "a") === false)
|
||||
return date("G:i", $timestamp);
|
||||
else
|
||||
return date("g:i a", $timestamp);
|
||||
} else if (date("Y", $timestamp) == date("Y", time() + $tz_offset)) {
|
||||
$format = get_pref('SHORT_DATE_FORMAT', $owner_uid);
|
||||
return date($format, $timestamp);
|
||||
} else {
|
||||
$format = get_pref('LONG_DATE_FORMAT', $owner_uid);
|
||||
return date($format, $timestamp);
|
||||
}
|
||||
}
|
||||
|
||||
function sql_bool_to_bool($s) {
|
||||
return $s && ($s !== "f" && $s !== "false"); //no-op for PDO, backwards compat for legacy layer
|
||||
}
|
||||
|
@ -441,10 +377,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
function getFeedUnread($feed, $is_cat = false) {
|
||||
return Feeds::getFeedArticles($feed, $is_cat, true, $_SESSION["uid"]);
|
||||
}
|
||||
|
||||
function checkbox_to_sql_bool($val) {
|
||||
return ($val == "on") ? 1 : 0;
|
||||
}
|
||||
|
|
|
@ -98,7 +98,7 @@ class Af_Psql_Trgm extends Plugin {
|
|||
|
||||
print "</div>";
|
||||
|
||||
print "<div style='text-align : right' class='text-muted'>" . smart_date_time(strtotime($line["updated"])) . "</div>";
|
||||
print "<div style='text-align : right' class='text-muted'>" . TimeHelper::smart_date_time(strtotime($line["updated"])) . "</div>";
|
||||
|
||||
print "</li>";
|
||||
}
|
||||
|
@ -123,7 +123,7 @@ class Af_Psql_Trgm extends Plugin {
|
|||
function hook_prefs_tab($args) {
|
||||
if ($args != "prefFeeds") return;
|
||||
|
||||
print "<div dojoType=\"dijit.layout.AccordionPane\"
|
||||
print "<div dojoType=\"dijit.layout.AccordionPane\"
|
||||
title=\"<i class='material-icons'>extension</i> ".__('Mark similar articles as read')."\">";
|
||||
|
||||
if (DB_TYPE != "pgsql") {
|
||||
|
|
Loading…
Reference in New Issue