diff --git a/includes/uuid.views.inc b/includes/uuid.views.inc new file mode 100644 index 0000000..1a70c75 --- /dev/null +++ b/includes/uuid.views.inc @@ -0,0 +1,96 @@ + $schema) { + $base_table = str_replace('uuid_', '', $table); + + $field = array_shift(array_keys($schema['fields'])); + + $data[$table]['table'] = array( + 'group' => 'UUID', + 'join' => array( + $base_table => array( + 'left_field' => $field, + 'field' => $field, + ), + ) + ); + + $data[$table]['uuid'] = array( + 'title' => t('@table UUID', array('@table' => ucwords($base_table))), + 'help' => t( + 'Universally Unique Identifier for @table objects.', + array('@table' => ucwords($base_table)) + ), + 'field' => array( + 'handler' => 'views_handler_field', + 'click sortable' => TRUE, + ), + 'filter' => array( + 'handler' => 'views_handler_filter_string', + 'allow empty' => TRUE, + 'help' => 'Filter on a UUID', + ), + 'argument' => array( + 'handler' => 'views_handler_argument_string', + 'help' => 'Argument on a UUID', + ), + 'sort' => array( + 'handler' => 'views_handler_sort', + 'help' => 'Sort on UUID', + ), + ); + } + + return $data; +} + +/** + * Implementation of hook_views_plugins(). + */ +function uuid_views_plugins() { + $path = drupal_get_path('module', 'uuid') . '/includes'; + $plugins = array( + 'argument validator' => array( + 'uuid_uuid' => array( + 'title' => t('UUID'), + 'handler' => 'uuid_plugin_argument_validate_uuid', + 'path' => $path, + ), + 'uuid_user' => array( + 'title' => t('User UUID'), + 'handler' => 'uuid_plugin_argument_validate_user_uuid', + 'parent' => 'uuid_uuid', + 'path' => $path, + ), + 'uuid_node' => array( + 'title' => t('Node UUID'), + 'handler' => 'uuid_plugin_argument_validate_node_uuid', + 'parent' => 'uuid_uuid', + 'path' => $path, + ), + ), + 'argument default' => array( + 'uuid_user' => array( + 'title' => t('UUID of the logged-in user'), + 'handler' => 'uuid_plugin_argument_user', + 'parent' => 'fixed', + 'path' => $path, + ), + ), + ); + return $plugins; +} \ No newline at end of file diff --git a/includes/uuid_plugin_argument_user.inc b/includes/uuid_plugin_argument_user.inc new file mode 100644 index 0000000..d4ea7e0 --- /dev/null +++ b/includes/uuid_plugin_argument_user.inc @@ -0,0 +1,19 @@ +uid); + if (!empty($account->uuid)) { + return $account->uuid; + } + } +} \ No newline at end of file diff --git a/includes/uuid_plugin_argument_validate_node_uuid.inc b/includes/uuid_plugin_argument_validate_node_uuid.inc new file mode 100644 index 0000000..05cb962 --- /dev/null +++ b/includes/uuid_plugin_argument_validate_node_uuid.inc @@ -0,0 +1,21 @@ + $schema) { - $base_table = str_replace('uuid_', '', $table); - - $field = array_shift(array_keys($schema['fields'])); - - $data[$table]['table'] = array( - 'group' => 'UUID', - 'join' => array( - $base_table => array( - 'left_field' => $field, - 'field' => $field, - ), - ) - ); - - $data[$table]['uuid'] = array( - 'title' => t('@table UUID', array('@table' => ucwords($base_table))), - 'help' => t( - 'Universally Unique Identifier for @table objects.', - array('@table' => ucwords($base_table)) - ), - 'field' => array( - 'handler' => 'views_handler_field', - 'click sortable' => TRUE, - ), - 'filter' => array( - 'handler' => 'views_handler_filter_string', - 'allow empty' => TRUE, - 'help' => 'Filter on a UUID', - ), - 'argument' => array( - 'handler' => 'views_handler_argument_string', - 'help' => 'Argument on a UUID', - ), - 'sort' => array( - 'handler' => 'views_handler_sort', - 'help' => 'Sort on UUID', - ), - ); - } - - return $data; -}