3.0, 'path' => drupal_get_path('module', 'islandora_collection') . '/include', ); } /** * Implements hook_node_info(). */ function islandora_collection_node_info() { return array( ISLANDORA_COLLECTION_CONTENT_TYPE => array( 'name' => t("Collection"), 'base' => ISLANDORA_COLLECTION_CONTENT_TYPE, 'description' => t("A Drupal node modeling an pcdm:Collection."), ), ); } /** * Implements hook_form(). */ function islandora_collection_form($node, array &$form_state) { return node_content_form($node, $form_state); } /** * Implements hook_rdf_mapping(). */ function islandora_collection_rdf_mapping() { module_load_include('inc', 'islandora', 'include/rdf_mapping'); $rdf_types = array( ISLANDORA_PCDM_COLLECTION_RDF_TYPE, ISLANDORA_COLLECTION_RDF_TYPE, ); return islandora_get_default_rdf_mapping(ISLANDORA_COLLECTION_CONTENT_TYPE, $rdf_types); } /** * Implements hook_node_postinsert(). */ function islandora_collection_node_postinsert($node) { if (isset($_SERVER['HTTP_IGNORE_HOOKS']) && strcmp(strtolower($_SERVER['HTTP_IGNORE_HOOKS']), "true") == 0) { return; } // Exit early if it's not a collection. if (strcmp($node->type, ISLANDORA_COLLECTION_CONTENT_TYPE) != 0) { return; } $nodes = entity_uuid_load('node', array($node->uuid)); // Exit early if the node never was successfully inserted in the database. if (empty($nodes)) { return; } $node = array_pop($nodes); // Don't forget the trailing slash. httprl_request("http://localhost:8181/islandora/rest/collection/", array( 'method' => 'POST', 'data' => json_encode($node), )); $response = httprl_send_request(); } /** * Implements hook_node_postupdate(). */ function islandora_collection_node_postupdate($node) { if (isset($_SERVER['HTTP_IGNORE_HOOKS']) && strcmp(strtolower($_SERVER['HTTP_IGNORE_HOOKS']), "true") == 0) { return; } // Exit early if it's not a collection. if (strcmp($node->type, ISLANDORA_COLLECTION_CONTENT_TYPE) != 0) { return; } // Unfortunately, there's no way to tell if the db transaction got rolled // back in this hook, so we'll default to doing it anyway so as not to miss // any updates. Open to suggestions on this one. But we gotta do post_action // hooks otherwise things can get crazy if the db transaction hasn't closed. $nodes = entity_uuid_load('node', array($node->uuid)); // Exit early if something has gone wrong and there's no node info. if (empty($nodes)) { return; } $node = array_pop($nodes); $uuid = $node->uuid; httprl_request("http://localhost:8181/islandora/rest/collection/$uuid", array( 'method' => 'PUT', 'data' => json_encode($node), )); $response = httprl_send_request(); } /** * Implements hook_node_postdelete(). */ function islandora_collection_node_postdelete($node) { if (isset($_SERVER['HTTP_IGNORE_HOOKS']) && strcmp(strtolower($_SERVER['HTTP_IGNORE_HOOKS']), "true") == 0) { return; } // Exit early if it's not a collection. if (strcmp($node->type, ISLANDORA_COLLECTION_CONTENT_TYPE) != 0) { return; } $uuid = $node->uuid; httprl_request("http://localhost:8181/islandora/rest/collection/$uuid", array( 'method' => 'DELETE', )); $response = httprl_send_request(); }