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, '[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' => '