/** * Диалог. Печатает один комментарий. * * @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; }