mirror of
https://github.com/Sarjuuk/aowow.git
synced 2025-11-29 15:58:16 +08:00
POST/GET
* unify accessing &_GET and &_POST data * properly calc and display diffTime
This commit is contained in:
@@ -55,7 +55,7 @@ class CommunityContent
|
|||||||
';
|
';
|
||||||
|
|
||||||
private static string $ssQuery = '
|
private static string $ssQuery = '
|
||||||
SELECT s.id, a.displayName AS user, s.date, s.width, s.height, s.caption, IF(s.status & ?d, 1, 0) AS "sticky", s.type, s.typeId
|
SELECT s.id AS ARRAY_KEY, s.id, a.displayName AS user, s.date, s.width, s.height, s.caption, IF(s.status & ?d, 1, 0) AS "sticky", s.type, s.typeId
|
||||||
FROM ?_screenshots s
|
FROM ?_screenshots s
|
||||||
LEFT JOIN ?_account a ON s.userIdOwner = a.id
|
LEFT JOIN ?_account a ON s.userIdOwner = a.id
|
||||||
WHERE {s.userIdOwner = ?d AND }{s.type = ? AND }{s.typeId = ? AND }s.status & ?d AND (s.status & ?d) = 0
|
WHERE {s.userIdOwner = ?d AND }{s.type = ? AND }{s.typeId = ? AND }s.status & ?d AND (s.status & ?d) = 0
|
||||||
@@ -64,7 +64,7 @@ class CommunityContent
|
|||||||
';
|
';
|
||||||
|
|
||||||
private static string $viQuery = '
|
private static string $viQuery = '
|
||||||
SELECT v.id, a.displayName AS user, v.date, v.videoId, v.caption, IF(v.status & ?d, 1, 0) AS "sticky", v.type, v.typeId
|
SELECT v.id AS ARRAY_KEY, v.id, a.displayName AS user, v.date, v.videoId, v.caption, IF(v.status & ?d, 1, 0) AS "sticky", v.type, v.typeId
|
||||||
FROM ?_videos v
|
FROM ?_videos v
|
||||||
LEFT JOIN ?_account a ON v.userIdOwner = a.id
|
LEFT JOIN ?_account a ON v.userIdOwner = a.id
|
||||||
WHERE {v.userIdOwner = ?d AND }{v.type = ? AND }{v.typeId = ? AND }v.status & ?d AND (v.status & ?d) = 0
|
WHERE {v.userIdOwner = ?d AND }{v.type = ? AND }{v.typeId = ? AND }v.status & ?d AND (v.status & ?d) = 0
|
||||||
@@ -78,7 +78,6 @@ class CommunityContent
|
|||||||
c.body AS preview,
|
c.body AS preview,
|
||||||
c.date,
|
c.date,
|
||||||
c.replyTo AS commentid,
|
c.replyTo AS commentid,
|
||||||
UNIX_TIMESTAMP() - c.date AS elapsed,
|
|
||||||
IF(c.flags & ?d, 1, 0) AS deleted,
|
IF(c.flags & ?d, 1, 0) AS deleted,
|
||||||
IF(c.type <> 0, c.type, c2.type) AS type,
|
IF(c.type <> 0, c.type, c2.type) AS type,
|
||||||
IF(c.typeId <> 0, c.typeId, c2.typeId) AS typeId,
|
IF(c.typeId <> 0, c.typeId, c2.typeId) AS typeId,
|
||||||
@@ -151,7 +150,7 @@ class CommunityContent
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getCommentPreviews(array $params = [], int &$nFound = 0) : array
|
public static function getCommentPreviews(array $params = [], int &$nFound = 0, bool $dateFmt = true) : array
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
purged:0, <- doesnt seem to be used anymore
|
purged:0, <- doesnt seem to be used anymore
|
||||||
@@ -184,7 +183,7 @@ class CommunityContent
|
|||||||
$c['subject'] = self::$subjCache[$c['type']][$c['typeId']];
|
$c['subject'] = self::$subjCache[$c['type']][$c['typeId']];
|
||||||
|
|
||||||
// format date
|
// format date
|
||||||
$c['date'] = date(Util::$dateFormatInternal, $c['date']);
|
$c['date'] = $dateFmt ? date(Util::$dateFormatInternal, $c['date']) : intVal($c['date']);
|
||||||
|
|
||||||
// remove commentid if not looking for replies
|
// remove commentid if not looking for replies
|
||||||
if (empty($params['replies']))
|
if (empty($params['replies']))
|
||||||
@@ -418,7 +417,7 @@ class CommunityContent
|
|||||||
return $comments;
|
return $comments;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getVideos(int $typeOrUser = 0, int $typeId = 0, int &$nFound = 0) : array
|
public static function getVideos(int $typeOrUser = 0, int $typeId = 0, int &$nFound = 0, bool $dateFmt = true) : array
|
||||||
{
|
{
|
||||||
$videos = DB::Aowow()->selectPage($nFound, self::$viQuery,
|
$videos = DB::Aowow()->selectPage($nFound, self::$viQuery,
|
||||||
CC_FLAG_STICKY,
|
CC_FLAG_STICKY,
|
||||||
@@ -450,7 +449,7 @@ class CommunityContent
|
|||||||
$v['subject'] = Lang::user('removed');
|
$v['subject'] = Lang::user('removed');
|
||||||
}
|
}
|
||||||
|
|
||||||
$v['date'] = date(Util::$dateFormatInternal, $v['date']);
|
$v['date'] = $dateFmt ? date(Util::$dateFormatInternal, $v['date']) : intVal($v['date']);
|
||||||
$v['videoType'] = 1; // always youtube
|
$v['videoType'] = 1; // always youtube
|
||||||
|
|
||||||
if (!$v['sticky'])
|
if (!$v['sticky'])
|
||||||
@@ -463,7 +462,7 @@ class CommunityContent
|
|||||||
return $videos;
|
return $videos;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getScreenshots(int $typeOrUser = 0, int $typeId = 0, int &$nFound = 0) : array
|
public static function getScreenshots(int $typeOrUser = 0, int $typeId = 0, int &$nFound = 0, bool $dateFmt = true) : array
|
||||||
{
|
{
|
||||||
$screenshots = DB::Aowow()->selectPage($nFound, self::$ssQuery,
|
$screenshots = DB::Aowow()->selectPage($nFound, self::$ssQuery,
|
||||||
CC_FLAG_STICKY,
|
CC_FLAG_STICKY,
|
||||||
@@ -495,7 +494,7 @@ class CommunityContent
|
|||||||
$s['subject'] = Lang::user('removed');
|
$s['subject'] = Lang::user('removed');
|
||||||
}
|
}
|
||||||
|
|
||||||
$s['date'] = date(Util::$dateFormatInternal, $s['date']);
|
$s['date'] = $dateFmt ? date(Util::$dateFormatInternal, $s['date']) : intVal($s['date']);
|
||||||
|
|
||||||
if (!$s['sticky'])
|
if (!$s['sticky'])
|
||||||
unset($s['sticky']);
|
unset($s['sticky']);
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ if (!defined('AOWOW_REVISION'))
|
|||||||
|
|
||||||
define('E_AOWOW', E_ALL & ~(E_DEPRECATED | E_USER_DEPRECATED | E_STRICT));
|
define('E_AOWOW', E_ALL & ~(E_DEPRECATED | E_USER_DEPRECATED | E_STRICT));
|
||||||
define('JSON_AOWOW_POWER', JSON_PRETTY_PRINT | JSON_NUMERIC_CHECK | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
define('JSON_AOWOW_POWER', JSON_PRETTY_PRINT | JSON_NUMERIC_CHECK | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
||||||
define('FILTER_FLAG_STRIP_AOWOW', FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH | FILTER_STRIP_BACKTICK);
|
define('FILTER_FLAG_STRIP_AOWOW', FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH | FILTER_FLAG_STRIP_BACKTICK);
|
||||||
|
|
||||||
define('MIME_TYPE_TEXT', 'Content-Type: text/plain; charset=utf-8');
|
define('MIME_TYPE_TEXT', 'Content-Type: text/plain; charset=utf-8');
|
||||||
define('MIME_TYPE_XML', 'Content-Type: text/xml; charset=utf-8');
|
define('MIME_TYPE_XML', 'Content-Type: text/xml; charset=utf-8');
|
||||||
|
|||||||
@@ -25,24 +25,43 @@ trait TrRequestData
|
|||||||
if ($this->filtered)
|
if ($this->filtered)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// php bug? If INPUT_X is empty, filter_input_array returns null/fails
|
||||||
|
// only really relevant for INPUT_POST
|
||||||
|
// manuall set everything null in this case
|
||||||
|
|
||||||
if (isset($this->_post) && gettype($this->_post) == 'array')
|
if (isset($this->_post) && gettype($this->_post) == 'array')
|
||||||
$this->_post = filter_input_array(INPUT_POST, $this->_post);
|
{
|
||||||
|
if ($_POST)
|
||||||
|
$this->_post = filter_input_array(INPUT_POST, $this->_post);
|
||||||
|
else
|
||||||
|
$this->_post = array_fill_keys(array_keys($this->_post), null);
|
||||||
|
}
|
||||||
|
|
||||||
if (isset($this->_get) && gettype($this->_get) == 'array')
|
if (isset($this->_get) && gettype($this->_get) == 'array')
|
||||||
$this->_get = filter_input_array(INPUT_GET, $this->_get);
|
{
|
||||||
|
if ($_GET)
|
||||||
|
$this->_get = filter_input_array(INPUT_GET, $this->_get);
|
||||||
|
else
|
||||||
|
$this->_get = array_fill_keys(array_keys($this->_get), null);
|
||||||
|
}
|
||||||
|
|
||||||
if (isset($this->_cookie) && gettype($this->_cookie) == 'array')
|
if (isset($this->_cookie) && gettype($this->_cookie) == 'array')
|
||||||
$this->_cookie = filter_input_array(INPUT_COOKIE, $this->_cookie);
|
{
|
||||||
|
if ($_COOKIE)
|
||||||
|
$this->_cookie = filter_input_array(INPUT_COOKIE, $this->_cookie);
|
||||||
|
else
|
||||||
|
$this->_cookie = array_fill_keys(array_keys($this->_cookie), null);
|
||||||
|
}
|
||||||
|
|
||||||
$this->filtered = true;
|
$this->filtered = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static function checkEmptySet(string $val) : bool
|
private static function checkEmptySet(string $val) : bool
|
||||||
{
|
{
|
||||||
return $val === ''; // parameter is expected to be empty
|
return $val === ''; // parameter is expected to be empty
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static function checkInt(string $val) : int
|
public static function checkInt(string $val) : int
|
||||||
{
|
{
|
||||||
if (preg_match('/^-?\d+$/', $val))
|
if (preg_match('/^-?\d+$/', $val))
|
||||||
return intVal($val);
|
return intVal($val);
|
||||||
@@ -50,7 +69,7 @@ trait TrRequestData
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static function checkLocale(string $val) : int
|
private static function checkLocale(string $val) : int
|
||||||
{
|
{
|
||||||
if (preg_match('/^'.implode('|', array_keys(array_filter(Util::$localeStrings))).'$/', $val))
|
if (preg_match('/^'.implode('|', array_keys(array_filter(Util::$localeStrings))).'$/', $val))
|
||||||
return intVal($val);
|
return intVal($val);
|
||||||
@@ -58,7 +77,7 @@ trait TrRequestData
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static function checkDomain(string $val) : string
|
private static function checkDomain(string $val) : string
|
||||||
{
|
{
|
||||||
if (preg_match('/^'.implode('|', array_filter(Util::$subDomains)).'$/i', $val))
|
if (preg_match('/^'.implode('|', array_filter(Util::$subDomains)).'$/i', $val))
|
||||||
return strtolower($val);
|
return strtolower($val);
|
||||||
@@ -66,7 +85,7 @@ trait TrRequestData
|
|||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static function checkIdList(string $val) : array
|
private static function checkIdList(string $val) : array
|
||||||
{
|
{
|
||||||
if (preg_match('/^-?\d+(,-?\d+)*$/', $val))
|
if (preg_match('/^-?\d+(,-?\d+)*$/', $val))
|
||||||
return array_map('intVal', explode(',', $val));
|
return array_map('intVal', explode(',', $val));
|
||||||
@@ -74,7 +93,7 @@ trait TrRequestData
|
|||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static function checkIntArray(string $val) : array
|
private static function checkIntArray(string $val) : array
|
||||||
{
|
{
|
||||||
if (preg_match('/^-?\d+(:-?\d+)*$/', $val))
|
if (preg_match('/^-?\d+(:-?\d+)*$/', $val))
|
||||||
return array_map('intVal', explode(':', $val));
|
return array_map('intVal', explode(':', $val));
|
||||||
@@ -82,7 +101,7 @@ trait TrRequestData
|
|||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static function checkIdListUnsigned(string $val) : array
|
private static function checkIdListUnsigned(string $val) : array
|
||||||
{
|
{
|
||||||
if (preg_match('/\d+(,\d+)*/', $val))
|
if (preg_match('/\d+(,\d+)*/', $val))
|
||||||
return array_map('intVal', explode(',', $val));
|
return array_map('intVal', explode(',', $val));
|
||||||
@@ -90,7 +109,7 @@ trait TrRequestData
|
|||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static function checkFulltext(string $val) : string
|
private static function checkFulltext(string $val) : string
|
||||||
{
|
{
|
||||||
// trim non-printable chars
|
// trim non-printable chars
|
||||||
return preg_replace('/[\p{Cf}\p{Co}\p{Cs}\p{Cn}]/ui', '', $val);
|
return preg_replace('/[\p{Cf}\p{Co}\p{Cs}\p{Cn}]/ui', '', $val);
|
||||||
@@ -654,6 +673,24 @@ class Util
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function formatTimeDiff(int $sec) : string
|
||||||
|
{
|
||||||
|
$delta = time() - $sec;
|
||||||
|
|
||||||
|
[, $s, $m, $h, $d] = self::parseTime($delta * 1000);
|
||||||
|
|
||||||
|
if ($delta > (1 * MONTH)) // use absolute
|
||||||
|
return date(Lang::main('dateFmtLong'), $sec);
|
||||||
|
else if ($delta > (2 * DAY)) // days ago
|
||||||
|
return Lang::main('timeAgo', [$d . ' ' . Lang::timeUnits('pl', 3)]);
|
||||||
|
else if ($h) // hours, minutes ago
|
||||||
|
return Lang::main('timeAgo', [$h . ' ' . Lang::timeUnits('ab', 4) . ' ' . $m . ' ' . Lang::timeUnits('ab', 5)]);
|
||||||
|
else if ($m) // minutes, seconds ago
|
||||||
|
return Lang::main('timeAgo', [$m . ' ' . Lang::timeUnits('ab', 5) . ' ' . $m . ' ' . Lang::timeUnits('ab', 6)]);
|
||||||
|
else // seconds ago
|
||||||
|
return Lang::main('timeAgo', [$s . ' ' . Lang::timeUnits($s == 1 ? 'sg' : 'pl', 6)]);
|
||||||
|
}
|
||||||
|
|
||||||
// pageText for Books (Item or GO) and questText
|
// pageText for Books (Item or GO) and questText
|
||||||
public static function parseHtmlText(string $text, bool $markdown = false) : string
|
public static function parseHtmlText(string $text, bool $markdown = false) : string
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ class AccountPage extends GenericPage
|
|||||||
'password' => ['filter' => FILTER_UNSAFE_RAW],
|
'password' => ['filter' => FILTER_UNSAFE_RAW],
|
||||||
'c_password' => ['filter' => FILTER_UNSAFE_RAW],
|
'c_password' => ['filter' => FILTER_UNSAFE_RAW],
|
||||||
'token' => ['filter' => FILTER_UNSAFE_RAW],
|
'token' => ['filter' => FILTER_UNSAFE_RAW],
|
||||||
'remember_me' => ['filter' => FILTER_CALLBACK, 'options' => 'GenericPage::rememberCallback'],
|
'remember_me' => ['filter' => FILTER_CALLBACK, 'options' => 'AccountPage::rememberCallback'],
|
||||||
'email' => ['filter' => FILTER_SANITIZE_EMAIL]
|
'email' => ['filter' => FILTER_SANITIZE_EMAIL]
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ class AccountPage extends GenericPage
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function rememberCallback($val)
|
protected static function rememberCallback($val)
|
||||||
{
|
{
|
||||||
return $val == 'yes' ? $val : null;
|
return $val == 'yes' ? $val : null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,8 +28,8 @@ class ScreenshotPage extends GenericPage
|
|||||||
protected $imgHash = '';
|
protected $imgHash = '';
|
||||||
|
|
||||||
protected $_post = array(
|
protected $_post = array(
|
||||||
'coords' => ['filter' => FILTER_CALLBACK, 'options' => 'AjaxHandler::checkIdListUnsigned'],
|
'coords' => ['filter' => FILTER_CALLBACK, 'options' => 'GenericPage::checkIdListUnsigned'],
|
||||||
'screenshotalt' => ['filter' => FILTER_UNSAFE_RAW]
|
'screenshotalt' => ['filter' => FILTER_UNSAFE_RAW, 'flags' => FILTER_FLAG_STRIP_AOWOW]
|
||||||
);
|
);
|
||||||
|
|
||||||
public function __construct($pageCall, $pageParam)
|
public function __construct($pageCall, $pageParam)
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ class UtilityPage extends GenericPage
|
|||||||
header('Location: ?'.Util::$typeStrings[$type].'='.$typeId, true, 302);
|
header('Location: ?'.Util::$typeStrings[$type].'='.$typeId, true, 302);
|
||||||
die();
|
die();
|
||||||
case 'latest-comments': // rss
|
case 'latest-comments': // rss
|
||||||
$data = CommunityContent::getCommentPreviews();
|
$data = CommunityContent::getCommentPreviews(dateFmt: false);
|
||||||
|
|
||||||
if ($this->rss)
|
if ($this->rss)
|
||||||
{
|
{
|
||||||
@@ -85,19 +85,19 @@ class UtilityPage extends GenericPage
|
|||||||
$this->feedData[] = array(
|
$this->feedData[] = array(
|
||||||
'title' => [true, [], Util::ucFirst(Lang::game(Util::$typeStrings[$d['type']])).Lang::main('colon').htmlentities($d['subject'])],
|
'title' => [true, [], Util::ucFirst(Lang::game(Util::$typeStrings[$d['type']])).Lang::main('colon').htmlentities($d['subject'])],
|
||||||
'link' => [false, [], HOST_URL.'/?go-to-comment&id='.$d['id']],
|
'link' => [false, [], HOST_URL.'/?go-to-comment&id='.$d['id']],
|
||||||
'description' => [true, [], htmlentities($d['preview'])."<br /><br />".sprintf(Lang::main('byUserTimeAgo'), $d['user'], Util::formatTime($d['elapsed'] * 1000, true))],
|
'description' => [true, [], htmlentities($d['preview'])."<br /><br />".Lang::main('byUser', [$d['user'], '']) . Util::formatTimeDiff($d['date'], true)],
|
||||||
'pubDate' => [false, [], date(DATE_RSS, time() - $d['elapsed'])],
|
'pubDate' => [false, [], date(DATE_RSS, $d['date'])],
|
||||||
'guid' => [false, [], HOST_URL.'/?go-to-comment&id='.$d['id']]
|
'guid' => [false, [], HOST_URL.'/?go-to-comment&id='.$d['id']]
|
||||||
// 'domain' => [false, [], null]
|
// 'domain' => [false, [], null]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
$this->lvTabs[] = ['commentpreview', ['data' => $data]];
|
$this->lvTabs[] = ['commentpreview', ['data' => array_values($data)]];
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 'latest-screenshots': // rss
|
case 'latest-screenshots': // rss
|
||||||
$data = CommunityContent::getScreenshots();
|
$data = CommunityContent::getScreenshots(dateFmt: false);
|
||||||
|
|
||||||
if ($this->rss)
|
if ($this->rss)
|
||||||
{
|
{
|
||||||
@@ -106,14 +106,14 @@ class UtilityPage extends GenericPage
|
|||||||
$desc = '<a href="'.HOST_URL.'/?'.Util::$typeStrings[$d['type']].'='.$d['typeId'].'#screenshots:id='.$d['id'].'"><img src="'.STATIC_URL.'/uploads/screenshots/thumb/'.$d['id'].'.jpg" alt="" /></a>';
|
$desc = '<a href="'.HOST_URL.'/?'.Util::$typeStrings[$d['type']].'='.$d['typeId'].'#screenshots:id='.$d['id'].'"><img src="'.STATIC_URL.'/uploads/screenshots/thumb/'.$d['id'].'.jpg" alt="" /></a>';
|
||||||
if ($d['caption'])
|
if ($d['caption'])
|
||||||
$desc .= '<br />'.$d['caption'];
|
$desc .= '<br />'.$d['caption'];
|
||||||
$desc .= "<br /><br />".sprintf(Lang::main('byUserTimeAgo'), $d['user'], Util::formatTime($d['elapsed'] * 1000, true));
|
$desc .= "<br /><br />".Lang::main('byUser', [$d['user'], '']) . Util::formatTimeDiff($d['date'], true);
|
||||||
|
|
||||||
// enclosure/length => filesize('static/uploads/screenshots/thumb/'.$d['id'].'.jpg') .. always set to this placeholder value though
|
// enclosure/length => filesize('static/uploads/screenshots/thumb/'.$d['id'].'.jpg') .. always set to this placeholder value though
|
||||||
$this->feedData[] = array(
|
$this->feedData[] = array(
|
||||||
'title' => [true, [], Util::ucFirst(Lang::game(Util::$typeStrings[$d['type']])).Lang::main('colon').htmlentities($d['subject'])],
|
'title' => [true, [], Util::ucFirst(Lang::game(Util::$typeStrings[$d['type']])).Lang::main('colon').htmlentities($d['subject'])],
|
||||||
'link' => [false, [], HOST_URL.'/?'.Util::$typeStrings[$d['type']].'='.$d['typeId'].'#screenshots:id='.$d['id']],
|
'link' => [false, [], HOST_URL.'/?'.Util::$typeStrings[$d['type']].'='.$d['typeId'].'#screenshots:id='.$d['id']],
|
||||||
'description' => [true, [], $desc],
|
'description' => [true, [], $desc],
|
||||||
'pubDate' => [false, [], date(DATE_RSS, time() - $d['elapsed'])],
|
'pubDate' => [false, [], date(DATE_RSS, $d['date'])],
|
||||||
'enclosure' => [false, ['url' => STATIC_URL.'/uploads/screenshots/thumb/'.$d['id'].'.jpg', 'length' => 12345, 'type' => 'image/jpeg'], null],
|
'enclosure' => [false, ['url' => STATIC_URL.'/uploads/screenshots/thumb/'.$d['id'].'.jpg', 'length' => 12345, 'type' => 'image/jpeg'], null],
|
||||||
'guid' => [false, [], HOST_URL.'/?'.Util::$typeStrings[$d['type']].'='.$d['typeId'].'#screenshots:id='.$d['id']],
|
'guid' => [false, [], HOST_URL.'/?'.Util::$typeStrings[$d['type']].'='.$d['typeId'].'#screenshots:id='.$d['id']],
|
||||||
// 'domain' => [false, [], live|ptr]
|
// 'domain' => [false, [], live|ptr]
|
||||||
@@ -121,11 +121,11 @@ class UtilityPage extends GenericPage
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
$this->lvTabs[] = ['screenshot', ['data' => $data]];
|
$this->lvTabs[] = ['screenshot', ['data' => array_values($data)]];
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 'latest-videos': // rss
|
case 'latest-videos': // rss
|
||||||
$data = CommunityContent::getVideos();
|
$data = CommunityContent::getVideos(dateFmt: false);
|
||||||
|
|
||||||
if ($this->rss)
|
if ($this->rss)
|
||||||
{
|
{
|
||||||
@@ -134,14 +134,14 @@ class UtilityPage extends GenericPage
|
|||||||
$desc = '<a href="'.HOST_URL.'/?'.Util::$typeStrings[$d['type']].'='.$d['typeId'].'#videos:id='.$d['id'].'"><img src="//i3.ytimg.com/vi/'.$d['videoId'].'/default.jpg" alt="" /></a>';
|
$desc = '<a href="'.HOST_URL.'/?'.Util::$typeStrings[$d['type']].'='.$d['typeId'].'#videos:id='.$d['id'].'"><img src="//i3.ytimg.com/vi/'.$d['videoId'].'/default.jpg" alt="" /></a>';
|
||||||
if ($d['caption'])
|
if ($d['caption'])
|
||||||
$desc .= '<br />'.$d['caption'];
|
$desc .= '<br />'.$d['caption'];
|
||||||
$desc .= "<br /><br />".sprintf(Lang::main('byUserTimeAgo'), $d['user'], Util::formatTime($d['elapsed'] * 1000, true));
|
$desc .= "<br /><br />".Lang::main('byUser', [$d['user'], '']) . Util::formatTimeDiff($d['date'], true);
|
||||||
|
|
||||||
// is enclosure/length .. is this even relevant..?
|
// is enclosure/length .. is this even relevant..?
|
||||||
$this->feedData[] = array(
|
$this->feedData[] = array(
|
||||||
'title' => [true, [], Util::ucFirst(Lang::game(Util::$typeStrings[$d['type']])).Lang::main('colon').htmlentities($row['subject'])],
|
'title' => [true, [], Util::ucFirst(Lang::game(Util::$typeStrings[$d['type']])).Lang::main('colon').htmlentities($d['subject'])],
|
||||||
'link' => [false, [], HOST_URL.'/?'.Util::$typeStrings[$d['type']].'='.$d['typeId'].'#videos:id='.$d['id']],
|
'link' => [false, [], HOST_URL.'/?'.Util::$typeStrings[$d['type']].'='.$d['typeId'].'#videos:id='.$d['id']],
|
||||||
'description' => [true, [], $desc],
|
'description' => [true, [], $desc],
|
||||||
'pubDate' => [false, [], date(DATE_RSS, time() - $row['elapsed'])],
|
'pubDate' => [false, [], date(DATE_RSS, $d['date'])],
|
||||||
'enclosure' => [false, ['url' => '//i3.ytimg.com/vi/'.$d['videoId'].'/default.jpg', 'length' => 12345, 'type' => 'image/jpeg'], null],
|
'enclosure' => [false, ['url' => '//i3.ytimg.com/vi/'.$d['videoId'].'/default.jpg', 'length' => 12345, 'type' => 'image/jpeg'], null],
|
||||||
'guid' => [false, [], HOST_URL.'/?'.Util::$typeStrings[$d['type']].'='.$d['typeId'].'#videos:id='.$d['id']],
|
'guid' => [false, [], HOST_URL.'/?'.Util::$typeStrings[$d['type']].'='.$d['typeId'].'#videos:id='.$d['id']],
|
||||||
// 'domain' => [false, [], live|ptr]
|
// 'domain' => [false, [], live|ptr]
|
||||||
@@ -149,7 +149,7 @@ class UtilityPage extends GenericPage
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
$this->lvTabs[] = ['video', ['data' => $data]];
|
$this->lvTabs[] = ['video', ['data' => array_values($data)]];
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 'latest-articles': // rss
|
case 'latest-articles': // rss
|
||||||
|
|||||||
Reference in New Issue
Block a user