Quote:
Originally Posted by Lynne
I don't mind at all. It is reusable for that reason. I only got so far with it in order to help someone else out with a specific request and just posted this in case if would help someone else get started to do something similar, or even more.
|
Thanks for your snippet Lynne. I do many vB mods that are never published, but your code snippet helped -- so here is the solution for users wanting [ATTACH] bbcode parsed properly.
Let me explain so users can better understand the code and why it appears as a link.
Deep inside /includes/class_bbcode.php, line 2581 "if (!empty($this->attachments["$attachmentid"]))" checks if the $bbcode_parser object has an array defined with details about the image attachment (ie; size, contenttype, placement, thumbnail, etc). If that data is not present, it defaults to creating a link to the attachment.
I backtracked through the function where CMS article calls the bbcode parser, see file /packages/vbcms/item/content/article.php, line 428 which shows how it fetches the attachment data using the content nodeid.
The snippet below has nodeid added to the query, and the block populating the $attachments array. Enjoy
Also to be noted, Tapatalk users cannot view articles on main page, now they will be able to view the content using the forum
PHP Code:
if (THIS_SCRIPT == 'showthread' AND $this->post['postcount'] == 1 AND $this->thread['forumid'] == $this->registry->options['vbcmsforumid']) {
$result = $this->registry->db->query_first("
SELECT cms_article.pagetext, cms_article.threadid, cms_article.htmlstate, cms_node.nodeid
FROM " . TABLE_PREFIX . "cms_article AS cms_article
INNER JOIN " . TABLE_PREFIX . "cms_node AS cms_node ON (cms_node.contentid = cms_article.contentid)
INNER JOIN " . TABLE_PREFIX . "cms_nodeinfo AS cms_nodeinfo ON (cms_nodeinfo.nodeid = cms_node.nodeid)
WHERE cms_nodeinfo.associatedthreadid = ". $this->thread['threadid']. "
");
if($result) {
$bbcode_parser = new vBCms_BBCode_HTML(vB::$vbulletin, vBCms_BBCode_HTML::fetchCmsTags());;
$attach = new vB_Attach_Display_Content(vB::$vbulletin, 'vBCms_Article');
$attachments = $attach->fetch_postattach(0, $result['nodeid']);
$bbcode_parser->attachments = $attachments;
$bbcode_parser->unsetattach = true;
$this->post['message'] = fetch_censored_text($bbcode_parser->do_parse($result['pagetext'], true, $result['htmlstate']));
}
}
PS: If anyone else has noticed that [ATTACH] is not properly parsed in RSS feeds, I will find a solution and post it in the next couple days.