View source
<?php
include_once 'commons_status_streams.features.inc';
function commons_status_streams_menu() {
$items = array();
$items['stream'] = array(
'title' => 'Stream',
'page callback' => 'commons_status_streams_stream_page',
'access callback' => TRUE,
'description' => 'An activity dashboard page.',
'file' => 'commons_status_streams.pages.inc',
'type' => MENU_NORMAL_ITEM,
'weight' => 1,
'menu_name' => 'primary-links',
);
$items['node/%node/group-activity'] = array(
'title' => 'Group Activity',
'page callback' => 'commons_status_streams_stream_page',
'page arguments' => array(
1,
),
'access callback' => 'commons_status_streams_group_activity_access',
'access arguments' => array(
1,
),
'description' => 'An activity dashboard page.',
'file' => 'commons_status_streams.pages.inc',
'type' => MENU_LOCAL_TASK,
'weight' => -1,
);
return $items;
}
function commons_status_streams_group_activity_access($node) {
return og_is_group_type($node->type) && node_access('view', $node);
}
function commons_status_streams_menu_alter(&$items) {
$items['user/%user/view']['title'] = t('Activity stream');
}
function commons_status_streams_form_system_site_information_settings_alter(&$form, $form_state) {
$form['commons_status_streams_auth_frontpage'] = array(
'#type' => 'checkbox',
'#title' => t('Use the activity stream as the front page for authenticated users'),
'#description' => t('If enabled, users who get to the front page by clicking your site name or logo or who are directed to the front page by Drupal will be redirected to their activity stream at <code>/stream</code> if they are logged in. Users can still visit the "normal" front page that anonymous users see by visiting its path directly or by clicking on the "Home" link in the menu.'),
'#default_value' => variable_get('commons_status_streams_auth_frontpage', 0),
);
$form['buttons']['#weight'] = 10;
}
function commons_status_streams_facebook_status_link_alter(&$links, $status) {
unset($links['respond']);
}
function commons_status_streams_init() {
if (variable_get('commons_status_streams_auth_frontpage', 0) && !user_is_anonymous()) {
if (!str_replace(base_path(), '', $_SERVER['REQUEST_URI'])) {
drupal_goto('stream');
}
}
}
function commons_status_streams_enable() {
if (module_exists('userpoints')) {
drupal_install_modules(array(
'fbss_userpoints',
));
}
commons_status_streams_setup_group_context();
}
function commons_status_streams_user($op, &$edit, &$account, $category = NULL) {
if ($op == 'view') {
foreach (array_keys($account->content) as $key) {
$account->content[$key]['#access'] = FALSE;
}
}
}
function commons_status_streams_rules_defaults_alter(&$rules) {
$actions =& $rules['rules']['rules_activity_log_digests_ur_request']['#actions'];
$template_standard = '<div class="activity-log-picture">[requester:picture]</div><div class="activity-log-indent"></div><div class="activity-log-content">[requester:user] is now following [requestee:user]</div>';
$template_grouping = '<div class="activity-log-picture">[requester:picture]</div><div class="activity-log-indent"></div><div class="activity-log-content">[requester:user] is now following [collection]</div>';
$actions[0]['#settings']['templates']['en']['template'] = $template_standard;
$actions[1]['#settings']['templates']['en']['template'] = $template_standard;
$actions[0]['#settings']['grouping']['templates']['en']['template'] = $template_grouping;
$actions[1]['#settings']['grouping']['templates']['en']['template'] = $template_grouping;
$actions =& $rules['rules']['rules_activity_log_ur_request']['#actions'];
$template_standard = '<div class="activity-log-picture">[requester:picture]</div><div class="activity-log-indent"></div><div class="activity-log-content">[requester:user] is now following [requestee:user]</div>';
$template_grouping = '<div class="activity-log-picture">[requester:picture]</div><div class="activity-log-indent"></div><div class="activity-log-content">[requester:user] is now following [collection]</div>';
$actions[0]['#settings']['templates']['en']['template'] = $template_standard;
$actions[1]['#settings']['templates']['en']['template'] = $template_standard;
$actions[0]['#settings']['grouping']['templates']['en']['template'] = $template_grouping;
$actions[1]['#settings']['grouping']['templates']['en']['template'] = $template_grouping;
}
function commons_status_streams_views_default_views_alter(&$views) {
if ($vid = variable_get('facebook_status_tags_vid', FALSE)) {
if (isset($views['facebook_status_tags'])) {
foreach ($views['facebook_status_tags']->display as $id => $display) {
if (isset($views['facebook_status_tags']->display[$id]->display_options['arguments']['has-specific-tag'])) {
$views['facebook_status_tags']->display[$id]->display_options['arguments']['has-specific-tag']['validate_argument_vocabulary'] = array(
$vid => $vid,
);
}
}
}
}
}
function commons_status_streams_setup_group_context() {
$fbss_og_context = array();
$fbss_og_context['context'] = 'group-home-status-box';
$fbss_og_context['view'] = 'activity_log_stream';
$fbss_og_context['visibility'] = 3;
$fbss_og_context['type'] = 'og';
$fbss_og_context['weight'] = -50;
drupal_write_record('facebook_status_contexts', $fbss_og_context, 'type');
}
function commons_status_streams_disable_deprecated_notifications() {
if (module_exists('notifications')) {
$intervals = notifications_send_intervals();
$new_intervals = array(
0 => $intervals[0],
);
variable_set('notifications_send_intervals', $new_intervals);
variable_set('notifications_default_auto', 0);
variable_set('og_notifications_autosubscribe', 0);
$query = db_query("SELECT sid FROM {notifications} WHERE send_interval > 0");
while ($result = db_fetch_object($query)) {
$sids[] = $result->sid;
}
if (!empty($sids)) {
$placeholders = db_placeholders($sids);
foreach (array(
'notifications_fields',
'notifications_queue',
'notifications',
) as $table) {
db_query('DELETE FROM {' . $table . '} WHERE sid IN (' . $placeholders . ')', $sids);
}
drupal_set_message(t('Deleted existing digest subscriptions deprecated by new Facebook-style Statuses update functionality.'));
}
}
}