/** * Препроцессор параметров. * * Вытаскивает из текущего урла параметризацию виджета, в паре с которым * работает, в частности — параметры year, month, day. * * @return array параметры виджета. * * @param Context $ctx контекст вызова. */ protected function getRequestOptions(Context $ctx, array $params) { if (is_array($options = parent::getRequestOptions($ctx, $params))) { // Нужно для подавления кэширования. $options['apath'] = $ctx->query(); // Самостоятельно парсим урл, т.к. будем подглядывать за другими виджетами. // FIXME: это надо получать из контекста. $url = bebop_split_url(); if (!empty($url['args'][$this->host])) { // Вытаскиваем нужные нам параметры. foreach (array('year', 'month', 'day') as $key) { // Первый же отсутствующий параметр прерывает цепочку. if (!array_key_exists($key, $url['args'][$this->host])) { break; } // Если параметр найден -- сохраняем его значение и продолжаем сканировать. $options[$key] = $url['args'][$this->host][$key]; } } } // Возвращаем параметризацию. foreach (array('year', 'month', 'day') as $key) { if (array_key_exists($key, $options)) { $options['current'][$key] = $options[$key]; } elseif (array_key_exists($k = $this->host . '_' . $key, $_GET)) { $options['current'][$key] = $_GET[$k]; } } return $options; }
/** * Препроцессор параметров. * * @param Context $ctx контекст запроса. * * @return array параметры виджета. */ protected function getRequestOptions(Context $ctx, array $params) { $options = parent::getRequestOptions($ctx, $params); $options['uid'] = $this->ctx->user->id; // $this->get('uid'); $options['#cache'] = false; return $options; }
protected function getRequestOptions(Context $ctx, array $params) { $options = parent::getRequestOptions($ctx, $params); $options['q'] = $this->get('query'); $options['page'] = $this->get('page', 1); $options['limit'] = $this->per_page; $options['#cache'] = false; return $options; }
/** * Препроцессор параметров. * * @param Context $ctx контекст запроса. * * @return array массив с параметрами виджета. */ protected function getRequestOptions(Context $ctx, array $params) { $options = parent::getRequestOptions($ctx, $params); if (!$params['document']) { return false; } $options['doc'] = $params['document']['id']; $options['classes'] = $this->classes; $options['field'] = $this->field; $options['sort'] = $this->sort; return $options; }
protected function getRequestOptions(Context $ctx, array $params) { $options = parent::getRequestOptions($ctx, $params); $options['uid'] = $ctx->user->id; $options['mode'] = $this->get('mode'); if (null === ($options['rel'] = $params['document'])) { $options['relname'] = null; } elseif ('user' == $ctx->document->class) { $options['relname'] = empty($ctx->document->fullname) ? $ctx->document->name : $ctx->document->fullname; } else { $options['relname'] = $ctx->document->name; } return $this->options = $options; }
/** * Препроцессор параметров. * * Выбирает из информации о контексте параметры, относящиеся к этому виджету. * * @param Context $ctx контекст запроса. * * @return array массив с параметрами. */ protected function getRequestOptions(Context $ctx, array $params) { $options = parent::getRequestOptions($ctx, $params); if ($this->onlyiflast and isset($params['document'])) { return $this->halt(); } if ('root' == $this->fixed) { $options['section'] = $params['root']; } elseif ('always' == $this->fallbackmode and $this->fixed) { $options['section'] = array('id' => $this->fixed); } elseif ($params['section']) { $options['section'] = $params['section']; } if (!empty($this->types)) { $options['classes'] = array_intersect((array) $this->types, $ctx->user->getAccess(ACL::READ)); } if ($this->onlyathome and $options['section'] != $params['root']) { return $this->halt(); } if ($this->skipcurrent and isset($options['document'])) { $options['document'] = $options['document']['id']; } if (is_array($tmp = $this->get('classes'))) { $options['filter']['class'] = array_unique($tmp); } // Добавляем выборку по архиву. foreach (array('year', 'month', 'day') as $key) { if (null === ($tmp = $this->get($key))) { break; } $options['filter']['node.created.' . $key] = $tmp; } // Добавляем выбор страницы. if ($options['limit'] = $this->get('limit', $this->limit)) { if ($this->pager) { $options['page'] = $this->get('page', 1); } else { $options['page'] = 1; } $options['offset'] = ($options['page'] - 1) * $options['limit']; } else { $options['offset'] = null; } // Добавляем пользовательскую фильтрацию. if ($tmp = $this->get('filter')) { $options['filter'] = $tmp; } $options['sort'] = $this->get('sort', $this->sort); return $options; }
protected function getRequestOptions(Context $ctx, array $params) { $options = parent::getRequestOptions($ctx, $params); $options['#cache'] = false; $options['action'] = $this->get('action', 'status'); $options['vote'] = $this->get('vote'); if (!($options['node'] = $params['document'])) { return $this->halt(); } if (null !== ($options['rate'] = $this->get('rate'))) { $options['action'] = 'rate'; } return $options; }
/** * Вытаскивает из контекста параметры виджета. * * @return array параметры, необходимые виджеты * * @param Context $ctx контекст запроса. Используемые GET-параметры: * action, код раздела (если используется возврат информации о соседях), код * документа (если не используется возврат фиксированного документа). */ protected function getRequestOptions(Context $ctx, array $params) { $options = parent::getRequestOptions($ctx, $params); $options['action'] = 'view'; if ($this->fixed) { $options['document'] = array('id' => $this->fixed); } elseif (!($options['document'] = $params['document'])) { return $this->halt(); $options['section'] = $params['section']; if (null === ($options['action'] = $this->get('action', $this->mode))) { $options['action'] = 'view'; } } return $options; }
protected function getRequestOptions(Context $ctx, array $params) { $options = parent::getRequestOptions($ctx, $params); $options['#cache'] = false; // Режим работы задаётся администратором, но переопределяется извне. $options['mode'] = $this->get('mode', 'simple'); // Добавление товара. if (null !== ($options['add'] = $this->get('add'))) { $options['mode'] = 'add'; $options['qty'] = $this->get('qty', 1); } if (empty($options['mode'])) { throw new WidgetHaltedException(); } return $options; }
protected function getRequestOptions(Context $ctx, array $params) { $options = parent::getRequestOptions($ctx, $params); $options['status'] = $this->get('status'); $options['mode'] = $this->mode; if (empty($options['mode'])) { $options['mode'] = 'list'; } if ('linked' == $options['mode']) { $options['mode'] = 'list'; } switch ($options['mode']) { case 'list': switch ($this->startwith) { case 'last': $options['default'] = 'last'; if (!($options['doc'] = $params['document'])) { return $this->halt(); } break; case 'first': $options['default'] = 1; if (!($options['doc'] = $params['document'])) { return $this->halt(); } break; case 'tracker': $options['default'] = 1; $options['action'] = 'tracker'; $options['doc'] = $params['document']; if (null === $this->perpage) { return $this->halt(); } break; } break; case 'last': break; } if (empty($options['default'])) { $options['default'] = 1; } $options['page'] = $this->get('page', $options['default']); return $options; }
protected function getRequestOptions(Context $ctx, array $params) { $options = parent::getRequestOptions($ctx, $params); if ($params['section'] or $params['document']) { mcms::debug("Виджет {$this->getInstanceName()} не может работать на страницах, параметризуемых кодом раздела или документа."); throw new WidgetHaltedException(); } if (count($ctx->apath) == 1) { $options['user'] = $ctx->apath[0]; } elseif (count($ctx->apath) > 1) { throw new PageNotFoundException(); } else { $options['user'] = null; } $options['limit'] = $this->limit ? $this->limit : 10; $options['page'] = $this->get('page', 1); return $options; }
/** * Препроцессор параметров. * * @param Context $ctx контекст запроса. * * @return array выбранные из контекста параметры, относящиеся к виджету. */ protected function getRequestOptions(Context $ctx, array $params) { $options = parent::getRequestOptions($ctx, $params); $options['root'] = $params['section']['id']; switch ($this->fixed) { case 'root': $options['root'] = $params['root']['id']; break; case 'parent': $options['parent'] = true; break; default: if (is_numeric($this->fixed)) { $options['root'] = $this->fixed; } } return $this->options = $options; }
/** * Препроцессор параметров. * * @param Context $ctx параметры запроса. * * @return array массив с параметрами виджета. */ protected function getRequestOptions(Context $ctx, array $params) { $options = parent::getRequestOptions($ctx, $params); if ($this->forcefixed) { if ('page' == ($options['root'] = $this->fixed)) { $options['root'] = $params['root']; } } else { $options['root'] = $params['section']; } $options['dynamic'] = $params['section'] !== null; if ($this->illcache) { $options['anchor'] = $params['section']; } if (!empty($options['root']) and !is_numeric($options['root']) and !is_object($options['root'])) { throw new InvalidArgumentException(t('Вместо кода раздела в виджет %name пришёл какой-то мусор: %trash.', array('%name' => $this->name, '%trash' => $options['root']))); } return $options; }
public function getRequestOptions(Context $ctx, array $params) { $options = parent::getRequestOptions($ctx, $params); $options['type'] = $this->get('type', $this->type); $options['default'] = $this->get('default', array()); $options['#cache'] = false; if (null === ($options['root'] = $params['section']['id'])) { $options['root'] = $this->section_default; } if ('default' != ($options['status'] = $this->get('status', 'default'))) { $options['node'] = $this->get('node'); } $options['stripped'] = empty($this->stripped) ? 0 : 1; if (null !== ($tmp = $this->get('parent')) and is_numeric($tmp)) { $options['parent_id'] = intval($tmp); } else { $options['parent_id'] = null; } return $this->options = $options; }
protected function getRequestOptions(Context $ctx, array $params) { $options = parent::getRequestOptions($ctx, $params); $options['#cache'] = false; return $options; }
/** * Препроцессор параметров. * * @param Context $ctx контекст запроса. * * @return array массив с параметрами виджета. */ protected function getRequestOptions(Context $ctx, array $params) { $options = parent::getRequestOptions($ctx, $params); $options['types'] = $this->classes; return $options; }