Public Member Functions | Data Fields | Private Attributes

ilForumExplorer Class Reference
[Modules/Forum]

Class ilForumExplorer class for explorer view of forum posts. More...

Inheritance diagram for ilForumExplorer:
Collaboration diagram for ilForumExplorer:

Public Member Functions

 ilForumExplorer ($a_target, ilForumTopic $a_thread, $a_ref_id)
 Constructor public.
 setOutput ($a_parent, $a_depth=1)
 Creates output for explorer view in admin menue recursive method public.
 getOutput ()
 Creates output recursive method public.
 formatObject (&$tpl, $a_node_id, $a_option, $key)
 Creates output recursive method private.
 formatHeader (&$tpl)
 method to create a forum system specific header public
 createTarget ($a_type, $a_node_id)
 Creates Get Parameter private.
 setExpand ($a_node_id)
 set the expand option this value is stored in a SESSION variable to save it different view (lo view, frm view,...) private
 __readThreadSubject ()

Data Fields

 $thread_id
 $thread_subject
 $root_id
 $forum

Private Attributes

 $objProperties = null
 ilForumProperties object private
 $objCurrentTopic = null

Detailed Description

Class ilForumExplorer class for explorer view of forum posts.

Author:
Stefan Meyer <smeyer@databay.de>
Version:
Id:
class.ilForumExplorer.php 15022 2007-10-16 12:44:35Z mjansen

Definition at line 37 of file class.ilForumExplorer.php.


Member Function Documentation

ilForumExplorer::__readThreadSubject (  ) 

Definition at line 441 of file class.ilForumExplorer.php.

Referenced by ilForumExplorer().

        {
                global $ilDB;
                
                $this->thread_subject = $this->objCurrentTopic->getSubject();
        }

Here is the caller graph for this function:

ilForumExplorer::createTarget ( a_type,
a_node_id 
)

Creates Get Parameter private.

Parameters:
string 
integer 
Returns:
string

Reimplemented from ilExplorer.

Definition at line 384 of file class.ilForumExplorer.php.

        {
                if (!isset($a_type) or !is_string($a_type) or !isset($a_node_id))
                {
                        $this->ilias->raiseError(get_class($this)."::createTarget(): Missing parameter or wrong datatype! ".
                                                                        "type: ".$a_type." node_id:".$a_node_id,$this->ilias->error_obj->WARNING);
                }
                list($tmp,$get) = explode("?",$this->target);
                // SET expand parameter:
                //     positive if object is expanded
                //     negative if object is compressed
                $a_node_id = $a_type == '+' ? $a_node_id : -(int) $a_node_id;

                return $_SERVER["PATH_INFO"]."?".$get."&fexpand=".$a_node_id;
        }

ilForumExplorer::formatHeader ( &$  tpl  ) 

method to create a forum system specific header public

Parameters:
integer obj_id
integer array options
Returns:
string

Definition at line 352 of file class.ilForumExplorer.php.

References ilExplorer::$ilias, $lng, $tpl, and ilUtil::getImagePath().

        {
                global $lng, $ilias, $ilDB;

                $frm = new ilForum();
                $frm->setWhereCondition("thr_pk = ".$ilDB->quote($this->thread_id));
                $threadData = $frm->getOneThread();

                $tpl->setCurrentBlock("icon");
                $tpl->setVariable("ICON_IMAGE", ilUtil::getImagePath("icon_frm_s.gif"));
                $tpl->setVariable("TXT_ALT_IMG", $lng->txt("obj_frm"));
                $tpl->parseCurrentBlock();
                $tpl->setCurrentBlock("link");
                $tpl->setVariable("TITLE", $a_option["title"]." ".$lng->txt("forums_thread").": ".$threadData["thr_subject"]);
                //$tpl->setVariable("DESC", $lng->txt("from").": ".$a_option["loginname"]." [".$this->forum->convertDate($a_option["date"])."]");
                $tpl->setVariable("TARGET","target=content");
                $tpl->setVariable("LINK_TARGET",$this->target);
                $tpl->parseCurrentBlock();
                
                $tpl->setCurrentBlock("list_item");
                $tpl->parseCurrentBlock();
                $tpl->touchBlock("element");

        }

Here is the call graph for this function:

ilForumExplorer::formatObject ( &$  tpl,
a_node_id,
a_option,
key 
)

Creates output recursive method private.

Parameters:
integer 
array 
Returns:
string

Reimplemented from ilExplorer.

Definition at line 244 of file class.ilForumExplorer.php.

References $lng, ilExplorer::$target, $tpl, and ilUtil::getImagePath().

Referenced by getOutput().

        {
                global $lng,$ilUser;

                if (!isset($a_node_id) or !is_array($a_option))
                {
                        $this->ilias->raiseError(get_class($this)."::formatObject(): Missing parameter or wrong datatype! ".
                                                                        "node_id: ".$a_node_id." options:".var_dump($a_option),$this->ilias->error_obj->WARNING);
                }
                
                if ($key == 0)
                {
                        $tpl->setCurrentBlock("icon");
                        $tpl->setVariable("ICON_IMAGE", ilUtil::getImagePath("icon_frm_s.gif"));
                        $tpl->setVariable("TXT_ALT_IMG", $lng->txt("obj_frm"));
                        $tpl->parseCurrentBlock();
                }

                /*
                foreach ($a_option["tab"] as $picture)
                {
                        if ($picture == 'plus')
                        {
                                $target = $this->createTarget('+',$a_node_id);
                                $tpl->setCurrentBlock("expander");
                                $tpl->setVariable("LINK_TARGET_EXPANDER", $target);
                                $tpl->setVariable("IMGPATH", ilUtil::getImagePath("browser/blank.gif"));
                                $tpl->parseCurrentBlock();
                        }

                        if ($picture == 'minus')
                        {
                                $target = $this->createTarget('-',$a_node_id);
                                $tpl->setCurrentBlock("expander");
                                $tpl->setVariable("LINK_TARGET_EXPANDER", $target);
                                $tpl->setVariable("IMGPATH", ilUtil::getImagePath("browser/blank.gif"));
                                $tpl->parseCurrentBlock();
                        }
                        
                        if ($picture == 'blank' or $picture == 'winkel'
                           or $picture == 'hoch' or $picture == 'quer' or $picture == 'ecke')
                        {
                                $picture = 'blank';
                                $target = $_SERVER["REQUEST_URI"];
                                $tpl->setCurrentBlock("expander");
                                $tpl->setVariable("LINK_TARGET_EXPANDER", $target);
                                $tpl->setVariable("IMGPATH", ilUtil::getImagePath("browser/".$picture.".gif"));
                                //$tpl->setVariable("TXT_ALT_IMG", $lng->txt($a_option["desc"]));
                                $tpl->parseCurrentBlock();
                        }
                        
                }*/
                
                $target = (strpos($this->target, "?") === false) ?
                        $this->target."?" : $this->target."&";

                $tpl->setCurrentBlock("link");
                $tpl->setVariable("LINK_TARGET", $target.$this->target_get."=".$a_node_id."#".$a_node_id);
                #$a_option["title"] = strlen($a_option["title"]) <= FULLNAME_MAXLENGTH
                #       ? $a_option["title"]
                #       : substr($a_option["title"],0,FULLNAME_MAXLENGTH)."...";

                if ($key == 0)
                {
                        $tpl->setVariable("TITLE", "<strong>".$a_option["title"]."</strong>");
                }
                else
                {
                        $tpl->setVariable("TITLE", $a_option["title"]);
                }

                if($this->forum_obj->isRead($ilUser->getId(),$a_node_id))
                {
                        $tpl->setVariable("A_CLASS",'class="postread"');
                }
                else
                {
                        if($this->forum_obj->isNew($ilUser->getId(),$this->thread_id,$a_node_id))
                        {
                                $tpl->setVariable("A_CLASS",'class="postnew"');
                        }
                        else
                        {
                                $tpl->setVariable("A_CLASS",'class="postunread"');
                        }
                        $tpl->setVariable("ONCLICK",'onClick="this.className=\'postread\';"');
                }

                if ($this->frame_target != "")
                {
                        $tpl->setVariable("TARGET", " target=\"".$this->frame_target."\"");
                }

                $tpl->parseCurrentBlock();

                $tpl->setCurrentBlock("list_item");
                $tpl->parseCurrentBlock();
                $tpl->touchBlock("element");

        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilForumExplorer::getOutput (  ) 

Creates output recursive method public.

Returns:
string

Reimplemented from ilExplorer.

Definition at line 189 of file class.ilForumExplorer.php.

References $tpl, ilExplorer::createLines(), formatObject(), ilExplorer::handleListEndTags(), and ilExplorer::handleListStartTags().

        {
                global $tpl;
                
                $first_node = $this->objCurrentTopic->getFirstPostNode();
                $this->objCurrentTopic->setOrderField('frm_posts_tree.rgt');
                $subtree_nodes = $this->objCurrentTopic->getPostTree($first_node);                      
                
                if (count($subtree_nodes))
                {               
                        $this->format_options[0]['tab'] = array();
                        $depth = $this->forum->getPostMaximumDepth($this->thread_id);
                        for ($i = 0; $i < $depth; ++$i)
                        {
                                $this->createLines($i);
                        }
                }

                $tpl->addBlockFile('EXPLORER_TOP', 'exp_top', 'tpl.explorer_top.html');
                
                // set global body class
                $tpl->setVariable('BODY_CLASS', 'il_Explorer');
                
                $tpl_tree = new ilTemplate('tpl.tree.html', true, true);
                
                if (count($subtree_nodes))
                {               
                        $cur_depth = -1;                
                        foreach ($this->format_options as $key => $options)
                        {
                                // end tags
                                $this->handleListEndTags($tpl_tree, $cur_depth, $options['depth']);
                                
                                // start tags
                                $this->handleListStartTags($tpl_tree, $cur_depth, $options['depth']);
                                
                                $cur_depth = $options['depth'];
        
                                $this->formatObject($tpl_tree, $options['child'], $options, $key);
                        }
                        
                        $this->handleListEndTags($tpl_tree, $cur_depth, -1);
                }
                
                return $tpl_tree->get();
        }

Here is the call graph for this function:

ilForumExplorer::ilForumExplorer ( a_target,
ilForumTopic a_thread,
a_ref_id 
)

Constructor public.

Parameters:
string scriptname

Definition at line 75 of file class.ilForumExplorer.php.

References $lng, __readThreadSubject(), ilForumTopic::getId(), ilForumProperties::getInstance(), ilObjectFactory::getInstanceByRefId(), and ilExplorer::ilExplorer().

        {
                global $lng;

                $lng->loadLanguageModule('forum');

                parent::ilExplorer($a_target);
                
                $this->forum = new ilForum();
                $this->forum_obj =& ilObjectFactory::getInstanceByRefId($a_ref_id);             
                
                $this->objProperties = ilForumProperties::getInstance($this->forum_obj->getId());
                
                $this->objCurrentTopic = $a_thread;
                $this->thread_id = $this->objCurrentTopic->getId();
                $this->root_id = $this->objCurrentTopic->getFirstPostNode()->getId();   
                
                $this->__readThreadSubject();

                // max length of user fullname which is shown in explorer view
                define(FULLNAME_MAXLENGTH, 16);
        }

Here is the call graph for this function:

ilForumExplorer::setExpand ( a_node_id  ) 

set the expand option this value is stored in a SESSION variable to save it different view (lo view, frm view,...) private

Parameters:
string pipe-separated integer

Reimplemented from ilExplorer.

Definition at line 407 of file class.ilForumExplorer.php.

References $_SESSION.

        {
                $first_node = $this->objCurrentTopic->getFirstPostNode();

                $_SESSION['fexpand'] = $_SESSION['fexpand'] ? $_SESSION['fexpand'] : array();

                // if isn't set create session variable
                if (empty($_SESSION['fexpand']) or !in_array($first_node->getId(), $_SESSION['fexpand']))
                {
                        $all_nodes = $this->objCurrentTopic->getPostTree($first_node);
                        $tmp_array = array();
                        foreach ($all_nodes as $node)
                        {
                                $tmp_array[] = $node->getId();
                        }
                        $_SESSION['fexpand'] = array_merge($tmp_array, $_SESSION['fexpand']);
                }
                
                // if $_get['expand'] is positive => expand this node
                if ($a_node_id > 0 && !in_array($a_node_id, $_SESSION['fexpand']))
                {
                        array_push($_SESSION['fexpand'], $a_node_id);
                }
                
                // if $_get['expand'] is negative => compress this node
                if ($a_node_id < 0)
                {
                        $key = array_keys($_SESSION['fexpand'], -(int) $a_node_id);
                        unset($_SESSION['fexpand'][$key[0]]);
                }
                
                $this->expanded = $_SESSION['fexpand'];
        }

ilForumExplorer::setOutput ( a_parent,
a_depth = 1 
)

Creates output for explorer view in admin menue recursive method public.

Parameters:
integer parent_node_id where to start from (default=0, 'root')
integer depth level where to start (default=1)
Returns:
string

Definition at line 106 of file class.ilForumExplorer.php.

References $_GET, $lng, $tab, $title, ilForum::_isModerator(), and ilExplorer::getIndex().

        {
                global $lng,$ilUser;
                static $counter = 0;

                if (is_numeric($a_parent) && $objects = $this->objCurrentTopic->getPostChilds($a_parent, 'explorer'))
                {
                        $tab = ++$a_depth - 2;
                        
                        foreach ($objects as $key => $object)
                        {
                                if ($object['child'] != $this->root_id)
                                {
                                        $parent_index = $this->getIndex($object);
                                }
                                
                                $this->format_options[$counter]['parent'] = $object['parent'];
                                $this->format_options[$counter]['child'] = $object['child'];

                                $title = "<span style=\"white-space:nowrap;\" class=\"small\">".stripslashes($object['subject'])."</span>".
                                                 "<div style=\"white-space:nowrap; margin-bottom:5px;\" class=\"small\">";
                                if ($this->objProperties->isAnonymized())
                                {
                                        if ($object['alias'] != '') $title .= stripslashes($object['alias']);
                                        else $title .= $lng->txt('forums_anonymous');
                                }
                                else
                                {
                                        $title .= stripslashes($object['loginname']);
                                }
                                $title .= ", ".$this->forum->convertDate($object['date'])."</div>";

                                $this->format_options[$counter]['title'] = $title;
                                $this->format_options[$counter]['type'] = $object['type'];
                                $this->format_options[$counter]['desc'] = 'forums_the_'.$object['type'];
                                $this->format_options[$counter]['depth'] = $tab;
                                $this->format_options[$counter]['container'] = false;
                                $this->format_options[$counter]['visible'] = true;
                                if (!$object['status'] && !ilForum::_isModerator($_GET['ref_id'], $ilUser->getId()))
                                {
                                        $this->format_options[$counter]['visible'] = false;
                                }

                                // Create prefix array
                                for ($i = 0; $i < $tab; ++$i)
                                {
                                        $this->format_options[$counter]['tab'][] = 'blank';
                                }
                                // only if parent is expanded and visible, object is visible
                                if ($object['child'] != $this->root_id  && (!in_array($object['parent'], $this->expanded) 
                                                                                                                || !$this->format_options[$parent_index]['visible']))
                                {
                                        $this->format_options[$counter]['visible'] = true;
                                }
                                // if object exists parent is container
                                if ($object['child'] != $this->root_id)
                                {
                                        $this->format_options[$parent_index]['container'] = true;

                                        if (in_array($object['parent'], $this->expanded))
                                        {
                                                $this->format_options[$parent_index]['tab'][($tab - 2)] = 'minus';
                                        }
                                        else
                                        {
                                                $this->format_options[$parent_index]['tab'][($tab - 2)] = 'minus';
                                        }
                                }

                                ++$counter;

                                // Recursive
                                $this->setOutput($object['child'], $a_depth);
                        } //foreach
                } //if
        } //function

Here is the call graph for this function:


Field Documentation

ilForumExplorer::$forum

Definition at line 60 of file class.ilForumExplorer.php.

ilForumExplorer::$objCurrentTopic = null [private]

Definition at line 68 of file class.ilForumExplorer.php.

ilForumExplorer::$objProperties = null [private]

ilForumProperties object private

Definition at line 66 of file class.ilForumExplorer.php.

ilForumExplorer::$root_id

Reimplemented from ilExplorer.

Definition at line 53 of file class.ilForumExplorer.php.

ilForumExplorer::$thread_id

Definition at line 44 of file class.ilForumExplorer.php.

ilForumExplorer::$thread_subject

Definition at line 45 of file class.ilForumExplorer.php.


The documentation for this class was generated from the following file: