diff --git a/groupsorg.info b/groupsorg.info index d30904e..d28ce02 100644 --- a/groupsorg.info +++ b/groupsorg.info @@ -1,5 +1,6 @@ core = "6.x" dependencies[] = "aggregator" +dependencies[] = "better_exposed_filters" dependencies[] = "calendar_ical" dependencies[] = "comment" dependencies[] = "ctools" @@ -10,11 +11,13 @@ dependencies[] = "number" dependencies[] = "og" dependencies[] = "og_views" dependencies[] = "search" +dependencies[] = "signup" dependencies[] = "taxonomy" dependencies[] = "userreference" dependencies[] = "views_bulk_operations" dependencies[] = "views" dependencies[] = "views_content" +dependencies[] = "views_customfield" dependencies[] = "votingapi" description = "Site specific bric a brac including features for Views and content types" features[content][] = "event-field_event_type" @@ -53,5 +56,7 @@ features[views][] = "questionable_comments" features[views][] = "site_admins" features[views][] = "spamattack_revisions" features[views][] = "upcoming_group" +features[views][] = "events_list" +features[views][] = "recent_signups" features[views_api][] = "api:2" name = "groups.drupal.org misc" diff --git a/groupsorg.module b/groupsorg.module index aa8cb2c..949894f 100644 --- a/groupsorg.module +++ b/groupsorg.module @@ -98,6 +98,10 @@ function groupsorg_block($op = 'list', $delta = 0) { 'info' => 'Groups quick statistics', 'cache' => BLOCK_CACHE_GLOBAL, ); + $blocks['groupsorg_event_stats'] = array( + 'info' => 'Drupal events activity', + 'cache' => BLOCK_CACHE_GLOBAL, + ); return $blocks; case 'view': $function = $delta. '_block_view'; @@ -192,8 +196,6 @@ function groupsorg_menu() { return $items; } - - /** * @todo: move this to a block? Gain caching... * @see groupsorg_init(). @@ -213,6 +215,38 @@ function groupsorg_stats_block_view() { } /** + * @todo: move this to a block? Gain caching... + * @see groupsorg_init(). + */ +function groupsorg_event_stats_block_view() { + $sql = "SELECT COUNT(*) FROM {node} node + LEFT JOIN {content_type_event} event ON node.vid = event.vid + WHERE node.status=1 AND node.type IN ('event') AND FROM_UNIXTIME(event.field_start7_value, '%Y') = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 YEAR), '%Y')"; + $count = db_result(db_query($sql)); + $block['content'] .= t('@events events in last year
', array('@events' => $count)); + + $sql = "SELECT COUNT(*) FROM {node} node + LEFT JOIN {content_type_event} event ON node.vid = event.vid + WHERE node.status=1 AND node.type IN ('event') AND FROM_UNIXTIME(event.field_start7_value, '%Y') = FROM_UNIXTIME(unix_timestamp(), '%Y') + AND field_event_type_value IN ('regional')"; + $count = db_result(db_query($sql)); + $block['content'] .= t('@events camps this year
', array('@events' => $count)); + + $date_from = strtotime('last Monday'); + $date_to = strtotime('this Monday'); + $count = db_result(db_query("SELECT COUNT(*) FROM {signup_log} signup_log WHERE signup_time >= %d AND signup_time < %d;", $date_from, $date_to)); + $block['content'] .= t('@events events signup last week
', array('@events' => $count)); + + $sql = "SELECT COUNT(*) FROM {node} node + LEFT JOIN {content_type_event} event ON node.vid = event.vid + WHERE node.status=1 AND node.type IN ('event') AND FROM_UNIXTIME(event.field_start7_value, '%Y-%m') = DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 MONTH), '%Y-%m')"; + $count = db_result(db_query($sql)); + $block['content'] .= t('@events events coming up next month
', array('@events' => $count)); + + return $block; +} + +/** * moshe wants it this way. most people should see our tower of babel. */ function groupsorg_cron() { @@ -389,6 +423,8 @@ function groupsorg_sprites_images_ignore() { * Implements hook_form_alter(). */ function groupsorg_form_alter(&$form, $form_state, $form_id) { + global $user; + // For group admins on node forms that are a group type where they are editing an existing post, make the group selection box "big". if ($form['#id'] == 'node-form' && $form_id == $form['type']['#value'] .'_node_form' && !empty($form['nid']['#value']) && user_access('administer organic groups') && og_is_group_post_type($form['type']['#value'])) { if (isset($form['og_nodeapi']['visible'])) { @@ -398,7 +434,6 @@ function groupsorg_form_alter(&$form, $form_state, $form_id) { } // Prevent users from signing up for nodes that require attendees' full name. if ($form_id == 'signup_form') { - global $user; $account = user_load($user->uid); $node = node_load($form['nid']['#value']); if (strpos($node->body, '') !== FALSE && empty($account->profile_full_name)) { @@ -412,6 +447,12 @@ function groupsorg_form_alter(&$form, $form_state, $form_id) { ); } } + + // Hide checkboxes "Only my signups" and "Only events in my group" from anonymous users in the /events list + if ($form_id == 'views_exposed_form' && $form['#id'] == 'views-exposed-form-event-list-page-1' && $user->uid == 0) { + $form['uid']['#access'] = FALSE; + $form['signup_user_current']['#access'] = FALSE; + } } /** diff --git a/groupsorg.views_default.inc b/groupsorg.views_default.inc index 8a46e30..59ac31f 100644 --- a/groupsorg.views_default.inc +++ b/groupsorg.views_default.inc @@ -9106,5 +9106,759 @@ You may also want to check out a similar page \' . $text . \'\'; +} +?>', + 'exclude' => 0, + 'id' => 'phpcode', + 'table' => 'customfield', + 'field' => 'phpcode', + 'override' => array( + 'button' => 'Override', + ), + 'relationship' => 'none', + ), + 'field_start7_value' => array( + 'label' => '', + 'alter' => array( + 'alter_text' => 0, + 'text' => '', + 'make_link' => 0, + 'path' => '', + 'absolute' => 0, + 'link_class' => '', + 'alt' => '', + 'rel' => '', + 'prefix' => '', + 'suffix' => '', + 'target' => '', + 'help' => '', + 'trim' => 0, + 'max_length' => '', + 'word_boundary' => 1, + 'ellipsis' => 1, + 'html' => 0, + 'strip_tags' => 0, + ), + 'empty' => '', + 'hide_empty' => 0, + 'empty_zero' => 0, + 'hide_alter_empty' => 1, + 'link_to_node' => 0, + 'label_type' => 'none', + 'format' => 'default', + 'multiple' => array( + 'multiple_number' => '', + 'multiple_from' => '', + 'multiple_to' => '', + 'group' => TRUE, + ), + 'repeat' => array( + 'show_repeat_rule' => '', + ), + 'fromto' => array( + 'fromto' => 'both', + ), + 'exclude' => 0, + 'id' => 'field_start7_value', + 'table' => 'node_data_field_start7', + 'field' => 'field_start7_value', + 'override' => array( + 'button' => 'Override', + ), + 'relationship' => 'none', + ), + 'field_event_type_value' => array( + 'label' => '', + 'alter' => array( + 'alter_text' => 0, + 'text' => '', + 'make_link' => 0, + 'path' => '', + 'absolute' => 0, + 'link_class' => '', + 'alt' => '', + 'rel' => '', + 'prefix' => '', + 'suffix' => '', + 'target' => '', + 'help' => '', + 'trim' => 0, + 'max_length' => '', + 'word_boundary' => 1, + 'ellipsis' => 1, + 'html' => 0, + 'strip_tags' => 0, + ), + 'empty' => '', + 'hide_empty' => 0, + 'empty_zero' => 0, + 'hide_alter_empty' => 1, + 'link_to_node' => 0, + 'label_type' => 'none', + 'format' => 'default', + 'multiple' => array( + 'group' => TRUE, + 'multiple_number' => '', + 'multiple_from' => '', + 'multiple_reversed' => FALSE, + ), + 'exclude' => 0, + 'id' => 'field_event_type_value', + 'table' => 'node_data_field_event_type', + 'field' => 'field_event_type_value', + 'override' => array( + 'button' => 'Override', + ), + 'relationship' => 'none', + ), + 'title' => array( + 'label' => '', + 'alter' => array( + 'alter_text' => 1, + 'text' => '

[title]

', + 'make_link' => 0, + 'path' => '', + 'absolute' => 0, + 'link_class' => '', + 'alt' => '', + 'rel' => '', + 'prefix' => '', + 'suffix' => '', + 'target' => '', + 'help' => '', + 'trim' => 0, + 'max_length' => '', + 'word_boundary' => 1, + 'ellipsis' => 1, + 'html' => 0, + 'strip_tags' => 0, + ), + 'empty' => '', + 'hide_empty' => 0, + 'empty_zero' => 0, + 'hide_alter_empty' => 1, + 'link_to_node' => 1, + 'exclude' => 0, + 'id' => 'title', + 'table' => 'node', + 'field' => 'title', + 'override' => array( + 'button' => 'Override', + ), + 'relationship' => 'none', + ), + 'field_url_value' => array( + 'label' => '', + 'alter' => array( + 'alter_text' => 0, + 'text' => '', + 'make_link' => 0, + 'path' => '', + 'absolute' => 0, + 'link_class' => '', + 'alt' => '', + 'rel' => '', + 'prefix' => '', + 'suffix' => '', + 'target' => '', + 'help' => '', + 'trim' => 0, + 'max_length' => '', + 'word_boundary' => 1, + 'ellipsis' => 1, + 'html' => 0, + 'strip_tags' => 0, + ), + 'empty' => '', + 'hide_empty' => 0, + 'empty_zero' => 0, + 'hide_alter_empty' => 1, + 'link_to_node' => 0, + 'label_type' => 'none', + 'format' => 'default', + 'multiple' => array( + 'group' => TRUE, + 'multiple_number' => '', + 'multiple_from' => '', + 'multiple_reversed' => FALSE, + ), + 'exclude' => 0, + 'id' => 'field_url_value', + 'table' => 'node_data_field_url', + 'field' => 'field_url_value', + 'relationship' => 'none', + ), + 'group_nid' => array( + 'label' => 'Groups', + 'alter' => array( + 'alter_text' => FALSE, + 'text' => '', + 'make_link' => FALSE, + 'path' => '', + 'absolute' => '', + 'alt' => '', + 'rel' => '', + 'link_class' => '', + 'prefix' => '', + 'suffix' => '', + 'target' => '', + 'trim' => FALSE, + 'max_length' => '', + 'word_boundary' => TRUE, + 'ellipsis' => TRUE, + 'strip_tags' => FALSE, + 'html' => FALSE, + ), + 'empty' => '', + 'hide_empty' => 0, + 'empty_zero' => 0, + 'hide_alter_empty' => 1, + 'type' => 'separator', + 'separator' => ', ', + 'exclude' => 0, + 'id' => 'group_nid', + 'table' => 'og_ancestry', + 'field' => 'group_nid', + 'override' => array( + 'button' => 'Override', + ), + 'relationship' => 'none', + ), + )); + $handler->override_option('sorts', array( + 'field_start7_value' => array( + 'order' => 'ASC', + 'delta' => -1, + 'id' => 'field_start7_value', + 'table' => 'node_data_field_start7', + 'field' => 'field_start7_value', + 'override' => array( + 'button' => 'Override', + ), + 'relationship' => 'none', + ), + )); + $handler->override_option('filters', array( + 'status' => array( + 'operator' => '=', + 'value' => '1', + 'group' => '0', + 'exposed' => FALSE, + 'expose' => array( + 'operator' => FALSE, + 'label' => '', + ), + 'id' => 'status', + 'table' => 'node', + 'field' => 'status', + 'override' => array( + 'button' => 'Override', + ), + 'relationship' => 'none', + ), + 'field_event_type_value_many_to_one' => array( + 'operator' => 'or', + 'value' => array(), + 'group' => '0', + 'exposed' => TRUE, + 'expose' => array( + 'use_operator' => 0, + 'operator' => 'field_event_type_value_many_to_one_op', + 'identifier' => 'field_event_type_value_many_to_one', + 'label' => '', + 'bef_filter_description' => '', + 'bef_format' => 'bef', + 'optional' => 1, + 'single' => 0, + 'remember' => 0, + 'reduce' => 0, + 'bef_select_all_none' => 0, + 'bef_collapsible' => 0, + ), + 'id' => 'field_event_type_value_many_to_one', + 'table' => 'node_data_field_event_type', + 'field' => 'field_event_type_value_many_to_one', + 'override' => array( + 'button' => 'Override', + ), + 'relationship' => 'none', + 'reduce_duplicates' => 0, + ), + 'signup_user_current' => array( + 'operator' => '=', + 'value' => 'All', + 'group' => '0', + 'exposed' => TRUE, + 'expose' => array( + 'operator' => '', + 'identifier' => 'signup_user_current', + 'label' => 'Only my signups', + 'bef_filter_description' => '', + 'bef_format' => 'bef_single', + 'optional' => 1, + 'remember' => 0, + 'bef_select_all_none' => 0, + 'bef_collapsible' => 0, + ), + 'id' => 'signup_user_current', + 'table' => 'signup_log', + 'field' => 'signup_user_current', + 'relationship' => 'none', + 'override' => array( + 'button' => 'Override', + ), + ), + 'uid' => array( + 'operator' => '=', + 'value' => 'All', + 'group' => '0', + 'exposed' => TRUE, + 'expose' => array( + 'operator' => '', + 'identifier' => 'uid', + 'label' => 'Only events in my group', + 'bef_filter_description' => '', + 'bef_format' => 'bef_single', + 'optional' => 1, + 'remember' => 0, + 'bef_select_all_none' => 0, + 'bef_collapsible' => 0, + ), + 'id' => 'uid', + 'table' => 'og_uid', + 'field' => 'uid', + 'override' => array( + 'button' => 'Override', + ), + 'relationship' => 'group_nid', + ), + 'date_filter' => array( + 'operator' => '>=', + 'value' => array( + 'value' => NULL, + 'min' => '2012-01-01 00:00:00', + 'max' => '2012-01-01 00:00:00', + 'default_date' => 'now', + 'default_to_date' => '', + ), + 'group' => '0', + 'exposed' => FALSE, + 'expose' => array( + 'operator' => FALSE, + 'label' => '', + ), + 'date_fields' => array( + 'node_data_field_start7.field_start7_value' => 'node_data_field_start7.field_start7_value', + ), + 'date_method' => 'AND', + 'granularity' => 'day', + 'form_type' => 'date_select', + 'default_date' => 'now', + 'default_to_date' => '', + 'year_range' => '-3:+3', + 'id' => 'date_filter', + 'table' => 'node', + 'field' => 'date_filter', + 'override' => array( + 'button' => 'Override', + ), + 'relationship' => 'none', + ), + )); + $handler->override_option('access', array( + 'type' => 'none', + )); + $handler->override_option('cache', array( + 'type' => 'none', + )); + $handler->override_option('footer', 'View as a
Calendar or Ical Feed'); + $handler->override_option('footer_format', '1'); + $handler->override_option('footer_empty', 0); + $handler->override_option('empty', 'Sorry, no events found.'); + $handler->override_option('empty_format', '1'); + $handler->override_option('use_pager', '1'); + $handler->override_option('distinct', 1); + $handler->override_option('style_options', array( + 'grouping' => '', + )); + $handler = $view->new_display('page', 'Page', 'page_1'); + $handler->override_option('title', 'Upcoming events'); + $handler->override_option('path', 'events'); + $handler->override_option('menu', array( + 'type' => 'normal', + 'title' => 'Events', + 'description' => '', + 'weight' => '3', + 'name' => 'primary-links', + )); + $handler->override_option('tab_options', array( + 'type' => 'none', + 'title' => '', + 'description' => '', + 'weight' => 0, + 'name' => 'navigation', + )); + + $views[$view->name] = $view; + + // Exported view: recent_signups + $view = new view; + $view->name = 'recent_signups'; + $view->description = ''; + $view->tag = ''; + $view->base_table = 'signup_log'; + $view->core = 6; + $view->api_version = '2'; + $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */ + $handler = $view->new_display('default', 'Defaults', 'default'); + $handler->override_option('relationships', array( + 'nid' => array( + 'label' => 'Signup node', + 'required' => 0, + 'id' => 'nid', + 'table' => 'signup_log', + 'field' => 'nid', + 'override' => array( + 'button' => 'Override', + ), + 'relationship' => 'none', + ), + 'uid' => array( + 'label' => 'Signup user', + 'required' => 0, + 'id' => 'uid', + 'table' => 'signup_log', + 'field' => 'uid', + 'override' => array( + 'button' => 'Override', + ), + 'relationship' => 'none', + ), + )); + $handler->override_option('fields', array( + 'name' => array( + 'label' => '', + 'alter' => array( + 'alter_text' => 0, + 'text' => '', + 'make_link' => 0, + 'path' => '', + 'absolute' => 0, + 'link_class' => '', + 'alt' => '', + 'rel' => '', + 'prefix' => '', + 'suffix' => '', + 'target' => '', + 'help' => '', + 'trim' => 0, + 'max_length' => '', + 'word_boundary' => 1, + 'ellipsis' => 1, + 'html' => 0, + 'strip_tags' => 0, + ), + 'empty' => '', + 'hide_empty' => 0, + 'empty_zero' => 0, + 'hide_alter_empty' => 1, + 'link_to_user' => 1, + 'overwrite_anonymous' => 0, + 'anonymous_text' => '', + 'exclude' => 1, + 'id' => 'name', + 'table' => 'users', + 'field' => 'name', + 'relationship' => 'uid', + 'override' => array( + 'button' => 'Override', + ), + ), + 'title' => array( + 'label' => '', + 'alter' => array( + 'alter_text' => 0, + 'text' => '', + 'make_link' => 0, + 'path' => '', + 'absolute' => 0, + 'link_class' => '', + 'alt' => '', + 'rel' => '', + 'prefix' => '', + 'suffix' => '', + 'target' => '', + 'help' => '', + 'trim' => 0, + 'max_length' => '', + 'word_boundary' => 1, + 'ellipsis' => 1, + 'html' => 0, + 'strip_tags' => 0, + ), + 'empty' => '', + 'hide_empty' => 0, + 'empty_zero' => 0, + 'hide_alter_empty' => 1, + 'link_to_node' => 1, + 'exclude' => 1, + 'id' => 'title', + 'table' => 'node', + 'field' => 'title', + 'relationship' => 'nid', + 'override' => array( + 'button' => 'Override', + ), + ), + 'picture' => array( + 'label' => '', + 'alter' => array( + 'alter_text' => 0, + 'text' => '', + 'make_link' => 0, + 'path' => '', + 'absolute' => 0, + 'link_class' => '', + 'alt' => '', + 'rel' => '', + 'prefix' => '', + 'suffix' => '', + 'target' => '', + 'help' => '', + 'trim' => 0, + 'max_length' => '', + 'word_boundary' => 1, + 'ellipsis' => 1, + 'html' => 0, + 'strip_tags' => 0, + ), + 'empty' => '', + 'hide_empty' => 0, + 'empty_zero' => 0, + 'hide_alter_empty' => 1, + 'exclude' => 0, + 'id' => 'picture', + 'table' => 'users', + 'field' => 'picture', + 'relationship' => 'uid', + 'override' => array( + 'button' => 'Override', + ), + ), + 'field_start7_value' => array( + 'label' => '', + 'alter' => array( + 'alter_text' => 0, + 'text' => '', + 'make_link' => 0, + 'path' => '', + 'absolute' => 0, + 'link_class' => '', + 'alt' => '', + 'rel' => '', + 'prefix' => '', + 'suffix' => '', + 'target' => '', + 'help' => '', + 'trim' => 0, + 'max_length' => '', + 'word_boundary' => 1, + 'ellipsis' => 1, + 'html' => 0, + 'strip_tags' => 0, + ), + 'empty' => '', + 'hide_empty' => 0, + 'empty_zero' => 0, + 'hide_alter_empty' => 1, + 'link_to_node' => 0, + 'label_type' => 'none', + 'format' => 'events_signup_block', + 'multiple' => array( + 'multiple_number' => '', + 'multiple_from' => '', + 'multiple_to' => '', + 'group' => TRUE, + ), + 'repeat' => array( + 'show_repeat_rule' => '', + ), + 'fromto' => array( + 'fromto' => 'value', + ), + 'exclude' => 1, + 'id' => 'field_start7_value', + 'table' => 'node_data_field_start7', + 'field' => 'field_start7_value', + 'relationship' => 'nid', + 'override' => array( + 'button' => 'Override', + ), + ), + 'nothing' => array( + 'label' => '', + 'alter' => array( + 'text' => '
[name] is attending [title]
+
[field_start7_value]
', + 'make_link' => 0, + 'path' => '', + 'absolute' => 0, + 'link_class' => '', + 'alt' => '', + 'rel' => '', + 'prefix' => '', + 'suffix' => '', + 'target' => '', + 'help' => '', + 'trim' => 0, + 'max_length' => '', + 'word_boundary' => 1, + 'ellipsis' => 1, + 'html' => 0, + 'strip_tags' => 0, + ), + 'empty' => '', + 'hide_empty' => 0, + 'empty_zero' => 0, + 'hide_alter_empty' => 1, + 'exclude' => 0, + 'id' => 'nothing', + 'table' => 'views', + 'field' => 'nothing', + 'override' => array( + 'button' => 'Override', + ), + 'relationship' => 'none', + ), + )); + $handler->override_option('sorts', array( + 'signup_time' => array( + 'order' => 'DESC', + 'granularity' => 'second', + 'id' => 'signup_time', + 'table' => 'signup_log', + 'field' => 'signup_time', + 'override' => array( + 'button' => 'Override', + ), + 'relationship' => 'none', + ), + )); + $handler->override_option('access', array( + 'type' => 'none', + )); + $handler->override_option('cache', array( + 'type' => 'none', + )); + $handler->override_option('title', 'Recent signups'); + $handler->override_option('items_per_page', 5); + $handler = $view->new_display('block', 'Block', 'block_1'); + $handler->override_option('block_description', ''); + $handler->override_option('block_caching', -1); + + $views[$view->name] = $view; + return $views; }