Beispiel #1
0
    /**
     * Диалог. Печатает один комментарий.
     * 
     * @param array $msg   информация по комментарию.
     * @return string
     */
    function msg_node($msg)
    {
        global $session;
        static $pos = 0;
        static $prev_post_time = 0;
        $post_time = strtotime($msg['post_date']);
        $li_in_cls = ($pos && !$msg['level'] ? ' cl-li-first' : '') . ($post_time > strtotime($this->last_msgs_view) ? ' cl-li-new' : '') . ($msg['is_admin'] == 't' ? ' nr-ua' : '');
        $is_edit = $this->post_msg['id'] == $msg['id'];
        if ($this->post_msg && $is_edit || !$this->post_msg['id'] && $this->post_msg['parent_id'] == $msg['id']) {
            if ($is_edit) {
                // нужно выдать форму для редактирования (если были ошибки ввода). Заполняем post_msg недостающими данными по комменту.
                foreach ($msg as $f => $v) {
                    if (!isset($this->post_msg[$f])) {
                        $this->post_msg[$f] = $v;
                    }
                }
            }
            $edit_form = $this->msg_form($this->post_msg, $this->error['msgs'], true);
        }
        if (!$msg['level'] && $this->sbr->docs) {
            while ($doc = $this->sbr->docs[0]) {
                $doc_time = strtotime($doc['publ_time']);
                if (!($doc_time < $post_time && $doc_time > $prev_post_time)) {
                    break;
                }
                array_shift($this->sbr->docs);
                echo $this->sbr->doc_node($doc);
            }
            $prev_post_time = $post_time;
        }
        ?>
        <li class="cl-li<?php 
        echo !$msg['level'] ? ' first' : '';
        ?>
">
            <div class="cl-li-in<?php 
        echo $li_in_cls;
        ?>
" id="c_<?php 
        echo $msg['id'];
        ?>
"><?php 
        echo $this->msg_node_content($msg);
        ?>
</div>
            <div id="msg_form_box<?php 
        echo $msg['id'];
        ?>
"><?php 
        echo $edit_form;
        ?>
</div>
            <?php 
        if ($msg['level'] < 13) {
            ?>
                <?php 
            echo $this->msg_nodes($msg);
            ?>
            <?php 
        }
        ?>
        </li>
        <?php 
        if ($msg['level'] >= 13) {
            ?>
            <?php 
            echo $this->msg_nodes($msg, false);
            ?>
        <?php 
        }
        ?>
    <?php 
        ++$pos;
    }