Index: workflow_ng_log.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/workflow_ng/workflow_ng_log/Attic/workflow_ng_log.module,v retrieving revision 1.1.2.1 diff -u -r1.1.2.1 workflow_ng_log.module --- workflow_ng_log.module 18 Jan 2008 19:05:05 -0000 1.1.2.1 +++ workflow_ng_log.module 19 Jan 2008 12:07:43 -0000 @@ -74,3 +74,316 @@ function workflow_ng_log_action_message_submit($form_id, $form_values) { return workflow_ng_token_get_settings(array('type', 'category', 'message'), $form_values); } + +/** + * Helper function for workflow_ng_log_views_tables; adds definitions common to + * user log messages and node log messages to a views table definition. + * @param $table A views table definition to extend + * @param $entity_upper Name of the capitalised entity (Node or User) + * @param $entity_lower Name of the entity (node or user) + */ +function _workflow_ng_log_tables_common(&$table, $entity_upper, $entity_lower) { + $group = t('Per-@entity Log: ', array('@entity' => $entity_upper)); + $table['fields'] = array( + 'type' => array( + 'name' => $group . t('Message Type'), + 'sortable' => TRUE, + 'help' => t('Displays the type given to the log message.'), + ), + 'category' => array( + 'name' => $group . t('Message Category'), + 'sortable' => TRUE, + 'help' => t('Displays the category given to the log message.'), + ), + 'message' => array( + 'name' => $group . t('Message'), + 'sortable' => TRUE, + 'help' => t('Displays the actual log message.'), + ), + 'time' => array( + 'name' => $group . t('Message Time'), + 'sortable' => TRUE, + 'help' => t('Displays the time at which the message was logged.') .' '. + t('The option field may be used to specify the custom date format as it\'s required by the date() function or if "as time ago" has been chosen to customize the granularity of the time interval.'), + 'handler' => views_handler_field_dates(), + 'option' => 'string', + ), + ); + $table['sorts'] = array( + 'time' => array( + 'name' => $group . t('Message Time'), + 'help' => t("Sort by the time at which log messages were created."), + 'handler' => 'views_handler_sort_date', + 'option' => views_handler_sort_date_options(), + ), + ); + $table['filters'] = array( + 'type' => array( + 'name' => $group . t('Message Type'), + 'help' => t('Filter per-@entity log messages based on their type.', array('@entity' => $entity_lower)), + 'operator' => 'views_handler_operator_like', + 'handler' => 'views_handler_filter_like', + ), + 'category' => array( + 'name' => $group . t('Message Category'), + 'help' => t('Filter per-@entity log messages based on their category.', array('@entity' => $entity_lower)), + 'operator' => 'views_handler_operator_like', + 'handler' => 'views_handler_filter_like', + ), + ); +} + +/** + * Implementation of hook_views_tables(): + * Presents fields and filters for log messages. + */ +function workflow_ng_log_views_tables() { + $tables['workflow_ng_log_node'] = array( + 'name' => 'workflow_ng_log_node', + 'provider' => 'internal', // won't show up in external list. + 'join' => array( + 'type' => 'inner', + 'left' => array( + 'table' => 'node', + 'field' => 'nid', + ), + 'right' => array( + 'field' => 'nid', + ), + ), + ); + _workflow_ng_log_tables_common($tables['workflow_ng_log_node'], 'Node', 'node'); + + if (module_exists('usernode')) { + $tables['workflow_ng_log_user'] = array( + 'name' => 'workflow_ng_log_user', + 'provider' => 'internal', // won't show up in external list. + 'join' => array( + 'type' => 'inner', + 'left' => array( + 'table' => 'usernode', + 'field' => 'uid', + ), + 'right' => array( + 'field' => 'uid', + ), + ), + ); + _workflow_ng_log_tables_common($tables['workflow_ng_log_user'], 'User', 'user'); + } + + return $tables; +} + +/** + * Implementation of hook_views_default_views(): + * Generate a default views: a list of all user log messages and a list of all node log messages + */ +function workflow_ng_log_views_default_views() { + $view = new stdClass(); + $view->name = 'userlog_msgs'; + $view->description = 'All messages to per-user logs'; + $view->access = array(); + $view->view_args_php = ''; + $view->page = TRUE; + $view->page_title = 'User log messages'; + $view->page_header = ''; + $view->page_header_format = '1'; + $view->page_footer = ''; + $view->page_footer_format = '1'; + $view->page_empty = ''; + $view->page_empty_format = '1'; + $view->page_type = 'table'; + $view->url = 'workflow-ng/userlogs'; + $view->use_pager = TRUE; + $view->nodes_per_page = '10'; + $view->menu = TRUE; + $view->menu_title = 'User log messages'; + $view->menu_tab = FALSE; + $view->menu_tab_weight = '0'; + $view->menu_tab_default = FALSE; + $view->menu_tab_default_parent = NULL; + $view->menu_tab_default_parent_type = 'tab'; + $view->menu_parent_tab_weight = '0'; + $view->menu_parent_title = ''; + $view->sort = array(); + $view->argument = array(); + $view->field = array( + array( + 'tablename' => 'usernode_users', + 'field' => 'name', + 'label' => 'User', + 'handler' => 'usernode_views_handler_field_username_link', + 'sortable' => '1', + ), + array( + 'tablename' => 'workflow_ng_log_user', + 'field' => 'type', + 'label' => 'Message Type', + 'sortable' => '1', + ), + array( + 'tablename' => 'workflow_ng_log_user', + 'field' => 'category', + 'label' => 'Message Category', + 'sortable' => '1', + ), + array( + 'tablename' => 'workflow_ng_log_user', + 'field' => 'message', + 'label' => 'Message', + 'sortable' => '1', + ), + array( + 'tablename' => 'workflow_ng_log_user', + 'field' => 'time', + 'label' => 'Time', + 'handler' => 'views_handler_field_date_small', + 'sortable' => '1', + 'defaultsort' => 'DESC', + ), + ); + $view->filter = array( + array( + 'tablename' => 'workflow_ng_log_user', + 'field' => 'type', + 'operator' => '=', + 'options' => '', + 'value' => '', + ), + array( + 'tablename' => 'workflow_ng_log_user', + 'field' => 'category', + 'operator' => '=', + 'options' => '', + 'value' => '', + ), + ); + $view->exposed_filter = array( + array( + 'tablename' => 'workflow_ng_log_user', + 'field' => 'type', + 'label' => 'Message Type', + 'optional' => '1', + 'is_default' => '0', + 'operator' => '0', + 'single' => '0', + ), + array( + 'tablename' => 'workflow_ng_log_user', + 'field' => 'category', + 'label' => 'Message Category', + 'optional' => '1', + 'is_default' => '0', + 'operator' => '0', + 'single' => '0', + ), + ); + $view->requires = array(usernode_users, workflow_ng_log_user); + $views[$view->name] = $view; + + $view = new stdClass(); + $view->name = 'contentlog_msgs'; + $view->description = 'All messages to per-content logs'; + $view->access = array(); + $view->view_args_php = ''; + $view->page = TRUE; + $view->page_title = 'Content log messages'; + $view->page_header = ''; + $view->page_header_format = '1'; + $view->page_footer = ''; + $view->page_footer_format = '1'; + $view->page_empty = ''; + $view->page_empty_format = '1'; + $view->page_type = 'table'; + $view->url = 'workflow-ng/contentlogs'; + $view->use_pager = TRUE; + $view->nodes_per_page = '10'; + $view->menu = TRUE; + $view->menu_title = 'Content log messages'; + $view->menu_tab = FALSE; + $view->menu_tab_weight = '0'; + $view->menu_tab_default = FALSE; + $view->menu_tab_default_parent = NULL; + $view->menu_tab_default_parent_type = 'tab'; + $view->menu_parent_tab_weight = '0'; + $view->menu_parent_title = ''; + $view->sort = array(); + $view->argument = array(); + $view->field = array( + array( + 'tablename' => 'node', + 'field' => 'title', + 'label' => 'Title', + 'handler' => 'views_handler_field_nodelink', + 'sortable' => '1', + 'options' => 'link', + ), + array( + 'tablename' => 'workflow_ng_log_node', + 'field' => 'type', + 'label' => 'Message Type', + 'sortable' => '1', + ), + array( + 'tablename' => 'workflow_ng_log_node', + 'field' => 'category', + 'label' => 'Message Category', + 'sortable' => '1', + ), + array( + 'tablename' => 'workflow_ng_log_node', + 'field' => 'message', + 'label' => 'Message', + 'sortable' => '1', + ), + array( + 'tablename' => 'workflow_ng_log_node', + 'field' => 'time', + 'label' => 'Time', + 'handler' => 'views_handler_field_date_small', + 'sortable' => '1', + 'defaultsort' => 'DESC', + ), + ); + $view->filter = array( + array( + 'tablename' => 'workflow_ng_log_node', + 'field' => 'type', + 'operator' => '=', + 'options' => '', + 'value' => '', + ), + array( + 'tablename' => 'workflow_ng_log_node', + 'field' => 'category', + 'operator' => '=', + 'options' => '', + 'value' => '', + ), + ); + $view->exposed_filter = array( + array( + 'tablename' => 'workflow_ng_log_node', + 'field' => 'type', + 'label' => 'Message Type', + 'optional' => '1', + 'is_default' => '0', + 'operator' => '0', + 'single' => '0', + ), + array( + 'tablename' => 'workflow_ng_log_node', + 'field' => 'category', + 'label' => 'Message Category', + 'optional' => '1', + 'is_default' => '0', + 'operator' => '0', + 'single' => '0', + ), + ); + $view->requires = array(node, workflow_ng_log_node); + $views[$view->name] = $view; + + return $views; +}