2015-08-17 17:00:26 -07:00
< ? php
/**
* @ file
* Describes hooks provided by the RESTful Web Services module .
*/
/**
* @ addtogroup hooks
* @ {
*/
/**
* Alter the resource plugin definitions .
*
* @ param array $definitions
* The collection of resource definitions .
*/
function hook_rest_resource_alter ( & $definitions ) {
if ( isset ( $definitions [ 'entity:node' ])) {
// We want to handle REST requests regarding nodes with our own plugin
// class.
$definitions [ 'entity:node' ][ 'class' ] = 'Drupal\mymodule\Plugin\rest\resource\NodeResource' ;
// Serialized nodes should be expanded to my specific node class.
$definitions [ 'entity:node' ][ 'serialization_class' ] = 'Drupal\mymodule\Entity\MyNode' ;
}
// We don't want Views to show up in the array of plugins at all.
unset ( $definitions [ 'entity:view' ]);
}
/**
* Alter the REST type URI .
*
2017-04-13 15:53:35 +01:00
* @ deprecated in Drupal 8.3 . x and will be removed before Drupal 9.0 . 0. Use
* hook_serialization_type_uri_alter () instead . This exists solely for BC .
*
2015-08-17 17:00:26 -07:00
* Modules may wish to alter the type URI generated for a resource based on the
* context of the serializer / normalizer operation .
*
* @ param string $uri
* The URI to alter .
* @ param array $context
* The context from the serializer / normalizer operation .
*
* @ see \Symfony\Component\Serializer\SerializerInterface :: serialize ()
* @ see \Symfony\Component\Serializer\SerializerInterface :: deserialize ()
* @ see \Symfony\Component\Serializer\NormalizerInterface :: normalize ()
* @ see \Symfony\Component\Serializer\DenormalizerInterface :: denormalize ()
*/
2017-04-13 15:53:35 +01:00
function hook_rest_type_uri_alter ( & $uri , $context = []) {
2015-08-17 17:00:26 -07:00
if ( $context [ 'mymodule' ] == TRUE ) {
2017-04-13 15:53:35 +01:00
$base = \Drupal :: config ( 'serialization.settings' ) -> get ( 'link_domain' );
2015-08-17 17:00:26 -07:00
$uri = str_replace ( $base , 'http://mymodule.domain' , $uri );
}
}
/**
* Alter the REST relation URI .
*
2017-04-13 15:53:35 +01:00
* @ deprecated in Drupal 8.3 . x and will be removed before Drupal 9.0 . 0. Use
* hook_serialization_relation_uri_alter () instead . This exists solely for BC .
*
2015-08-17 17:00:26 -07:00
* Modules may wish to alter the relation URI generated for a resource based on
* the context of the serializer / normalizer operation .
*
* @ param string $uri
* The URI to alter .
* @ param array $context
* The context from the serializer / normalizer operation .
*
* @ see \Symfony\Component\Serializer\SerializerInterface :: serialize ()
* @ see \Symfony\Component\Serializer\SerializerInterface :: deserialize ()
* @ see \Symfony\Component\Serializer\NormalizerInterface :: normalize ()
* @ see \Symfony\Component\Serializer\DenormalizerInterface :: denormalize ()
*/
2017-04-13 15:53:35 +01:00
function hook_rest_relation_uri_alter ( & $uri , $context = []) {
2015-08-17 17:00:26 -07:00
if ( $context [ 'mymodule' ] == TRUE ) {
2017-04-13 15:53:35 +01:00
$base = \Drupal :: config ( 'serialization.settings' ) -> get ( 'link_domain' );
2015-08-17 17:00:26 -07:00
$uri = str_replace ( $base , 'http://mymodule.domain' , $uri );
}
}
/**
* @ } End of " addtogroup hooks " .
*/