JReviews:Developers Filters

From JReviews Documentation
Revision as of 23:25, 12 February 2018 by Jreviews (Talk | contribs) (Using Filter Functions)

Jump to: navigation, search

JReviews 3 comes with Filters that allow you to make certain types of customizations and extend the functionality of JReviews without having to modify any core files.


What is a Filter?

A filter is a line of code that is strategically placed in the code at points where you may want to change or override the value of a variable to override or extend existing functionality.

For example, you can use a filter to:

  • Change the page title and metatags of different pages
  • Override the permissions of specific users or user groups for different events (creating listings, reviews, etc.)
  • Add or remove CSS and Scripts to and from the page.

Defining a Filter

Typically you will not need to do this because JReviews 3 already comes with many filters and we'll add more over time. However, if you need to create a new filter that is not yet available this is the syntax from creating one:

$data = \Clickfwd\Hook\Filter::filter('filter_name', $data, ['foo'=>$bar]);

Where:

  • $data is the variable that can be modified by the filters
  • $params is an array of reference variables that can be used inside the filter logic

Using Filter Functions

To use a filter you need to create a filter function using the following syntax:

function filter_callback_function($data, $params = [])
{
   return $data;
}
 
Clickfwd\Hook\Filter::add('filter_name', 'filter_callback_function', $priority = 10);
    • The $data variable can be modified inside the callback function and must always be returned at the end of the function.**

Available Filters

Notifications

$payload = \Clickfwd\Hook\Filter::filter('listing_inquiry_email_payload', $payload, ['event'=>$event]);

Asset Manager

 266: 		self::$css = Hook::filter('asset_manager_stylesheets', self::$css);
 312: 		self::$js = Hook::filter('asset_manager_scripts', self::$js);

Metatags

 160: 		$robots = Hook::filter('page_robots_metatag', $robots, $params);
 182: 		$title = Hook::filter('page_title_metatag', $title, $params);
 202: 		$keywords = Hook::filter('page_keywords_metatag', $keywords, $params);
 214: 		$description = Hook::filter('page_description_metatag', $description, $params);
 226: 		$canonical = Hook::filter('page_canonical_metatag', $canonical, $params);
 238: 		$prev = Hook::filter('page_prev_metatag', $prev, $params);
 248: 		$next = Hook::filter('page_next_metatag', $next, $params);

Listing Detail

 541:    $menuExtras = Clickfwd\Hook\Filter::filter('listing_detail_action_buttons', $menuExtras, [['listing'=>$listing]]);

Listing Permissions

  57:    return $this->filteredResponse($trust,'trusted_on_listing_create');
  85:    return $this->filteredResponse($permission,'listing_allows_claims',$listing);
 132:    return $this->filteredResponse($permission,'listing_allows_inquiries',$listing);
 150:    return $this->filteredResponse($permission,'listing_allows_favorites',$listing);
 173:    return $this->filteredResponse($permission,'listing_allows_user_reviews',$listing);
 191:    return $this->filteredResponse($permission,'listing_allows_editor_reviews',$listing);
 207:    return $this->filteredResponse($permission,'listing_user_reviews_opened',$listing);
 223:    return $this->filteredResponse($permission,'listing_editor_reviews_opened',$listing);
 251:    $permission = $this->filteredResponse($permission,'can_create_listing',[$listingTypeId]);
 278:    return $this->filteredResponse($permission,'can_update_listing',$listing);
 296:    return $this->filteredResponse($permission,'can_add_listing_metadata',$listingType);
 312:    return $this->filteredResponse($permission,'can_use_editor_in_listing',[]);
 334:    return $this->filteredResponse($permission,'can_publish_listing',$listing);
 356:    return $this->filteredResponse($permission,'can_delete_listing',$listing);
 374:    return $this->filteredResponse($permission,'can_claim_listing',$listing);
 390:    return $this->filteredResponse($permission,'can_send_listing_inquiry',$listing);
 406:    return $this->filteredResponse($permission,'can_favorite_listing',$listing);
 420:    return $this->filteredResponse($permission,'can_feature_listing',[]);
 496:    return $this->filteredResponse($permission,'can_create_user_review_for_listing',$listing,$this->getMessage());
 546:    return $this->filteredResponse($permission,'can_create_editor_review_for_listing',$listing,$this->getMessage());
 564:    return $this->filteredResponse($permission,'can_add_review_on_listing_create',$listingType);
 586:    return $this->filteredResponse($permission,'can_update_listing_media',[$listing,$listingType]);
 624:    return $this->filteredResponse($permission,'can_upload_listing_media',[$listing,$listingType]);
 644:    return $this->filteredResponse($permission,'can_upload_media_from_url_in_listing',$listing);
 662:    return $this->filteredResponse($permission,'can_upload_listing_photo',[$listing,$listingType]);
 680:    return $this->filteredResponse($permission,'can_upload_listing_video');
 698:    return $this->filteredResponse($permission,'can_upload_listing_audio',[$listing,$listingType]);
 716:    return $this->filteredResponse($permission,'can_upload_listing_attachment',[$listing,$listingType]);

Media Permissions

  30:    return $this->filteredResponse($trust,'trusted_on_create_photo');
  49:    return $this->filteredResponse($trust,'trusted_on_create_video');
  68:    return $this->filteredResponse($trust,'trusted_on_create_audio');
  87:    return $this->filteredResponse($trust,'trusted_on_create_attachment');
 105:    return $this->filteredResponse($permission,'media_allows_voting',$listing);
 121:    return $this->filteredResponse($permission,'media_allows_report',$listing);
 149:    return $this->filteredResponse($permission,'can_update_media_in_listing',[$listing,$media]);
 177:    return $this->filteredResponse($permission,'can_delete_media_in_listing',[$listing,$media]);
 205:    return $this->filteredResponse($permission,'can_publish_media_in_listing',[$listing,$media]);
 237:    return $this->filteredResponse($permission,'can_set_main_media',[$listing,$media]);
 259:    return $this->filteredResponse($permission,'can_update_media_details',[$listing,$media]);
 286:    return $this->filteredResponse($permission,'can_vote_on_media',[$listing,$media]);
 302:    return $this->filteredResponse($permission,'can_report_media',$listing);
 323:    return $this->filteredResponse($permission,'can_download_attachment',$media);

Review Permissions

  28:    return $this->filteredResponse($trust,'trusted_on_user_review_create');
  45:    return $this->filteredResponse($trust,'trusted_on_user_review_update');
  58:    return $this->filteredResponse($trust,'trusted_on_editor_review_create');
  71:    return $this->filteredResponse($trust,'trusted_on_editor_review_update');
  84:    return $this->filteredResponse($trust,'trusted_on_create_review_owner_reply');
 104:    return $this->filteredResponse($permission,'review_allows_report',$review);
 124:    return $this->filteredResponse($permission,'review_allows_voting',$review);
 140:    return $this->filteredResponse($permission,'review_allows_replies',$review);
 156:    return $this->filteredResponse($permission,'review_allows_discussions',$review);
 180:    return $this->filteredResponse($permission,'can_update_review',$review);
 204:    return $this->filteredResponse($permission,'can_reply_to_review',[$listing,$review]);
 220:    return $this->filteredResponse($permission,'can_delete_review_reply',$listing);
 236:    return $this->filteredResponse($permission,'can_report_review',$review);
 261:    return $this->filteredResponse($permission,'can_vote_on_review',$review);
 279:    return $this->filteredResponse($permission,'can_create_review_post',$review);
 319:    return $this->filteredResponse($permission,'can_upload_review_media',$review);
 337:    return $this->filteredResponse($permission,'can_upload_media_from_url_in_review',$review);
 353:    return $this->filteredResponse($permission,'can_upload_review_photo',$review);
 369:    return $this->filteredResponse($permission,'can_upload_review_video',$review);
 385:    return $this->filteredResponse($permission,'can_upload_review_audio',$review);
 401:    return $this->filteredResponse($permission,'can_upload_review_attachment',$review);

Review Discussion Permissions

  26:    return $this->filteredResponse($trust,'trusted_on_create_review_discussion');
  48:    return $this->filteredResponse($permission,'review_discussion_allows_report',$post);
  64:    return $this->filteredResponse($permission,'can_report_review_discussion',$post);
  86:    return $this->filteredResponse($permission,'can_update_review_discussion',[$post,$review]);
 108:    return $this->filteredResponse($permission,'can_delete_review_discussion',[$post,$review]);

Field Permissions

  59:    return $this->filteredResponse($permission,'can_view_field_in_'.$location.'_page',$field);
  87:    return $this->filteredResponse($permission,'can_read_field',[$fname]);
 115:    return $this->filteredResponse($permission,'can_write_field',[$fname]);