public function preparePostJoinOptions(array $fetchOptions)
{
$selectFields = '';
$joinTables = '';
$db = $this->_getDb();
if (!empty($fetchOptions['join']))
{
if ($fetchOptions['join'] & self::FETCH_THREAD || $fetchOptions['join'] & self::FETCH_FORUM)
{
$selectFields .= ',
thread.*, thread.user_id AS thread_user_id, thread.username AS thread_username,
post.user_id, post.username, post.post_date'; // overwrite thread.post_date with post.post_date
$joinTables .= '
INNER JOIN xf_thread AS thread ON
(thread.thread_id = post.thread_id)';
}
if ($fetchOptions['join'] & self::FETCH_FORUM)
{
$selectFields .= ',
node.title AS node_title';
$joinTables .= '
INNER JOIN xf_node AS node ON
(node.node_id = thread.node_id)';
}
if ($fetchOptions['join'] & self::FETCH_USER)
{
$selectFields .= ',
user.*, IF(user.username IS NULL, post.username, user.username) AS username';
$joinTables .= '
LEFT JOIN xf_user AS user ON
(user.user_id = post.user_id)';
/* JOIN xf_user_external_auth */
$selectFields .= ',
user_external_auth.*';
$joinTables .= '
LEFT JOIN xf_user_external_auth AS user_external_auth ON
(user_external_auth.user_id = post.user_id)';
/* JOIN xf_user_external_auth */
}
if ($fetchOptions['join'] & self::FETCH_USER_PROFILE)
{
$selectFields .= ',
user_profile.*';
$joinTables .= '
LEFT JOIN xf_user_profile AS user_profile ON
(user_profile.user_id = post.user_id)';
}
if ($fetchOptions['join'] & self::FETCH_USER_OPTIONS)
{
$selectFields .= ',
user_option.*';
$joinTables .= '
LEFT JOIN xf_user_option AS user_option ON
(user_option.user_id = post.user_id)';
}
if ($fetchOptions['join'] & self::FETCH_DELETION_LOG)
{
$selectFields .= ',
deletion_log.delete_date, deletion_log.delete_reason,
deletion_log.delete_user_id, deletion_log.delete_username';
$joinTables .= '
LEFT JOIN xf_deletion_log AS deletion_log ON
(deletion_log.content_type = \'post\' AND deletion_log.content_id = post.post_id)';
}
}
if (!empty($fetchOptions['permissionCombinationId']))
{
$selectFields .= ',
permission.cache_value AS node_permission_cache';
$joinTables .= '
LEFT JOIN xf_permission_cache_content AS permission
ON (permission.permission_combination_id = ' . $db->quote($fetchOptions['permissionCombinationId']) . '
AND permission.content_type = \'node\'
AND permission.content_id = thread.node_id)';
}
if (isset($fetchOptions['likeUserId']))
{
if (empty($fetchOptions['likeUserId']))
{
$selectFields .= ',
0 AS like_date';
}
else
{
$selectFields .= ',
liked_content.like_date';
$joinTables .= '
LEFT JOIN xf_liked_content AS liked_content
ON (liked_content.content_type = \'post\'
AND liked_content.content_id = post.post_id
AND liked_content.like_user_id = ' .$db->quote($fetchOptions['likeUserId']) . ')';
}
}
return array(
'selectFields' => $selectFields,
'joinTables' => $joinTables
);
}