diff --git a/src/Content/Widget.php b/src/Content/Widget.php index 032b9e7534..f3e82b0db6 100644 --- a/src/Content/Widget.php +++ b/src/Content/Widget.php @@ -463,7 +463,7 @@ class Widget $cachekey = 'Widget::postedByYear' . $uid . '-' . (int)$wall; $dthen = DI::cache()->get($cachekey); - if (!empty($dthen)) { + if (empty($dthen)) { $dthen = Item::firstPostDate($uid, $wall); DI::cache()->set($cachekey, $dthen, Duration::HOUR); } diff --git a/src/Model/Item.php b/src/Model/Item.php index 31571e6488..d303938dd6 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -2177,9 +2177,15 @@ class Item public static function firstPostDate($uid, $wall = false) { - $condition = ['gravity' => GRAVITY_PARENT, 'uid' => $uid, 'wall' => $wall, 'deleted' => false, 'visible' => true]; + $user = User::getById($uid, ['register_date']); + if (empty($user)) { + return false; + } + + $condition = ["`uid` = ? AND `wall` = ? AND NOT `deleted` AND `visible` AND `received` >= ?", + $uid, $wall, $user['register_date']]; $params = ['order' => ['received' => false]]; - $thread = Post::selectFirst(['received'], $condition, $params); + $thread = Post::selectFirstThread(['received'], $condition, $params); if (DBA::isResult($thread)) { $postdate = substr(DateTimeFormat::local($thread['received']), 0, 10); return $postdate; diff --git a/src/Model/Post.php b/src/Model/Post.php index bb35f126b3..3727d29a36 100644 --- a/src/Model/Post.php +++ b/src/Model/Post.php @@ -181,6 +181,31 @@ class Post } } + /** + * Retrieve a single record from the post-thread table and returns it in an associative array + * + * @param array $fields + * @param array $condition + * @param array $params + * @return bool|array + * @throws \Exception + * @see DBA::select + */ + public static function selectFirstThread(array $fields = [], array $condition = [], $params = []) + { + $params['limit'] = 1; + + $result = self::selectThread($fields, $condition, $params); + + if (is_bool($result)) { + return $result; + } else { + $row = self::fetch($result); + DBA::close($result); + return $row; + } + } + /** * Select rows from the post table and returns them as an array *