Example #1
0
 /**
  * Handles incoming REST requests for which the user must be authenticated.
  * Used for requests where tokens are provided for verification.
  * Forwards the request to plugin hook registered for the RewriteRule.
  *
  * @see act_rest()
  */
 public function act_verified_rest()
 {
     Plugins::act('auth_rest_verify', $this);
     $matched_rule = Controller::get_matched_rule();
     $hookfn = $matched_rule->parameters['hook'];
     $result = call_user_func_array($hookfn, array($matched_rule->named_arg_values));
     if (!$result instanceof RestResponse) {
         $result = new RestResponse($result);
     }
     $result->out();
 }
Example #2
0
 /**
  * Implementation of menu_type_data filter, created by this plugin
  * @param array $menu_type_data Existing menu type data
  * @return array Updated menu type data
  */
 public function filter_menu_type_data($menu_type_data)
 {
     $menu_type_data['menu_link'] = array('label' => _t('Link'), 'form' => function ($form, $term) {
         $link_name = new FormControlText('link_name', 'null:null', _t('Link Title'));
         $link_name->add_validator('validate_required', _t('A name is required.'));
         $link_url = new FormControlText('link_url', 'null:null', _t('Link URL'));
         $link_url->add_validator('validate_required')->add_validator('validate_url', _t('You must supply a valid URL.'));
         if ($term) {
             $link_name->value = $term->term_display;
             $link_url->value = $term->info->url;
             $form->append('hidden', 'term')->value = $term->id;
         }
         $form->append($link_name);
         $form->append($link_url);
     }, 'save' => function ($menu, $form) {
         if (!isset($form->term->value)) {
             $term = new Term(array('term_display' => $form->link_name->value, 'term' => Utils::slugify($form->link_name->value)));
             $term->info->type = "link";
             $term->info->url = $form->link_url->value;
             $term->info->menu = $menu->id;
             $menu->add_term($term);
             $term->associate('menu_link', 0);
             Session::notice(_t('Link added.'));
         } else {
             $term = Term::get(intval($form->term->value));
             $updated = false;
             if ($term->info->url !== $form->link_url->value) {
                 $term->info->url = $form->link_url->value;
                 $updated = true;
             }
             if ($form->link_name->value !== $term->term_display) {
                 $term->term_display = $form->link_name->value;
                 $term->term = Utils::slugify($form->link_name->value);
                 $updated = true;
             }
             $term->info->url = $form->link_url->value;
             if ($updated) {
                 $term->update();
                 Session::notice(_t('Link updated.'));
             }
         }
     }, 'render' => function ($term, $object_id, $config) {
         $result = array('link' => $term->info->url);
         return $result;
     });
     $menu_type_data['menu_spacer'] = array('label' => _t('Spacer'), 'form' => function ($form, $term) {
         $spacer = new FormControlText('spacer_text', 'null:null', _t('Item text'), 'optionscontrol_text');
         $spacer->helptext = _t('Leave blank for blank space');
         if ($term) {
             $spacer->value = $term->term_display;
             $form->append('hidden', 'term')->value = $term->id;
         }
         $form->append($spacer);
     }, 'save' => function ($menu, $form) {
         if (!isset($form->term->value)) {
             $term = new Term(array('term_display' => $form->spacer_text->value !== '' ? $form->spacer_text->value : ' ', 'term' => 'menu_spacer'));
             $term->info->type = "spacer";
             $term->info->menu = $menu->id;
             $menu->add_term($term);
             $term->associate('menu_spacer', 0);
             Session::notice(_t('Spacer added.'));
         } else {
             $term = Term::get(intval($form->term->value));
             if ($form->spacer_text->value !== $term->term_display) {
                 $term->term_display = $form->spacer_text->value;
                 $term->update();
                 Session::notice(_t('Spacer updated.'));
             }
         }
     });
     $menu_type_data['post'] = array('label' => _t('Links to Posts'), 'form' => function ($form, $term) {
         if ($term) {
             $object_types = $term->object_types();
             $term_object = reset($object_types);
             $post_display = $form->append('text', 'term_display', 'null:null', _t('Title to display'));
             $post_display->value = $term->term_display;
             $post = Post::get($term_object->object_id);
             $post_term = $form->append('static', 'post_link', _t("Links to <a target='_blank' href='{$post->permalink}'>{$post->title}</a>"));
             $form->append('hidden', 'term')->value = $term->id;
         } else {
             $post_ids = $form->append('text', 'post_ids', 'null:null', _t('Posts'));
             $post_ids->template = 'text_tokens';
             $post_ids->ready_function = "\$('#{$post_ids->field}').tokenInput( habari.url.ajaxPostTokens )";
         }
     }, 'save' => function ($menu, $form) {
         if (!isset($form->term->value)) {
             $post_ids = explode(',', $form->post_ids->value);
             foreach ($post_ids as $post_id) {
                 $post = Post::get(array('id' => $post_id));
                 $term_title = $post->title;
                 $terms = $menu->get_object_terms('post', $post->id);
                 if (count($terms) == 0) {
                     $term = new Term(array('term_display' => $post->title, 'term' => $post->slug));
                     $term->info->menu = $menu->id;
                     $menu->add_term($term);
                     $menu->set_object_terms('post', $post->id, array($term->term));
                 }
             }
             Session::notice(_t('Link(s) added.'));
         } else {
             $term = Term::get(intval($form->term->value));
             if ($form->term_display->value !== $term->term_display) {
                 $term->term_display = $form->term_display->value;
                 $term->update();
                 Session::notice(_t('Link updated.'));
             }
         }
     }, 'render' => function ($term, $object_id, $config) {
         $result = array();
         if ($post = Post::get($object_id)) {
             $rule = Controller::get_matched_rule();
             if (isset($rule->named_arg_values['slug']) && $rule->named_arg_values['slug'] == $post->slug) {
                 $result['active'] = true;
             }
             $result['link'] = $post->permalink;
         }
         return $result;
     });
     return $menu_type_data;
 }