/** * REST API: WP_REST_Post_Types_Controller class * * @package WordPress * @subpackage REST_API * @since 4.7.0 */ /** * Core class to access post types via the REST API. * * @since 4.7.0 * * @see WP_REST_Controller */ class WP_REST_Post_Types_Controller extends WP_REST_Controller { /** * Constructor. * * @since 4.7.0 */ public function __construct() { $this->namespace = 'wp/v2'; $this->rest_base = 'types'; } /** * Registers the routes for post types. * * @since 4.7.0 * * @see register_rest_route() */ public function register_routes() { register_rest_route( $this->namespace, '/' . $this->rest_base, array( array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_items' ), 'permission_callback' => array( $this, 'get_items_permissions_check' ), 'args' => $this->get_collection_params(), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P[\w-]+)', array( 'args' => array( 'type' => array( 'description' => __( 'An alphanumeric identifier for the post type.' ), 'type' => 'string', ), ), array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_item' ), 'permission_callback' => '__return_true', 'args' => array( 'context' => $this->get_context_param( array( 'default' => 'view' ) ), ), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); } /** * Checks whether a given request has permission to read types. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return true|WP_Error True if the request has read access, WP_Error object otherwise. */ public function get_items_permissions_check( $request ) { if ( 'edit' === $request['context'] ) { $types = get_post_types( array( 'show_in_rest' => true ), 'objects' ); foreach ( $types as $type ) { if ( current_user_can( $type->cap->edit_posts ) ) { return true; } } return new WP_Error( 'rest_cannot_view', __( 'Sorry, you are not allowed to edit posts in this post type.' ), array( 'status' => rest_authorization_required_code() ) ); } return true; } /** * Retrieves all public post types. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. */ public function get_items( $request ) { if ( $request->is_method( 'HEAD' ) ) { // Return early as this handler doesn't add any response headers. return new WP_REST_Response( array() ); } $data = array(); $types = get_post_types( array( 'show_in_rest' => true ), 'objects' ); foreach ( $types as $type ) { if ( 'edit' === $request['context'] && ! current_user_can( $type->cap->edit_posts ) ) { continue; } $post_type = $this->prepare_item_for_response( $type, $request ); $data[ $type->name ] = $this->prepare_response_for_collection( $post_type ); } return rest_ensure_response( $data ); } /** * Retrieves a specific post type. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. */ public function get_item( $request ) { $obj = get_post_type_object( $request['type'] ); if ( empty( $obj ) ) { return new WP_Error( 'rest_type_invalid', __( 'Invalid post type.' ), array( 'status' => 404 ) ); } if ( empty( $obj->show_in_rest ) ) { return new WP_Error( 'rest_cannot_read_type', __( 'Cannot view post type.' ), array( 'status' => rest_authorization_required_code() ) ); } if ( 'edit' === $request['context'] && ! current_user_can( $obj->cap->edit_posts ) ) { return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to edit posts in this post type.' ), array( 'status' => rest_authorization_required_code() ) ); } $data = $this->prepare_item_for_response( $obj, $request ); return rest_ensure_response( $data ); } /** * Prepares a post type object for serialization. * * @since 4.7.0 * @since 5.9.0 Renamed `$post_type` to `$item` to match parent class for PHP 8 named parameter support. * * @param WP_Post_Type $item Post type object. * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response Response object. */ public function prepare_item_for_response( $item, $request ) { // Restores the more descriptive, specific name for use within this method. $post_type = $item; // Don't prepare the response body for HEAD requests. if ( $request->is_method( 'HEAD' ) ) { /** This filter is documented in wp-includes/rest-api/endpoints/class-wp-rest-post-types-controller.php */ return apply_filters( 'rest_prepare_post_type', new WP_REST_Response( array() ), $post_type, $request ); } $taxonomies = wp_list_filter( get_object_taxonomies( $post_type->name, 'objects' ), array( 'show_in_rest' => true ) ); $taxonomies = wp_list_pluck( $taxonomies, 'name' ); $base = ! empty( $post_type->rest_base ) ? $post_type->rest_base : $post_type->name; $namespace = ! empty( $post_type->rest_namespace ) ? $post_type->rest_namespace : 'wp/v2'; $supports = get_all_post_type_supports( $post_type->name ); $fields = $this->get_fields_for_response( $request ); $data = array(); if ( rest_is_field_included( 'capabilities', $fields ) ) { $data['capabilities'] = $post_type->cap; } if ( rest_is_field_included( 'description', $fields ) ) { $data['description'] = $post_type->description; } if ( rest_is_field_included( 'hierarchical', $fields ) ) { $data['hierarchical'] = $post_type->hierarchical; } if ( rest_is_field_included( 'has_archive', $fields ) ) { $data['has_archive'] = $post_type->has_archive; } if ( rest_is_field_included( 'visibility', $fields ) ) { $data['visibility'] = array( 'show_in_nav_menus' => (bool) $post_type->show_in_nav_menus, 'show_ui' => (bool) $post_type->show_ui, ); } if ( rest_is_field_included( 'viewable', $fields ) ) { $data['viewable'] = is_post_type_viewable( $post_type ); } if ( rest_is_field_included( 'labels', $fields ) ) { $data['labels'] = $post_type->labels; } if ( rest_is_field_included( 'name', $fields ) ) { $data['name'] = $post_type->label; } if ( rest_is_field_included( 'slug', $fields ) ) { $data['slug'] = $post_type->name; } if ( rest_is_field_included( 'icon', $fields ) ) { $data['icon'] = $post_type->menu_icon; } if ( rest_is_field_included( 'supports', $fields ) ) { $data['supports'] = $supports; } if ( rest_is_field_included( 'taxonomies', $fields ) ) { $data['taxonomies'] = array_values( $taxonomies ); } if ( rest_is_field_included( 'rest_base', $fields ) ) { $data['rest_base'] = $base; } if ( rest_is_field_included( 'rest_namespace', $fields ) ) { $data['rest_namespace'] = $namespace; } if ( rest_is_field_included( 'template', $fields ) ) { $data['template'] = $post_type->template ?? array(); } if ( rest_is_field_included( 'template_lock', $fields ) ) { $data['template_lock'] = ! empty( $post_type->template_lock ) ? $post_type->template_lock : false; } $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; $data = $this->add_additional_fields_to_object( $data, $request ); $data = $this->filter_response_by_context( $data, $context ); // Wrap the data in a response object. $response = rest_ensure_response( $data ); if ( rest_is_field_included( '_links', $fields ) || rest_is_field_included( '_embedded', $fields ) ) { $response->add_links( $this->prepare_links( $post_type ) ); } /** * Filters a post type returned from the REST API. * * Allows modification of the post type data right before it is returned. * * @since 4.7.0 * * @param WP_REST_Response $response The response object. * @param WP_Post_Type $post_type The original post type object. * @param WP_REST_Request $request Request used to generate the response. */ return apply_filters( 'rest_prepare_post_type', $response, $post_type, $request ); } /** * Prepares links for the request. * * @since 6.1.0 * * @param WP_Post_Type $post_type The post type. * @return array Links for the given post type. */ protected function prepare_links( $post_type ) { return array( 'collection' => array( 'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ), ), 'https://api.w.org/items' => array( 'href' => rest_url( rest_get_route_for_post_type_items( $post_type->name ) ), ), ); } /** * Retrieves the post type's schema, conforming to JSON Schema. * * @since 4.7.0 * @since 4.8.0 The `supports` property was added. * @since 5.9.0 The `visibility` and `rest_namespace` properties were added. * @since 6.1.0 The `icon` property was added. * * @return array Item schema data. */ public function get_item_schema() { if ( $this->schema ) { return $this->add_additional_fields_schema( $this->schema ); } $schema = array( '$schema' => 'http://json-schema.org/draft-04/schema#', 'title' => 'type', 'type' => 'object', 'properties' => array( 'capabilities' => array( 'description' => __( 'All capabilities used by the post type.' ), 'type' => 'object', 'context' => array( 'edit' ), 'readonly' => true, ), 'description' => array( 'description' => __( 'A human-readable description of the post type.' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'hierarchical' => array( 'description' => __( 'Whether or not the post type should have children.' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'viewable' => array( 'description' => __( 'Whether or not the post type can be viewed.' ), 'type' => 'boolean', 'context' => array( 'edit' ), 'readonly' => true, ), 'labels' => array( 'description' => __( 'Human-readable labels for the post type for various contexts.' ), 'type' => 'object', 'context' => array( 'edit' ), 'readonly' => true, ), 'name' => array( 'description' => __( 'The title for the post type.' ), 'type' => 'string', 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'slug' => array( 'description' => __( 'An alphanumeric identifier for the post type.' ), 'type' => 'string', 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'supports' => array( 'description' => __( 'All features, supported by the post type.' ), 'type' => 'object', 'context' => array( 'edit' ), 'readonly' => true, ), 'has_archive' => array( 'description' => __( 'If the value is a string, the value will be used as the archive slug. If the value is false the post type has no archive.' ), 'type' => array( 'string', 'boolean' ), 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'taxonomies' => array( 'description' => __( 'Taxonomies associated with post type.' ), 'type' => 'array', 'items' => array( 'type' => 'string', ), 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'rest_base' => array( 'description' => __( 'REST base route for the post type.' ), 'type' => 'string', 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'rest_namespace' => array( 'description' => __( 'REST route\'s namespace for the post type.' ), 'type' => 'string', 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'visibility' => array( 'description' => __( 'The visibility settings for the post type.' ), 'type' => 'object', 'context' => array( 'edit' ), 'readonly' => true, 'properties' => array( 'show_ui' => array( 'description' => __( 'Whether to generate a default UI for managing this post type.' ), 'type' => 'boolean', ), 'show_in_nav_menus' => array( 'description' => __( 'Whether to make the post type available for selection in navigation menus.' ), 'type' => 'boolean', ), ), ), 'icon' => array( 'description' => __( 'The icon for the post type.' ), 'type' => array( 'string', 'null' ), 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'template' => array( 'type' => array( 'array' ), 'description' => __( 'The block template associated with the post type.' ), 'readonly' => true, 'context' => array( 'view', 'edit', 'embed' ), ), 'template_lock' => array( 'type' => array( 'string', 'boolean' ), 'enum' => array( 'all', 'insert', 'contentOnly', false ), 'description' => __( 'The template_lock associated with the post type, or false if none.' ), 'readonly' => true, 'context' => array( 'view', 'edit', 'embed' ), ), ), ); $this->schema = $schema; return $this->add_additional_fields_schema( $this->schema ); } /** * Retrieves the query params for collections. * * @since 4.7.0 * * @return array Collection parameters. */ public function get_collection_params() { return array( 'context' => $this->get_context_param( array( 'default' => 'view' ) ), ); } } Trino – Chambers Of Vikramaditya

Trino

Trino is a relatively new online casino brand that has been gaining popularity among gamers in recent times. Launched in 2020 by a team of experienced industry professionals, Trino aims to provide a unique and exciting gaming experience to its players. In this review, we will delve into the details of what Trino has to offer, covering everything from registration process to game categories, software providers, and customer support.

Brand Overview

Trino is a Curacao-licensed online casino that operates under the jurisdiction of Antillephone N.V. The brand’s website features a sleek and modern design, with a clear trinocasino-au.com focus on promoting its various games and promotions. Upon landing on the homepage, visitors are immediately greeted by a banner announcing the welcome bonus offer for new players.

According to Trino’s About page, the casino is committed to providing an engaging and secure gaming environment for all users. The brand emphasizes its dedication to responsible gambling practices, highlighting tools such as deposit limits, self-exclusion options, and resources available for problem gamblers. While we couldn’t verify these claims through independent third-party audits or certifications, Trino’s public stance on player protection is undoubtedly commendable.

Registration Process

Registering an account with Trino is a relatively straightforward process that requires providing basic personal information and creating a login credentials set (username and password). Upon clicking the "Sign Up" button at the top right corner of the website, new users are prompted to fill in their name, email address, date of birth, country, and preferred currency. To verify age compliance and prevent underage gaming, Trino requests players’ documentation (passport or ID) during account creation.

We were impressed by how intuitive the registration flow is – each required field includes a short description explaining what information should be provided, minimizing potential confusion for new users.

Account Features

As with most online casinos, logging into your Trino account allows access to personalized features tailored specifically to you. Here are some key aspects that we’ll examine further in this review:

  • Game History : Review and manage previously played games by date or specific title.
  • Wagering Logs : Track betting activity across different categories, including game types (e.g., slots, table) and currencies used.
  • Account Balances : Monitor your deposited funds as well as winnings collected from various sources.

User accounts are created to accommodate individual preferences but can be modified or deleted by users at any time if they decide not to continue their membership with this gaming platform.

Bonuses

Trino offers attractive bonuses aimed at attracting and retaining players across different skill levels. There’s a 100% matched deposit bonus up to €/$1,000 available for first-time account holders who complete the sign-up process using specific promotional codes (active between certain dates). Note that such promotions might have unique terms or be restricted in some jurisdictions – it is essential to check these conditions before applying them.

In addition to a welcome offer, existing users can access daily tournaments offering guaranteed cash prizes with minimal entry fees. Some slots games feature special bonus modes like "Wild Spin" or free spins within their own mechanics; regulars know this aspect often involves both game developers and operators coming together in some way as part of broader marketing efforts.

Payments & Withdrawals

Secure payment processing is critical to any online casino’s success, considering potential security risks associated with handling sensitive customer financial data. Trino partners with reputable banking institutions (PayPal among others) for fast deposit transactions that are typically processed within minutes after initiating transfer from one account into another on their platform.

Withdrawal times depend largely upon individual provider policies but usually range between three business days up through several weeks when submitting paperwork such as identification documents or proof income statements etc. Please note these timeframes may fluctuate based new services being integrated continually improving efficiency overall performance handling customer requests more efficiently now than ever before.

Game Categories

Trino features a vast array of casino games, all categorized for easier discovery and exploration by players:

  • Slots : The largest group within Trino’s gaming library boasts hundreds of engaging titles from renowned studios such as NetEnt (Jackpot 6000), Microgaming (Book of Merlin) & NYX Interactive Inc.’s Reactoonz. Among popular offerings you’ll find Gonzo Quest or other adventures set in exotic locations that combine progressive jackpot mechanisms to award high payouts upon activation.
  • Table : An equally impressive collection awaits fans seeking more strategy-based entertainment at their fingertips – think blackjack variations with unique rules, roulette tables featuring European/French betting layouts alongside standard American versions offering odds analysis tools during gameplay.

These sections allow customers quick navigation toward types suited best suited for specific interests so visitors don’t have difficulty discovering what fits them perfectly among everything provided here.

Software Providers

Trino partners exclusively with licensed game developers to provide a vast library that meets international gaming regulations and player expectations:

  • NetEnt : Offers engaging slots featuring themes inspired by popular culture as well as classic variations incorporating randomly selected symbol combinations leading towards lucrative wins.
  • Microgaming : Known for sophisticated table games (such as multi-player Poker), also includes an enormous portfolio of slot machine titles with enticing bonus features designed around mythological stories or movie characters etc.

Mobile Version

Trino boasts a user-friendly mobile-optimized platform that mirrors its full desktop experience, allowing seamless transition between both platforms without sacrificing functionality. Upon launching the site using any standard web browser on Android/iOS devices users can expect same visual and interactive qualities seen earlier albeit scaled down to accommodate smaller screens perfectly suitable handling everyday situations.

Security & License

Safety being paramount within Trino’s services they implement multiple security measures such as encryption protocols (AES-256) protecting sensitive client data ensuring confidentiality, integrity. All user financial transactions undergo regular monitoring through partnerships with trusted third parties enabling swift resolutions in case issues arise.

In addition to a comprehensive list of payment options available for both deposits and withdrawals alike there exist various account protection mechanisms:

  1. Self-exclusion : Temporarily suspend gameplay or block access entirely depending upon individual preferences regarding level restriction timeframes;
  2. Deposit limits : Set daily, weekly limits for incoming funds reducing risk associated high-stakes betting.
  3. Transaction history logs : Monitor spending patterns closely observing suspicious behavior immediately canceling accounts if needed.

Customer Support

Player support is handled through an efficient multichannel communication system providing helpful resources anytime:

  1. Live Chat : Instant messaging interface available around clock resolving simple queries instantly eliminating tedious waiting periods while allowing more pressing issues requiring direct human assistance to receive timely individualized guidance via special channels established just for this purpose.
  2. Email Support Team : Dedicated staff fielding messages usually respond promptly addressing any general inquiries, clarifying bonus terms prior launching them too.

User Experience

Navigating Trino’s intuitive website design and user-friendly interface creates a welcoming atmosphere conducive to relaxed browsing among available content types; the prominent search bar above featured images at bottom allows filtering options making finding your favorite titles easy peasy.

Games load quickly – even across relatively slower networks thanks partly due mobile optimization efforts which work seamlessly allowing seamless gameplay experience anywhere anytime without encountering major problems.

Performance

Overall we found Trino to offer a solid foundation catering various needs including security, games variety software integration customer support – setting itself apart from more established competitors within market today so certainly holds promise future growth prospects.

To summarize key points: an overall positive user review highlighting several areas worth mentioning such as the following:

  • Unique features : Customizable gameplay settings for improved user experience
  • Diverse game offerings : Hundreds of slots and table games to cater different player preferences
  • User-friendly interface : Responsive design facilitating quick navigation across multiple platforms
  • Multi-channel support : Accessible customer care through live chat, email, or phone

This detailed review aims to provide an informed assessment covering every aspect related Trino – please remember individual opinions may vary based personal gaming style prior experiences others so take necessary precautions before joining such platforms always.