diff --git a/.github/get-classic-admin-theme.sh b/.github/get-classic-admin-theme.sh index bca4ce09b..038e6a6cc 100644 --- a/.github/get-classic-admin-theme.sh +++ b/.github/get-classic-admin-theme.sh @@ -6,7 +6,7 @@ REPO="textpattern-classic-admin-theme"; EXTRACT="textpattern/admin-themes/classic"; -TAG="main"; +TAG="4.9.x"; if [ ! -z "$1" ]; then TAG="$1"; fi diff --git a/.github/get-default-theme.sh b/.github/get-default-theme.sh index b885165ae..91ff36046 100644 --- a/.github/get-default-theme.sh +++ b/.github/get-default-theme.sh @@ -6,7 +6,7 @@ REPO="textpattern-default-theme"; EXTRACT="textpattern/setup/themes"; -TAG="main"; +TAG="4.9.x"; if [ ! -z "$1" ]; then TAG="$1"; fi diff --git a/.github/get-hive-admin-theme.sh b/.github/get-hive-admin-theme.sh index a4a7aa0d9..b0739820a 100644 --- a/.github/get-hive-admin-theme.sh +++ b/.github/get-hive-admin-theme.sh @@ -7,7 +7,7 @@ EXTRACT1="textpattern/admin-themes"; EXTRACT2="sites/site1/admin/setup"; -TAG="main"; +TAG="4.9.x"; if [ ! -z "$1" ]; then TAG="$1"; fi diff --git a/.github/get-pophelp.sh b/.github/get-pophelp.sh index 96881edf8..00d6d60c5 100644 --- a/.github/get-pophelp.sh +++ b/.github/get-pophelp.sh @@ -6,7 +6,7 @@ REPO="pophelp"; EXTRACT="textpattern/lang"; -TAG="main"; +TAG="4.9.x"; if [ ! -z "$1" ]; then TAG="$1"; fi diff --git a/.github/get-textpacks.sh b/.github/get-textpacks.sh index 688d9a6c1..19c13ebb1 100644 --- a/.github/get-textpacks.sh +++ b/.github/get-textpacks.sh @@ -6,7 +6,7 @@ REPO="textpacks"; EXTRACT="textpattern/lang"; -TAG="main"; +TAG="4.9.x"; if [ ! -z "$1" ]; then TAG="$1"; fi diff --git a/rpc/TXP_RPCServer.php b/rpc/TXP_RPCServer.php index 9537c81dc..64e3879f9 100644 --- a/rpc/TXP_RPCServer.php +++ b/rpc/TXP_RPCServer.php @@ -533,7 +533,7 @@ function blogger_getPost($params) return new IXR_Error(100, gTxt('bad_login')); } - $rs = $txp->getArticleID($postid, 'ID, Body, AuthorId, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) as uPosted'); + $rs = $txp->getArticleID($postid, 'ID, Body, AuthorId, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) as uPosted'); if (!$rs) { return new IXR_Error(205, gTxt('problem_retrieving_article')); @@ -579,7 +579,7 @@ function blogger_getRecentPosts($params) return new IXR_Error(100, gTxt('bad_login')); } - $articles = $txp->getArticleList('ID, Body, AuthorId, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) as uPosted', "Section='" . doSlash($blogid) . "'", '0', $numberOfPosts, false); + $articles = $txp->getArticleList('ID, Body, AuthorId, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) as uPosted', "Section='" . doSlash($blogid) . "'", '0', $numberOfPosts, false); if (false === $articles) { return new IXR_Error(207, gTxt('problem_getting_articles')); @@ -610,7 +610,7 @@ function metaWeblog_getPost($params) return new IXR_Error(100, gTxt('bad_login')); } - $rs = $txp->getArticleID($postid, 'ID, Title, Body, Excerpt, Annotate, Keywords, Section, Category1, Category2, textile_body, url_title, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) as uPosted'); + $rs = $txp->getArticleID($postid, 'ID, Title, Body, Excerpt, Annotate, Keywords, Section, Category1, Category2, textile_body, url_title, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) as uPosted'); if (!$rs) { return new IXR_Error(205, gTxt('problem_retrieving_article')); @@ -707,7 +707,7 @@ function metaWeblog_getRecentPosts($params) } $articles = $txp->getArticleList( - 'ID, Title, url_title, Body, Excerpt, Annotate, Keywords, Section, Category1, Category2, textile_body, AuthorID, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) as uPosted, Status', + 'ID, Title, url_title, Body, Excerpt, Annotate, Keywords, Section, Category1, Category2, textile_body, AuthorID, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) as uPosted, Status', "Section='" . doSlash($blogid) . "'", '0', $numberOfPosts, false ); @@ -739,7 +739,7 @@ function mt_getRecentPostTitles($params) return new IXR_Error(100, gTxt('bad_login')); } - $articles = $txp->getArticleList('ID, Title, AuthorID, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) as uPosted', "Section='" . doSlash($blogid) . "'", '0', $numberOfPosts, false); + $articles = $txp->getArticleList('ID, Title, AuthorID, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) as uPosted', "Section='" . doSlash($blogid) . "'", '0', $numberOfPosts, false); if (false === $articles) { return new IXR_Error(207, gTxt('problem_getting_articles')); diff --git a/textpattern/include/txp_admin.php b/textpattern/include/txp_admin.php index 8187337b1..12a481ff5 100644 --- a/textpattern/include/txp_admin.php +++ b/textpattern/include/txp_admin.php @@ -324,7 +324,7 @@ function author_list($message = '') 'label' => 'privileges', ), 'last_login' => array( - 'column' => 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), last_access)', + 'column' => 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), last_access)', 'class' => 'date', ), 'article_count' => array( diff --git a/textpattern/include/txp_article.php b/textpattern/include/txp_article.php index 801cdfcb5..08a1f6ab9 100644 --- a/textpattern/include/txp_article.php +++ b/textpattern/include/txp_article.php @@ -146,9 +146,9 @@ function article_save($write = true) if ($incoming['ID']) { $oldArticle = safe_row( "Status, AuthorID, url_title, Title, textile_body, textile_excerpt, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS sLastMod, LastModID, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS sPosted, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS sExpires", + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS sLastMod, LastModID, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS sPosted, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS sExpires", 'textpattern', "ID = " . (int) $incoming['ID'] ); @@ -218,7 +218,7 @@ function article_save($write = true) $uPosted = $ts - tz_offset($ts); } - $whenposted = "FROM_UNIXTIME(0) + INTERVAL $uPosted SECOND"; + $whenposted = "COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $uPosted SECOND"; } // Set and validate expiry timestamp. @@ -264,7 +264,7 @@ function article_save($write = true) } if ($uExpires) { - $whenexpires = "FROM_UNIXTIME(0) + INTERVAL $uExpires SECOND"; + $whenexpires = "COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $uExpires SECOND"; } else { $whenexpires = "NULL"; } @@ -702,9 +702,9 @@ function article_edit($message = '', $concurrent = false, $refresh_partials = fa $ID = assert_int($ID); $rs = safe_row( - "*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS sPosted, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS sExpires, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS sLastMod", + "*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS sPosted, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS sExpires, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS sLastMod", 'textpattern', "ID = $ID" ); @@ -724,7 +724,7 @@ function article_edit($message = '', $concurrent = false, $refresh_partials = fa $store_out = array('ID' => $ID) + psa($vars); if ($concurrent) { - $store_out['sLastMod'] = safe_field("TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS sLastMod", 'textpattern', "ID = $ID"); + $store_out['sLastMod'] = safe_field("TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS sLastMod", 'textpattern', "ID = $ID"); } if (!has_privs('article.set_markup') && !empty($ID)) { @@ -1164,7 +1164,7 @@ function checkIfNeighbour($whichway, $sPosted, $ID = 0) return safe_field( "ID", 'textpattern', - "(Posted $dir (FROM_UNIXTIME(0) + INTERVAL $sPosted SECOND) OR Posted = (FROM_UNIXTIME(0) + INTERVAL $sPosted SECOND) AND ID $dir $ID) $crit ORDER BY Posted $ord, ID $ord LIMIT 1" + "(Posted $dir (COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $sPosted SECOND) OR Posted = (COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $sPosted SECOND) AND ID $dir $ID) $crit ORDER BY Posted $ord, ID $ord LIMIT 1" ); } diff --git a/textpattern/include/txp_diag.php b/textpattern/include/txp_diag.php index 6e9fabc35..01ea45da7 100644 --- a/textpattern/include/txp_diag.php +++ b/textpattern/include/txp_diag.php @@ -501,7 +501,7 @@ function doDiagnostics() } // Database server time. - extract(doSpecial(getRow("SELECT @@global.time_zone AS db_global_timezone, @@session.time_zone AS db_session_timezone, NOW() AS db_server_time, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), NOW()) AS db_server_timestamp"))); + extract(doSpecial(getRow("SELECT @@global.time_zone AS db_global_timezone, @@session.time_zone AS db_session_timezone, NOW() AS db_server_time, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), NOW()) AS db_server_timestamp"))); $db_server_timeoffset = $db_server_timestamp - $now; echo pagetop(gTxt('tab_diagnostics'), ''); diff --git a/textpattern/include/txp_discuss.php b/textpattern/include/txp_discuss.php index 740fc31bd..5f523fe59 100644 --- a/textpattern/include/txp_discuss.php +++ b/textpattern/include/txp_discuss.php @@ -290,7 +290,7 @@ function discuss_list($message = '') txp_discuss.web, txp_discuss.message, txp_discuss.visible, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), txp_discuss.posted) AS posted, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), txp_discuss.posted) AS posted, textpattern.ID AS thisid, textpattern.Section AS section, textpattern.url_title, @@ -298,7 +298,7 @@ function discuss_list($message = '') textpattern.Category1 AS category1, textpattern.Category2 AS category2, textpattern.Status, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), textpattern.Posted) AS uPosted, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), textpattern.Posted) AS uPosted, (SELECT COUNT(*) FROM " . safe_pfx('txp_discuss') . " AS count WHERE $spamcrit AND txp_discuss.parentid = count.parentid) AS c FROM " . safe_pfx_j('txp_discuss') . " LEFT JOIN " . safe_pfx_j('textpattern') . " ON txp_discuss.parentid = textpattern.ID @@ -492,7 +492,7 @@ function discuss_edit() $discussid = assert_int($discussid); - $rs = safe_row("*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), posted) AS uPosted", 'txp_discuss', "discussid = '$discussid'"); + $rs = safe_row("*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), posted) AS uPosted", 'txp_discuss', "discussid = '$discussid'"); if ($rs) { extract($rs); diff --git a/textpattern/include/txp_file.php b/textpattern/include/txp_file.php index 648ee3c4d..912187c28 100644 --- a/textpattern/include/txp_file.php +++ b/textpattern/include/txp_file.php @@ -278,8 +278,8 @@ function file_list($message = '', $ids = array()) txp_file.title, txp_file.category, txp_file.description, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), txp_file.created) AS uDate, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), txp_file.modified) AS mDate, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), txp_file.created) AS uDate, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), txp_file.modified) AS mDate, txp_file.downloads, txp_file.status, txp_file.author, @@ -676,7 +676,7 @@ function file_edit($message = '', $id = '') } $id = assert_int($id); - $rs = safe_row("*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), created) AS created, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), modified) AS modified", 'txp_file', "id = '$id'"); + $rs = safe_row("*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), created) AS created, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), modified) AS modified", 'txp_file', "id = '$id'"); if ($rs) { extract($rs); @@ -1242,7 +1242,7 @@ function file_save() $created = "NOW()"; } else { $created_ts = safe_strtotime($year . '-' . $month . '-' . $day . ' ' . $hour . ':' . $minute . ':' . $second); - $created = $created_ts === false ? false : "FROM_UNIXTIME(0) + INTERVAL $created_ts SECOND"; + $created = $created_ts === false ? false : "COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $created_ts SECOND"; } $size = file_exists($new_path) ? filesize($new_path) : $rs['size']; diff --git a/textpattern/include/txp_image.php b/textpattern/include/txp_image.php index a378769ac..a38027688 100644 --- a/textpattern/include/txp_image.php +++ b/textpattern/include/txp_image.php @@ -99,7 +99,7 @@ function image_list($message = '') 'class' => 'name', ), 'uDate' => array( - 'column' => 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), txp_image.date)', + 'column' => 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), txp_image.date)', 'label' => 'date', 'class' => 'date', ), @@ -690,7 +690,7 @@ function image_edit($message = '', $id = '') } $id = assert_int($id); - $rs = safe_row("*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), date) AS uDate", 'txp_image', "id = '$id'"); + $rs = safe_row("*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), date) AS uDate", 'txp_image', "id = '$id'"); if ($rs) { extract($rs); @@ -1208,7 +1208,7 @@ function image_save() $created = "NOW()"; } else { $created_ts = safe_strtotime($year . '-' . $month . '-' . $day . ' ' . $hour . ':' . $minute . ':' . $second); - $created = $created_ts === false ? false : "FROM_UNIXTIME(0) + INTERVAL $created_ts SECOND"; + $created = $created_ts === false ? false : "COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $created_ts SECOND"; } $constraints = array('category' => new CategoryConstraint(gps('category'), array('type' => 'image'))); diff --git a/textpattern/include/txp_link.php b/textpattern/include/txp_link.php index c2de7293b..9e2327037 100644 --- a/textpattern/include/txp_link.php +++ b/textpattern/include/txp_link.php @@ -227,7 +227,7 @@ function link_list($message = '') $rs = safe_query( "SELECT txp_link.id, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), txp_link.date) AS uDate, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), txp_link.date) AS uDate, txp_link.category, txp_link.url, txp_link.linkname, @@ -394,7 +394,7 @@ function link_edit($message = '') if ($is_edit) { $id = assert_int($id); - $rs = safe_row("*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), date) AS date", 'txp_link', "id = '$id'"); + $rs = safe_row("*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), date) AS date", 'txp_link', "id = '$id'"); if ($rs) { extract($rs); @@ -542,7 +542,7 @@ function link_save() $created = "NOW()"; if (!$publish_now && $created_ts !== false) { - $created = "FROM_UNIXTIME(0) + INTERVAL $created_ts SECOND"; + $created = "COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $created_ts SECOND"; } $constraints = array( diff --git a/textpattern/include/txp_list.php b/textpattern/include/txp_list.php index 380e39e6a..5836b39fe 100644 --- a/textpattern/include/txp_list.php +++ b/textpattern/include/txp_list.php @@ -100,17 +100,17 @@ function list_list($message = '', $post = '') 'class' => 'title', ), 'posted' => array( - 'column' => 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted)', + 'column' => 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted)', 'label' => 'posted', 'class' => 'posted date', ), 'lastmod' => array( - 'column' => 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod)', + 'column' => 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod)', 'label' => 'modified', 'class' => 'lastmod date', ), 'expires' => array( - 'column' => 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires)', + 'column' => 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires)', 'label' => 'expires', 'class' => 'expires date', ), diff --git a/textpattern/include/txp_lore.php b/textpattern/include/txp_lore.php index 18fb3e794..f2f439b13 100644 --- a/textpattern/include/txp_lore.php +++ b/textpattern/include/txp_lore.php @@ -174,7 +174,7 @@ function lore_list($message = '') ); } else { $rs = safe_rows_start( - "*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), time) AS uTime", + "*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), time) AS uTime", 'txp_log', "$criteria ORDER BY $sort_sql LIMIT $offset, $limit" ); diff --git a/textpattern/lib/txplib_db.php b/textpattern/lib/txplib_db.php index 14e246e87..cee65bbd5 100644 --- a/textpattern/lib/txplib_db.php +++ b/textpattern/lib/txplib_db.php @@ -1935,12 +1935,12 @@ function now($type, $update = false) if ($time > $now or $update) { $table = ($type === 'date') ? 'txp_link' : (($type === 'created') ? 'txp_file' : 'textpattern'); $where = '1=1 having utime > '.$time.' order by utime asc limit 1'; - $now = safe_field('TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), '.$type.') as utime', $table, $where); + $now = safe_field('TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), '.$type.') as utime', $table, $where); $now = ($now === false) ? 2147483647 : intval($now) - 1; update_pref($pref, $now); $nows[$type] = $now; } } - return "(FROM_UNIXTIME(0) + INTERVAL $now SECOND)"; + return "(COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $now SECOND)"; } diff --git a/textpattern/lib/txplib_misc.php b/textpattern/lib/txplib_misc.php index eb622bdf6..4fda1fc73 100644 --- a/textpattern/lib/txplib_misc.php +++ b/textpattern/lib/txplib_misc.php @@ -4006,7 +4006,7 @@ function get_lastmod($unix_ts = null) } // Check for future articles that are now visible. - if (txpinterface === 'public' && $max_article = safe_field("TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted)", 'textpattern', "Posted <= ".now('posted')." AND Status >= 4 ORDER BY Posted DESC LIMIT 1")) { + if (txpinterface === 'public' && $max_article = safe_field("TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted)", 'textpattern', "Posted <= ".now('posted')." AND Status >= 4 ORDER BY Posted DESC LIMIT 1")) { $unix_ts = max($unix_ts, $max_article); } @@ -4642,7 +4642,7 @@ function buildTimeSql($month, $time, $field = 'Posted') $from = $month ? "'".doSlash($month)."'" : now($field); $start = time(); } else { - $from = "(FROM_UNIXTIME(0) + INTERVAL $start SECOND)"; + $from = "(COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $start SECOND)"; } if ($time === 'since') { @@ -4657,8 +4657,8 @@ function buildTimeSql($month, $time, $field = 'Posted') } $timeq = ($start == $stop ? - "$safe_field = (FROM_UNIXTIME(0) + INTERVAL $start SECOND)" : - "$safe_field BETWEEN (FROM_UNIXTIME(0) + INTERVAL $start SECOND) AND (FROM_UNIXTIME(0) + INTERVAL $stop SECOND)" + "$safe_field = (COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $start SECOND)" : + "$safe_field BETWEEN (COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $start SECOND) AND (COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $stop SECOND)" ); } } @@ -5052,7 +5052,7 @@ function permlinkurl_id($id) } $rs = empty($id) ? array() : safe_row( - "ID AS thisid, Section, Title, url_title, Category1, Category2, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS posted, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS expires", + "ID AS thisid, Section, Title, url_title, Category1, Category2, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS posted, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS expires", 'textpattern', "ID = $id" ); diff --git a/textpattern/lib/txplib_publish.php b/textpattern/lib/txplib_publish.php index 5a298b486..5a3739aee 100644 --- a/textpattern/lib/txplib_publish.php +++ b/textpattern/lib/txplib_publish.php @@ -87,9 +87,9 @@ function filterFrontPage($field = 'Section', $column = array('on_frontpage'), $n * @param bool $all Rewrite all data * @example * if ($rs = safe_rows_start("*, - * TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, - * TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires, - * TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod", + * TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, + * TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires, + * TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod", * 'textpattern', * "1 = 1" * )) @@ -234,7 +234,7 @@ function getNeighbour($threshold, $s, $type, $atts = array(), $threshold_type = $where = isset($atts['?']) ? $atts['?'] : '1'; $tables = isset($atts['#']) ? $atts['#'] : safe_pfx('textpattern'); - $columns = isset($atts['*']) ? $atts['*'] : '*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod'; + $columns = isset($atts['*']) ? $atts['*'] : '*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod'; $q = array( "SELECT $columns FROM $tables", @@ -304,13 +304,13 @@ function getNextPrev($id = 0, $threshold = null, $s = '') // Attributes with special treatment. switch ($atts['sortby']) { case 'Posted': - $threshold = "(FROM_UNIXTIME(0) + INTERVAL ".intval($thisarticle['posted'])." SECOND)"; + $threshold = "(COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL ".intval($thisarticle['posted'])." SECOND)"; break; case 'Expires': - $threshold = "(FROM_UNIXTIME(0) + INTERVAL ".intval($thisarticle['expires'])." SECOND)"; + $threshold = "(COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL ".intval($thisarticle['expires'])." SECOND)"; break; case 'LastMod': - $threshold = "(FROM_UNIXTIME(0) + INTERVAL ".intval($thisarticle['modified'])." SECOND)"; + $threshold = "(COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL ".intval($thisarticle['modified'])." SECOND)"; break; default: // Retrieve current threshold value per sort column from $thisarticle. @@ -342,7 +342,7 @@ function getNextPrev($id = 0, $threshold = null, $s = '') function lastMod() { - $last = safe_field("TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), val)", 'txp_prefs', "name = 'lastmod'"); + $last = safe_field("TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), val)", 'txp_prefs', "name = 'lastmod'"); return gmdate("D, d M Y H:i:s \G\M\T", $last); } @@ -651,7 +651,7 @@ function ckCat($type, $val, $debug = false) function ckExID($val, $debug = false) { return safe_row( - "*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod", + "*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod", 'textpattern', "ID = ".intval($val)." AND Status >= 4 LIMIT 1", $debug ); @@ -678,7 +678,7 @@ function ckExID($val, $debug = false) function lookupByTitle($val, $debug = false) { $res = safe_row( - "*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod", + "*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod", 'textpattern', "url_title = '".doSlash($val)."' LIMIT 1", $debug ); @@ -708,7 +708,7 @@ function lookupByTitle($val, $debug = false) function lookupByTitleSection($val, $section, $debug = false) { $res = safe_row( - "*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod", + "*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod", 'textpattern', "url_title = '".doSlash($val)."' AND Section = '".doSlash($section)."' LIMIT 1", $debug ); @@ -729,7 +729,7 @@ function lookupByTitleSection($val, $section, $debug = false) function lookupByIDSection($id, $section, $debug = false) { $res = safe_row( - "*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod", + "*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod", 'textpattern', "ID = ".intval($id)." AND Section = '".doSlash($section)."' LIMIT 1", $debug ); @@ -749,7 +749,7 @@ function lookupByIDSection($id, $section, $debug = false) function lookupByID($id, $debug = false) { return safe_row( - "*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod", + "*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod", 'textpattern', "ID = ".intval($id)." LIMIT 1", $debug ); @@ -775,7 +775,7 @@ function lookupByDateTitle($when, $title, $debug = false) } $res = safe_row( - "*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod", + "*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod", 'textpattern', "url_title = '".doSlash($title)."' AND $dateClause LIMIT 1" ); @@ -916,9 +916,9 @@ function filterAtts($atts = null, $iscustom = null) } $coreColumns = array( - 'posted' => 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted', - 'expires' => 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires', - 'modified' => 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod', + 'posted' => 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted', + 'expires' => 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires', + 'modified' => 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod', ) + article_column_map(); foreach ($windowed + $coreColumns as $field => $val) { @@ -1208,7 +1208,7 @@ function filterAtts($atts = null, $iscustom = null) } if (isset($date_fields[$field])) { - $what['u'.$field] = 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), '.$what[$field].')'; + $what['u'.$field] = 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), '.$what[$field].')'; $alias['u'.$field] = " AS `u{$column}`"; } } diff --git a/textpattern/lib/txplib_wrapper.php b/textpattern/lib/txplib_wrapper.php index 4281591d5..5fe1556eb 100644 --- a/textpattern/lib/txplib_wrapper.php +++ b/textpattern/lib/txplib_wrapper.php @@ -639,7 +639,7 @@ public function updateArticleField($article_id, $field, $value) if ($field == 'Posted') { $value = strtotime($value) - tz_offset(); - $value = "FROM_UNIXTIME(0) + INTERVAL $value SECOND"; + $value = "COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $value SECOND"; $sql = "Posted = $value"; } elseif ($field == 'Status') { $value = assert_int($value); @@ -730,7 +730,7 @@ public function _setArticle($incoming, $article_id = null) } } else { $when = strtotime($incoming['Posted']) - tz_offset(); - $when = "FROM_UNIXTIME(0) + INTERVAL $when SECOND"; + $when = "COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $when SECOND"; } if ($incoming['Title'] || $incoming['Body'] || $incoming['Excerpt']) { diff --git a/textpattern/publish.php b/textpattern/publish.php index 015fd8e43..f602b8158 100644 --- a/textpattern/publish.php +++ b/textpattern/publish.php @@ -479,9 +479,9 @@ function preText($store, $prefs = null) $slash = $trailing_slash <= 0 ? '' : '/'; $guessarticles = safe_rows( - '*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted,'. - 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires,'. - 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod', + '*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted,'. + 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires,'. + 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod', 'textpattern', "(url_title='$safe_un'" . ($n < 3 && is_numeric($un) ? " OR ID='$safe_un')" : ')') . $status ); diff --git a/textpattern/publish/atom.php b/textpattern/publish/atom.php index b39eb425d..5964b95b5 100644 --- a/textpattern/publish/atom.php +++ b/textpattern/publish/atom.php @@ -173,9 +173,9 @@ function atom() $rs = safe_rows_start( "*, ID AS thisid, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod", + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod", 'textpattern', $where . " ORDER BY uPosted DESC LIMIT $limit" ); @@ -243,7 +243,7 @@ function atom() } elseif ($area == 'link') { $cfilter = ($category) ? "category IN ('" . join("','", $category) . "')" : '1'; - $rs = safe_rows_start("*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), date) AS uDate", 'txp_link', "$cfilter ORDER BY date DESC, id DESC LIMIT $limit"); + $rs = safe_rows_start("*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), date) AS uDate", 'txp_link', "$cfilter ORDER BY date DESC, id DESC LIMIT $limit"); if ($rs) { while ($a = nextRow($rs)) { diff --git a/textpattern/publish/comment.php b/textpattern/publish/comment.php index 7134ad2c1..4097bd3a3 100644 --- a/textpattern/publish/comment.php +++ b/textpattern/publish/comment.php @@ -42,7 +42,7 @@ function fetchComments($id) { $rs = safe_rows( - "*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), posted) AS time", + "*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), posted) AS time", 'txp_discuss', "parentid = " . intval($id) . " AND visible = " . VISIBLE . " ORDER BY posted ASC" ); @@ -558,7 +558,7 @@ function checkCommentsAllowed($id) } else { extract( safe_row( - "Annotate, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted", + "Annotate, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted", 'textpattern', "ID = $id" ) diff --git a/textpattern/publish/rss.php b/textpattern/publish/rss.php index df383027a..5afc48de3 100644 --- a/textpattern/publish/rss.php +++ b/textpattern/publish/rss.php @@ -121,9 +121,9 @@ function rss() $rs = safe_rows_start( "*, ID AS thisid, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod", + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod", 'textpattern', $where . " ORDER BY uPosted DESC LIMIT $limit" ); @@ -178,7 +178,7 @@ function rss() } elseif ($area == 'link') { $cfilter = ($category) ? "category IN ('" . join("','", $category) . "')" : '1'; - $rs = safe_rows_start("*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), date) AS uDate", 'txp_link', "$cfilter ORDER BY date DESC, id DESC LIMIT $limit"); + $rs = safe_rows_start("*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), date) AS uDate", 'txp_link', "$cfilter ORDER BY date DESC, id DESC LIMIT $limit"); if ($rs) { while ($a = nextRow($rs)) { diff --git a/textpattern/publish/taghandlers.php b/textpattern/publish/taghandlers.php index 554703a83..f54d601a5 100644 --- a/textpattern/publish/taghandlers.php +++ b/textpattern/publish/taghandlers.php @@ -1697,7 +1697,7 @@ function txp_sandbox($atts = array(), $thing = null) if (empty($id)) { assert_article(); - $id = $thisarticle['thisid']; + $id = $thisarticle['thisid'] ?: 0; } elseif (!isset($articles[$id])) { return; } @@ -1725,7 +1725,7 @@ function txp_sandbox($atts = array(), $thing = null) $oldarticle = $thisarticle; isset($articles[$id]) and $thisarticle = $articles[$id]; $was_article_body = $is_article_body; - $is_article_body = $thisarticle['authorid']; + $is_article_body = $thisarticle['authorid'] ?: true; $was_form = $is_form; $is_form = 0; diff --git a/textpattern/vendors/Textpattern/L10n/Lang.php b/textpattern/vendors/Textpattern/L10n/Lang.php index 242b0b427..9052a2d7c 100644 --- a/textpattern/vendors/Textpattern/L10n/Lang.php +++ b/textpattern/vendors/Textpattern/L10n/Lang.php @@ -274,7 +274,7 @@ public function available($flags = TEXTPATTERN_LANG_AVAILABLE, $force = 0) // Need a value here for the language itself, not for each one of the rows. $ownClause = ($this->hasOwnerSupport() ? "owner = ''" : "1")." GROUP BY lang ORDER BY lastmod DESC"; $this->dbLangs = safe_rows( - "lang, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), MAX(lastmod)) AS lastmod", + "lang, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), MAX(lastmod)) AS lastmod", 'txp_lang', $ownClause ); diff --git a/textpattern/vendors/Textpattern/Tag/Syntax/Comment.php b/textpattern/vendors/Textpattern/Tag/Syntax/Comment.php index 264b4b8bc..23dc0ebc8 100644 --- a/textpattern/vendors/Textpattern/Tag/Syntax/Comment.php +++ b/textpattern/vendors/Textpattern/Tag/Syntax/Comment.php @@ -49,8 +49,8 @@ public static function recent_comments($atts, $thing = null) $sort = preg_replace('/\bposted\b/', 'd.posted', $sort); $expired = ($prefs['publish_expired_articles']) ? '' : " AND (".now('expires')." <= t.Expires OR t.Expires IS NULL) "; - $rs = startRows("SELECT d.name, d.email, d.web, d.message, d.discussid, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), d.Posted) AS time, t.ID AS thisid, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), t.Posted) AS posted, t.Title AS title, t.Section AS section, t.Category1, t.Category2, t.url_title + $rs = startRows("SELECT d.name, d.email, d.web, d.message, d.discussid, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), d.Posted) AS time, t.ID AS thisid, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), t.Posted) AS posted, t.Title AS title, t.Section AS section, t.Category1, t.Category2, t.url_title FROM ".safe_pfx('txp_discuss')." AS d INNER JOIN ".safe_pfx('textpattern')." AS t ON d.parentid = t.ID WHERE t.Status >= ".STATUS_LIVE.$expired." AND d.visible = ".VISIBLE." ORDER BY ".sanitizeForSort($sort)." @@ -107,7 +107,7 @@ public static function popup_comments($atts, $thing = null) extract(lAtts(array('form' => 'comments_display'), $atts)); $rs = safe_row( - "*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires", + "*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires", 'textpattern', "ID=".intval(gps('parentid'))." AND Status >= 4" ); @@ -433,7 +433,7 @@ public static function comments($atts, $thing = null) ($limit) ? "LIMIT ".intval($offset).", ".intval($limit) : '', ); - $rs = safe_rows_start("*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), posted) AS time", 'txp_discuss', join(' ', $qparts)); + $rs = safe_rows_start("*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), posted) AS time", 'txp_discuss', join(' ', $qparts)); $out = ''; diff --git a/textpattern/vendors/Textpattern/Tag/Syntax/Link.php b/textpattern/vendors/Textpattern/Tag/Syntax/Link.php index 7970e9f72..d9805924d 100644 --- a/textpattern/vendors/Textpattern/Tag/Syntax/Link.php +++ b/textpattern/vendors/Textpattern/Tag/Syntax/Link.php @@ -143,7 +143,7 @@ public static function linklist($atts, $thing = null) ($limit) ? 'LIMIT '.intval($pgoffset).', '.intval($limit) : '', ); - $rs = safe_rows_start("*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), date) AS uDate", 'txp_link', join(' ', $qparts)); + $rs = safe_rows_start("*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), date) AS uDate", 'txp_link', join(' ', $qparts)); $out = parseList($rs, $thislink, function($a) { global $thislink; $thislink = $a;