Example #1
0
 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;
 }
Example #2
0
 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);
     }
 }
Example #3
0
 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');
     }
 }