FALSE, ); $hooks = islandora_invoke_hook_list(ISLANDORA_DERVIATIVE_CREATION_HOOK, $object->models, array()); uasort($hooks, 'drupal_sort_weight'); $results = array(); if (array_key_exists('source_dsid', $options)) { $hooks = array_filter($hooks, function($filter_hook) use($options) { return array_key_exists('source_dsid', $filter_hook) && $filter_hook['source_dsid'] == $options['source_dsid']; }); } if (array_key_exists('destination_dsid', $options)) { $hooks = array_filter($hooks, function($filter_hook) use($options) { return array_key_exists('destination_dsid', $filter_hook) && $filter_hook['destination_dsid'] == $options['destination_dsid']; }); } foreach ($hooks as $hook) { if (isset($hook['file'])) { require_once $hook['file']; } foreach ($hook['function'] as $function) { $logging = call_user_func($function, $object, $options['force']); if (!empty($logging)) { $results[] = $logging; } } } return $results; } /** * Handles the logging of derivative messages. * * @param array $logging_results * An array of messages describing the outcome of the derivative events. * Each individual message array has the following structure: * - success: Bool denoting whether the operation was successful. * - messages: An array structure containing: * - message: A string passed through t() describing the * outcome of the operation. * - message_sub: (Optional) Substitutions to be passed along to t() or * watchdog. * - type: A string denoting whether the output is to be * drupal_set_messaged (dsm) or watchdogged (watchdog). * - severity: (Optional) A severity level / status to be used when * logging messages. Uses the defaults of drupal_set_message and * watchdog if not defined. */ function islandora_derivative_logging(array $logging_results) { foreach ($logging_results as $result) { foreach ($result['messages'] as $message) { if ($message['type'] === 'dsm') { drupal_set_message(filter_xss(format_string($message['message'], isset($message['message_sub']) ? $message['message_sub'] : array())), isset($message['severity']) ? $message['severity'] : 'status'); } else { watchdog('islandora', $message['message'], isset($message['message_sub']) ? $message['message_sub'] : array(), isset($message['severity']) ? $message['severity'] : WATCHDOG_NOTICE); } } } }