protected function _viewPlace($placeCode = null, $options = array()) { $prependHtml = isset($options['prepend']) ? $options['prepend'] : ''; $appendHtml = isset($options['append']) ? $options['append'] : ''; if ($placeCode === null) { return; } $controllerName = zenMVC::getFinalControllerName(); $controllersBreadcrumb = zenMVC::getControllersBreadcrumb(); $filters = zenMVC::getPlaceFilters(); $widgets = $this->_getPlaceWidgets($placeCode, $options); $widgetsPlacement = $this->getTable('widgets_placement'); $conditions = $this->getTable('widgets_placement_conditions'); // get widgets for place $parents = $this->getClassParents($controllerName); $parents = $controllersBreadcrumb; //$in = array(); //$in[] = $controllerName; $in = $parents; $in[] = ''; //$in[] = $controllerName; $widgetList = $widgetsPlacement->select()->where("{$widgetsPlacement->place_code} = '" . $widgetsPlacement->e($placeCode) . "'")->orderBy("{$widgetsPlacement->order} ASC"); $filters = zenMVC::getPlaceFilters(); if (count($filters)) { //$widgetList = $widgetList->leftJoin($conditions)->select($conditions); //$sqla = array(); // where ... or ... or ... having count(id) = filters_count //$controllerName foreach ($filters as $name => $value) { $filter = $name . '=' . $value; /* $conditions->name = '".$conditions->e($name)."' AND $conditions->value = '".$conditions->e($value)."' */ $widgetList = $widgetList->where("\n\t\t\t\t\t((\n\t\t\t\t\t\t{$widgetsPlacement->filter} = '{$filter}'\n\t\t\t\t\t\tAND {$widgetsPlacement->controller_class} = '{$controllerName}'\n\t\t\t\t\t)OR(\n\t\t\t\t\t\t{$widgetsPlacement->child_controllers} = 1\n\t\t\t\t\t\tAND\t{$widgetsPlacement->controller_class} IN('" . implode("', '", $in) . "')\n\t\t\t\t\t))"); } } else { //$widgetList = $widgetList->leftJoin($conditions)->select($conditions) //->where("$widgetsPlacement->controller_class IN('".implode("','", $in)."')") $widgetList = $widgetList->where("\n\t\t\t\t\t((\n\t\t\t\t\t\t{$widgetsPlacement->filter} = ''\n\t\t\t\t\t\tAND {$widgetsPlacement->controller_class} = '{$controllerName}'\n\t\t\t\t\t)OR(\n\t\t\t\t\t\t{$widgetsPlacement->filter} = ''\n\t\t\t\t\t\tAND {$widgetsPlacement->child_controllers} = 1\n\t\t\t\t\t\tAND\t{$widgetsPlacement->controller_class} IN('" . implode("', '", $in) . "')\n\t\t\t\t\t))\n\t\t\t\t\t"); } if (count($widgetList)) { echo $prependHtml; echo '<div class="place place-' . $placeCode . '">'; // style="border: solid 1px #e00; overflow: hidden;" foreach ($widgetList as $placement) { //list($placement, $conditions) = $result; $class = $placement->widgetClass->getValue(); $widget = new $class($this); //echo $placement->id->html(); $widget->setPlacement($placement); $widget->html(); } echo '</div>'; echo $appendHtml; } }
protected function _viewPlace($placeCode = null, $options = array()) { $prependHtml = isset($options['prepend']) ? $options['prepend'] : ''; $appendHtml = isset($options['append']) ? $options['append'] : ''; if ($placeCode === null) { return; } $controllerName = zenMVC::getFinalControllerName(); $controllersBreadcrumb = zenMVC::getControllersBreadcrumb(); $filters = zenMVC::getPlaceFilters(); $widgets = $this->_getPlaceWidgets($placeCode, $options); $widgetsPlacement = $this->getTable('widgets_placement'); $conditions = $this->getTable('widgets_placement_conditions'); // get widgets for place echo $prependHtml; echo '<div style="border: solid 1px #e00;">'; $parents = $this->getClassParents($controllerName); $in = $parents; $in[] = $controllerName; $in[] = ''; $widgetList = $widgetsPlacement->select()->where("{$widgetsPlacement->place_code} = '" . $widgetsPlacement->e($placeCode) . "'")->where("{$widgetsPlacement->controller_class} IN('" . implode("','", $in) . "')"); $filters = zenMVC::getPlaceFilters(); if (count($filters)) { $widgetList = $widgetList->select($conditions); //$sqla = array(); // where ... or ... or ... having count(id) = filters_count foreach ($filters as $name => $value) { $widgetList = $widgetList->where("{$conditions->name} = '" . $conditions->e($name) . "'")->where("{$conditions->value} = '" . $conditions->e($value) . "'"); } } else { $widgetList = $widgetList->leftJoin($conditions)->select($conditions)->where("{$conditions->id} IS NULL"); } foreach ($widgetList as $result) { list($placement, $conditions) = $result; $class = $placement->widgetClass->getValue(); $widget = new $class($this); echo $placement->id->html(); $widget->setPlacement($placement); $widget->html(); } echo $widgetList->getSql(); echo '<div>' . $placeCode . '</div>'; echo '<div>' . $controllerName . '</div>'; echo '<div>'; var_dump($controllersBreadcrumb); echo '</div>'; echo '<div>'; var_dump($filters); echo '</div>'; echo '<div>'; //var_dump($options); echo '</div>'; echo '</div>'; echo $appendHtml; }