| Код | class blocks{ var $bout = array(); var $berr = array(); var $blck = array(); var $btable = "blocks"; var $html = ""; var $tmpl = array();
function binit(){ $num = func_num_args(); if($num >= 1){ for($i=0; $i<$num; $i++){ $block = func_get_arg($i); if(!in_array($block, $this->blck)){ array_push($this->blck, $block); } return true; } }else{ array_push($this->berr, "Нет блоков для инициализации"); return false; } }
function bget($module = "index"){ $query = db_query("SELECT * FROM blocks WHERE module='".$module."' ORDER BY position, weight"); if($rs = db_fetch_array($query)){ do{ if($this->bparse($rs['type'], $rs['from'], $rs['name'])){ $this->bout[$position] .= $this->html; }else{ array_push($this->berr, "Невозможно пропарсить блок"); } }while($rs = db_fetch_array($query)); return true; }else{ return false; } } function bparse($type, $from, $name){ if(empty($this->tmpl[$type])){ $this->tmpl[$type] = _readfile(_SITE_PTMD."blocks/tmpl/".$type.".htm"); } include_once(_SITE_PTMD.$from."/blocks/index.php"); $function = $from."_blocks_".$name; if(function_exists($function)){ $function($rs); $tmp = $this->tmpl[$type]; foreach($rs AS $k => $v){ $tmp = str_replace("{_BLOCKS_".strtoupper($k)."}", $v, $tmp); $this->html = $tmp; } echo $tmp; } return true; } } ?> |
Если на третьей строчке снизу не ставить return true; - скрипт работает, но от финкции bparse требуется возвращение либо true, либо false. В чем я ошибся? |