Esempio n. 1
0
 /**
  * Get the parameters for the view from the request object
  *
  * @param Ai1ec_Abstract_Query $request
  *
  * @return array
  */
 protected function get_view_args_for_view(Ai1ec_Abstract_Query $request)
 {
     $settings = $this->_registry->get('model.settings');
     // Define arguments for specific calendar sub-view (month, agenda, etc.)
     // Preprocess action.
     // Allow action w/ or w/o ai1ec_ prefix. Remove ai1ec_ if provided.
     $action = $request->get('action');
     if (0 === strncmp($action, 'ai1ec_', 6)) {
         $action = substr($action, 6);
     }
     $view_args = $request->get_dict(apply_filters('ai1ec_view_args_for_view', array('post_ids', 'auth_ids', 'cat_ids', 'tag_ids', 'events_limit')));
     $add_defaults = array('cat_ids' => 'categories', 'tag_ids' => 'tags');
     foreach ($add_defaults as $query => $default) {
         if (empty($view_args[$query])) {
             $setting = $settings->get('default_tags_categories');
             if (isset($setting[$default])) {
                 $view_args[$query] = $setting[$default];
             }
         }
     }
     $type = $request->get('request_type');
     $view_args['data_type'] = $this->return_data_type_for_request_type($type);
     $view_args['request_format'] = $request->get('request_format');
     $exact_date = $this->get_exact_date($request);
     $view_args['no_navigation'] = $request->get('no_navigation') === 'true';
     // Find out which view of the calendar page was requested, and render it
     // accordingly.
     $view_args['action'] = $action;
     $view_args['request'] = $request;
     $view_args = apply_filters('ai1ec_view_args_array', $view_args);
     if (null === $exact_date) {
         $href = $this->_registry->get('html.element.href', $view_args)->generate_href();
         return Ai1ec_Http_Response_Helper::redirect($href, 307);
     }
     return $view_args;
 }
 public function get_view_args_for_view(Ai1ec_Abstract_Query $request)
 {
     global $ai1ec_events_helper, $ai1ec_settings;
     // Define arguments for specific calendar sub-view (month, agenda,
     // posterboard, etc.)
     // Preprocess action.
     // Allow action w/ or w/o ai1ec_ prefix. Remove ai1ec_ if provided.
     $action = $request->get('action');
     if (0 === strncmp($action, 'ai1ec_', 6)) {
         $action = substr($action, 6);
     }
     $view_args = $request->get_dict(array('post_ids', 'cat_ids', 'tag_ids'));
     if ($request->is_empty_request()) {
         $view_args['cat_ids'] = $ai1ec_settings->default_categories;
         $view_args['tag_ids'] = $ai1ec_settings->default_tags;
     }
     $type = $request->get('request_type');
     $view_args['data_type'] = $this->return_data_type_for_request_type($type);
     $exact_date = $this->get_exact_date($request);
     $view_args['no_navigation'] = $request->get('no_navigation') === 'true' ? true : false;
     // Find out which view of the calendar page was requested, and render it
     // accordingly.
     $view_args['action'] = $action;
     switch ($action) {
         case 'posterboard':
         case 'stream':
         case 'agenda':
             $view_args += $request->get_dict(array('page_offset', 'time_limit'));
             if (false !== $exact_date) {
                 $view_args['time_limit'] = $ai1ec_events_helper->local_to_gmt($exact_date) - 1;
             }
             break;
         case 'month':
         case 'oneday':
         case 'week':
             $view_args["{$action}_offset"] = $request->get("{$action}_offset");
             if (false !== $exact_date) {
                 $view_args['exact_date'] = $exact_date;
             }
             break;
     }
     $view_args['request'] = $request;
     return $view_args;
 }