| [ Index ] |
PHP Cross Reference of Drupal 6 (gatewave) |
[Summary view] [Print] [Text view]
1 <?php 2 // $Id: subscribe.inc,v 1.1 2009/06/18 03:24:59 dww Exp $ 3 4 function project_issue_subscribe($form_state, $project_nid = 0) { 5 global $user; 6 7 if (!valid_email_address($user->mail)) { 8 drupal_set_message(t('You need to provide a valid e-mail address to subscribe to issue e-mails. Please edit your user information.'), 'error'); 9 drupal_goto('user/'. $user->uid .'/edit'); 10 } 11 12 $levels = array(0 => t('None'), 1 => t('Own issues'), 2 => t('All issues')); 13 14 if ($project_nid) { 15 if (!is_numeric($project_nid)) { 16 $project_nid = db_result(db_query(db_rewrite_sql("SELECT p.nid FROM {project_projects} p WHERE p.uri = '%s'", 'p'), $project_nid)); 17 } 18 if (!$project_nid) { 19 return drupal_not_found(); 20 } 21 22 $project = node_load($project_nid); 23 project_project_set_breadcrumb($project, TRUE); 24 25 $level = db_result(db_query('SELECT level FROM {project_subscriptions} WHERE nid = %d AND uid = %d', $project->nid, $user->uid)); 26 $form['single'] = array( 27 '#type' => 'value', 28 '#value' => $project->nid, 29 ); 30 $form['#project'] = array( 31 '#type' => 'value', 32 '#value' => $project, 33 ); 34 $form['subscribe'] = array( 35 '#type' => 'markup', 36 '#value' => '<p>'. t('Subscribe to receive e-mail notification when an issue for this project is updated.') .'</p>', 37 ); 38 $form['options']['#tree'] = TRUE; 39 $form['options'][$project->nid] = array( 40 '#type' => 'radios', 41 '#title' => t('Subscribe to @project issues', array('@project' => $project->title)), 42 '#default_value' => isset($level) ? $level : 0, 43 '#options' => $levels, 44 ); 45 46 } 47 else { 48 49 $form['buttons']['all'] = array( 50 '#type' => 'markup', 51 '#value' => t('All projects'), 52 ); 53 foreach ($levels as $key => $level) { 54 $form['buttons'][$level] = array( 55 '#type' => 'submit', 56 '#name' => 'all', 57 '#value' => $level, 58 ); 59 } 60 $nids = array(); 61 62 $result = db_query(db_rewrite_sql("SELECT s.nid, n.title, s.level, p.uri FROM {project_subscriptions} s INNER JOIN {node} n ON n.nid = s.nid INNER JOIN {project_projects} p ON n.nid = p.nid WHERE n.type = 'project_project' AND n.status = 1 AND s.uid = %d ORDER BY n.title", 's'), $user->uid); 63 while ($project = db_fetch_object($result)) { 64 $form['project'][$project->nid]['title'] = array( 65 '#value' => l($project->title, "node/$project->nid"), 66 ); 67 foreach ($levels as $key => $level) { 68 if ($project->level == $key) { 69 $status[$project->nid] = $key; 70 } 71 } 72 $nids[] = $project->nid; 73 } 74 75 if (empty($nids)) { 76 $placeholders = ''; 77 } 78 else { 79 $placeholders = " AND n.nid NOT IN (". implode(',', array_fill(0, count($nids), '%d')) .")"; 80 } 81 82 $result = db_query(db_rewrite_sql("SELECT n.nid, n.title, p.uri FROM {node} n INNER JOIN {project_projects} p ON n.nid = p.nid WHERE n.type = 'project_project' AND n.status = 1". ($nids ? $placeholders : "") ." ORDER BY n.title"), $nids); 83 while ($project = db_fetch_object($result)) { 84 $form['project'][$project->nid]['title'] = array( 85 '#value' => l($project->title, "node/$project->nid"), 86 ); 87 $nids[] = $project->nid; 88 } 89 90 foreach ($nids as $nid) { 91 $form['options']['#tree'] = TRUE; 92 $form['options'][$nid] = array( 93 '#type' => 'radios', 94 '#default_value' => isset($status[$nid]) ? $status[$nid] : 0, 95 '#options' => $levels, 96 ); 97 } 98 } 99 $form['submit'] = array( 100 '#type' => 'submit', 101 '#value' => t('Subscribe'), 102 ); 103 return $form; 104 } 105 106 function theme_project_issue_subscribe($form) { 107 global $user; 108 109 $output = ''; 110 111 if (!isset($form['single'])) { 112 $levels = array(0 => t('None'), 1 => t('Own issues'), 2 => t('All issues')); 113 $headers = array_merge(array(t('Project')), $levels); 114 115 $row = array(); 116 foreach (element_children($form['buttons']) as $key) { 117 $row[] = drupal_render($form['buttons'][$key]); 118 } 119 $rows = array($row); 120 121 foreach (element_children($form['project']) as $key) { 122 $row = array(drupal_render($form['project'][$key]['title'])); 123 foreach ($levels as $level => $name) { 124 $row[] = drupal_render($form['options'][$key][$level]); 125 } 126 $rows[] = $row; 127 } 128 $output = theme('table', $headers, $rows); 129 } 130 131 $output .= drupal_render($form); 132 return $output; 133 } 134 135 function project_issue_subscribe_submit($form, &$form_state) { 136 137 global $user; 138 $all = $form_state['clicked_button']['#value']; 139 140 $levels = array(0 => t('None'), 1 => t('Own issues'), 2 => t('All issues')); 141 142 // Remove previous subscriptions for user. 143 if (isset($form_state['values']['single'])) { 144 db_query('DELETE FROM {project_subscriptions} WHERE nid = %d AND uid = %d', $form_state['values']['single'], $user->uid); 145 } 146 else { 147 db_query('DELETE FROM {project_subscriptions} WHERE uid = %d', $user->uid); 148 } 149 150 $_level = array_search($all, $levels); 151 152 foreach ($form_state['values']['options'] as $nid => $level) { 153 if ($_level !== 0 && $level !== 0) { 154 db_query('INSERT INTO {project_subscriptions} (nid, uid, level) VALUES (%d, %d, %d)', $nid, $user->uid, $_level ? $_level : $level); 155 } 156 } 157 drupal_set_message(t('Subscription settings saved.')); 158 159 if (isset($form['single'])) { 160 $form_state['redirect'] = 'project/issues/subscribe-mail/'. $form['#project']['#value']->project['uri']; 161 } 162 else { 163 $form_state['redirect'] = 'project/issues/subscribe-mail'; 164 } 165 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Thu Mar 24 11:18:33 2011 | Cross-referenced by PHPXref 0.7 |