diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e842faf48..2708e38f9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,5 +1,7 @@ ## Contributing code the right way +*(or: how I learned to post merge requests without crying myself to sleep)* + New user accounts on Gogs are not allowed to fork repositories because of spam. To get initial fork access, do the following: diff --git a/backend.php b/backend.php index cb158f705..e65ce1b94 100644 --- a/backend.php +++ b/backend.php @@ -98,10 +98,13 @@ if ($override) { $handler = $override; } else { - $handler = new $op($_REQUEST); + $reflection = new ReflectionClass($op); + $handler = $reflection->newInstanceWithoutConstructor(); } if ($handler && implements_interface($handler, 'IHandler')) { + $handler->__construct($_REQUEST); + if (validate_csrf($csrf_token) || $handler->csrf_ignore($method)) { if ($handler->before($method)) { if ($method && method_exists($handler, $method)) { diff --git a/classes/handler/public.php b/classes/handler/public.php index b81fb03b8..67c188142 100755 --- a/classes/handler/public.php +++ b/classes/handler/public.php @@ -85,7 +85,7 @@ class Handler_Public extends Handler { $tpl->readTemplateFromFile("templates/generated_feed.txt"); $tpl->setVariable('FEED_TITLE', $feed_title, true); - $tpl->setVariable('VERSION', VERSION, true); + $tpl->setVariable('VERSION', get_version(), true); $tpl->setVariable('FEED_URL', htmlspecialchars($feed_self_url), true); $tpl->setVariable('SELF_URL', htmlspecialchars(get_self_url_prefix()), true); @@ -180,7 +180,6 @@ class Handler_Public extends Handler { $feed = array(); $feed['title'] = $feed_title; - $feed['version'] = VERSION; $feed['feed_url'] = $feed_self_url; $feed['self_url'] = get_self_url_prefix(); diff --git a/include/functions.php b/include/functions.php index 9cd352833..f244b47b8 100644 --- a/include/functions.php +++ b/include/functions.php @@ -27,6 +27,9 @@ error_reporting(E_ALL & ~E_NOTICE); } + ini_set('display_errors', 0); + ini_set('display_startup_errors', 0); + require_once 'config.php'; /** @@ -151,10 +154,9 @@ } require_once 'db-prefs.php'; - require_once 'version.php'; require_once 'controls.php'; - define('SELF_USER_AGENT', 'Tiny Tiny RSS/' . VERSION . ' (http://tt-rss.org/)'); + define('SELF_USER_AGENT', 'Tiny Tiny RSS/' . get_version() . ' (http://tt-rss.org/)'); ini_set('user_agent', SELF_USER_AGENT); $schema_version = false; @@ -1882,3 +1884,51 @@ return $ts; } + + /* for package maintainers who don't use git: if version_static.txt exists in tt-rss root + directory, its contents are displayed instead of git commit-based version, this could be generated + based on source git tree commit used when creating the package */ + + function get_version(&$git_commit = false, &$git_timestamp = false) { + global $ttrss_version; + + if (isset($ttrss_version)) + return $ttrss_version; + + $ttrss_version = "UNKNOWN (Unsupported)"; + + date_default_timezone_set('UTC'); + $root_dir = dirname(dirname(__FILE__)); + + if ('\\' === DIRECTORY_SEPARATOR) { + $ttrss_version = "UNKNOWN (Unsupported, Windows)"; + } else if (PHP_OS === "Darwin") { + $ttrss_version = "UNKNOWN (Unsupported, Darwin)"; + } else if (file_exists("$root_dir/version_static.txt")) { + $ttrss_version = trim(file_get_contents("$root_dir/version_static.txt")) . " (Unsupported)"; + } else if (is_dir("$root_dir/.git")) { + $rc = 0; + $output = []; + + $cwd = getcwd(); + + chdir($root_dir); + exec('git log --pretty='.escapeshellarg('%ct %h').' -n1 HEAD 2>&1', $output, $rc); + chdir($cwd); + + if ($rc == 0) { + if (is_array($output) && count($output) > 0) { + list ($timestamp, $commit) = explode(" ", $output[0], 2); + + $git_commit = $commit; + $git_timestamp = $timestamp; + + $ttrss_version = strftime("%y.%m", $timestamp) . "-$commit"; + } + } else { + user_error("Unable to determine version (using $root_dir): " . implode("\n", $output), E_USER_WARNING); + } + } + + return $ttrss_version; + } diff --git a/include/sessions.php b/include/sessions.php index ca9f169d8..73be1e403 100644 --- a/include/sessions.php +++ b/include/sessions.php @@ -7,7 +7,6 @@ require_once "errorhandler.php"; require_once "lib/accept-to-gettext.php"; require_once "lib/gettext/gettext.inc"; - require_once "version.php"; $session_expire = min(2147483647 - time() - 1, max(SESSION_COOKIE_LIFETIME, 86400)); $session_name = (!defined('TTRSS_SESSION_NAME')) ? "ttrss_sid" : TTRSS_SESSION_NAME; diff --git a/include/version.php b/include/version.php deleted file mode 100644 index d1c5e03b5..000000000 --- a/include/version.php +++ /dev/null @@ -1,36 +0,0 @@ - 0) { - list ($timestamp, $commit) = explode(" ", $output[0], 2); - - $git_commit = $commit; - $git_timestamp = $timestamp; - - $version = strftime("%y.%m", $timestamp) . "-$commit"; - } - } - } - - return $version; - } - - define('VERSION', get_version()); diff --git a/index.php b/index.php index f7ea6178a..6a22d5471 100644 --- a/index.php +++ b/index.php @@ -23,7 +23,6 @@ require_once "sessions.php"; require_once "functions.php"; require_once "sanity_check.php"; - require_once "version.php"; require_once "config.php"; require_once "db-prefs.php"; @@ -40,10 +39,6 @@ Tiny Tiny RSS - - readTemplateFromFile('templates/generated_feed.txt'); $tpl->setVariable('FEED_TITLE', $feed_title, true); - $tpl->setVariable('VERSION', VERSION, true); + $tpl->setVariable('VERSION', get_version(), true); $tpl->setVariable('FEED_URL', htmlspecialchars($fetch_url), true); $tpl->setVariable('SELF_URL', $site_url, true); diff --git a/prefs.php b/prefs.php index d75fc5553..7d6962004 100644 --- a/prefs.php +++ b/prefs.php @@ -16,7 +16,6 @@ require_once "sessions.php"; require_once "functions.php"; require_once "sanity_check.php"; - require_once "version.php"; require_once "config.php"; require_once "db-prefs.php"; @@ -32,10 +31,6 @@ Tiny Tiny RSS : <?php echo __("Preferences") ?> - -