Beispiel #1
0
 /**
  * Препроцессор параметров.
  *
  * Вытаскивает из текущего урла параметризацию виджета, в паре с которым
  * работает, в частности — параметры 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;
 }
Beispiel #2
0
 /**
  * Препроцессор параметров.
  *
  * @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;
 }
Beispiel #3
0
 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;
 }
Beispiel #6
0
 /**
  * Препроцессор параметров.
  *
  * Выбирает из информации о контексте параметры, относящиеся к этому виджету.
  *
  * @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;
 }
Beispiel #7
0
 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;
 }
Beispiel #8
0
 /**
  * Вытаскивает из контекста параметры виджета.
  *
  * @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;
 }
Beispiel #9
0
 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;
 }
Beispiel #10
0
 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;
 }
Beispiel #11
0
 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;
 }
Beispiel #12
0
 /**
  * Препроцессор параметров.
  *
  * @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;
 }
Beispiel #13
0
 /**
  * Препроцессор параметров.
  *
  * @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;
 }
Beispiel #14
0
 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;
 }
Beispiel #16
0
 /**
  * Препроцессор параметров.
  *
  * @param Context $ctx контекст запроса.
  *
  * @return array массив с параметрами виджета.
  */
 protected function getRequestOptions(Context $ctx, array $params)
 {
     $options = parent::getRequestOptions($ctx, $params);
     $options['types'] = $this->classes;
     return $options;
 }