function unwrap() { $this->result = S($this->result)->keep(function ($block) { return is_array($block) or is_object($block); })->map(function ($block) { $block = S::keep(arrize($block), 'is_object'); return count($block) > 1 ? $block : reset($block); })->get(); return $this; }
function get_by_list($name = 'main', $slides = false) { if ($name === '*') { if ($route = \Vane\Route::current() and $route->lastServer) { $name = \Bundle::element($route->lastServer->name); $name = S::tryUnprefix(strtok($name, '@'), 'block.'); } else { $name = null; } } $default = $this->in('default', 'main'); if (!$name and !$default) { return E_INPUT; } $query = ProductListItem::order_by('sort'); $name and $query->where('type', '=', $name); $default and $query->or_where('type', '=', $default); if ($list = $query->get()) { if ($default and !S::first($list, array('?->type === ?', $name))) { $type = $default; } else { $type = $name; } $list = S::keep($list, array('?->type === ?', $type)); $goods = S::keys(Product::all(prop('product', $list)), '?->id'); $ordered = array(); foreach ($list as $item) { $product =& $goods[$item->product]; if ($product and (!$slides or $product->image)) { $product->extra = $item->extra; $ordered[] = $product; } } $this->layout = $slides ? '.slides' : '.index'; return static::listResponse($slides ? 1000 : 320, $ordered); } }
function titleVars(array $vars, $action) { $name = $this->langVarName("{$action}.title"); if (\Lang::has($name)) { $page = \Lang::line($name, $this->title)->get(); $vars = compact('page') + \Vane\Current::config('company'); return S::keep($vars, 'is_scalar'); } }