333 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			333 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /**
 | |
|  * @file
 | |
|  * Provides support for the Views module.
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * Implementation of hook_views_handlers().
 | |
|  */
 | |
| function flag_lists_views_handlers() {
 | |
|   return array(
 | |
|     'info' => array(
 | |
|       'path' => drupal_get_path('module', 'flag_lists') . '/includes',
 | |
|     ),
 | |
|     'handlers' => array(
 | |
|       'flag_lists_handler_field_list' => array(
 | |
|         'parent' => 'views_handler_field',
 | |
|         'file' => 'flag_lists_handler_field_list.inc',
 | |
|       ),
 | |
|       'flag_lists_handler_field_template' => array(
 | |
|         'parent' => 'views_handler_field',
 | |
|         'file' => 'flag_lists_handler_field_template.inc',
 | |
|       ),
 | |
|       'flag_lists_handler_field_list_edit' => array(
 | |
|         'parent' => 'views_handler_field',
 | |
|         'file' => 'flag_lists_handler_field_list_edit.inc',
 | |
|       ),
 | |
|       'flag_lists_handler_field_list_delete' => array(
 | |
|         'parent' => 'views_handler_field',
 | |
|         'file' => 'flag_lists_handler_field_list_delete.inc',
 | |
|       ),
 | |
|       'flag_lists_handler_field_template_types' => array(
 | |
|         'parent' => 'views_handler_field_prerender_list',
 | |
|         'file' => 'flag_lists_handler_field_template_types.inc',
 | |
|       ),
 | |
|       'flag_lists_handler_filter_template' => array(
 | |
|         'parent' => 'views_handler_filter_in_operator',
 | |
|         'file' => 'flag_lists_handler_filter_template.inc',
 | |
|       ),
 | |
|       'flag_lists_handler_argument_fid' => array(
 | |
|         'parent' => 'views_handler_argument_numeric',
 | |
|         'file' => 'flag_lists_handler_argument_fid.inc',
 | |
|     ),
 | |
|     ),
 | |
|   );
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Implementation of hook_views_data_alter().
 | |
|  */
 | |
| function flag_lists_views_data_alter(&$data) {
 | |
| 
 | |
|   // We want access to users table fields.
 | |
|   $data['users']['table']['join']['flag_lists_flags'] = array(
 | |
|     'left_field' => 'uid',
 | |
|     'field' => 'uid',
 | |
|   );
 | |
| 
 | |
|   // We need fid and name form flags' data, and join.
 | |
|   $data['flags'] = array(
 | |
|     'table' => array(
 | |
|       'group' => t('Flag'),
 | |
|       'join' => array(
 | |
|         'flag_lists_flags' => array(
 | |
|           'left_field' => 'pfid',
 | |
|           'field' => 'fid',
 | |
|         ),
 | |
|       ),
 | |
|     ),
 | |
|     'fid' => array(
 | |
|       'title' => t('Flag fid'),
 | |
|       'help' => t('Flag id'),
 | |
|       'field' => array(
 | |
|         'click sortable' => TRUE,
 | |
|       ),
 | |
|       'filter' => array(
 | |
|         'handler' => 'views_handler_filter_numeric',
 | |
|         'allow empty' => TRUE,
 | |
|       ),
 | |
|       'argument' => array(
 | |
|         'handler' => 'views_handler_argument_numeric',
 | |
|       ),
 | |
|       'sort' => array(
 | |
|         'handler' => 'views_handler_sort',
 | |
|       ),
 | |
|     ),
 | |
|     'name' => array(
 | |
|       'title' => t('Template name'),
 | |
|       'help' => t('The name of the list template flag'),
 | |
|       'field' => array(
 | |
|         'handler' => 'flag_lists_handler_field_template',
 | |
|         'click sortable' => TRUE,
 | |
|       ),
 | |
|       'filter' => array(
 | |
|         'handler' => 'flag_lists_handler_filter_template',
 | |
|         'allow empty' => TRUE,
 | |
|       ),
 | |
|       'sort' => array(
 | |
|         'handler' => 'views_handler_sort',
 | |
|       ),
 | |
|     ),
 | |
|   );
 | |
| 
 | |
|   // Add the checkbox for flagging nodes VBO style, minus batch API
 | |
|   foreach (entity_get_info() as $entity_type => $info) {
 | |
|     if (isset($info['base table']) && $info['base table'] == 'node' && isset($data[$info['base table']])) {
 | |
|       $data[$info['base table']]['flag_lists_ops'] = array(
 | |
|         'title' => t('Flag lists operations'),
 | |
|         'help' => t('Provide a checkbox to select the row for flag lists operations.'),
 | |
|         'real field' => $info['entity keys']['id'],
 | |
|         'field' => array(
 | |
|           'handler' => 'flag_lists_handler_field_ops',
 | |
|           'click sortable' => FALSE,
 | |
|         ),
 | |
|       );
 | |
|       break;
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Implementation of hook_views_data().
 | |
|  */
 | |
| function flag_lists_views_data() {
 | |
|   $data = array();
 | |
| 
 | |
|   // flag_lists_flags data
 | |
|   $data['flag_lists_flags'] = array(
 | |
|     'table' => array(
 | |
|       'base' => array(
 | |
|         'field' => 'fid',
 | |
|         'title' => t('Flag lists'),
 | |
|         'help' => 'User created flag lists',
 | |
|         'weight' => 10,
 | |
|         'database' => 'default',
 | |
|       ),
 | |
|       'group' => t('Flag lists'),
 | |
|       'join' => array(
 | |
|         'node' => array(
 | |
|           'table' => 'flag_lists_flags',
 | |
|           'left_table' => 'flag_lists_content',
 | |
|           'left_field' => 'fid',
 | |
|           'field' => 'fid',
 | |
|         ),
 | |
|       ),
 | |
|     ),
 | |
|     'fid' => array(
 | |
|       'title' => t('fid'),
 | |
|       'help' => t('Flag list id, required for Flag lists operationis\'s "unflag" action.'),
 | |
|       'field' => array(
 | |
|         'handler' => 'flag_lists_handler_field_list',
 | |
|         'click sortable' => TRUE,
 | |
|       ),
 | |
|       'filter' => array(
 | |
|         'handler' => 'views_handler_filter_numeric',
 | |
|         'allow empty' => TRUE,
 | |
|       ),
 | |
|       'argument' => array(
 | |
|         'handler' => 'flag_lists_handler_argument_fid',
 | |
|       ),
 | |
|       'sort' => array(
 | |
|         'handler' => 'views_handler_sort',
 | |
|       ),
 | |
|     ),
 | |
|     'pfid' => array(
 | |
|       'title' => t('pfid'),
 | |
|       'help' => t('Template flag id'),
 | |
|       'field' => array(
 | |
|         'handler' => 'flag_lists_handler_field_pfid',
 | |
|         'click sortable' => TRUE,
 | |
|       ),
 | |
|       'filter' => array(
 | |
|         'handler' => 'views_handler_filter_numeric',
 | |
|         'allow empty' => TRUE,
 | |
|       ),
 | |
|       'argument' => array(
 | |
|         'handler' => 'views_handler_argument_numeric',
 | |
|       ),
 | |
|       'sort' => array(
 | |
|         'handler' => 'views_handler_sort',
 | |
|       ),
 | |
|     ),
 | |
| 
 | |
|     'uid' => array(
 | |
|       'title' => t('Uid'),
 | |
|       'help' => t('The list owner\'s uid'), // The help that appears on the UI,
 | |
|       'field' => array(
 | |
|         'handler' => 'views_handler_field_user',
 | |
|         'click sortable' => TRUE,
 | |
|       ),
 | |
|       'argument' => array(
 | |
|         'handler' => 'views_handler_argument_user_uid',
 | |
|         'name field' => 'name', // display this field in the summary
 | |
|       ),
 | |
|       'filter' => array(
 | |
|         'title' => t('Name'),
 | |
|         'handler' => 'views_handler_filter_user_name',
 | |
|       ),
 | |
|       'sort' => array(
 | |
|         'handler' => 'views_handler_sort',
 | |
|       ),
 | |
|     ),
 | |
|     'name' => array(
 | |
|       'title' => t('machine name'),
 | |
|       'help' => t('Machine name of the list'),
 | |
|       'field' => array(
 | |
|         'handler' => 'flag_lists_handler_field_list',
 | |
|         'click sortable' => TRUE,
 | |
|       ),
 | |
|       'filter' => array(
 | |
|         'handler' => 'views_handler_filter_string',
 | |
|         'allow empty' => TRUE,
 | |
|       ),
 | |
|       'argument' => array(
 | |
|         'handler' => 'views_handler_argument_string',
 | |
|       ),
 | |
|       'sort' => array(
 | |
|         'handler' => 'views_handler_sort',
 | |
|       ),
 | |
|     ),
 | |
|     'title' => array(
 | |
|       'title' => t('List title'),
 | |
|       'help' => t('Title of the list'),
 | |
|       'field' => array(
 | |
|         'click sortable' => TRUE,
 | |
|         'handler' => 'flag_lists_handler_field_list',
 | |
|       ),
 | |
|       'filter' => array(
 | |
|         'handler' => 'views_handler_filter_string',
 | |
|         'allow empty' => TRUE,
 | |
|       ),
 | |
|       'argument' => array(
 | |
|         'handler' => 'views_handler_argument_string',
 | |
|       ),
 | |
|       'sort' => array(
 | |
|         'handler' => 'views_handler_sort',
 | |
|       ),
 | |
|     ),
 | |
|     'edit_list' => array(
 | |
|       'field' => array(
 | |
|         'title' => t('Edit link'),
 | |
|         'help' => t('Link to edit the list title'),
 | |
|         'handler' => 'flag_lists_handler_field_list_edit',
 | |
|       ),
 | |
|     ),
 | |
|     'delete_list' => array(
 | |
|       'field' => array(
 | |
|         'title' => t('Delete link'),
 | |
|         'help' => t('Link to delete the list'),
 | |
|         'handler' => 'flag_lists_handler_field_list_delete',
 | |
|       ),
 | |
|     ),
 | |
|   );
 | |
| 
 | |
|   // Flag_lists_content data
 | |
| 
 | |
|   $data['flag_lists_content'] = array(
 | |
|     'table' => array(
 | |
|       'join' => array(
 | |
|         'node' => array(
 | |
|           'left_field' => 'nid',
 | |
|           'field' => 'content_id',
 | |
|         ),
 | |
|       ),
 | |
|       'group' => t('Flag lists'),
 | |
|     ),
 | |
|     'uid' => array(
 | |
|       'relationship' => array(
 | |
|         'title' => t('User'),
 | |
|         'help' => t('The user who listed this node'),
 | |
|         'base' => 'users',
 | |
|         'handler' => 'views_handler_relationship',
 | |
|         'label' => t('List user'),
 | |
|       ),
 | |
|     ),
 | |
|     'content_id' => array(
 | |
|       'relationship' => array(
 | |
|         'title' => t('Node'),
 | |
|         'help' => t('The node that has been listed'),
 | |
|         'base' => 'node',
 | |
|         'handler' => 'views_handler_relationship',
 | |
|         'label' => t('Listed content'),
 | |
|       ),
 | |
|     ),
 | |
|     'timestamp' => array(
 | |
|       'title' => t('Time listed'),
 | |
|       'help' => t('The time this node was listed'),
 | |
|       'field' => array(
 | |
|       'handler' => 'views_handler_field_date',
 | |
|         'click sortable' => TRUE,
 | |
|       ),
 | |
|       'filter' => array(
 | |
|         'handler' => 'views_handler_filter_numeric',
 | |
|         'allow empty' => TRUE,
 | |
|       ),
 | |
|       'argument' => array(
 | |
|         'handler' => 'views_handler_argument_numeric',
 | |
|       ),
 | |
|       'sort' => array(
 | |
|         'handler' => 'views_handler_sort',
 | |
|       ),
 | |
|     ),
 | |
|   );
 | |
| 
 | |
|   // Flag_lists_types data
 | |
| 
 | |
|   $data['flag_lists_types'] = array(
 | |
|     'table' => array(
 | |
|       'group' => t('Flag lists'),
 | |
|       'join' => array(
 | |
|         'flag_lists_flags' => array(
 | |
|           'table' => 'flag_lists_types',
 | |
|           'type' => 'INNER',
 | |
|           'left_table' => 'flags',
 | |
|           'left_field' => 'name',
 | |
|           'field' => 'name',
 | |
|         ),
 | |
|       ),
 | |
|     ),
 | |
|     'type' => array(
 | |
|       'title' => t('Template types'),
 | |
|       'help' => t('Node types that can be listed by lists using this template'),
 | |
|       'field' => array(
 | |
|         'click sortable' => FALSE,
 | |
|         'handler' => 'flag_lists_handler_field_template_types',
 | |
|       ),
 | |
|     ),
 | |
|   );
 | |
|   return $data;
 | |
| }
 | 
