To extend the Registry Object API, a registry object handler is required.

A list of available handler is available at applications/registry/services/method_handlers/registry_object_handlers/

A handler will use any available resource that is available in the get_resource() function available in the registry_objects API handler file. This is currently limited to:

Using these resource or any other resource, the handler should be able to return an array of result.

For example, this is the description handler located at applications/registry/services/method_handlers/registry_object_handlers/descriptions.php

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require_once(SERVICES_MODULE_PATH . 'method_handlers/registry_object_handlers/_ro_handler.php');
/**
* Descriptions handler
* As an example on how to get data from multiple source, index and xml
* @author Minh Duc Nguyen <minh.nguyen@ands.org.au>
* @return array list of description with types
*/
class Descriptions extends ROHandler {
	function handle() {
		$result = array();
        if ($this->xml) {
            foreach($this->xml->{$this->ro->class}->description as $description){
                $type = (string) $description['type'];
                if($type!='rights' && $type!='accessRights'){
                    $description_str = html_entity_decode((string) $description);
                    $result[] = array(
                        'type' => $type,
                        'description' => $description_str
                    );
                }
            }
        }
        return $result;
	}
}

To add a registry object handler, a new handler with a unique name must be registered in the array available near the top of the registry objects API file, located at applications/registry/services/method_handlers/registry_objects.php as  a private $valid_methods array. 

Then a file with a similar name must be placed in applications/registry/services/method_handlers/registry_object_handlers/
This will will contain a class that extends ROHandler with a mandatory function of handle() that returns the result we want

Example

  1. We want to create a handler that returns the registry object name
  2. We add name to the $valid_methods array
  3. We create a name.php file in applications/registry/services/method_handlers/registry_object_handlers/

Content of the name.php file will be

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require_once(SERVICES_MODULE_PATH . 'method_handlers/registry_object_handlers/_ro_handler.php');
class name extends ROHandler {
     function handle() {
          $result = array();
          if ($ro) { $result[] = $ro->title ;}
          return $result;
     }
}

By going to registry/services/api/registry_objects/145382/name, we’ll see the expected result