Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Forum Module /

Discuss the Forum Module.

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo, swaiba

Archive ReadOnly Threads

Go to End

2 Posts   1136 Views


Community Member, 12 Posts

26 February 2014 at 4:53pm

Hey there,

I am really SS. but so far I love it. also i dont have much knowledge about PHP.

I'v been trying to work out a function which store the 'readOnly' threads. Once the thread is taged as IsReadOnly = 1, it will be shifted into ForumArchive page.

the page structure is as following:

InfoPage; Project1 ->
ForumHolder1 ->
- Forum1
- ForumArchive1
InfoPage:Project2 -> ForumHolder2 ->
- Forum2
- ForumArchive2

ForumArchive php:

class ForumArchive extends Forum {
class ForumArchive_Controller extends Forum_Controller {


ForumArchive ss:

<% include SideBar %>
<div class="content-container unit size3of4 lastUnit">
<div class="content">
<table class="forum-topics" summary="List of topics in this forum" style="width: 100%">
<tr class="category">
<!--<td colspan="4"><% _t('Forum_ss.THREADS', 'Thread') %></td>-->
<th class="odd">Query</th> <!--<% _t('Forum_ss.TOPIC','Topic') %> -->
<th class="odd"><% _t('Forum_ss.POSTS','Posts') %></th>
<th class="even"><% _t('Forum_ss.LASTPOST','Last Post') %></th>

<% loop ReadOnlyTopics %>
<% include TopicListing %>
<% end_loop %>

I also create a function in forum.php:

function getReadOnlyTopics() {

// Get Threads that are readOnly & in this forum
$where = '("ForumThread"."ForumID" = '.$this->ID.' AND "ForumThread"."IsReadOnly" = 1)';
// Get the underlying query
$query = ForumThread::get()->where($where)->dataQuery()->query();
// Build result as ArrayList
$res = new ArrayList();
$rows = $query->execute();
if ($rows) foreach ($rows as $row) $res->push(new ForumThread($row));

return $res;

The result is NULL.
Maybe i should get ForumHolderID for this ForumArchive page, because the Forum page and ForumArchive are the same Parent. but how to it get it?

i have been working on this for one week. but still trying....

Can someone give me a hand? thanks in advance.


Forum Moderator, 5523 Posts

1 March 2014 at 11:31am

I would recommend creating a DataExtension on the ForumThread class and defined onBeforeWrite function which detects whether a forum is going to be readonly, if so, move to the ForumArchive holder.

public function onBeforeWrite() {

if($this->owner->IsReadOnly) {
// change $this->owner->ForumID to the archive forum