Issue 9799: Ensure that the first post date is after the registration date
This commit is contained in:
parent
ab9090ede1
commit
6a4540e6f6
3 changed files with 34 additions and 3 deletions
|
@ -463,7 +463,7 @@ class Widget
|
||||||
|
|
||||||
$cachekey = 'Widget::postedByYear' . $uid . '-' . (int)$wall;
|
$cachekey = 'Widget::postedByYear' . $uid . '-' . (int)$wall;
|
||||||
$dthen = DI::cache()->get($cachekey);
|
$dthen = DI::cache()->get($cachekey);
|
||||||
if (!empty($dthen)) {
|
if (empty($dthen)) {
|
||||||
$dthen = Item::firstPostDate($uid, $wall);
|
$dthen = Item::firstPostDate($uid, $wall);
|
||||||
DI::cache()->set($cachekey, $dthen, Duration::HOUR);
|
DI::cache()->set($cachekey, $dthen, Duration::HOUR);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2177,9 +2177,15 @@ class Item
|
||||||
|
|
||||||
public static function firstPostDate($uid, $wall = false)
|
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]];
|
$params = ['order' => ['received' => false]];
|
||||||
$thread = Post::selectFirst(['received'], $condition, $params);
|
$thread = Post::selectFirstThread(['received'], $condition, $params);
|
||||||
if (DBA::isResult($thread)) {
|
if (DBA::isResult($thread)) {
|
||||||
$postdate = substr(DateTimeFormat::local($thread['received']), 0, 10);
|
$postdate = substr(DateTimeFormat::local($thread['received']), 0, 10);
|
||||||
return $postdate;
|
return $postdate;
|
||||||
|
|
|
@ -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
|
* Select rows from the post table and returns them as an array
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue