@@ -15,41 +15,41 @@ discard block |
||
15 | 15 | */ |
16 | 16 | function boincteam_sync() { |
17 | 17 | |
18 | - // Get the list of teams to import |
|
19 | - db_set_active('boinc_rw'); |
|
20 | - $boinc_teams = db_query(' |
|
18 | + // Get the list of teams to import |
|
19 | + db_set_active('boinc_rw'); |
|
20 | + $boinc_teams = db_query(' |
|
21 | 21 | SELECT id, name, description, userid, create_time, seti_id |
22 | 22 | FROM team |
23 | 23 | WHERE mod_time > FROM_UNIXTIME(%d)', |
24 | 24 | variable_get('boincteam_last_sync', 0) |
25 | - ); |
|
26 | - db_set_active('default'); |
|
25 | + ); |
|
26 | + db_set_active('default'); |
|
27 | 27 | |
28 | - $existing_teams = array(); |
|
28 | + $existing_teams = array(); |
|
29 | 29 | |
30 | - // Get the list of teams already in Drupal to be sure we're not importing |
|
31 | - // any twice |
|
32 | - $result = db_query(' |
|
30 | + // Get the list of teams already in Drupal to be sure we're not importing |
|
31 | + // any twice |
|
32 | + $result = db_query(' |
|
33 | 33 | SELECT nid, team_id FROM {boincteam}' |
34 | - ); |
|
35 | - while ($row = db_fetch_object($result)) { |
|
34 | + ); |
|
35 | + while ($row = db_fetch_object($result)) { |
|
36 | 36 | $existing_teams[$row->team_id] = $row->nid; |
37 | - } |
|
37 | + } |
|
38 | 38 | |
39 | - while ($boinc_team = db_fetch_object($boinc_teams)) { |
|
39 | + while ($boinc_team = db_fetch_object($boinc_teams)) { |
|
40 | 40 | $success = NULL; |
41 | 41 | if (isset($existing_teams[$boinc_team->id])) { |
42 | - if ($boinc_team->seti_id > 0) { |
|
42 | + if ($boinc_team->seti_id > 0) { |
|
43 | 43 | // Sync BOINC-wide teams |
44 | 44 | $nid = $existing_teams[$boinc_team->id]; |
45 | 45 | $success = boincteam_import($boinc_team, $nid); |
46 | - } |
|
46 | + } |
|
47 | 47 | } |
48 | 48 | else { |
49 | - // Import new teams created by RPC or ops/team_import.php |
|
50 | - $success = boincteam_import($boinc_team); |
|
49 | + // Import new teams created by RPC or ops/team_import.php |
|
50 | + $success = boincteam_import($boinc_team); |
|
51 | + } |
|
51 | 52 | } |
52 | - } |
|
53 | 53 | } |
54 | 54 | |
55 | 55 | |
@@ -58,58 +58,58 @@ discard block |
||
58 | 58 | */ |
59 | 59 | function boincteam_import($boincteam, $nid = NULL) { |
60 | 60 | |
61 | - $input_format = variable_get('boincimport_input_format', 0); |
|
62 | - $team_type_map = variable_get('boincimport_team_types', array()); |
|
61 | + $input_format = variable_get('boincimport_input_format', 0); |
|
62 | + $team_type_map = variable_get('boincimport_team_types', array()); |
|
63 | 63 | |
64 | - // Save the team type affiliation |
|
65 | - $team_type_tid = $team_type_map[$boincteam->type]; |
|
64 | + // Save the team type affiliation |
|
65 | + $team_type_tid = $team_type_map[$boincteam->type]; |
|
66 | 66 | |
67 | - $boincteam->description = html_entity_decode($boincteam->description, ENT_QUOTES, 'utf-8'); |
|
68 | - // Be sure the text is filtered for the default input format |
|
69 | - $boincteam->description = check_markup($boincteam->description, $input_format); |
|
67 | + $boincteam->description = html_entity_decode($boincteam->description, ENT_QUOTES, 'utf-8'); |
|
68 | + // Be sure the text is filtered for the default input format |
|
69 | + $boincteam->description = check_markup($boincteam->description, $input_format); |
|
70 | 70 | |
71 | - $teaser = node_teaser($boincteam->description); |
|
71 | + $teaser = node_teaser($boincteam->description); |
|
72 | 72 | |
73 | - if ($nid) { |
|
73 | + if ($nid) { |
|
74 | 74 | // Update an existing node |
75 | 75 | $node = node_load($nid); |
76 | 76 | $node->title = $boincteam->name; |
77 | 77 | $node->body = $boincteam->description; |
78 | 78 | $node->teaser = $teaser; |
79 | 79 | $node->uid = boincuser_lookup_uid($boincteam->userid); |
80 | - } |
|
81 | - else { |
|
80 | + } |
|
81 | + else { |
|
82 | 82 | // Construct the team as a new node |
83 | 83 | $node = array( |
84 | - 'type' => 'team', |
|
85 | - 'title' => $boincteam->name, |
|
86 | - 'body' => $boincteam->description, |
|
87 | - 'teaser' => $teaser, |
|
88 | - 'uid' => boincuser_lookup_uid($boincteam->userid), |
|
89 | - 'path' => null, |
|
90 | - 'status' => 1, // published or not - always publish |
|
91 | - 'promote' => 0, |
|
92 | - 'created' => $boincteam->create_time, |
|
93 | - 'comment' => 0, // comments disabled |
|
94 | - 'moderate' => 0, |
|
95 | - 'sticky' => 0, |
|
96 | - 'format' => $input_format |
|
84 | + 'type' => 'team', |
|
85 | + 'title' => $boincteam->name, |
|
86 | + 'body' => $boincteam->description, |
|
87 | + 'teaser' => $teaser, |
|
88 | + 'uid' => boincuser_lookup_uid($boincteam->userid), |
|
89 | + 'path' => null, |
|
90 | + 'status' => 1, // published or not - always publish |
|
91 | + 'promote' => 0, |
|
92 | + 'created' => $boincteam->create_time, |
|
93 | + 'comment' => 0, // comments disabled |
|
94 | + 'moderate' => 0, |
|
95 | + 'sticky' => 0, |
|
96 | + 'format' => $input_format |
|
97 | 97 | ); |
98 | 98 | $node = (object) $node; // node_save requires an object form |
99 | - } |
|
99 | + } |
|
100 | 100 | |
101 | - $node->taxonomy[] = taxonomy_get_term($team_type_tid); |
|
101 | + $node->taxonomy[] = taxonomy_get_term($team_type_tid); |
|
102 | 102 | |
103 | - // Save the team node |
|
104 | - node_save($node); |
|
105 | - $success = ($node->nid) ? TRUE : FALSE; |
|
103 | + // Save the team node |
|
104 | + node_save($node); |
|
105 | + $success = ($node->nid) ? TRUE : FALSE; |
|
106 | 106 | |
107 | - if (!$nid) { |
|
107 | + if (!$nid) { |
|
108 | 108 | // Save the team IDs to a BOINC <--> Drupal reference table, if needed |
109 | 109 | db_query('INSERT INTO {boincteam} (team_id, nid) VALUES (%d, %d)', $boincteam->id, $node->nid); |
110 | - } |
|
110 | + } |
|
111 | 111 | |
112 | - return $success; |
|
112 | + return $success; |
|
113 | 113 | } |
114 | 114 | |
115 | 115 | /** |
@@ -126,25 +126,25 @@ discard block |
||
126 | 126 | * respected. This is useful the list of users are to be contacted. |
127 | 127 | */ |
128 | 128 | function _boincteam_userids($boincteamid, $boincid=TRUE, $respectprivacy=TRUE) { |
129 | - $sql = 'SELECT user.id as id FROM {user} user WHERE user.teamid=%s'; |
|
130 | - if ($respectprivacy) { |
|
129 | + $sql = 'SELECT user.id as id FROM {user} user WHERE user.teamid=%s'; |
|
130 | + if ($respectprivacy) { |
|
131 | 131 | $sql .= ' AND user.send_email=1'; |
132 | - } |
|
132 | + } |
|
133 | 133 | |
134 | - db_set_active('boinc_ro'); |
|
135 | - $dbres = db_query($sql, $boincteamid); |
|
136 | - db_set_active('default'); |
|
134 | + db_set_active('boinc_ro'); |
|
135 | + $dbres = db_query($sql, $boincteamid); |
|
136 | + db_set_active('default'); |
|
137 | 137 | |
138 | - $ids = array(); |
|
139 | - while (($result = db_fetch_object($dbres)) != FALSE) { |
|
138 | + $ids = array(); |
|
139 | + while (($result = db_fetch_object($dbres)) != FALSE) { |
|
140 | 140 | $ids[] = $result->id; |
141 | - } |
|
142 | - if ($boincid) { |
|
141 | + } |
|
142 | + if ($boincid) { |
|
143 | 143 | return $ids; |
144 | - } |
|
145 | - else { |
|
144 | + } |
|
145 | + else { |
|
146 | 146 | return array_map('boincuser_lookup_uid', $ids); |
147 | - } |
|
147 | + } |
|
148 | 148 | } |
149 | 149 | |
150 | 150 | /** |
@@ -158,18 +158,18 @@ discard block |
||
158 | 158 | * respected. This is useful the list of users are to be contacted. |
159 | 159 | */ |
160 | 160 | function _boincteam_emails($boincteamid, $respectprivacy=TRUE) { |
161 | - $sql = 'SELECT user.email_addr as email_addr FROM {user} user WHERE user.teamid=%s'; |
|
162 | - if ($respectprivacy) { |
|
161 | + $sql = 'SELECT user.email_addr as email_addr FROM {user} user WHERE user.teamid=%s'; |
|
162 | + if ($respectprivacy) { |
|
163 | 163 | $sql .= ' AND user.send_email=1'; |
164 | - } |
|
164 | + } |
|
165 | 165 | |
166 | - db_set_active('boinc_ro'); |
|
167 | - $dbres = db_query($sql, $boincteamid); |
|
168 | - db_set_active('default'); |
|
166 | + db_set_active('boinc_ro'); |
|
167 | + $dbres = db_query($sql, $boincteamid); |
|
168 | + db_set_active('default'); |
|
169 | 169 | |
170 | - $emails = array(); |
|
171 | - while (($result = db_fetch_object($dbres)) != FALSE) { |
|
170 | + $emails = array(); |
|
171 | + while (($result = db_fetch_object($dbres)) != FALSE) { |
|
172 | 172 | $emails[] = $result->email_addr; |
173 | - } |
|
174 | - return $emails; |
|
173 | + } |
|
174 | + return $emails; |
|
175 | 175 | } |
@@ -14,9 +14,9 @@ discard block |
||
14 | 14 | * The definition of the create team form |
15 | 15 | */ |
16 | 16 | function boincteam_create_form(&$form_state) { |
17 | - $form = array(); |
|
17 | + $form = array(); |
|
18 | 18 | |
19 | - $default = array( |
|
19 | + $default = array( |
|
20 | 20 | 'name' => '', |
21 | 21 | 'name_html' => '', |
22 | 22 | 'website' => '', |
@@ -24,105 +24,105 @@ discard block |
||
24 | 24 | 'country' => 0, |
25 | 25 | 'joinable' => TRUE, |
26 | 26 | 'description' => '', |
27 | - ); |
|
27 | + ); |
|
28 | 28 | |
29 | - // Standard option sets |
|
30 | - $form['boolean_options'] = array( |
|
29 | + // Standard option sets |
|
30 | + $form['boolean_options'] = array( |
|
31 | 31 | '#type' => 'value', |
32 | 32 | '#value' => array(1 => bts('yes', array(), NULL, 'boinc:form-yes-no:-1:binary-form-option-pairs-with-no'), 0 => bts('no', array(), NULL, 'boinc:form-yes-no:-1:binary-form-option-pairs-with-yes')), |
33 | - ); |
|
33 | + ); |
|
34 | 34 | |
35 | - // Vocabulary based option sets |
|
36 | - $form['type_options'] = array( |
|
35 | + // Vocabulary based option sets |
|
36 | + $form['type_options'] = array( |
|
37 | 37 | '#type' => 'value', |
38 | 38 | '#value' => array(0 => bts('Choose type', array(), NULL, 'boinc:form-choose')) |
39 | - ); |
|
40 | - $vocabs = taxonomy_get_vocabularies(NULL); |
|
41 | - foreach ($vocabs as $vocab) { |
|
39 | + ); |
|
40 | + $vocabs = taxonomy_get_vocabularies(NULL); |
|
41 | + foreach ($vocabs as $vocab) { |
|
42 | 42 | switch ($vocab->name) { |
43 | 43 | case 'Teams': |
44 | 44 | $team_types = taxonomy_get_tree($vocab->vid); |
45 | - if (module_exists('internationalization')) { |
|
45 | + if (module_exists('internationalization')) { |
|
46 | 46 | $team_types = i18ntaxonomy_localize_terms($team_types); |
47 | - } |
|
48 | - foreach ($team_types as $team_type) { |
|
47 | + } |
|
48 | + foreach ($team_types as $team_type) { |
|
49 | 49 | $form['type_options']['#value'][$team_type->tid] = $team_type->name; |
50 | - } |
|
51 | - break; |
|
50 | + } |
|
51 | + break; |
|
52 | 52 | default: |
53 | 53 | } |
54 | - } |
|
55 | - $form['country_options'] = array( |
|
54 | + } |
|
55 | + $form['country_options'] = array( |
|
56 | 56 | '#type' => 'value', |
57 | 57 | '#value' => boinccore_get_country_list(), |
58 | - ); |
|
58 | + ); |
|
59 | 59 | |
60 | - // Form elements |
|
61 | - $form['name'] = array( |
|
60 | + // Form elements |
|
61 | + $form['name'] = array( |
|
62 | 62 | '#title' => bts('Team name', array(), NULL, 'boinc:team-create/edit'), |
63 | 63 | '#type' => 'textfield', |
64 | 64 | '#default_value' => $default['name'], |
65 | 65 | '#size' => 34, |
66 | 66 | '#description' => bts('Text only, no HTML tags', array(), NULL, 'boinc:team-form-help'), |
67 | - ); |
|
68 | - $form['name_html'] = array( |
|
67 | + ); |
|
68 | + $form['name_html'] = array( |
|
69 | 69 | '#title' => bts('Team name -- HTML version (optional)', array(), NULL, 'boinc:team-create/edit'), |
70 | 70 | '#type' => 'textfield', |
71 | 71 | '#default_value' => $default['name_html'], |
72 | 72 | '#size' => 34, |
73 | 73 | '#description' => bts('You may use limited HTML tags', array(), NULL, 'boinc:team-form-help'), |
74 | - ); |
|
75 | - $form['website'] = array( |
|
74 | + ); |
|
75 | + $form['website'] = array( |
|
76 | 76 | '#title' => bts('Team website (optional)', array(), NULL, 'boinc:team-create/edit'), |
77 | 77 | '#type' => 'textfield', |
78 | 78 | '#default_value' => $default['website'], |
79 | 79 | '#size' => 34, |
80 | 80 | '#description' => bts("Displayed on the team's page", array(), NULL, 'boinc:team-create/edit'), |
81 | - ); |
|
82 | - $form['type'] = array( |
|
81 | + ); |
|
82 | + $form['type'] = array( |
|
83 | 83 | '#title' => bts('Type of team', array(), NULL, 'boinc:team-create/edit'), |
84 | 84 | '#type' => 'select', |
85 | 85 | '#options' => $form['type_options']['#value'], |
86 | 86 | '#default_value' => $default['type'], |
87 | - ); |
|
88 | - $form['country'] = array( |
|
87 | + ); |
|
88 | + $form['country'] = array( |
|
89 | 89 | '#title' => bts('Country', array(), NULL, 'boinc:country-of-origin'), |
90 | 90 | '#type' => 'select', |
91 | 91 | '#options' => $form['country_options']['#value'], |
92 | 92 | '#default_value' => $default['country'], |
93 | - ); |
|
94 | - $form['joinable'] = array( |
|
93 | + ); |
|
94 | + $form['joinable'] = array( |
|
95 | 95 | '#title' => bts('Accept new members?', array(), NULL, 'boinc:team-create/edit'), |
96 | 96 | '#type' => 'radios', |
97 | 97 | '#options' => $form['boolean_options']['#value'], |
98 | 98 | '#attributes' => array('class' => 'fancy'), |
99 | 99 | '#default_value' => $default['joinable'], |
100 | 100 | '#size' => 34, |
101 | - ); |
|
102 | - $form['description'] = array( |
|
101 | + ); |
|
102 | + $form['description'] = array( |
|
103 | 103 | '#title' => bts('Description of team', array(), NULL, 'boinc:team-create/edit'), |
104 | 104 | '#type' => 'textarea', |
105 | 105 | '#default_value' => $default['description'], |
106 | 106 | '#size' => 5, |
107 | 107 | '#description' => NULL, |
108 | - ); |
|
109 | - $form['format'] = filter_form(); |
|
108 | + ); |
|
109 | + $form['format'] = filter_form(); |
|
110 | 110 | |
111 | - // Form control |
|
112 | - $form['form control tabs prefix'] = array( |
|
111 | + // Form control |
|
112 | + $form['form control tabs prefix'] = array( |
|
113 | 113 | '#value' => '<ul class="form-control tab-list">' |
114 | - ); |
|
115 | - $form['submit'] = array( |
|
114 | + ); |
|
115 | + $form['submit'] = array( |
|
116 | 116 | '#prefix' => '<li class="first tab">', |
117 | 117 | '#type' => 'submit', |
118 | 118 | '#value' => bts('Save team', array(), NULL, 'boinc:team-form-save'), |
119 | 119 | '#suffix' => '</li>', |
120 | - ); |
|
121 | - $form['form control tabs'] = array( |
|
120 | + ); |
|
121 | + $form['form control tabs'] = array( |
|
122 | 122 | '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), $_GET['q']) . '</li>' |
123 | - ); |
|
123 | + ); |
|
124 | 124 | |
125 | - return $form; |
|
125 | + return $form; |
|
126 | 126 | } |
127 | 127 | |
128 | 128 | /** |
@@ -130,41 +130,41 @@ discard block |
||
130 | 130 | */ |
131 | 131 | function boincteam_create_form_validate($form, &$form_state) { |
132 | 132 | |
133 | - $values = $form_state['values']; |
|
134 | - $name = $values['name']; |
|
133 | + $values = $form_state['values']; |
|
134 | + $name = $values['name']; |
|
135 | 135 | |
136 | - if (!$name) { |
|
136 | + if (!$name) { |
|
137 | 137 | form_set_error('name', bts('Team name is required.', array(), NULL, 'boinc:team-create/edit')); |
138 | - } |
|
139 | - else { |
|
138 | + } |
|
139 | + else { |
|
140 | 140 | require_boinc('boinc_db'); |
141 | 141 | if (BoincTeam::lookup_name($name)) { |
142 | - form_set_error('name', bts('A team named "@name" already exists.', |
|
142 | + form_set_error('name', bts('A team named "@name" already exists.', |
|
143 | 143 | array('@name' => $name), NULL, 'boinc:team-create/edit')); |
144 | 144 | } |
145 | - } |
|
145 | + } |
|
146 | 146 | |
147 | - if (!$values['type'] OR !isset($values['type_options'][$values['type']])) { |
|
147 | + if (!$values['type'] OR !isset($values['type_options'][$values['type']])) { |
|
148 | 148 | form_set_error('type', bts('Please select a team type.', array(), NULL, 'boinc:team-create/edit')); |
149 | - } |
|
149 | + } |
|
150 | 150 | } |
151 | 151 | |
152 | 152 | /** |
153 | 153 | * The create team submit handler |
154 | 154 | */ |
155 | 155 | function boincteam_create_form_submit($form, &$form_state) { |
156 | - global $user; |
|
157 | - $account = user_load($user->uid); |
|
158 | - $values = $form_state['values']; |
|
159 | - //drupal_set_message('<pre>' . print_r($values,true) . '</pre>'); |
|
156 | + global $user; |
|
157 | + $account = user_load($user->uid); |
|
158 | + $values = $form_state['values']; |
|
159 | + //drupal_set_message('<pre>' . print_r($values,true) . '</pre>'); |
|
160 | 160 | |
161 | - $input_format = !empty($values['format']) ? $values['format'] : 4; |
|
162 | - $values['description'] = check_markup($values['description'], $input_format); |
|
161 | + $input_format = !empty($values['format']) ? $values['format'] : 4; |
|
162 | + $values['description'] = check_markup($values['description'], $input_format); |
|
163 | 163 | |
164 | - // Create the team in the BOINC db |
|
164 | + // Create the team in the BOINC db |
|
165 | 165 | |
166 | - require_boinc(array('user','team')); |
|
167 | - $boinc_team = make_team( |
|
166 | + require_boinc(array('user','team')); |
|
167 | + $boinc_team = make_team( |
|
168 | 168 | $account->boincuser_id, |
169 | 169 | $values['name'], |
170 | 170 | $values['website'], |
@@ -172,27 +172,27 @@ discard block |
||
172 | 172 | $values['name_html'], |
173 | 173 | $values['description'], |
174 | 174 | $values['country'] |
175 | - ); |
|
175 | + ); |
|
176 | 176 | |
177 | - if ($boinc_team) { |
|
177 | + if ($boinc_team) { |
|
178 | 178 | $boinc_user = BoincUser::lookup_id($account->boincuser_id); |
179 | 179 | user_join_team($boinc_team, $boinc_user); |
180 | - } |
|
181 | - else { |
|
180 | + } |
|
181 | + else { |
|
182 | 182 | drupal_set_message(t('Teams cannot be created at this time. The @project administrators have been notified.', array('@project' => PROJECT))); |
183 | 183 | rules_invoke_event('boincteam_create_team_error', $values['name'], variable_get('boinc_admin_mailing_list_subject_tag', '')); |
184 | 184 | watchdog('BOINC team', 'BOINC teams cannot be created for an unknown |
185 | 185 | reason.', 'error'); |
186 | 186 | return FALSE; |
187 | - } |
|
187 | + } |
|
188 | 188 | |
189 | - // Create the team node in Drupal |
|
189 | + // Create the team node in Drupal |
|
190 | 190 | |
191 | - $teaser = node_teaser($values['description']); |
|
192 | - $created_time = time(); |
|
193 | - $input_format = variable_get('filter_default_format', 1); |
|
191 | + $teaser = node_teaser($values['description']); |
|
192 | + $created_time = time(); |
|
193 | + $input_format = variable_get('filter_default_format', 1); |
|
194 | 194 | |
195 | - $node = array( |
|
195 | + $node = array( |
|
196 | 196 | 'type' => 'team', |
197 | 197 | 'title' => $values['name'], |
198 | 198 | 'body' => $values['description'], |
@@ -206,21 +206,21 @@ discard block |
||
206 | 206 | 'moderate' => 0, |
207 | 207 | 'sticky' => 0, |
208 | 208 | 'format' => $input_format |
209 | - ); |
|
209 | + ); |
|
210 | 210 | |
211 | - // Use pathauto function, if available, to clean up the path |
|
212 | - if (module_exists('pathauto')) { |
|
211 | + // Use pathauto function, if available, to clean up the path |
|
212 | + if (module_exists('pathauto')) { |
|
213 | 213 | module_load_include('inc', 'pathauto', 'pathauto'); |
214 | 214 | $node['path'] = pathauto_cleanstring($values['name']); |
215 | - } |
|
216 | - else { |
|
215 | + } |
|
216 | + else { |
|
217 | 217 | drupal_set_message(t('Teams cannot be created at this time. The @project administrators have been notified.', array('@project' => PROJECT))); |
218 | 218 | rules_invoke_event('boincteam_create_team_nopathauto_error', $values['name'], variable_get('boinc_admin_mailing_list_subject_tag', '')); |
219 | 219 | watchdog('BOINC team', 'BOINC teams require the Pathauto module. Teams |
220 | 220 | cannot be created.', 'error'); |
221 | - } |
|
221 | + } |
|
222 | 222 | |
223 | - /* |
|
223 | + /* |
|
224 | 224 | // Add special organic group properties |
225 | 225 | $node['og_description'] = strip_tags($boincteam->description); |
226 | 226 | $node['og_selective'] = OG_OPEN; |
@@ -229,26 +229,26 @@ discard block |
||
229 | 229 | $node['og_private'] = 0; |
230 | 230 | */ |
231 | 231 | |
232 | - $node = (object) $node; // node_save requires an object form |
|
232 | + $node = (object) $node; // node_save requires an object form |
|
233 | 233 | |
234 | - /* |
|
234 | + /* |
|
235 | 235 | $node->field_description[]['value'] = $boincteam->description; |
236 | 236 | $node->field_url[]['value'] = $boincteam->url; |
237 | 237 | $node->field_country[]['value'] = $boincteam->country; |
238 | 238 | */ |
239 | 239 | |
240 | - $node->taxonomy[] = taxonomy_get_term($values['type']); |
|
240 | + $node->taxonomy[] = taxonomy_get_term($values['type']); |
|
241 | 241 | |
242 | - // Save the team node |
|
243 | - node_save($node); |
|
242 | + // Save the team node |
|
243 | + node_save($node); |
|
244 | 244 | |
245 | - // Save the team IDs to a BOINC <--> Drupal reference table. |
|
246 | - db_query('INSERT INTO {boincteam} (team_id, nid) VALUES (%d, %d)', $boinc_team->id, $node->nid); |
|
245 | + // Save the team IDs to a BOINC <--> Drupal reference table. |
|
246 | + db_query('INSERT INTO {boincteam} (team_id, nid) VALUES (%d, %d)', $boinc_team->id, $node->nid); |
|
247 | 247 | |
248 | - drupal_set_message(t('Team "@name" has been created.', |
|
248 | + drupal_set_message(t('Team "@name" has been created.', |
|
249 | 249 | array('@name' => $values['name']))); |
250 | 250 | |
251 | - $form_state['redirect'] = "community/teams/{$node->nid}"; |
|
251 | + $form_state['redirect'] = "community/teams/{$node->nid}"; |
|
252 | 252 | } |
253 | 253 | |
254 | 254 | /* * * * * * * * * * * * * * * * * * * * * * * * * * * * |
@@ -259,17 +259,17 @@ discard block |
||
259 | 259 | * The definition of the edit team form |
260 | 260 | */ |
261 | 261 | function boincteam_edit_form(&$form_state, $team_id) { |
262 | - $form = array(); |
|
262 | + $form = array(); |
|
263 | 263 | |
264 | - $team = node_load($team_id); |
|
265 | - $boincteam = boincteam_load(boincteam_lookup_id($team_id)); |
|
264 | + $team = node_load($team_id); |
|
265 | + $boincteam = boincteam_load(boincteam_lookup_id($team_id)); |
|
266 | 266 | |
267 | - $is_boinc_wide = ($boincteam->seti_id > 0) ? TRUE : FALSE; |
|
267 | + $is_boinc_wide = ($boincteam->seti_id > 0) ? TRUE : FALSE; |
|
268 | 268 | |
269 | - $form_state['storage']['team_id'] = $team_id; |
|
270 | - $form_state['storage']['is_boinc_wide'] = $is_boinc_wide; |
|
269 | + $form_state['storage']['team_id'] = $team_id; |
|
270 | + $form_state['storage']['is_boinc_wide'] = $is_boinc_wide; |
|
271 | 271 | |
272 | - $default = array( |
|
272 | + $default = array( |
|
273 | 273 | 'name' => $boincteam->name, |
274 | 274 | 'name_html' => $boincteam->name_html, |
275 | 275 | 'website' => $boincteam->url, |
@@ -277,79 +277,79 @@ discard block |
||
277 | 277 | 'country' => $boincteam->country, |
278 | 278 | 'joinable' => $boincteam->joinable, |
279 | 279 | 'description' => $boincteam->description, |
280 | - ); |
|
280 | + ); |
|
281 | 281 | |
282 | - // Standard option sets |
|
283 | - $form['boolean_options'] = array( |
|
282 | + // Standard option sets |
|
283 | + $form['boolean_options'] = array( |
|
284 | 284 | '#type' => 'value', |
285 | 285 | '#value' => array(1 => bts('yes', array(), NULL, 'boinc:form-yes-no:-1:binary-form-option-pairs-with-no'), 0 => bts('no', array(), NULL, 'boinc:form-yes-no:-1:binary-form-option-pairs-with-yes')), |
286 | - ); |
|
286 | + ); |
|
287 | 287 | |
288 | - // Vocabulary based option sets |
|
289 | - $form['type_options'] = array( |
|
288 | + // Vocabulary based option sets |
|
289 | + $form['type_options'] = array( |
|
290 | 290 | '#type' => 'value', |
291 | 291 | '#value' => array(0 => bts('Choose type', array(), NULL, 'boinc:form-choose')) |
292 | - ); |
|
293 | - $vocabs = taxonomy_get_vocabularies(NULL); |
|
294 | - foreach ($vocabs as $vocab) { |
|
292 | + ); |
|
293 | + $vocabs = taxonomy_get_vocabularies(NULL); |
|
294 | + foreach ($vocabs as $vocab) { |
|
295 | 295 | switch ($vocab->name) { |
296 | 296 | case 'Teams': |
297 | 297 | $team_types = taxonomy_get_tree($vocab->vid); |
298 | - if (module_exists('internationalization')) { |
|
298 | + if (module_exists('internationalization')) { |
|
299 | 299 | $team_types = i18ntaxonomy_localize_terms($team_types); |
300 | - } |
|
301 | - foreach ($team_types as $team_type) { |
|
300 | + } |
|
301 | + foreach ($team_types as $team_type) { |
|
302 | 302 | $form['type_options']['#value'][$team_type->tid] = $team_type->name; |
303 | - } |
|
304 | - break; |
|
303 | + } |
|
304 | + break; |
|
305 | 305 | default: |
306 | 306 | } |
307 | - } |
|
308 | - $form['country_options'] = array( |
|
307 | + } |
|
308 | + $form['country_options'] = array( |
|
309 | 309 | '#type' => 'value', |
310 | 310 | '#value' => boinccore_get_country_list(), |
311 | - ); |
|
311 | + ); |
|
312 | 312 | |
313 | - // Form elements |
|
314 | - $form['name'] = array( |
|
313 | + // Form elements |
|
314 | + $form['name'] = array( |
|
315 | 315 | '#title' => bts('Team name', array(), NULL, 'boinc:team-create/edit'), |
316 | 316 | '#type' => 'textfield', |
317 | 317 | '#default_value' => $default['name'], |
318 | 318 | '#size' => 34, |
319 | 319 | '#description' => bts('Text only, no HTML tags', array(), NULL, 'boinc:team-form-help'), |
320 | 320 | '#disabled' => $is_boinc_wide, |
321 | - ); |
|
322 | - $form['name_html'] = array( |
|
321 | + ); |
|
322 | + $form['name_html'] = array( |
|
323 | 323 | '#title' => bts('Team name -- HTML version (optional)', array(), NULL, 'boinc:team-create/edit'), |
324 | 324 | '#type' => 'textfield', |
325 | 325 | '#default_value' => $default['name_html'], |
326 | 326 | '#size' => 34, |
327 | 327 | '#description' => bts('You may use limited HTML tags', array(), NULL, 'boinc:team-form-help'), |
328 | 328 | '#disabled' => $is_boinc_wide, |
329 | - ); |
|
330 | - $form['website'] = array( |
|
329 | + ); |
|
330 | + $form['website'] = array( |
|
331 | 331 | '#title' => bts('Team website (optional)', array(), NULL, 'boinc:team-create/edit'), |
332 | 332 | '#type' => 'textfield', |
333 | 333 | '#default_value' => $default['website'], |
334 | 334 | '#size' => 34, |
335 | 335 | '#description' => bts("Displayed on the team's page", array(), NULL, 'boinc:team-create/edit'), |
336 | 336 | '#disabled' => $is_boinc_wide, |
337 | - ); |
|
338 | - $form['type'] = array( |
|
337 | + ); |
|
338 | + $form['type'] = array( |
|
339 | 339 | '#title' => bts('Type of team', array(), NULL, 'boinc:team-create/edit'), |
340 | 340 | '#type' => 'select', |
341 | 341 | '#options' => $form['type_options']['#value'], |
342 | 342 | '#default_value' => $default['type'], |
343 | 343 | '#disabled' => $is_boinc_wide, |
344 | - ); |
|
345 | - $form['country'] = array( |
|
344 | + ); |
|
345 | + $form['country'] = array( |
|
346 | 346 | '#title' => bts('Country', array(), NULL, 'boinc:country-of-origin'), |
347 | 347 | '#type' => 'select', |
348 | 348 | '#options' => $form['country_options']['#value'], |
349 | 349 | '#default_value' => $default['country'], |
350 | 350 | '#disabled' => $is_boinc_wide, |
351 | - ); |
|
352 | - $form['joinable'] = array( |
|
351 | + ); |
|
352 | + $form['joinable'] = array( |
|
353 | 353 | '#title' => bts('Accept new members?', array(), NULL, 'boinc:team-create/edit'), |
354 | 354 | '#type' => 'radios', |
355 | 355 | '#options' => $form['boolean_options']['#value'], |
@@ -357,49 +357,49 @@ discard block |
||
357 | 357 | '#default_value' => $default['joinable'], |
358 | 358 | '#size' => 34, |
359 | 359 | '#disabled' => $is_boinc_wide, |
360 | - ); |
|
361 | - if (!$is_boinc_wide) { |
|
360 | + ); |
|
361 | + if (!$is_boinc_wide) { |
|
362 | 362 | $form['description'] = array( |
363 | - '#title' => bts('Description of team', array(), NULL, 'boinc:team-create/edit'), |
|
364 | - '#type' => 'textarea', |
|
365 | - '#default_value' => $default['description'], |
|
366 | - '#size' => 5, |
|
367 | - '#description' => NULL, |
|
363 | + '#title' => bts('Description of team', array(), NULL, 'boinc:team-create/edit'), |
|
364 | + '#type' => 'textarea', |
|
365 | + '#default_value' => $default['description'], |
|
366 | + '#size' => 5, |
|
367 | + '#description' => NULL, |
|
368 | 368 | ); |
369 | 369 | $form['format'] = filter_form(); |
370 | 370 | |
371 | 371 | // Form control |
372 | 372 | $form['form control tabs prefix'] = array( |
373 | - '#value' => '<ul class="form-control tab-list">' |
|
373 | + '#value' => '<ul class="form-control tab-list">' |
|
374 | 374 | ); |
375 | 375 | $form['submit'] = array( |
376 | - '#prefix' => '<li class="first tab">', |
|
377 | - '#type' => 'submit', |
|
378 | - '#value' => bts('Save changes', array(), NULL, 'boinc:form-save'), |
|
379 | - '#suffix' => '</li>', |
|
376 | + '#prefix' => '<li class="first tab">', |
|
377 | + '#type' => 'submit', |
|
378 | + '#value' => bts('Save changes', array(), NULL, 'boinc:form-save'), |
|
379 | + '#suffix' => '</li>', |
|
380 | 380 | ); |
381 | 381 | $form['form control tabs'] = array( |
382 | - '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), strstr($_GET['q'], '/edit', TRUE)) . '</li>' |
|
382 | + '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), strstr($_GET['q'], '/edit', TRUE)) . '</li>' |
|
383 | 383 | ); |
384 | - } |
|
385 | - else { |
|
384 | + } |
|
385 | + else { |
|
386 | 386 | $form['description'] = array( |
387 | - '#prefix' => '<div class="form-item"><label>' . bts('Description', array(), NULL, 'boinc:team-description') . ':</label></div><div class="form-item">', |
|
388 | - '#value' => $default['description'], |
|
389 | - '#suffix' => '</div>', |
|
387 | + '#prefix' => '<div class="form-item"><label>' . bts('Description', array(), NULL, 'boinc:team-description') . ':</label></div><div class="form-item">', |
|
388 | + '#value' => $default['description'], |
|
389 | + '#suffix' => '</div>', |
|
390 | 390 | ); |
391 | 391 | drupal_set_message( |
392 | - bts('This is a BOINC-wide team. Changes can be made at the !site.', |
|
392 | + bts('This is a BOINC-wide team. Changes can be made at the !site.', |
|
393 | 393 | array('!site' => l(bts('BOINC-wide teams site', array(), NULL, 'boinc:link-to-BOINC-wide-teams-Website'), |
394 | - 'http://boinc.berkeley.edu/teams/' |
|
394 | + 'http://boinc.berkeley.edu/teams/' |
|
395 | 395 | )), |
396 | 396 | NULL, 'boinc:team-edit-warning-message'), |
397 | - 'warning'); |
|
398 | - } |
|
397 | + 'warning'); |
|
398 | + } |
|
399 | 399 | |
400 | - $form['#redirect'] = "community/teams/{$team_id}"; |
|
400 | + $form['#redirect'] = "community/teams/{$team_id}"; |
|
401 | 401 | |
402 | - return $form; |
|
402 | + return $form; |
|
403 | 403 | } |
404 | 404 | |
405 | 405 | /** |
@@ -407,32 +407,32 @@ discard block |
||
407 | 407 | */ |
408 | 408 | function boincteam_edit_form_validate($form, &$form_state) { |
409 | 409 | |
410 | - $values = $form_state['values']; |
|
411 | - $name = $values['name']; |
|
410 | + $values = $form_state['values']; |
|
411 | + $name = $values['name']; |
|
412 | 412 | |
413 | - if ($form_state['storage']['is_boinc_wide']) { |
|
413 | + if ($form_state['storage']['is_boinc_wide']) { |
|
414 | 414 | form_set_error('none', bts('This team is managed by the BOINC-wide teams system and cannot be updated here.', array(), NULL, 'boinc:team-create/edit')); |
415 | - } |
|
416 | - else { |
|
415 | + } |
|
416 | + else { |
|
417 | 417 | if (!$name) { |
418 | - form_set_error('name', bts('Team name is required.', array(), NULL, 'boinc:team-create/edit')); |
|
418 | + form_set_error('name', bts('Team name is required.', array(), NULL, 'boinc:team-create/edit')); |
|
419 | 419 | } |
420 | 420 | else { |
421 | - $team = node_load($form_state['storage']['team_id']); |
|
422 | - if ($name != $team->title) { |
|
421 | + $team = node_load($form_state['storage']['team_id']); |
|
422 | + if ($name != $team->title) { |
|
423 | 423 | // If changing the name ("title" in Drupal terms), check that the new name is available |
424 | 424 | require_boinc('boinc_db'); |
425 | 425 | if (BoincTeam::lookup_name($name)) { |
426 | - form_set_error('name', bts('A team named "@name" already exists.', |
|
426 | + form_set_error('name', bts('A team named "@name" already exists.', |
|
427 | 427 | array('@name' => $name), NULL, 'boinc:team-create/edit')); |
428 | 428 | } |
429 | - } |
|
429 | + } |
|
430 | 430 | } |
431 | 431 | |
432 | 432 | if (!$values['type'] OR !isset($values['type_options'][$values['type']])) { |
433 | - form_set_error('type', bts('Please select a team type.', array(), NULL, 'boinc:team-create/edit')); |
|
433 | + form_set_error('type', bts('Please select a team type.', array(), NULL, 'boinc:team-create/edit')); |
|
434 | + } |
|
434 | 435 | } |
435 | - } |
|
436 | 436 | } |
437 | 437 | |
438 | 438 | /** |
@@ -440,18 +440,18 @@ discard block |
||
440 | 440 | */ |
441 | 441 | function boincteam_edit_form_submit($form, &$form_state) { |
442 | 442 | |
443 | - $team_id = $form_state['storage']['team_id']; |
|
444 | - $values = $form_state['values']; |
|
443 | + $team_id = $form_state['storage']['team_id']; |
|
444 | + $values = $form_state['values']; |
|
445 | 445 | |
446 | - $team = node_load($team_id); |
|
447 | - $boincteam_id = boincteam_lookup_id($team_id); |
|
446 | + $team = node_load($team_id); |
|
447 | + $boincteam_id = boincteam_lookup_id($team_id); |
|
448 | 448 | |
449 | - $input_format = !empty($values['format']) ? $values['format'] : 4; |
|
450 | - $values['description'] = check_markup($values['description'], $input_format); |
|
449 | + $input_format = !empty($values['format']) ? $values['format'] : 4; |
|
450 | + $values['description'] = check_markup($values['description'], $input_format); |
|
451 | 451 | |
452 | - // Update the team in the BOINC db |
|
453 | - db_set_active('boinc_rw'); |
|
454 | - db_query(" |
|
452 | + // Update the team in the BOINC db |
|
453 | + db_set_active('boinc_rw'); |
|
454 | + db_query(" |
|
455 | 455 | UPDATE {team} SET |
456 | 456 | name = '%s', |
457 | 457 | name_lc = '%s', |
@@ -471,32 +471,32 @@ discard block |
||
471 | 471 | $values['country'], |
472 | 472 | $values['joinable'], |
473 | 473 | $boincteam_id |
474 | - ); |
|
475 | - db_set_active('default'); |
|
474 | + ); |
|
475 | + db_set_active('default'); |
|
476 | 476 | |
477 | - // Update the team node in Drupal |
|
477 | + // Update the team node in Drupal |
|
478 | 478 | |
479 | - $team->title = $values['name']; |
|
480 | - $team->body = $values['description']; |
|
481 | - $team->teaser = node_teaser($values['description']); |
|
479 | + $team->title = $values['name']; |
|
480 | + $team->body = $values['description']; |
|
481 | + $team->teaser = node_teaser($values['description']); |
|
482 | 482 | |
483 | - /* |
|
483 | + /* |
|
484 | 484 | $node->field_description[]['value'] = $boincteam->description; |
485 | 485 | $node->field_url[]['value'] = $boincteam->url; |
486 | 486 | $node->field_country[]['value'] = $boincteam->country; |
487 | 487 | */ |
488 | 488 | |
489 | - // Replace any existing taxonomy with the new one |
|
490 | - $team->taxonomy = array(taxonomy_get_term($values['type'])); |
|
489 | + // Replace any existing taxonomy with the new one |
|
490 | + $team->taxonomy = array(taxonomy_get_term($values['type'])); |
|
491 | 491 | |
492 | - // Save the team node |
|
493 | - node_save($team); |
|
492 | + // Save the team node |
|
493 | + node_save($team); |
|
494 | 494 | |
495 | - drupal_set_message(t('Details for "@team" have been updated.', |
|
495 | + drupal_set_message(t('Details for "@team" have been updated.', |
|
496 | 496 | array('@team' => $values['name']))); |
497 | 497 | |
498 | - // The storage variable quietly kills redirection for some reason... unset it |
|
499 | - unset($form_state['storage']); |
|
498 | + // The storage variable quietly kills redirection for some reason... unset it |
|
499 | + unset($form_state['storage']); |
|
500 | 500 | } |
501 | 501 | |
502 | 502 | |
@@ -508,44 +508,44 @@ discard block |
||
508 | 508 | * The definition of the add team admin form |
509 | 509 | */ |
510 | 510 | function boincteam_add_admin_form(&$form_state, $team_id) { |
511 | - $form = array(); |
|
511 | + $form = array(); |
|
512 | 512 | |
513 | - $team = node_load($team_id); |
|
514 | - $boincteam = boincteam_load(boincteam_lookup_id($team_id)); |
|
513 | + $team = node_load($team_id); |
|
514 | + $boincteam = boincteam_load(boincteam_lookup_id($team_id)); |
|
515 | 515 | |
516 | - $form_state['storage']['team_id'] = $team_id; |
|
516 | + $form_state['storage']['team_id'] = $team_id; |
|
517 | 517 | |
518 | - $default = array( |
|
518 | + $default = array( |
|
519 | 519 | 'username' => '', |
520 | - ); |
|
520 | + ); |
|
521 | 521 | |
522 | - // Form elements |
|
523 | - $form['username'] = array( |
|
522 | + // Form elements |
|
523 | + $form['username'] = array( |
|
524 | 524 | '#title' => bts('Enter BOINC username', array(), NULL, 'boinc:team--add-admin'), |
525 | 525 | '#description' => bts('The number appearing in the suffix is the BOINC id. You can find a user\'s BOINC id on their user profile page.'), |
526 | 526 | '#type' => 'textfield', |
527 | 527 | '#default_value' => $default['username'], |
528 | 528 | '#size' => 34, |
529 | 529 | '#autocomplete_path' => "community/teams/${team_id}/user-name-autocomplete", |
530 | - ); |
|
530 | + ); |
|
531 | 531 | |
532 | - // Form control |
|
533 | - $form['form control tabs prefix'] = array( |
|
532 | + // Form control |
|
533 | + $form['form control tabs prefix'] = array( |
|
534 | 534 | '#value' => '<ul class="form-control tab-list">' |
535 | - ); |
|
536 | - $form['submit'] = array( |
|
535 | + ); |
|
536 | + $form['submit'] = array( |
|
537 | 537 | '#prefix' => '<li class="first tab">', |
538 | 538 | '#type' => 'submit', |
539 | 539 | '#value' => bts('Add', array(), NULL, 'boinc:form-add'), |
540 | 540 | '#suffix' => '</li>', |
541 | - ); |
|
542 | - $form['form control tabs'] = array( |
|
541 | + ); |
|
542 | + $form['form control tabs'] = array( |
|
543 | 543 | '#value' => '<li class="tab">' . l(bts('Cancel', array(), NULL, 'boinc:form-cancel'), strstr($_GET['q'], '/edit', TRUE)) . '</li>' |
544 | - ); |
|
544 | + ); |
|
545 | 545 | |
546 | - //$form['#redirect'] = "community/teams/{$team_id}"; |
|
546 | + //$form['#redirect'] = "community/teams/{$team_id}"; |
|
547 | 547 | |
548 | - return $form; |
|
548 | + return $form; |
|
549 | 549 | } |
550 | 550 | |
551 | 551 | /** |
@@ -553,45 +553,45 @@ discard block |
||
553 | 553 | */ |
554 | 554 | function boincteam_add_admin_form_validate($form, &$form_state) { |
555 | 555 | |
556 | - $team_id = $form_state['storage']['team_id']; |
|
557 | - $values = $form_state['values']; |
|
558 | - $team = node_load($team_id); |
|
556 | + $team_id = $form_state['storage']['team_id']; |
|
557 | + $values = $form_state['values']; |
|
558 | + $team = node_load($team_id); |
|
559 | 559 | |
560 | - if (!$values['username']) { |
|
560 | + if (!$values['username']) { |
|
561 | 561 | form_set_error('username', bts('BOINC username is required.', array(), NULL, 'boinc:team-add-admin')); |
562 | - } |
|
563 | - else { |
|
562 | + } |
|
563 | + else { |
|
564 | 564 | // Load user account associated with username |
565 | 565 | $account = boincuser_privatemsg_name_lookup($values['username']); |
566 | 566 | // Validate the account |
567 | 567 | if ((!$account) OR ($account->team != $team_id)) { |
568 | - form_set_error('username', bts('There is no user on your team with name @username.', |
|
568 | + form_set_error('username', bts('There is no user on your team with name @username.', |
|
569 | 569 | array( |
570 | - '@username' => $account->boincuser_name |
|
570 | + '@username' => $account->boincuser_name |
|
571 | 571 | ), |
572 | - NULL, 'boinc:team-add-admin')); |
|
572 | + NULL, 'boinc:team-add-admin')); |
|
573 | 573 | } |
574 | 574 | elseif (boincteam_is_founder($team_id, $account->uid)) { |
575 | - form_set_error('username', bts('@user is the founder of @team! Team founder already have all admin privileges.', |
|
575 | + form_set_error('username', bts('@user is the founder of @team! Team founder already have all admin privileges.', |
|
576 | 576 | array( |
577 | - '@user' => $account->boincuser_name, |
|
578 | - '@team' => $team->title, |
|
577 | + '@user' => $account->boincuser_name, |
|
578 | + '@team' => $team->title, |
|
579 | 579 | ), |
580 | 580 | NULL, 'boinc:team-add-admin')); |
581 | 581 | } |
582 | 582 | elseif (boincteam_is_admin($team_id, $account->uid)) { |
583 | - form_set_error('username', bts('@user is already an admin of @team.', |
|
583 | + form_set_error('username', bts('@user is already an admin of @team.', |
|
584 | 584 | array( |
585 | - '@user' => $account->boincuser_name, |
|
586 | - '@team' => $team->title, |
|
585 | + '@user' => $account->boincuser_name, |
|
586 | + '@team' => $team->title, |
|
587 | 587 | ), |
588 | 588 | NULL, 'boinc:team-add-admin')); |
589 | 589 | } |
590 | 590 | else { |
591 | - $form_state['storage']['boincuser_id'] = $account->boincuser_id; |
|
592 | - $form_state['storage']['boincuser_name'] = $account->boincuser_name; |
|
591 | + $form_state['storage']['boincuser_id'] = $account->boincuser_id; |
|
592 | + $form_state['storage']['boincuser_name'] = $account->boincuser_name; |
|
593 | + } |
|
593 | 594 | } |
594 | - } |
|
595 | 595 | } |
596 | 596 | |
597 | 597 | /** |
@@ -599,17 +599,17 @@ discard block |
||
599 | 599 | */ |
600 | 600 | function boincteam_add_admin_form_submit($form, &$form_state) { |
601 | 601 | |
602 | - $team_id = $form_state['storage']['team_id']; |
|
603 | - $boincuser_id = $form_state['storage']['boincuser_id']; |
|
604 | - $user_name = $form_state['storage']['boincuser_name']; |
|
605 | - $values = $form_state['values']; |
|
602 | + $team_id = $form_state['storage']['team_id']; |
|
603 | + $boincuser_id = $form_state['storage']['boincuser_id']; |
|
604 | + $user_name = $form_state['storage']['boincuser_name']; |
|
605 | + $values = $form_state['values']; |
|
606 | 606 | |
607 | - $team = node_load($team_id); |
|
608 | - $boincteam_id = boincteam_lookup_id($team_id); |
|
607 | + $team = node_load($team_id); |
|
608 | + $boincteam_id = boincteam_lookup_id($team_id); |
|
609 | 609 | |
610 | - // Update the team in the BOINC db |
|
611 | - db_set_active('boinc_rw'); |
|
612 | - db_query(" |
|
610 | + // Update the team in the BOINC db |
|
611 | + db_set_active('boinc_rw'); |
|
612 | + db_query(" |
|
613 | 613 | INSERT INTO {team_admin} SET |
614 | 614 | teamid = '%d', |
615 | 615 | userid = '%d', |
@@ -617,17 +617,17 @@ discard block |
||
617 | 617 | $boincteam_id, |
618 | 618 | $boincuser_id, |
619 | 619 | time() |
620 | - ); |
|
621 | - db_set_active('default'); |
|
620 | + ); |
|
621 | + db_set_active('default'); |
|
622 | 622 | |
623 | - // Could assign a role in Drupal here, as needed |
|
623 | + // Could assign a role in Drupal here, as needed |
|
624 | 624 | |
625 | 625 | |
626 | - drupal_set_message(t('@user has been added as an admin.', |
|
626 | + drupal_set_message(t('@user has been added as an admin.', |
|
627 | 627 | array('@user' => $user_name))); |
628 | 628 | |
629 | - // The storage variable quietly kills redirection for some reason... unset it |
|
630 | - unset($form_state['storage']); |
|
629 | + // The storage variable quietly kills redirection for some reason... unset it |
|
630 | + unset($form_state['storage']); |
|
631 | 631 | } |
632 | 632 | |
633 | 633 | /* * * * * * * * * * * * * * * * * * * * * * * * * * * * |
@@ -639,80 +639,80 @@ discard block |
||
639 | 639 | * Send all team members an email message function |
640 | 640 | */ |
641 | 641 | function boincteam_sendmessagetoteam(&$form_state, $team_id) { |
642 | - global $user; |
|
643 | - $form = array(); |
|
642 | + global $user; |
|
643 | + $form = array(); |
|
644 | 644 | |
645 | - if (isset($form_state['values'])) { |
|
645 | + if (isset($form_state['values'])) { |
|
646 | 646 | $subject = $form_state['values']['subject']; |
647 | 647 | $body = $form_state['values']['body']; |
648 | - } |
|
649 | - else { |
|
648 | + } |
|
649 | + else { |
|
650 | 650 | $subject = ''; |
651 | 651 | $body = ''; |
652 | - } |
|
652 | + } |
|
653 | 653 | |
654 | - // Title |
|
655 | - $mytitle = bts('Send E-mail To All Team Members', array(), NULL, 'boinc:team-message-form'); |
|
656 | - drupal_set_title($mytitle); |
|
654 | + // Title |
|
655 | + $mytitle = bts('Send E-mail To All Team Members', array(), NULL, 'boinc:team-message-form'); |
|
656 | + drupal_set_title($mytitle); |
|
657 | 657 | |
658 | - $form['emailteam']['header'] = array( |
|
658 | + $form['emailteam']['header'] = array( |
|
659 | 659 | '#value' => '<h1>' . $mytitle . '</h1>', |
660 | 660 | '#weight' => '-10', |
661 | 661 | '#prefix' => "<div id='sendmessageteammembers-header'>", |
662 | 662 | '#suffix' => "</div>", |
663 | - ); |
|
663 | + ); |
|
664 | 664 | |
665 | - $form['emailteam']['instructions'] = array( |
|
665 | + $form['emailteam']['instructions'] = array( |
|
666 | 666 | '#value' => bts('This will send an email to all team members. If a team member has opt-ed out of notification e-mails, they will not receive your message. At the bottom of your message, there will be a link allowing team members to send you a Direct Message. This link is added automatically, you do not need to add it below in the Message box. Your email address will not be shown to the recipients.', array(), NULL, 'boinc:team-message-form'), |
667 | 667 | '#weight' => '-8', |
668 | 668 | '#prefix' => "<div id='sendmessageteammembers-instructions'>", |
669 | 669 | '#suffix' => "</div>", |
670 | - ); |
|
670 | + ); |
|
671 | 671 | |
672 | - // Subject |
|
673 | - $form['emailteam']['subject'] = array( |
|
672 | + // Subject |
|
673 | + $form['emailteam']['subject'] = array( |
|
674 | 674 | '#type' => 'textfield', |
675 | 675 | '#title' => bts('Subject', array(), NULL, 'boinc:team-message-form'), |
676 | 676 | '#size' => 50, |
677 | 677 | '#maxlength' => 255, |
678 | 678 | '#default_value' => $subject, |
679 | 679 | '#weight' => -5, |
680 | - ); |
|
680 | + ); |
|
681 | 681 | |
682 | - // Body |
|
683 | - $form['emailteam']['body'] = array( |
|
682 | + // Body |
|
683 | + $form['emailteam']['body'] = array( |
|
684 | 684 | '#type' => 'textarea', |
685 | 685 | '#title' => bts('Message', array(), NULL, 'boinc:team-message-form'), |
686 | 686 | '#rows' => 8, |
687 | 687 | '#weight' => 0, |
688 | 688 | '#default_value' => $body, |
689 | 689 | '#resizable' => TRUE, |
690 | - ); |
|
690 | + ); |
|
691 | 691 | |
692 | - // checkbox for 'sent to self' |
|
693 | - $form['emailteam']['selfsend'] = array( |
|
692 | + // checkbox for 'sent to self' |
|
693 | + $form['emailteam']['selfsend'] = array( |
|
694 | 694 | '#type' => 'checkbox', |
695 | 695 | '#title' => bts('Check this box if you wish to be sent a copy of your message to your email address.', array(), NULL, 'boinc:team-message-form'), |
696 | 696 | '#weight' => 10, |
697 | 697 | '#prefix' => '<div class="clearfix" id="confirm-checkbox">', |
698 | 698 | '#suffix' => '</div>', |
699 | - ); |
|
699 | + ); |
|
700 | 700 | |
701 | - // Add a captcha to form |
|
702 | - if (module_exists('captcha')) { |
|
701 | + // Add a captcha to form |
|
702 | + if (module_exists('captcha')) { |
|
703 | 703 | $form['register_captcha'] = array( |
704 | 704 | '#type' => 'captcha', |
705 | 705 | '#weight' => 1000, |
706 | 706 | ); |
707 | - } |
|
707 | + } |
|
708 | 708 | |
709 | - // form buttons |
|
710 | - $form['emailteam']['form control tabs prefix'] = array( |
|
709 | + // form buttons |
|
710 | + $form['emailteam']['form control tabs prefix'] = array( |
|
711 | 711 | '#value' => '<ul class="form-control tab-list">', |
712 | 712 | '#weight' => 1000, |
713 | - ); |
|
713 | + ); |
|
714 | 714 | |
715 | - $form['emailteam']['submit'] = array( |
|
715 | + $form['emailteam']['submit'] = array( |
|
716 | 716 | '#type' => 'submit', |
717 | 717 | '#value' => bts('Send message', array(), NULL, 'boinc:form-submit'), |
718 | 718 | '#submit' => array('boincteam_sendmessagetoteam_submit'), |
@@ -720,133 +720,133 @@ discard block |
||
720 | 720 | '#weight' => 1001, |
721 | 721 | '#prefix' => '<li class="first tab">', |
722 | 722 | '#suffix' => '</li>' |
723 | - ); |
|
723 | + ); |
|
724 | 724 | |
725 | - $title = bts('Cancel', array(), NULL, 'boinc:form-cancel'); |
|
726 | - $url = "community/teams/{$team_id}"; |
|
727 | - $form['emailteam']['cancel'] = array( |
|
725 | + $title = bts('Cancel', array(), NULL, 'boinc:form-cancel'); |
|
726 | + $url = "community/teams/{$team_id}"; |
|
727 | + $form['emailteam']['cancel'] = array( |
|
728 | 728 | '#value' => l($title, $url, array('attributes' => array('id' => 'edit-cancel'))), |
729 | 729 | '#weight' => 1005, |
730 | 730 | '#prefix' => '<li class="tab">', |
731 | 731 | '#suffix' => '</li>' |
732 | - ); |
|
732 | + ); |
|
733 | 733 | |
734 | - $form['emailteam']['form control tabs suffix'] = array( |
|
734 | + $form['emailteam']['form control tabs suffix'] = array( |
|
735 | 735 | '#value' => '</ul>', |
736 | 736 | '#weight' => 1010, |
737 | - ); |
|
737 | + ); |
|
738 | 738 | |
739 | - // Add team id information to form_state |
|
740 | - $form['_team_id'] = array( |
|
739 | + // Add team id information to form_state |
|
740 | + $form['_team_id'] = array( |
|
741 | 741 | '#type' => 'value', |
742 | 742 | '#value' => $team_id, |
743 | - ); |
|
743 | + ); |
|
744 | 744 | |
745 | - // Add sender user object to form_state |
|
746 | - $form['_senderuid'] = array( |
|
745 | + // Add sender user object to form_state |
|
746 | + $form['_senderuid'] = array( |
|
747 | 747 | '#type' => 'value', |
748 | 748 | '#value' => $user->uid, |
749 | - ); |
|
749 | + ); |
|
750 | 750 | |
751 | - // redirect after sending message |
|
752 | - $form['#redirect'] = "community/teams/{$team_id}"; |
|
751 | + // redirect after sending message |
|
752 | + $form['#redirect'] = "community/teams/{$team_id}"; |
|
753 | 753 | |
754 | - return $form; |
|
754 | + return $form; |
|
755 | 755 | } |
756 | 756 | |
757 | 757 | /** |
758 | 758 | * Send all team members validation handler |
759 | 759 | */ |
760 | 760 | function boincteam_sendmessagetoteam_validate($form, &$form_state) { |
761 | - $message = $form_state['values']; |
|
762 | - $message['timestamp'] = time(); |
|
763 | - // Avoid subjects which only consist of a space as these can not be clicked. |
|
764 | - $message['subject'] = trim($message['subject']); |
|
761 | + $message = $form_state['values']; |
|
762 | + $message['timestamp'] = time(); |
|
763 | + // Avoid subjects which only consist of a space as these can not be clicked. |
|
764 | + $message['subject'] = trim($message['subject']); |
|
765 | 765 | |
766 | - $trimed_body = trim(truncate_utf8(strip_tags($message['body']), 50, TRUE, TRUE)); |
|
767 | - if (empty($message['subject']) && !empty($trimed_body)) { |
|
766 | + $trimed_body = trim(truncate_utf8(strip_tags($message['body']), 50, TRUE, TRUE)); |
|
767 | + if (empty($message['subject']) && !empty($trimed_body)) { |
|
768 | 768 | $message['subject'] = $trimed_body; |
769 | 769 | $form_state['values']['subject'] = $message['subject']; |
770 | - } |
|
770 | + } |
|
771 | 771 | |
772 | - // Check subject line |
|
773 | - $message['subject'] = trim($message['subject']); |
|
774 | - if (empty($message['subject'])) { |
|
772 | + // Check subject line |
|
773 | + $message['subject'] = trim($message['subject']); |
|
774 | + if (empty($message['subject'])) { |
|
775 | 775 | form_set_error('subject', |
776 | - bts('Not allowed to send a message without subject', array(), NULL, 'boinc:team-message-form') |
|
776 | + bts('Not allowed to send a message without subject', array(), NULL, 'boinc:team-message-form') |
|
777 | 777 | ); |
778 | - } |
|
778 | + } |
|
779 | 779 | |
780 | - // Check body |
|
781 | - if ( ($message['body'] === NULL || $message['body'] === '') ) { |
|
780 | + // Check body |
|
781 | + if ( ($message['body'] === NULL || $message['body'] === '') ) { |
|
782 | 782 | form_set_error('body', |
783 | - bts('Not allowed to send an empty message.', array(), NULL, 'boinc:team-message-form') |
|
783 | + bts('Not allowed to send an empty message.', array(), NULL, 'boinc:team-message-form') |
|
784 | 784 | ); |
785 | - } |
|
785 | + } |
|
786 | 786 | |
787 | - // Check team id |
|
788 | - if (empty($message['_team_id'])) { |
|
787 | + // Check team id |
|
788 | + if (empty($message['_team_id'])) { |
|
789 | 789 | form_set_error('team_id', |
790 | - bts('Error, no team_id supplied.', array(), NULL, 'boinc:team-message-form') |
|
790 | + bts('Error, no team_id supplied.', array(), NULL, 'boinc:team-message-form') |
|
791 | 791 | ); |
792 | - } |
|
792 | + } |
|
793 | 793 | |
794 | - $form_state['validated_built_message'] = $message; |
|
794 | + $form_state['validated_built_message'] = $message; |
|
795 | 795 | } |
796 | 796 | |
797 | 797 | /** |
798 | 798 | * Send all team members submit handler |
799 | 799 | */ |
800 | 800 | function boincteam_sendmessagetoteam_submit($form, &$form_state) { |
801 | - module_load_include('inc', 'rules', 'modules/system.rules'); |
|
802 | - global $base_url; |
|
803 | - global $base_path; |
|
804 | - |
|
805 | - $suid = $form_state['values']['_senderuid']; |
|
806 | - $account = user_load(array('uid' => $suid )); |
|
807 | - $site_url = $base_url . $base_path . "messages/new/" . $suid; |
|
808 | - |
|
809 | - // Form is validated, now send to all team members. Lookup boinc |
|
810 | - // id of all team members, and then use user_load() to load user |
|
811 | - // object. Send message using email. |
|
812 | - // |
|
813 | - $boinc_id = boincteam_lookup_id($form_state['values']['_team_id']); |
|
814 | - // Email addresses, with those who have opt-ed out of notification |
|
815 | - // emails removed. |
|
816 | - $member_emails = _boincteam_emails($boinc_id); |
|
817 | - // Remove sender's email address, unless selfsend is true. |
|
818 | - if ( !$form_state['values']['selfsend'] ) { |
|
801 | + module_load_include('inc', 'rules', 'modules/system.rules'); |
|
802 | + global $base_url; |
|
803 | + global $base_path; |
|
804 | + |
|
805 | + $suid = $form_state['values']['_senderuid']; |
|
806 | + $account = user_load(array('uid' => $suid )); |
|
807 | + $site_url = $base_url . $base_path . "messages/new/" . $suid; |
|
808 | + |
|
809 | + // Form is validated, now send to all team members. Lookup boinc |
|
810 | + // id of all team members, and then use user_load() to load user |
|
811 | + // object. Send message using email. |
|
812 | + // |
|
813 | + $boinc_id = boincteam_lookup_id($form_state['values']['_team_id']); |
|
814 | + // Email addresses, with those who have opt-ed out of notification |
|
815 | + // emails removed. |
|
816 | + $member_emails = _boincteam_emails($boinc_id); |
|
817 | + // Remove sender's email address, unless selfsend is true. |
|
818 | + if ( !$form_state['values']['selfsend'] ) { |
|
819 | 819 | $pos = array_search($account->mail, $member_emails); |
820 | 820 | unset($member_emails[$pos]); |
821 | - } |
|
821 | + } |
|
822 | 822 | |
823 | - // Add link at bottom of body |
|
824 | - $mybody = $form_state['validated_built_message']['body']; |
|
825 | - $mybody .= "\n\n" |
|
826 | - . "To reply to the sender using a Direct Message (DM), please use this link:\n" |
|
827 | - . "${site_url}"; |
|
823 | + // Add link at bottom of body |
|
824 | + $mybody = $form_state['validated_built_message']['body']; |
|
825 | + $mybody .= "\n\n" |
|
826 | + . "To reply to the sender using a Direct Message (DM), please use this link:\n" |
|
827 | + . "${site_url}"; |
|
828 | 828 | |
829 | - // Transform HTML body into plain text |
|
830 | - $mybody = drupal_html_to_text($mybody); |
|
829 | + // Transform HTML body into plain text |
|
830 | + $mybody = drupal_html_to_text($mybody); |
|
831 | 831 | |
832 | - $emailsettings = array( |
|
832 | + $emailsettings = array( |
|
833 | 833 | 'from' => '', |
834 | 834 | 'to' => "webmaster@{$base_url}", |
835 | 835 | 'boincteam_headers' => array( |
836 | - 'Bcc' => implode(', ', $member_emails), |
|
836 | + 'Bcc' => implode(', ', $member_emails), |
|
837 | 837 | ), |
838 | 838 | 'subject' => $form_state['validated_built_message']['subject'], |
839 | 839 | 'message' => $mybody, |
840 | - ); |
|
841 | - rules_action_mail($emailsettings); |
|
840 | + ); |
|
841 | + rules_action_mail($emailsettings); |
|
842 | 842 | |
843 | - $om = bts( |
|
843 | + $om = bts( |
|
844 | 844 | 'Sent your email message to !number team members.', |
845 | 845 | array( '!number' => count($member_emails) ), |
846 | 846 | 'NULL', |
847 | 847 | 'boinc:team-message-sent' |
848 | - ); |
|
849 | - drupal_set_message($om, 'info'); |
|
848 | + ); |
|
849 | + drupal_set_message($om, 'info'); |
|
850 | 850 | |
851 | - $form_state['redirect'] = "community/teams/{$form_state['values']['_team_id']}"; |
|
851 | + $form_state['redirect'] = "community/teams/{$form_state['values']['_team_id']}"; |
|
852 | 852 | } |
@@ -13,80 +13,80 @@ |
||
13 | 13 | */ |
14 | 14 | function boincteam_forum_views_data() { |
15 | 15 | |
16 | - // ----------------------------------------------------------------------------------------------- |
|
17 | - // Definition for team table |
|
18 | - // ----------------------------------------------------------------------------------------------- |
|
16 | + // ----------------------------------------------------------------------------------------------- |
|
17 | + // Definition for team table |
|
18 | + // ----------------------------------------------------------------------------------------------- |
|
19 | 19 | |
20 | - $data['boincteam_forum_node']['table']['group'] = t('BOINC'); |
|
20 | + $data['boincteam_forum_node']['table']['group'] = t('BOINC'); |
|
21 | 21 | |
22 | - $data['boincteam_forum_node']['table']['base'] = array( |
|
23 | - 'field' => 'nid', |
|
24 | - 'title' => t('BOINC team forum topic'), |
|
25 | - 'help' => t('Forum topics for a team'), |
|
26 | - ); |
|
22 | + $data['boincteam_forum_node']['table']['base'] = array( |
|
23 | + 'field' => 'nid', |
|
24 | + 'title' => t('BOINC team forum topic'), |
|
25 | + 'help' => t('Forum topics for a team'), |
|
26 | + ); |
|
27 | 27 | |
28 | - // Describe each of the individual fields in this table to Views. For |
|
29 | - // each field, you may define what field, sort, argument, and/or filter |
|
30 | - // handlers it supports. This will determine where in the Views interface you |
|
31 | - // may use the field. |
|
28 | + // Describe each of the individual fields in this table to Views. For |
|
29 | + // each field, you may define what field, sort, argument, and/or filter |
|
30 | + // handlers it supports. This will determine where in the Views interface you |
|
31 | + // may use the field. |
|
32 | 32 | |
33 | - // Primary keys allowed as arguments |
|
33 | + // Primary keys allowed as arguments |
|
34 | 34 | |
35 | - $data['boincteam_forum_node']['tfid'] = array( |
|
35 | + $data['boincteam_forum_node']['tfid'] = array( |
|
36 | 36 | 'title' => t('Team forum ID'), |
37 | 37 | 'help' => t('The ID of the team forum containing this topic.'), |
38 | 38 | 'field' => array( |
39 | - 'handler' => 'views_handler_field_numeric', |
|
40 | - 'click sortable' => TRUE |
|
39 | + 'handler' => 'views_handler_field_numeric', |
|
40 | + 'click sortable' => TRUE |
|
41 | 41 | ), |
42 | 42 | 'argument' => array( |
43 | - 'handler' => 'views_handler_argument_numeric', |
|
44 | - 'name field' => 'title', // the field to display in the summary. |
|
45 | - 'numeric' => TRUE, |
|
46 | - 'validate type' => 'id' |
|
43 | + 'handler' => 'views_handler_argument_numeric', |
|
44 | + 'name field' => 'title', // the field to display in the summary. |
|
45 | + 'numeric' => TRUE, |
|
46 | + 'validate type' => 'id' |
|
47 | 47 | ), |
48 | 48 | 'relationship' => array( |
49 | - 'base' => 'boincteam_forum', |
|
50 | - 'field' => 'tfid', |
|
51 | - 'handler' => 'views_handler_relationship', |
|
52 | - 'label' => t('Team Forum') |
|
49 | + 'base' => 'boincteam_forum', |
|
50 | + 'field' => 'tfid', |
|
51 | + 'handler' => 'views_handler_relationship', |
|
52 | + 'label' => t('Team Forum') |
|
53 | 53 | ), |
54 | 54 | 'filter' => array( |
55 | - 'handler' => 'views_handler_filter_numeric' |
|
55 | + 'handler' => 'views_handler_filter_numeric' |
|
56 | 56 | ), |
57 | 57 | 'sort' => array( |
58 | - 'handler' => 'views_handler_sort_numeric' |
|
58 | + 'handler' => 'views_handler_sort_numeric' |
|
59 | 59 | ) |
60 | - ); |
|
60 | + ); |
|
61 | 61 | |
62 | - // Foreign key fields |
|
62 | + // Foreign key fields |
|
63 | 63 | |
64 | - $data['boincteam_forum_node']['nid'] = array( |
|
64 | + $data['boincteam_forum_node']['nid'] = array( |
|
65 | 65 | 'title' => t('Team forum node'), |
66 | 66 | 'help' => t('The node containing the content of this team forum topic.'), |
67 | 67 | // This is a foreign key to the {node} table. When the view is configured |
68 | 68 | // with this relationship, all the fields for the related user node will be |
69 | 69 | // available. |
70 | 70 | 'relationship' => array( |
71 | - 'base' => 'node', |
|
72 | - 'field' => 'nid', |
|
73 | - 'handler' => 'views_handler_relationship', |
|
74 | - 'label' => t('Team Forum Topic Node') |
|
71 | + 'base' => 'node', |
|
72 | + 'field' => 'nid', |
|
73 | + 'handler' => 'views_handler_relationship', |
|
74 | + 'label' => t('Team Forum Topic Node') |
|
75 | 75 | ), |
76 | 76 | 'field' => array( |
77 | - 'handler' => 'views_handler_field_numeric', |
|
78 | - 'click sortable' => TRUE |
|
77 | + 'handler' => 'views_handler_field_numeric', |
|
78 | + 'click sortable' => TRUE |
|
79 | 79 | ), |
80 | 80 | 'filter' => array( |
81 | - 'handler' => 'views_handler_filter_numeric' |
|
81 | + 'handler' => 'views_handler_filter_numeric' |
|
82 | 82 | ), |
83 | 83 | 'sort' => array( |
84 | - 'handler' => 'views_handler_sort_numeric' |
|
84 | + 'handler' => 'views_handler_sort_numeric' |
|
85 | 85 | ) |
86 | - ); |
|
86 | + ); |
|
87 | 87 | |
88 | - // Descriptions of general fields (alphabetized) |
|
89 | - // ... |
|
88 | + // Descriptions of general fields (alphabetized) |
|
89 | + // ... |
|
90 | 90 | |
91 | - return $data; |
|
91 | + return $data; |
|
92 | 92 | } |
@@ -13,103 +13,103 @@ discard block |
||
13 | 13 | */ |
14 | 14 | function boincteam_views_data() { |
15 | 15 | |
16 | - // ----------------------------------------------------------------------------------------------- |
|
17 | - // Definition for team table |
|
18 | - // ----------------------------------------------------------------------------------------------- |
|
16 | + // ----------------------------------------------------------------------------------------------- |
|
17 | + // Definition for team table |
|
18 | + // ----------------------------------------------------------------------------------------------- |
|
19 | 19 | |
20 | - $data['team']['table']['group'] = t('BOINC'); |
|
20 | + $data['team']['table']['group'] = t('BOINC'); |
|
21 | 21 | |
22 | - $data['team']['table']['base'] = array( |
|
23 | - 'field' => 'id', |
|
24 | - 'title' => t('BOINC team'), |
|
25 | - 'help' => t('BOINC data for a team'), |
|
26 | - 'database' => 'boinc_rw' |
|
27 | - ); |
|
22 | + $data['team']['table']['base'] = array( |
|
23 | + 'field' => 'id', |
|
24 | + 'title' => t('BOINC team'), |
|
25 | + 'help' => t('BOINC data for a team'), |
|
26 | + 'database' => 'boinc_rw' |
|
27 | + ); |
|
28 | 28 | |
29 | - // This table references the {user} table. |
|
30 | - // This join creates an 'implicit' relationship to the user table, so that when |
|
31 | - // "User" is the base table, the fields are automatically available. |
|
29 | + // This table references the {user} table. |
|
30 | + // This join creates an 'implicit' relationship to the user table, so that when |
|
31 | + // "User" is the base table, the fields are automatically available. |
|
32 | 32 | |
33 | - // Index this array by the table name to which this table refers. |
|
34 | - // 'left_field' is the primary key in the referenced table. |
|
35 | - // 'field' is the foreign key in this table. |
|
33 | + // Index this array by the table name to which this table refers. |
|
34 | + // 'left_field' is the primary key in the referenced table. |
|
35 | + // 'field' is the foreign key in this table. |
|
36 | 36 | |
37 | - $data['team']['table']['join'] = array( |
|
37 | + $data['team']['table']['join'] = array( |
|
38 | 38 | 'user' => array( |
39 | - 'left_field' => 'id', |
|
40 | - 'field' => 'userid', |
|
39 | + 'left_field' => 'id', |
|
40 | + 'field' => 'userid', |
|
41 | 41 | ), |
42 | - ); |
|
42 | + ); |
|
43 | 43 | |
44 | - // Describe each of the individual fields in this table to Views. For |
|
45 | - // each field, you may define what field, sort, argument, and/or filter |
|
46 | - // handlers it supports. This will determine where in the Views interface you |
|
47 | - // may use the field. |
|
44 | + // Describe each of the individual fields in this table to Views. For |
|
45 | + // each field, you may define what field, sort, argument, and/or filter |
|
46 | + // handlers it supports. This will determine where in the Views interface you |
|
47 | + // may use the field. |
|
48 | 48 | |
49 | - // Primary keys allowed as arguments |
|
49 | + // Primary keys allowed as arguments |
|
50 | 50 | |
51 | - $data['team']['id'] = array( |
|
51 | + $data['team']['id'] = array( |
|
52 | 52 | 'title' => bts('Team ID', array(), NULL, 'boinc:team-id'), |
53 | 53 | 'help' => t('The BOINC ID of the team.'), |
54 | 54 | 'field' => array( |
55 | - 'handler' => 'views_handler_field_numeric', |
|
56 | - 'click sortable' => TRUE |
|
55 | + 'handler' => 'views_handler_field_numeric', |
|
56 | + 'click sortable' => TRUE |
|
57 | 57 | ), |
58 | 58 | 'argument' => array( |
59 | - 'handler' => 'views_handler_argument_boincteam_id', // custom handler |
|
60 | - 'name field' => 'title', // the field to display in the summary. |
|
61 | - 'numeric' => TRUE, |
|
62 | - 'validate type' => 'id' |
|
59 | + 'handler' => 'views_handler_argument_boincteam_id', // custom handler |
|
60 | + 'name field' => 'title', // the field to display in the summary. |
|
61 | + 'numeric' => TRUE, |
|
62 | + 'validate type' => 'id' |
|
63 | 63 | ), |
64 | 64 | 'relationship' => array( |
65 | - 'base' => 'team_delta', |
|
66 | - 'field' => 'id', |
|
67 | - 'base field' => 'teamid', |
|
68 | - 'handler' => 'views_handler_relationship', |
|
69 | - 'label' => t('Team History') |
|
65 | + 'base' => 'team_delta', |
|
66 | + 'field' => 'id', |
|
67 | + 'base field' => 'teamid', |
|
68 | + 'handler' => 'views_handler_relationship', |
|
69 | + 'label' => t('Team History') |
|
70 | 70 | ), |
71 | 71 | 'filter' => array( |
72 | - 'handler' => 'views_handler_filter_numeric' |
|
72 | + 'handler' => 'views_handler_filter_numeric' |
|
73 | 73 | ), |
74 | 74 | 'sort' => array( |
75 | - 'handler' => 'views_handler_sort_numeric' |
|
75 | + 'handler' => 'views_handler_sort_numeric' |
|
76 | 76 | ) |
77 | - ); |
|
77 | + ); |
|
78 | 78 | |
79 | - // Foreign key fields |
|
79 | + // Foreign key fields |
|
80 | 80 | |
81 | - $data['team']['userid'] = array( |
|
81 | + $data['team']['userid'] = array( |
|
82 | 82 | 'title' => bts('Founder', array(), NULL, 'boinc:view-team-info'), |
83 | 83 | 'help' => t('The founder of this team.'), |
84 | 84 | // This is a foreign key to the {user} table. When the view is configured |
85 | 85 | // with this relationship, all the fields for the related user node will be |
86 | 86 | // available. |
87 | 87 | 'argument' => array( |
88 | - 'handler' => 'views_handler_argument_boincuser_id', |
|
89 | - 'name field' => 'title', |
|
90 | - 'numeric' => TRUE, |
|
91 | - 'validate type' => 'id' |
|
88 | + 'handler' => 'views_handler_argument_boincuser_id', |
|
89 | + 'name field' => 'title', |
|
90 | + 'numeric' => TRUE, |
|
91 | + 'validate type' => 'id' |
|
92 | 92 | ), |
93 | 93 | 'relationship' => array( |
94 | - 'base' => 'user', |
|
95 | - 'field' => 'userid', |
|
96 | - 'handler' => 'views_handler_relationship', |
|
97 | - 'label' => t('User') |
|
94 | + 'base' => 'user', |
|
95 | + 'field' => 'userid', |
|
96 | + 'handler' => 'views_handler_relationship', |
|
97 | + 'label' => t('User') |
|
98 | 98 | ), |
99 | 99 | 'field' => array( |
100 | - 'handler' => 'views_handler_field_numeric', |
|
101 | - 'click sortable' => TRUE |
|
100 | + 'handler' => 'views_handler_field_numeric', |
|
101 | + 'click sortable' => TRUE |
|
102 | 102 | ), |
103 | 103 | 'filter' => array( |
104 | - 'handler' => 'views_handler_filter_numeric' |
|
104 | + 'handler' => 'views_handler_filter_numeric' |
|
105 | 105 | ), |
106 | 106 | 'sort' => array( |
107 | - 'handler' => 'views_handler_sort_numeric' |
|
107 | + 'handler' => 'views_handler_sort_numeric' |
|
108 | 108 | ) |
109 | - ); |
|
109 | + ); |
|
110 | 110 | |
111 | - // Descriptions of general fields (alphabetized) |
|
112 | - /* |
|
111 | + // Descriptions of general fields (alphabetized) |
|
112 | + /* |
|
113 | 113 | $data['team']['create_time'] = array( |
114 | 114 | 'title' => bts('Team established', array(), NULL, 'boinc:date-team-established'), |
115 | 115 | 'help' => t('When the BOINC team was created.'), |
@@ -140,298 +140,298 @@ discard block |
||
140 | 140 | ); |
141 | 141 | */ |
142 | 142 | |
143 | - $data['team']['country'] = array( |
|
143 | + $data['team']['country'] = array( |
|
144 | 144 | 'title' => bts('Country', array(), NULL, 'boinc:country-of-origin'), |
145 | 145 | 'help' => t('The country of a team.'), |
146 | 146 | 'field' => array( |
147 | - 'handler' => 'views_handler_field', |
|
148 | - 'click sortable' => TRUE |
|
147 | + 'handler' => 'views_handler_field', |
|
148 | + 'click sortable' => TRUE |
|
149 | 149 | ), |
150 | 150 | 'filter' => array( |
151 | - 'handler' => 'views_handler_filter_string' |
|
151 | + 'handler' => 'views_handler_filter_string' |
|
152 | 152 | ), |
153 | 153 | 'sort' => array( |
154 | - 'handler' => 'views_handler_sort_string' |
|
154 | + 'handler' => 'views_handler_sort_string' |
|
155 | 155 | ) |
156 | - ); |
|
157 | - $data['team']['expavg_credit'] = array( |
|
156 | + ); |
|
157 | + $data['team']['expavg_credit'] = array( |
|
158 | 158 | 'title' => bts('Recent average credit', array(), NULL, 'boinc:user-or-team-RAC'), |
159 | 159 | 'help' => t('A decaying average of team credit per day.'), |
160 | 160 | 'field' => array( |
161 | - 'handler' => 'views_handler_field_numeric', |
|
162 | - 'click sortable' => TRUE, |
|
163 | - 'float' => TRUE |
|
161 | + 'handler' => 'views_handler_field_numeric', |
|
162 | + 'click sortable' => TRUE, |
|
163 | + 'float' => TRUE |
|
164 | 164 | ), |
165 | 165 | 'filter' => array( |
166 | - 'handler' => 'views_handler_filter_numeric' |
|
166 | + 'handler' => 'views_handler_filter_numeric' |
|
167 | 167 | ), |
168 | 168 | 'sort' => array( |
169 | - 'handler' => 'views_handler_sort_numeric' |
|
169 | + 'handler' => 'views_handler_sort_numeric' |
|
170 | 170 | ) |
171 | - ); |
|
172 | - $data['team']['name'] = array( |
|
171 | + ); |
|
172 | + $data['team']['name'] = array( |
|
173 | 173 | 'title' => bts('Name', array(), NULL, 'boinc:user-or-team-name'), |
174 | 174 | 'help' => t('The name of the team.'), |
175 | 175 | 'field' => array( |
176 | - 'handler' => 'views_handler_field', |
|
177 | - 'click sortable' => TRUE |
|
176 | + 'handler' => 'views_handler_field', |
|
177 | + 'click sortable' => TRUE |
|
178 | 178 | ), |
179 | 179 | 'filter' => array( |
180 | - 'handler' => 'views_handler_filter_string' |
|
180 | + 'handler' => 'views_handler_filter_string' |
|
181 | 181 | ), |
182 | 182 | 'sort' => array( |
183 | - 'handler' => 'views_handler_sort_string' |
|
183 | + 'handler' => 'views_handler_sort_string' |
|
184 | 184 | ) |
185 | - ); |
|
186 | - $data['team']['nusers'] = array( |
|
185 | + ); |
|
186 | + $data['team']['nusers'] = array( |
|
187 | 187 | 'title' => bts('Members', array(), NULL, 'boinc:team-members'), |
188 | 188 | 'help' => t('Count of team members.'), |
189 | 189 | 'field' => array( |
190 | - 'handler' => 'views_handler_field_numeric', |
|
191 | - 'click sortable' => TRUE |
|
190 | + 'handler' => 'views_handler_field_numeric', |
|
191 | + 'click sortable' => TRUE |
|
192 | 192 | ), |
193 | 193 | 'filter' => array( |
194 | - 'handler' => 'views_handler_filter_numeric' |
|
194 | + 'handler' => 'views_handler_filter_numeric' |
|
195 | 195 | ), |
196 | 196 | 'sort' => array( |
197 | - 'handler' => 'views_handler_sort_numeric' |
|
197 | + 'handler' => 'views_handler_sort_numeric' |
|
198 | 198 | ) |
199 | - ); |
|
200 | - $data['team']['total_credit'] = array( |
|
199 | + ); |
|
200 | + $data['team']['total_credit'] = array( |
|
201 | 201 | 'title' => bts('Total credit', array(), NULL, 'boinc:user-or-team-total-credits'), |
202 | 202 | 'help' => t('The total team accumulated BOINC credit.'), |
203 | 203 | 'field' => array( |
204 | - 'handler' => 'views_handler_field_numeric', |
|
205 | - 'click sortable' => TRUE, |
|
206 | - 'float' => TRUE |
|
204 | + 'handler' => 'views_handler_field_numeric', |
|
205 | + 'click sortable' => TRUE, |
|
206 | + 'float' => TRUE |
|
207 | 207 | ), |
208 | 208 | 'filter' => array( |
209 | - 'handler' => 'views_handler_filter_numeric' |
|
209 | + 'handler' => 'views_handler_filter_numeric' |
|
210 | 210 | ), |
211 | 211 | 'sort' => array( |
212 | - 'handler' => 'views_handler_sort_numeric' |
|
212 | + 'handler' => 'views_handler_sort_numeric' |
|
213 | 213 | ) |
214 | - ); |
|
214 | + ); |
|
215 | 215 | |
216 | - // ----------------------------------------------------------------------------------------------- |
|
217 | - // Definition for team_admin table |
|
218 | - // ----------------------------------------------------------------------------------------------- |
|
216 | + // ----------------------------------------------------------------------------------------------- |
|
217 | + // Definition for team_admin table |
|
218 | + // ----------------------------------------------------------------------------------------------- |
|
219 | 219 | |
220 | - $data['team_admin']['table']['group'] = t('BOINC'); |
|
220 | + $data['team_admin']['table']['group'] = t('BOINC'); |
|
221 | 221 | |
222 | - $data['team_admin']['table']['base'] = array( |
|
223 | - 'field' => 'id', |
|
224 | - 'title' => t('BOINC team admins'), |
|
225 | - 'help' => t('BOINC admins for a team'), |
|
226 | - 'database' => 'boinc_rw' |
|
227 | - ); |
|
222 | + $data['team_admin']['table']['base'] = array( |
|
223 | + 'field' => 'id', |
|
224 | + 'title' => t('BOINC team admins'), |
|
225 | + 'help' => t('BOINC admins for a team'), |
|
226 | + 'database' => 'boinc_rw' |
|
227 | + ); |
|
228 | 228 | |
229 | - // This table references the {team} table. |
|
230 | - // This join creates an 'implicit' relationship to the team table, so that when |
|
231 | - // "Team" is the base table, the fields are automatically available. |
|
229 | + // This table references the {team} table. |
|
230 | + // This join creates an 'implicit' relationship to the team table, so that when |
|
231 | + // "Team" is the base table, the fields are automatically available. |
|
232 | 232 | |
233 | - // Index this array by the table name to which this table refers. |
|
234 | - // 'left_field' is the primary key in the referenced table. |
|
235 | - // 'field' is the foreign key in this table. |
|
233 | + // Index this array by the table name to which this table refers. |
|
234 | + // 'left_field' is the primary key in the referenced table. |
|
235 | + // 'field' is the foreign key in this table. |
|
236 | 236 | |
237 | - $data['team_admin']['table']['join'] = array( |
|
237 | + $data['team_admin']['table']['join'] = array( |
|
238 | 238 | 'team' => array( |
239 | - 'left_field' => 'id', |
|
240 | - 'field' => 'teamid', |
|
239 | + 'left_field' => 'id', |
|
240 | + 'field' => 'teamid', |
|
241 | 241 | ), |
242 | - ); |
|
242 | + ); |
|
243 | 243 | |
244 | - // Describe each of the individual fields in this table to Views. For |
|
245 | - // each field, you may define what field, sort, argument, and/or filter |
|
246 | - // handlers it supports. This will determine where in the Views interface you |
|
247 | - // may use the field. |
|
244 | + // Describe each of the individual fields in this table to Views. For |
|
245 | + // each field, you may define what field, sort, argument, and/or filter |
|
246 | + // handlers it supports. This will determine where in the Views interface you |
|
247 | + // may use the field. |
|
248 | 248 | |
249 | - // Primary keys allowed as arguments |
|
249 | + // Primary keys allowed as arguments |
|
250 | 250 | |
251 | - $data['team_admin']['teamid'] = array( |
|
251 | + $data['team_admin']['teamid'] = array( |
|
252 | 252 | 'title' => bts('Team ID', array(), NULL, 'boinc:team-id'), |
253 | 253 | 'help' => t('The BOINC ID of the team on which this user is an admin.'), |
254 | 254 | 'field' => array( |
255 | - 'handler' => 'views_handler_field_numeric', |
|
256 | - 'click sortable' => TRUE |
|
255 | + 'handler' => 'views_handler_field_numeric', |
|
256 | + 'click sortable' => TRUE |
|
257 | 257 | ), |
258 | 258 | 'argument' => array( |
259 | - 'handler' => 'views_handler_argument_boincteam_id', // custom handler |
|
260 | - 'name field' => 'title', // the field to display in the summary. |
|
261 | - 'numeric' => TRUE, |
|
262 | - 'validate type' => 'id' |
|
259 | + 'handler' => 'views_handler_argument_boincteam_id', // custom handler |
|
260 | + 'name field' => 'title', // the field to display in the summary. |
|
261 | + 'numeric' => TRUE, |
|
262 | + 'validate type' => 'id' |
|
263 | 263 | ), |
264 | 264 | 'relationship' => array( |
265 | - 'base' => 'team', |
|
266 | - 'field' => 'teamid', |
|
267 | - 'handler' => 'views_handler_relationship', |
|
268 | - 'label' => t('Team') |
|
265 | + 'base' => 'team', |
|
266 | + 'field' => 'teamid', |
|
267 | + 'handler' => 'views_handler_relationship', |
|
268 | + 'label' => t('Team') |
|
269 | 269 | ), |
270 | 270 | 'filter' => array( |
271 | - 'handler' => 'views_handler_filter_numeric' |
|
271 | + 'handler' => 'views_handler_filter_numeric' |
|
272 | 272 | ), |
273 | 273 | 'sort' => array( |
274 | - 'handler' => 'views_handler_sort_numeric' |
|
274 | + 'handler' => 'views_handler_sort_numeric' |
|
275 | 275 | ) |
276 | - ); |
|
276 | + ); |
|
277 | 277 | |
278 | - // Foreign key fields |
|
278 | + // Foreign key fields |
|
279 | 279 | |
280 | - $data['team_admin']['userid'] = array( |
|
280 | + $data['team_admin']['userid'] = array( |
|
281 | 281 | 'title' => bts('User ID', array(), NULL, 'boinc:user-details'), |
282 | 282 | 'help' => t('The user that is a team admin.'), |
283 | 283 | // This is a foreign key to the {user} table. When the view is configured |
284 | 284 | // with this relationship, all the fields for the related user node will be |
285 | 285 | // available. |
286 | 286 | 'argument' => array( |
287 | - 'handler' => 'views_handler_argument_boincteam_id', |
|
288 | - 'name field' => 'title', |
|
289 | - 'numeric' => TRUE, |
|
290 | - 'validate type' => 'id' |
|
287 | + 'handler' => 'views_handler_argument_boincteam_id', |
|
288 | + 'name field' => 'title', |
|
289 | + 'numeric' => TRUE, |
|
290 | + 'validate type' => 'id' |
|
291 | 291 | ), |
292 | 292 | 'relationship' => array( |
293 | - 'base' => 'user', |
|
294 | - 'field' => 'userid', |
|
295 | - 'handler' => 'views_handler_relationship', |
|
296 | - 'label' => bts('User', array(), NULL, 'boinc:user-on-team') |
|
293 | + 'base' => 'user', |
|
294 | + 'field' => 'userid', |
|
295 | + 'handler' => 'views_handler_relationship', |
|
296 | + 'label' => bts('User', array(), NULL, 'boinc:user-on-team') |
|
297 | 297 | ), |
298 | 298 | 'field' => array( |
299 | - 'handler' => 'views_handler_field_numeric', |
|
300 | - 'click sortable' => TRUE |
|
299 | + 'handler' => 'views_handler_field_numeric', |
|
300 | + 'click sortable' => TRUE |
|
301 | 301 | ), |
302 | 302 | 'filter' => array( |
303 | - 'handler' => 'views_handler_filter_numeric' |
|
303 | + 'handler' => 'views_handler_filter_numeric' |
|
304 | 304 | ), |
305 | 305 | 'sort' => array( |
306 | - 'handler' => 'views_handler_sort_numeric' |
|
306 | + 'handler' => 'views_handler_sort_numeric' |
|
307 | 307 | ) |
308 | - ); |
|
308 | + ); |
|
309 | 309 | |
310 | - // Descriptions of general fields (alphabetized) |
|
310 | + // Descriptions of general fields (alphabetized) |
|
311 | 311 | |
312 | - $data['team_admin']['create_time'] = array( |
|
312 | + $data['team_admin']['create_time'] = array( |
|
313 | 313 | 'title' => bts('Admin since', array(), NULL, 'boinc:team-when-user-became-an-admin'), |
314 | 314 | 'help' => t('When the BOINC user became a team admin.'), |
315 | 315 | 'field' => array( |
316 | - 'handler' => 'views_handler_field_date', |
|
317 | - 'click sortable' => TRUE |
|
316 | + 'handler' => 'views_handler_field_date', |
|
317 | + 'click sortable' => TRUE |
|
318 | 318 | ), |
319 | 319 | 'filter' => array( |
320 | - 'handler' => 'views_handler_filter_date' |
|
320 | + 'handler' => 'views_handler_filter_date' |
|
321 | 321 | ), |
322 | 322 | 'sort' => array( |
323 | - 'handler' => 'views_handler_sort_date' |
|
323 | + 'handler' => 'views_handler_sort_date' |
|
324 | 324 | ) |
325 | - ); |
|
325 | + ); |
|
326 | 326 | |
327 | - // ----------------------------------------------------------------------------------------------- |
|
328 | - // Definition for team_delta table |
|
329 | - // ----------------------------------------------------------------------------------------------- |
|
327 | + // ----------------------------------------------------------------------------------------------- |
|
328 | + // Definition for team_delta table |
|
329 | + // ----------------------------------------------------------------------------------------------- |
|
330 | 330 | |
331 | - $data['team_delta']['table']['group'] = t('BOINC'); |
|
331 | + $data['team_delta']['table']['group'] = t('BOINC'); |
|
332 | 332 | |
333 | - // Describe each of the individual fields in this table to Views. For |
|
334 | - // each field, you may define what field, sort, argument, and/or filter |
|
335 | - // handlers it supports. This will determine where in the Views interface you |
|
336 | - // may use the field. |
|
333 | + // Describe each of the individual fields in this table to Views. For |
|
334 | + // each field, you may define what field, sort, argument, and/or filter |
|
335 | + // handlers it supports. This will determine where in the Views interface you |
|
336 | + // may use the field. |
|
337 | 337 | |
338 | - // Primary keys allowed as arguments |
|
338 | + // Primary keys allowed as arguments |
|
339 | 339 | |
340 | - $data['team_delta']['teamid'] = array( |
|
340 | + $data['team_delta']['teamid'] = array( |
|
341 | 341 | 'title' => bts('Team ID', array(), NULL, 'boinc:team-id'), |
342 | 342 | 'help' => t('The team ID for this team history event.'), |
343 | 343 | // This is a foreign key to the {team} table. When the view is configured |
344 | 344 | // with this relationship, all the fields for the related user node will be |
345 | 345 | // available. |
346 | 346 | 'argument' => array( |
347 | - 'handler' => 'views_handler_argument_boincteam_id', |
|
348 | - 'name field' => 'title', |
|
349 | - 'numeric' => TRUE, |
|
350 | - 'validate type' => 'id' |
|
347 | + 'handler' => 'views_handler_argument_boincteam_id', |
|
348 | + 'name field' => 'title', |
|
349 | + 'numeric' => TRUE, |
|
350 | + 'validate type' => 'id' |
|
351 | 351 | ), |
352 | 352 | 'field' => array( |
353 | - 'handler' => 'views_handler_field_numeric', |
|
354 | - 'click sortable' => TRUE |
|
353 | + 'handler' => 'views_handler_field_numeric', |
|
354 | + 'click sortable' => TRUE |
|
355 | 355 | ), |
356 | 356 | 'filter' => array( |
357 | - 'handler' => 'views_handler_filter_numeric' |
|
357 | + 'handler' => 'views_handler_filter_numeric' |
|
358 | 358 | ), |
359 | 359 | 'sort' => array( |
360 | - 'handler' => 'views_handler_sort_numeric' |
|
360 | + 'handler' => 'views_handler_sort_numeric' |
|
361 | 361 | ) |
362 | - ); |
|
362 | + ); |
|
363 | 363 | |
364 | - // Foreign key fields |
|
364 | + // Foreign key fields |
|
365 | 365 | |
366 | - $data['team_delta']['userid'] = array( |
|
366 | + $data['team_delta']['userid'] = array( |
|
367 | 367 | 'title' => bts('User ID', array(), NULL, 'boinc:user-details'), |
368 | 368 | 'help' => t('The user for this team history event.'), |
369 | 369 | 'relationship' => array( |
370 | - 'base' => 'user', |
|
371 | - 'field' => 'userid', |
|
372 | - 'handler' => 'views_handler_relationship', |
|
373 | - 'label' => t('User') |
|
370 | + 'base' => 'user', |
|
371 | + 'field' => 'userid', |
|
372 | + 'handler' => 'views_handler_relationship', |
|
373 | + 'label' => t('User') |
|
374 | 374 | ), |
375 | 375 | 'field' => array( |
376 | - 'handler' => 'views_handler_field_numeric', |
|
377 | - 'click sortable' => TRUE |
|
376 | + 'handler' => 'views_handler_field_numeric', |
|
377 | + 'click sortable' => TRUE |
|
378 | 378 | ), |
379 | 379 | 'filter' => array( |
380 | - 'handler' => 'views_handler_filter_numeric' |
|
380 | + 'handler' => 'views_handler_filter_numeric' |
|
381 | 381 | ), |
382 | 382 | 'sort' => array( |
383 | - 'handler' => 'views_handler_sort_numeric' |
|
383 | + 'handler' => 'views_handler_sort_numeric' |
|
384 | 384 | ) |
385 | - ); |
|
385 | + ); |
|
386 | 386 | |
387 | - // Descriptions of general fields (alphabetized) |
|
387 | + // Descriptions of general fields (alphabetized) |
|
388 | 388 | |
389 | - $data['team_delta']['joining'] = array( |
|
389 | + $data['team_delta']['joining'] = array( |
|
390 | 390 | 'title' => bts('User joined', array(), NULL, 'boinc:user-joined-or-leaving-team'), |
391 | 391 | 'help' => t('Whether the event is the user joining the team or leaving.'), |
392 | 392 | 'field' => array( |
393 | - 'handler' => 'views_handler_field_numeric', |
|
394 | - 'click sortable' => TRUE |
|
393 | + 'handler' => 'views_handler_field_numeric', |
|
394 | + 'click sortable' => TRUE |
|
395 | 395 | ), |
396 | 396 | 'filter' => array( |
397 | - 'handler' => 'views_handler_filter_numeric' |
|
397 | + 'handler' => 'views_handler_filter_numeric' |
|
398 | 398 | ), |
399 | 399 | 'sort' => array( |
400 | - 'handler' => 'views_handler_sort_numeric' |
|
400 | + 'handler' => 'views_handler_sort_numeric' |
|
401 | 401 | ) |
402 | - ); |
|
403 | - $data['team_delta']['timestamp'] = array( |
|
402 | + ); |
|
403 | + $data['team_delta']['timestamp'] = array( |
|
404 | 404 | 'title' => bts('Timestamp', array(), NULL, 'boinc:team-history-timestamp'), |
405 | 405 | 'help' => t('When the BOINC team history event took place.'), |
406 | 406 | 'field' => array( |
407 | - 'handler' => 'views_handler_field_date', |
|
408 | - 'click sortable' => TRUE |
|
407 | + 'handler' => 'views_handler_field_date', |
|
408 | + 'click sortable' => TRUE |
|
409 | 409 | ), |
410 | 410 | 'filter' => array( |
411 | - 'handler' => 'views_handler_filter_date' |
|
411 | + 'handler' => 'views_handler_filter_date' |
|
412 | 412 | ), |
413 | 413 | 'sort' => array( |
414 | - 'handler' => 'views_handler_sort_date' |
|
414 | + 'handler' => 'views_handler_sort_date' |
|
415 | 415 | ) |
416 | - ); |
|
417 | - $data['team_delta']['total_credit'] = array( |
|
416 | + ); |
|
417 | + $data['team_delta']['total_credit'] = array( |
|
418 | 418 | 'title' => bts('Total credit', array(), NULL, 'user-or-team-total-credits'), |
419 | 419 | 'help' => t('The total accumulated BOINC credit of the user when the |
420 | 420 | history event took place.'), |
421 | 421 | 'field' => array( |
422 | - 'handler' => 'views_handler_field_numeric', |
|
423 | - 'click sortable' => TRUE, |
|
424 | - 'float' => TRUE |
|
422 | + 'handler' => 'views_handler_field_numeric', |
|
423 | + 'click sortable' => TRUE, |
|
424 | + 'float' => TRUE |
|
425 | 425 | ), |
426 | 426 | 'filter' => array( |
427 | - 'handler' => 'views_handler_filter_numeric' |
|
427 | + 'handler' => 'views_handler_filter_numeric' |
|
428 | 428 | ), |
429 | 429 | 'sort' => array( |
430 | - 'handler' => 'views_handler_sort_numeric' |
|
430 | + 'handler' => 'views_handler_sort_numeric' |
|
431 | 431 | ) |
432 | - ); |
|
432 | + ); |
|
433 | 433 | |
434 | - return $data; |
|
434 | + return $data; |
|
435 | 435 | } |
436 | 436 | |
437 | 437 | /* |
@@ -442,14 +442,14 @@ discard block |
||
442 | 442 | */ |
443 | 443 | |
444 | 444 | function boincteam_views_handlers() { |
445 | - return array( |
|
445 | + return array( |
|
446 | 446 | 'info' => array( |
447 | - 'path' => drupal_get_path('module', 'boincteam') . '/views', |
|
447 | + 'path' => drupal_get_path('module', 'boincteam') . '/views', |
|
448 | 448 | ), |
449 | 449 | 'handlers' => array( |
450 | - 'views_handler_argument_boincteam_id' => array( |
|
450 | + 'views_handler_argument_boincteam_id' => array( |
|
451 | 451 | 'parent' => 'views_handler_argument_numeric' |
452 | - ) |
|
452 | + ) |
|
453 | 453 | ) |
454 | - ); |
|
454 | + ); |
|
455 | 455 | } |
@@ -25,29 +25,29 @@ discard block |
||
25 | 25 | * Implementation of hook_menu() |
26 | 26 | */ |
27 | 27 | function boincteam_forum_menu() { |
28 | - $items = array(); |
|
28 | + $items = array(); |
|
29 | 29 | |
30 | - return $items; |
|
30 | + return $items; |
|
31 | 31 | } |
32 | 32 | |
33 | 33 | /** |
34 | 34 | * Implementation of hook_form_alter() |
35 | 35 | */ |
36 | 36 | function boincteam_forum_form_alter(&$form, $form_state, $form_id) { |
37 | - switch ($form_id) { |
|
38 | - // Team forum node edit form |
|
39 | - case 'team_forum_node_form': |
|
37 | + switch ($form_id) { |
|
38 | + // Team forum node edit form |
|
39 | + case 'team_forum_node_form': |
|
40 | 40 | |
41 | 41 | // Internal fields to indicate where these changes are taking place |
42 | 42 | array_unshift($form, array( |
43 | - 'tfid' => array( |
|
43 | + 'tfid' => array( |
|
44 | 44 | '#type' => 'hidden', |
45 | 45 | '#value' => arg(3), |
46 | - ), |
|
46 | + ), |
|
47 | 47 | )); |
48 | 48 | break; |
49 | 49 | |
50 | - default: |
|
50 | + default: |
|
51 | 51 | } |
52 | 52 | } |
53 | 53 | |
@@ -56,26 +56,26 @@ discard block |
||
56 | 56 | * Obsolete in Drupal 7... |
57 | 57 | */ |
58 | 58 | function boincteam_forum_nodeapi(&$node, $op, $a3 = null, $a4 = null) { |
59 | - // In Drupal 7, these operation cases will all exist as their own hooks, |
|
60 | - // so let's approximate that here so that this function can simply be removed |
|
61 | - // upon migration to 7 |
|
62 | - switch($op) { |
|
63 | - case 'insert': |
|
59 | + // In Drupal 7, these operation cases will all exist as their own hooks, |
|
60 | + // so let's approximate that here so that this function can simply be removed |
|
61 | + // upon migration to 7 |
|
62 | + switch($op) { |
|
63 | + case 'insert': |
|
64 | 64 | boincteam_forum_node_insert($node); |
65 | 65 | break; |
66 | - case 'load': |
|
66 | + case 'load': |
|
67 | 67 | boincteam_forum_node_load($node); |
68 | 68 | break; |
69 | - case 'update': |
|
69 | + case 'update': |
|
70 | 70 | boincteam_forum_node_update($node); |
71 | 71 | break; |
72 | - case 'validate': |
|
72 | + case 'validate': |
|
73 | 73 | boincteam_forum_node_validate($node); |
74 | 74 | break; |
75 | - case 'view': |
|
75 | + case 'view': |
|
76 | 76 | boincteam_forum_node_view($node); |
77 | 77 | break; |
78 | - default: |
|
78 | + default: |
|
79 | 79 | } |
80 | 80 | } |
81 | 81 | |
@@ -84,21 +84,21 @@ discard block |
||
84 | 84 | * is inserted (forward compatible to Drupal 7) |
85 | 85 | */ |
86 | 86 | function boincteam_forum_node_insert($node) { |
87 | - switch($node->type) { |
|
88 | - case 'team_forum': |
|
87 | + switch($node->type) { |
|
88 | + case 'team_forum': |
|
89 | 89 | $account = user_load($node->uid); |
90 | 90 | $team_id = boincteam_forum_lookup_nid($node->tfid); |
91 | 91 | if ($account->team == $team_id) { |
92 | - db_query(" |
|
92 | + db_query(" |
|
93 | 93 | INSERT INTO {boincteam_forum_node} SET |
94 | 94 | nid = %d, |
95 | 95 | tfid = %d", |
96 | 96 | $node->nid, $node->tfid |
97 | - ); |
|
97 | + ); |
|
98 | 98 | } |
99 | 99 | unset($node->tfid); |
100 | 100 | break; |
101 | - default: |
|
101 | + default: |
|
102 | 102 | } |
103 | 103 | } |
104 | 104 | |
@@ -107,15 +107,15 @@ discard block |
||
107 | 107 | * is loaded (forward compatible to Drupal 7) |
108 | 108 | */ |
109 | 109 | function boincteam_forum_node_load($node) { |
110 | - switch($node->type) { |
|
111 | - case 'team_forum': |
|
110 | + switch($node->type) { |
|
111 | + case 'team_forum': |
|
112 | 112 | $node->tfid = db_result(db_query(" |
113 | 113 | SELECT tfid FROM {boincteam_forum_node} |
114 | 114 | WHERE nid = %d", $node->nid |
115 | 115 | )); |
116 | 116 | break; |
117 | 117 | |
118 | - default: |
|
118 | + default: |
|
119 | 119 | |
120 | 120 | } |
121 | 121 | } |
@@ -125,12 +125,12 @@ discard block |
||
125 | 125 | * is updated (forward compatible to Drupal 7) |
126 | 126 | */ |
127 | 127 | function boincteam_forum_node_update($node) { |
128 | - switch($node->type) { |
|
129 | - case 'team_forum': |
|
128 | + switch($node->type) { |
|
129 | + case 'team_forum': |
|
130 | 130 | |
131 | 131 | break; |
132 | 132 | |
133 | - default: |
|
133 | + default: |
|
134 | 134 | |
135 | 135 | } |
136 | 136 | } |
@@ -140,8 +140,8 @@ discard block |
||
140 | 140 | * is validated (forward compatible to Drupal 7) |
141 | 141 | */ |
142 | 142 | function boincteam_forum_node_validate($node) { |
143 | - switch($node->type) { |
|
144 | - case 'team_forum': |
|
143 | + switch($node->type) { |
|
144 | + case 'team_forum': |
|
145 | 145 | $account = user_load($node->uid); |
146 | 146 | // Get tfid from node, but if empty/null, get it from the database |
147 | 147 | if (!($node->tfid)) { |
@@ -154,11 +154,11 @@ discard block |
||
154 | 154 | } |
155 | 155 | $team_id = boincteam_forum_lookup_nid($tfid); |
156 | 156 | if (!$account->team OR $account->team != $team_id) { |
157 | - drupal_set_message(t('Failed to add team forum topic.'), 'error'); |
|
158 | - drupal_goto('community/forum'); |
|
157 | + drupal_set_message(t('Failed to add team forum topic.'), 'error'); |
|
158 | + drupal_goto('community/forum'); |
|
159 | 159 | } |
160 | 160 | break; |
161 | - default: |
|
161 | + default: |
|
162 | 162 | } |
163 | 163 | } |
164 | 164 | |
@@ -167,19 +167,19 @@ discard block |
||
167 | 167 | * is viewed (forward compatible to Drupal 7) |
168 | 168 | */ |
169 | 169 | function boincteam_forum_node_view($node) { |
170 | - switch($node->type) { |
|
171 | - case 'team_forum': |
|
170 | + switch($node->type) { |
|
171 | + case 'team_forum': |
|
172 | 172 | $team_id = boincteam_forum_lookup_nid($node->tfid); |
173 | 173 | $public_forum = boincteam_forum_is_public($node->tfid); |
174 | 174 | $is_member = boincteam_is_member($team_id); |
175 | 175 | $is_global_moderator = boincteam_forum_is_global_moderator(); |
176 | 176 | if (!$public_forum AND !$is_member AND !$is_global_moderator) { |
177 | - drupal_not_found(); |
|
178 | - module_invoke_all('exit'); |
|
179 | - exit(); |
|
177 | + drupal_not_found(); |
|
178 | + module_invoke_all('exit'); |
|
179 | + exit(); |
|
180 | 180 | } |
181 | 181 | break; |
182 | - default: |
|
182 | + default: |
|
183 | 183 | } |
184 | 184 | } |
185 | 185 | |
@@ -187,17 +187,17 @@ discard block |
||
187 | 187 | * Implementation of hook_views_api(). |
188 | 188 | */ |
189 | 189 | function boincteam_forum_views_api() { |
190 | - return array( |
|
190 | + return array( |
|
191 | 191 | 'api' => 2.0, |
192 | 192 | 'path' => drupal_get_path('module', 'boincteam_forum') |
193 | - ); |
|
193 | + ); |
|
194 | 194 | } |
195 | 195 | |
196 | 196 | /** |
197 | 197 | * Implementation of hook_perm() |
198 | 198 | */ |
199 | 199 | function boincteam_forum_perm() { |
200 | - return array('manage boincteam forum'); |
|
200 | + return array('manage boincteam forum'); |
|
201 | 201 | } |
202 | 202 | |
203 | 203 | |
@@ -209,43 +209,43 @@ discard block |
||
209 | 209 | * Check if the user has global access to moderate team forums |
210 | 210 | */ |
211 | 211 | function boincteam_forum_is_global_moderator() { |
212 | - global $user; |
|
213 | - return user_access('manage boincteam forum'); |
|
212 | + global $user; |
|
213 | + return user_access('manage boincteam forum'); |
|
214 | 214 | } |
215 | 215 | |
216 | 216 | /* |
217 | 217 | * Check if any forums for a team are public |
218 | 218 | */ |
219 | 219 | function boincteam_forum_is_any_public($team_id) { |
220 | - $forums = boincteam_forum_list($team_id); |
|
221 | - foreach ($forums as $forum) { |
|
220 | + $forums = boincteam_forum_list($team_id); |
|
221 | + foreach ($forums as $forum) { |
|
222 | 222 | if ($forum->public) { |
223 | - return TRUE; |
|
223 | + return TRUE; |
|
224 | 224 | } |
225 | - } |
|
226 | - return FALSE; |
|
225 | + } |
|
226 | + return FALSE; |
|
227 | 227 | } |
228 | 228 | |
229 | 229 | /* |
230 | 230 | * Check if a team forum should be visible to everyone |
231 | 231 | */ |
232 | 232 | function boincteam_forum_is_public($tfid) { |
233 | - return db_result(db_query(" |
|
233 | + return db_result(db_query(" |
|
234 | 234 | SELECT public FROM {boincteam_forum} WHERE tfid=%d", $tfid |
235 | - )); |
|
235 | + )); |
|
236 | 236 | } |
237 | 237 | |
238 | 238 | /* |
239 | 239 | * Load the forums for a team, if any exist |
240 | 240 | */ |
241 | 241 | function boincteam_forum_list($team_id = NULL) { |
242 | - if (!$team_id) { |
|
242 | + if (!$team_id) { |
|
243 | 243 | global $user; |
244 | 244 | $account = user_load($user->uid); |
245 | 245 | $team_id = $account->team; |
246 | - } |
|
247 | - $team_forums = array(); |
|
248 | - if ($team_id) { |
|
246 | + } |
|
247 | + $team_forums = array(); |
|
248 | + if ($team_id) { |
|
249 | 249 | // Load any team forum objects for the user's team |
250 | 250 | $result = db_query(" |
251 | 251 | SELECT tfid, nid, title, description, created, updated, public, |
@@ -255,26 +255,26 @@ discard block |
||
255 | 255 | $row = 0; |
256 | 256 | while ($team_forum = db_fetch_object($result)) { |
257 | 257 | |
258 | - $team_forum->link = url("community/teams/{$team_id}/forum/{$team_forum->tfid}"); |
|
259 | - $team_forum->zebra = $row % 2 ? 'even' : 'odd'; |
|
260 | - $team_forum->new_topics = 0; // TODO: Track user views of team topics |
|
261 | - $team_forum->new_text = ''; |
|
262 | - $team_forum->new_url = ''; |
|
263 | - $team_forum->num_topics = db_result(db_query(" |
|
258 | + $team_forum->link = url("community/teams/{$team_id}/forum/{$team_forum->tfid}"); |
|
259 | + $team_forum->zebra = $row % 2 ? 'even' : 'odd'; |
|
260 | + $team_forum->new_topics = 0; // TODO: Track user views of team topics |
|
261 | + $team_forum->new_text = ''; |
|
262 | + $team_forum->new_url = ''; |
|
263 | + $team_forum->num_topics = db_result(db_query(" |
|
264 | 264 | SELECT COUNT(nid) FROM {boincteam_forum_node} |
265 | 265 | WHERE tfid = %d", |
266 | 266 | $team_forum->tfid |
267 | - )); |
|
268 | - $team_forum->num_posts = db_result(db_query(" |
|
267 | + )); |
|
268 | + $team_forum->num_posts = db_result(db_query(" |
|
269 | 269 | SELECT COALESCE(SUM(ncs.comment_count),0) + COUNT(ncs.nid) |
270 | 270 | FROM {boincteam_forum_node} bfn |
271 | 271 | JOIN {node_comment_statistics} ncs ON ncs.nid = bfn.nid |
272 | 272 | JOIN {node} n ON n.nid = ncs.nid |
273 | 273 | WHERE bfn.tfid = %d AND n.status = 1", |
274 | 274 | $team_forum->tfid |
275 | - )); |
|
276 | - $last_post = new stdClass(); |
|
277 | - $last_post->timestamp = db_result(db_query(" |
|
275 | + )); |
|
276 | + $last_post = new stdClass(); |
|
277 | + $last_post->timestamp = db_result(db_query(" |
|
278 | 278 | SELECT ncs.last_comment_timestamp FROM {node} n |
279 | 279 | INNER JOIN {boincteam_forum_node} bfn |
280 | 280 | INNER JOIN {node_comment_statistics} ncs ON n.nid = bfn.nid AND n.nid = ncs.nid |
@@ -282,36 +282,36 @@ discard block |
||
282 | 282 | ORDER BY ncs.last_comment_timestamp DESC |
283 | 283 | LIMIT 1", |
284 | 284 | $team_forum->tfid |
285 | - )); |
|
286 | - $team_forum->last_reply = theme('forum_submitted', ($last_post->timestamp) ? $last_post : NULL); |
|
287 | - $team_forums[$team_forum->tfid] = $team_forum; |
|
288 | - $row++; |
|
285 | + )); |
|
286 | + $team_forum->last_reply = theme('forum_submitted', ($last_post->timestamp) ? $last_post : NULL); |
|
287 | + $team_forums[$team_forum->tfid] = $team_forum; |
|
288 | + $row++; |
|
289 | 289 | } |
290 | - } |
|
291 | - return $team_forums; |
|
290 | + } |
|
291 | + return $team_forums; |
|
292 | 292 | } |
293 | 293 | |
294 | 294 | /* |
295 | 295 | * Load a team forum by ID |
296 | 296 | */ |
297 | 297 | function boincteam_forum_load($tfid) { |
298 | - // Load any team forum objects for the user's team |
|
299 | - $result = db_query(" |
|
298 | + // Load any team forum objects for the user's team |
|
299 | + $result = db_query(" |
|
300 | 300 | SELECT tfid, nid, title, description, created, updated, public, |
301 | 301 | min_time_between_posts, min_total_credit_to_post, min_avg_credit_to_post |
302 | 302 | FROM {boincteam_forum} WHERE tfid=%d", $tfid |
303 | - ); |
|
304 | - return db_fetch_object($result); |
|
303 | + ); |
|
304 | + return db_fetch_object($result); |
|
305 | 305 | } |
306 | 306 | |
307 | 307 | /* |
308 | 308 | * Look up the team ID for a given team forum |
309 | 309 | */ |
310 | 310 | function boincteam_forum_lookup_nid($tfid) { |
311 | - return db_result(db_query(" |
|
311 | + return db_result(db_query(" |
|
312 | 312 | SELECT nid FROM {boincteam_forum} |
313 | 313 | WHERE tfid=%d", $tfid |
314 | - )); |
|
314 | + )); |
|
315 | 315 | } |
316 | 316 | |
317 | 317 | |
@@ -323,80 +323,80 @@ discard block |
||
323 | 323 | * Create team forum form |
324 | 324 | */ |
325 | 325 | function boincteam_forum_create_form_panel() { |
326 | - $output = ''; |
|
327 | - $output .= '<h2 class="pane-title">' . bts('Create team message board', array(), NULL, 'boinc:team-forum') |
|
326 | + $output = ''; |
|
327 | + $output .= '<h2 class="pane-title">' . bts('Create team message board', array(), NULL, 'boinc:team-forum') |
|
328 | 328 | . '</h2>'; |
329 | - $output .= drupal_get_form('boincteam_forum_create_form'); |
|
329 | + $output .= drupal_get_form('boincteam_forum_create_form'); |
|
330 | 330 | |
331 | - return $output; |
|
331 | + return $output; |
|
332 | 332 | } |
333 | 333 | |
334 | 334 | /** |
335 | 335 | * Edit team forum form |
336 | 336 | */ |
337 | 337 | function boincteam_forum_edit_form_panel($tfid) { |
338 | - $team_forum = boincteam_forum_load($tfid); |
|
339 | - $output = ''; |
|
340 | - $output .= '<h2 class="pane-title">' . bts('Edit message board', array(), NULL, 'boinc:team-forum') . ': ' . |
|
338 | + $team_forum = boincteam_forum_load($tfid); |
|
339 | + $output = ''; |
|
340 | + $output .= '<h2 class="pane-title">' . bts('Edit message board', array(), NULL, 'boinc:team-forum') . ': ' . |
|
341 | 341 | $team_forum->title . '</h2>'; |
342 | - $output .= drupal_get_form('boincteam_forum_edit_form', $tfid); |
|
342 | + $output .= drupal_get_form('boincteam_forum_edit_form', $tfid); |
|
343 | 343 | |
344 | - return $output; |
|
344 | + return $output; |
|
345 | 345 | } |
346 | 346 | |
347 | 347 | /** |
348 | 348 | * Link to team forums |
349 | 349 | */ |
350 | 350 | function boincteam_forum_link_panel($team_id) { |
351 | - $show_public_only = ( |
|
351 | + $show_public_only = ( |
|
352 | 352 | !boincteam_is_member($team_id) AND |
353 | 353 | !boincteam_forum_is_global_moderator() |
354 | - ); |
|
355 | - $forums = boincteam_forum_list($team_id); |
|
356 | - $output = ''; |
|
357 | - $output .= '<h2 class="pane-title">' . bts('Team forum', array(), NULL, 'boinc:team-forum') . '</h2>'; |
|
358 | - $output .= '<p>' |
|
354 | + ); |
|
355 | + $forums = boincteam_forum_list($team_id); |
|
356 | + $output = ''; |
|
357 | + $output .= '<h2 class="pane-title">' . bts('Team forum', array(), NULL, 'boinc:team-forum') . '</h2>'; |
|
358 | + $output .= '<p>' |
|
359 | 359 | . bts('A discussion forum has been set up for team members.', array(), NULL, 'boinc:team-forum') |
360 | 360 | . '</p>'; |
361 | - $output .= '<ul class="tab-list action-list">'; |
|
362 | - foreach ($forums as $forum) { |
|
361 | + $output .= '<ul class="tab-list action-list">'; |
|
362 | + foreach ($forums as $forum) { |
|
363 | 363 | if (!$show_public_only OR $forum->public) { |
364 | - $output .= ' <li class="tab primary">' . |
|
364 | + $output .= ' <li class="tab primary">' . |
|
365 | 365 | l( |
366 | - //$forum->title, |
|
367 | - bts('Enter forum', array(), NULL, 'boinc:team-forum'), |
|
368 | - "community/teams/{$team_id}/forum/{$forum->tfid}" |
|
366 | + //$forum->title, |
|
367 | + bts('Enter forum', array(), NULL, 'boinc:team-forum'), |
|
368 | + "community/teams/{$team_id}/forum/{$forum->tfid}" |
|
369 | 369 | ) . '</li>'; |
370 | - // Since we're only supporting one team forum for now, we've labeled the |
|
371 | - // link in a generic way above and will now just break out of the loop |
|
372 | - break; |
|
370 | + // Since we're only supporting one team forum for now, we've labeled the |
|
371 | + // link in a generic way above and will now just break out of the loop |
|
372 | + break; |
|
373 | 373 | } |
374 | - } |
|
375 | - $output .= '</ul>'; |
|
376 | - return $output; |
|
374 | + } |
|
375 | + $output .= '</ul>'; |
|
376 | + return $output; |
|
377 | 377 | } |
378 | 378 | |
379 | 379 | /** |
380 | 380 | * General info about team forums |
381 | 381 | */ |
382 | 382 | function boincteam_forum_topic_overview_panel($nid = NULL) { |
383 | - $output = ''; |
|
384 | - $output .= '<h2 class="pane-title">' . bts('About message boards', array(), NULL, 'boinc:team-forum') . '</h2>'; |
|
385 | - $output .= '<div>'; |
|
386 | - if ($nid) { |
|
383 | + $output = ''; |
|
384 | + $output .= '<h2 class="pane-title">' . bts('About message boards', array(), NULL, 'boinc:team-forum') . '</h2>'; |
|
385 | + $output .= '<div>'; |
|
386 | + if ($nid) { |
|
387 | 387 | $team = node_load($nid); |
388 | 388 | $output .= '<p>' . bts('You may create a message board for use by @team', |
389 | - array('@team' => $team->title), NULL, 'boinc:team-forum') . ':</p>'; |
|
390 | - } |
|
391 | - else { |
|
389 | + array('@team' => $team->title), NULL, 'boinc:team-forum') . ':</p>'; |
|
390 | + } |
|
391 | + else { |
|
392 | 392 | $output .= '<p>' . bts('This is a team-only message board', array(), NULL, 'boinc:team-forum') . ':</p>'; |
393 | - } |
|
394 | - $output .= '<ul>'; |
|
395 | - $output .= ' <li>' . bts('Only members may post', array(), NULL, 'boinc:team-forum') . '</li>'; |
|
396 | - $output .= ' <li>' . bts('Only members may read (optional)', array(), NULL, 'boinc:team-forum') . '</li>'; |
|
397 | - $output .= ' <li>' . bts('Founder & Team Admins have moderator privileges', array(), NULL, 'boinc:team-forum') . |
|
393 | + } |
|
394 | + $output .= '<ul>'; |
|
395 | + $output .= ' <li>' . bts('Only members may post', array(), NULL, 'boinc:team-forum') . '</li>'; |
|
396 | + $output .= ' <li>' . bts('Only members may read (optional)', array(), NULL, 'boinc:team-forum') . '</li>'; |
|
397 | + $output .= ' <li>' . bts('Founder & Team Admins have moderator privileges', array(), NULL, 'boinc:team-forum') . |
|
398 | 398 | '</li>'; |
399 | - $output .= '</ul>'; |
|
400 | - $output .= '</div>'; |
|
401 | - return $output; |
|
399 | + $output .= '</ul>'; |
|
400 | + $output .= '</div>'; |
|
401 | + return $output; |
|
402 | 402 | } |
@@ -26,16 +26,16 @@ discard block |
||
26 | 26 | * Implementation of hook_comment(); |
27 | 27 | */ |
28 | 28 | function flag_comment_notify_comment(&$a1, $op) { |
29 | - switch ($op) { |
|
30 | - case 'insert': |
|
29 | + switch ($op) { |
|
30 | + case 'insert': |
|
31 | 31 | module_load_include('inc', 'drupal_queue', 'drupal_queue'); |
32 | 32 | $queue = DrupalQueue::get('flag_comment_notify'); |
33 | 33 | $subscribed_users = array_keys((array) flag_get_content_flags('node', $a1['nid'], 'subscriptions')); |
34 | 34 | foreach ($subscribed_users as $uid) { |
35 | - $queue->createItem(array('uid' => $uid, 'cid' => (int) $a1['cid'])); |
|
35 | + $queue->createItem(array('uid' => $uid, 'cid' => (int) $a1['cid'])); |
|
36 | 36 | } |
37 | 37 | break; |
38 | - default: |
|
38 | + default: |
|
39 | 39 | } |
40 | 40 | } |
41 | 41 | |
@@ -43,12 +43,12 @@ discard block |
||
43 | 43 | * Implementation of hook_cron_queue_info() |
44 | 44 | */ |
45 | 45 | function flag_comment_notify_cron_queue_info() { |
46 | - $queues = array(); |
|
47 | - $queues['flag_comment_notify'] = array( |
|
46 | + $queues = array(); |
|
47 | + $queues['flag_comment_notify'] = array( |
|
48 | 48 | 'worker callback' => 'flag_comment_notify_send_notification', |
49 | 49 | 'time' => 60, |
50 | - ); |
|
51 | - return $queues; |
|
50 | + ); |
|
51 | + return $queues; |
|
52 | 52 | } |
53 | 53 | |
54 | 54 | |
@@ -57,44 +57,44 @@ discard block |
||
57 | 57 | * * * * * * * * * * * * * * * * * * * * * * * * * * * */ |
58 | 58 | |
59 | 59 | function flag_comment_notify_send_notification($data) { |
60 | - $account = user_load($data['uid']); |
|
61 | - $comment = _comment_load($data['cid']); |
|
62 | - $node = node_load($comment->nid); |
|
63 | - $author = user_load($comment->uid); |
|
64 | - if ($account->mail AND $node->nid) { |
|
60 | + $account = user_load($data['uid']); |
|
61 | + $comment = _comment_load($data['cid']); |
|
62 | + $node = node_load($comment->nid); |
|
63 | + $author = user_load($comment->uid); |
|
64 | + if ($account->mail AND $node->nid) { |
|
65 | 65 | // Don't send notifications to the author of the comment |
66 | 66 | if ($account->uid != $author->uid) { |
67 | - $params['account'] = $account; |
|
68 | - $params['comment'] = $comment; |
|
69 | - $params['node'] = $node; |
|
70 | - $params['author'] = $author; |
|
71 | - drupal_mail('flag_comment_notify', 'comment_posted', $account->mail, |
|
67 | + $params['account'] = $account; |
|
68 | + $params['comment'] = $comment; |
|
69 | + $params['node'] = $node; |
|
70 | + $params['author'] = $author; |
|
71 | + drupal_mail('flag_comment_notify', 'comment_posted', $account->mail, |
|
72 | 72 | user_preferred_language($account), $params); |
73 | 73 | } |
74 | - } |
|
74 | + } |
|
75 | 75 | } |
76 | 76 | |
77 | 77 | |
78 | 78 | function flag_comment_notify_mail($key, &$message, $params) { |
79 | - $language = $message['language']; |
|
80 | - $variables = user_mail_tokens($params['account'], $language); |
|
81 | - $variables['!comment_url'] = url( |
|
79 | + $language = $message['language']; |
|
80 | + $variables = user_mail_tokens($params['account'], $language); |
|
81 | + $variables['!comment_url'] = url( |
|
82 | 82 | "goto/comment/{$params['comment']->cid}", |
83 | 83 | array( |
84 | - 'absolute' => TRUE, |
|
84 | + 'absolute' => TRUE, |
|
85 | 85 | ) |
86 | - ); |
|
87 | - $variables['!topic_name'] = $params['node']->title; |
|
88 | - $variables['!author'] = $params['author']->name; |
|
89 | - switch($key) { |
|
90 | - case 'comment_posted': |
|
86 | + ); |
|
87 | + $variables['!topic_name'] = $params['node']->title; |
|
88 | + $variables['!author'] = $params['author']->name; |
|
89 | + switch($key) { |
|
90 | + case 'comment_posted': |
|
91 | 91 | $message['subject'] = bts('!site: comment posted to "!topic_name"', $variables, |
92 | - $language->language, 'boinc:forum-topic-subscription-email-notification'); |
|
92 | + $language->language, 'boinc:forum-topic-subscription-email-notification'); |
|
93 | 93 | $message['body'][] = bts('!author has posted a reply to "!topic_name".', |
94 | - $variables, $language->language, 'boinc:forum-topic-subscription-email-notification'); |
|
94 | + $variables, $language->language, 'boinc:forum-topic-subscription-email-notification'); |
|
95 | 95 | $message['body'][] = bts("To view this topic at !site, click here: \n!comment_url", |
96 | - $variables, $language->language, 'boinc:forum-topic-subscription-email-notification'); |
|
96 | + $variables, $language->language, 'boinc:forum-topic-subscription-email-notification'); |
|
97 | 97 | break; |
98 | - default: |
|
98 | + default: |
|
99 | 99 | } |
100 | 100 | } |
@@ -9,40 +9,40 @@ discard block |
||
9 | 9 | * Implements hook_block() for Drupal 6 compatibility |
10 | 10 | */ |
11 | 11 | function comment_form_block_block($op = 'list', $delta = 0, $edit = array()) { |
12 | - switch ($op) { |
|
13 | - case 'view': |
|
12 | + switch ($op) { |
|
13 | + case 'view': |
|
14 | 14 | //$block = node_comment_block_block_view($delta); |
15 | 15 | $block = array(); |
16 | 16 | if ($delta == 'comment_form') { |
17 | - if (arg(0) == 'node' && is_numeric($nid = arg(1)) && !arg(2)) { |
|
17 | + if (arg(0) == 'node' && is_numeric($nid = arg(1)) && !arg(2)) { |
|
18 | 18 | global $user; |
19 | 19 | $node = node_load($nid); |
20 | 20 | if ($node->comment !== 0 AND user_access('post comments', $user)) { |
21 | - $block['subject'] = NULL; // This should be NULL otherwise there will be duplicate h2 elements. |
|
22 | - $block['content'] = '<h2>' . bts('Post new comment', array(), NULL, 'boinc:forum-post-new-comment') . '</h2>'; |
|
23 | - $block['content'] .= drupal_get_form('comment_form', array('nid' => $nid)); |
|
21 | + $block['subject'] = NULL; // This should be NULL otherwise there will be duplicate h2 elements. |
|
22 | + $block['content'] = '<h2>' . bts('Post new comment', array(), NULL, 'boinc:forum-post-new-comment') . '</h2>'; |
|
23 | + $block['content'] .= drupal_get_form('comment_form', array('nid' => $nid)); |
|
24 | + } |
|
24 | 25 | } |
25 | - } |
|
26 | 26 | } |
27 | 27 | break; |
28 | - case 'list': |
|
28 | + case 'list': |
|
29 | 29 | $blocks = comment_form_block_block_info(); |
30 | 30 | return $blocks; |
31 | 31 | break; |
32 | - default: |
|
32 | + default: |
|
33 | 33 | } |
34 | - return $block; |
|
34 | + return $block; |
|
35 | 35 | } |
36 | 36 | |
37 | 37 | /** |
38 | 38 | * Implements hook_block_info(). |
39 | 39 | */ |
40 | 40 | function comment_form_block_block_info() { |
41 | - $blocks['comment_form'] = array( |
|
41 | + $blocks['comment_form'] = array( |
|
42 | 42 | 'info' => bts('Comment form', array(), NULL, 'boinc:forum-comment-form'), |
43 | - ); |
|
43 | + ); |
|
44 | 44 | |
45 | - return $blocks; |
|
45 | + return $blocks; |
|
46 | 46 | } |
47 | 47 | |
48 | 48 | /** |
@@ -81,10 +81,10 @@ discard block |
||
81 | 81 | * Implements hook_form_FORM_ID_alter() for block_admin_configure. |
82 | 82 | */ |
83 | 83 | function comment_form_block_form_block_admin_configure_alter(&$form, &$form_state) { |
84 | - if (isset($form['delta'])) { |
|
84 | + if (isset($form['delta'])) { |
|
85 | 85 | if ($form['delta']['#value'] == 'comment_form') { |
86 | - $form['settings']['title']['#disabled'] = TRUE; |
|
87 | - $form['settings']['title']['#description'] = t('The title for this block cannot be overridden.'); |
|
86 | + $form['settings']['title']['#disabled'] = TRUE; |
|
87 | + $form['settings']['title']['#description'] = t('The title for this block cannot be overridden.'); |
|
88 | + } |
|
88 | 89 | } |
89 | - } |
|
90 | 90 | } |
@@ -2,9 +2,9 @@ discard block |
||
2 | 2 | // $Id$ |
3 | 3 | |
4 | 4 | /** |
5 | - * @file |
|
6 | - * Enable BOINC charting features for statistics |
|
7 | - */ |
|
5 | + * @file |
|
6 | + * Enable BOINC charting features for statistics |
|
7 | + */ |
|
8 | 8 | |
9 | 9 | |
10 | 10 | /* * * * * * * * * * * * * * * * * * * * * * * * * * * * |
@@ -18,10 +18,10 @@ discard block |
||
18 | 18 | * * * * * * * * * * * * * * * * * * * * * * * * * * * */ |
19 | 19 | |
20 | 20 | /** |
21 | - * Implementation of hook_menu(). |
|
22 | - */ |
|
21 | + * Implementation of hook_menu(). |
|
22 | + */ |
|
23 | 23 | function boincstats_menu() { |
24 | - $items['admin/boinc/stats'] = array( |
|
24 | + $items['admin/boinc/stats'] = array( |
|
25 | 25 | 'title' => 'Environment: Statistics setup', |
26 | 26 | 'description' => 'Configure the stats system for generating charts and |
27 | 27 | providing cross project data.', |
@@ -30,18 +30,18 @@ discard block |
||
30 | 30 | 'access arguments' => array('administer site configuration'), |
31 | 31 | 'type' => MENU_NORMAL_ITEM, |
32 | 32 | 'file' => 'boincstats.admin.inc' |
33 | - ); |
|
34 | - $items['charts/user'] = array( |
|
33 | + ); |
|
34 | + $items['charts/user'] = array( |
|
35 | 35 | 'page callback' => 'boincstats_get_user_stats_chart', |
36 | 36 | 'access arguments' => array('access content'), |
37 | 37 | 'type' => MENU_CALLBACK |
38 | - ); |
|
39 | - $items['charts/project'] = array( |
|
38 | + ); |
|
39 | + $items['charts/project'] = array( |
|
40 | 40 | 'page callback' => 'boincstats_get_project_stats_chart', |
41 | 41 | 'access arguments' => array('access content'), |
42 | 42 | 'type' => MENU_CALLBACK |
43 | - ); |
|
44 | - return $items; |
|
43 | + ); |
|
44 | + return $items; |
|
45 | 45 | } |
46 | 46 | |
47 | 47 | |
@@ -50,31 +50,31 @@ discard block |
||
50 | 50 | * * * * * * * * * * * * * * * * * * * * * * * * * * * */ |
51 | 51 | |
52 | 52 | /** |
53 | - * User stats chart menu callback |
|
54 | - * Called to generate the daily credit status chart for a user (dashboard) |
|
55 | - */ |
|
53 | + * User stats chart menu callback |
|
54 | + * Called to generate the daily credit status chart for a user (dashboard) |
|
55 | + */ |
|
56 | 56 | function boincstats_get_user_stats_chart($cpid = null, $chart_size = 'medium') { |
57 | 57 | |
58 | - // pChart library inclusions |
|
59 | - module_load_include('php', 'boincstats', 'includes/pchart/class/pData.class'); |
|
60 | - module_load_include('php', 'boincstats', 'includes/pchart/class/pDraw.class'); |
|
61 | - module_load_include('php', 'boincstats', 'includes/pchart/class/pImage.class'); |
|
62 | - module_load_include('php', 'boincstats', 'includes/pchart/class/pCache.class'); |
|
58 | + // pChart library inclusions |
|
59 | + module_load_include('php', 'boincstats', 'includes/pchart/class/pData.class'); |
|
60 | + module_load_include('php', 'boincstats', 'includes/pchart/class/pDraw.class'); |
|
61 | + module_load_include('php', 'boincstats', 'includes/pchart/class/pImage.class'); |
|
62 | + module_load_include('php', 'boincstats', 'includes/pchart/class/pCache.class'); |
|
63 | 63 | |
64 | - init_theme(); |
|
65 | - global $theme_key; |
|
66 | - $cache_name = "{$theme_key}_"; |
|
64 | + init_theme(); |
|
65 | + global $theme_key; |
|
66 | + $cache_name = "{$theme_key}_"; |
|
67 | 67 | |
68 | - $dataset_size = 0; |
|
69 | - $chart_height = 0; |
|
70 | - $chart_width = 0; |
|
71 | - $draw_x_lines = FALSE; |
|
72 | - $label_x_axis = FALSE; |
|
68 | + $dataset_size = 0; |
|
69 | + $chart_height = 0; |
|
70 | + $chart_width = 0; |
|
71 | + $draw_x_lines = FALSE; |
|
72 | + $label_x_axis = FALSE; |
|
73 | 73 | |
74 | - $stats_xml = NULL; |
|
74 | + $stats_xml = NULL; |
|
75 | 75 | |
76 | - switch($chart_size) { |
|
77 | - case 'small': |
|
76 | + switch($chart_size) { |
|
77 | + case 'small': |
|
78 | 78 | $cache_name .= "{$cpid}_small"; |
79 | 79 | $dataset_size = 30; |
80 | 80 | $chart_height = 80; |
@@ -83,7 +83,7 @@ discard block |
||
83 | 83 | $draw_x_lines = FALSE; |
84 | 84 | $label_x_axis = FALSE; |
85 | 85 | break; |
86 | - case 'medium': |
|
86 | + case 'medium': |
|
87 | 87 | default: |
88 | 88 | $cache_name .= $cpid; |
89 | 89 | $dataset_size = 60; |
@@ -91,32 +91,32 @@ discard block |
||
91 | 91 | $chart_width = 589; |
92 | 92 | $draw_x_lines = TRUE; |
93 | 93 | $label_x_axis = TRUE; |
94 | - } |
|
94 | + } |
|
95 | 95 | |
96 | - // Sanity check for cache directory |
|
97 | - if (!boincstats_check_cache_dir()) { |
|
96 | + // Sanity check for cache directory |
|
97 | + if (!boincstats_check_cache_dir()) { |
|
98 | 98 | return; |
99 | - } |
|
99 | + } |
|
100 | 100 | |
101 | - // Initialize the cache object and flush stale images |
|
102 | - $myCache = new pCache(array('CacheFolder' => realpath('.') . '/' . conf_path() . '/files/cache')); |
|
103 | - $myCache->removeOlderThan(60*60*24); |
|
101 | + // Initialize the cache object and flush stale images |
|
102 | + $myCache = new pCache(array('CacheFolder' => realpath('.') . '/' . conf_path() . '/files/cache')); |
|
103 | + $myCache->removeOlderThan(60*60*24); |
|
104 | 104 | |
105 | - if ($myCache->isInCache($cache_name)) { |
|
105 | + if ($myCache->isInCache($cache_name)) { |
|
106 | 106 | $myCache->strokeFromCache($cache_name); |
107 | - } |
|
108 | - else { |
|
107 | + } |
|
108 | + else { |
|
109 | 109 | // Initialize dataset |
110 | 110 | $dataset = array(); |
111 | 111 | $stats_xml = boincstats_get_project_stats('daily', $cpid); |
112 | 112 | if ($stats_xml) { |
113 | - // Get the last 60 days of stats for the chart |
|
114 | - for ($j = 30; $j < 90; $j++) { |
|
113 | + // Get the last 60 days of stats for the chart |
|
114 | + for ($j = 30; $j < 90; $j++) { |
|
115 | 115 | $dataset[] = (int) $stats_xml->records->record[$j]; |
116 | - } |
|
116 | + } |
|
117 | 117 | } |
118 | 118 | else { |
119 | - for ($i = 0; $i <= $dataset_size; $i++) $dataset[] = 0; |
|
119 | + for ($i = 0; $i <= $dataset_size; $i++) $dataset[] = 0; |
|
120 | 120 | } |
121 | 121 | |
122 | 122 | // Get color configuration |
@@ -145,39 +145,39 @@ discard block |
||
145 | 145 | // Define the chart area |
146 | 146 | $myPicture->setGraphArea(0, 3, $chart_width, $chart_height); |
147 | 147 | if ($backdrop_color) { |
148 | - $myPicture->drawFilledRectangle(0, 0, $chart_width, $chart_height, $backdrop_color); |
|
148 | + $myPicture->drawFilledRectangle(0, 0, $chart_width, $chart_height, $backdrop_color); |
|
149 | 149 | } |
150 | 150 | |
151 | 151 | // Draw the scale |
152 | 152 | $scaleSettings = array( |
153 | - 'Mode' => SCALE_MODE_START0, |
|
154 | - 'DrawYLines' => false, |
|
155 | - 'DrawXLines' => $draw_x_lines, |
|
156 | - 'GridTicks' => 2, |
|
157 | - 'LabelSkip' => 9, |
|
158 | - 'SkippedAxisAlpha' => 0, |
|
159 | - 'SkippedInnerTickWidth' => 0, |
|
160 | - 'SkippedOuterTickWidth' => 0, |
|
161 | - 'AxisAlpha' => 0, |
|
162 | - 'InnerTickWidth' => 0, |
|
163 | - 'OuterTickWidth' => 0, |
|
164 | - 'XMargin' => 1, |
|
165 | - 'YMargin' => 0, |
|
166 | - 'Floating' => TRUE, |
|
167 | - 'GridR' => 200, |
|
168 | - 'GridG' => 200, |
|
169 | - 'GridB' => 200, |
|
170 | - 'DrawSubTicks' => false, |
|
171 | - 'CycleBackground' => false |
|
153 | + 'Mode' => SCALE_MODE_START0, |
|
154 | + 'DrawYLines' => false, |
|
155 | + 'DrawXLines' => $draw_x_lines, |
|
156 | + 'GridTicks' => 2, |
|
157 | + 'LabelSkip' => 9, |
|
158 | + 'SkippedAxisAlpha' => 0, |
|
159 | + 'SkippedInnerTickWidth' => 0, |
|
160 | + 'SkippedOuterTickWidth' => 0, |
|
161 | + 'AxisAlpha' => 0, |
|
162 | + 'InnerTickWidth' => 0, |
|
163 | + 'OuterTickWidth' => 0, |
|
164 | + 'XMargin' => 1, |
|
165 | + 'YMargin' => 0, |
|
166 | + 'Floating' => TRUE, |
|
167 | + 'GridR' => 200, |
|
168 | + 'GridG' => 200, |
|
169 | + 'GridB' => 200, |
|
170 | + 'DrawSubTicks' => false, |
|
171 | + 'CycleBackground' => false |
|
172 | 172 | ); |
173 | 173 | $myPicture->setFontProperties(array('FontSize' => 10)); |
174 | 174 | $myPicture->drawScale($scaleSettings); |
175 | 175 | |
176 | 176 | if ($label_x_axis) { |
177 | - for ($i = 5; $i >= 0; $i--) { |
|
177 | + for ($i = 5; $i >= 0; $i--) { |
|
178 | 178 | $label = ($i) ? -10*$i : 'Today'; |
179 | 179 | $myPicture->drawText(589-587*($i/6)-5, 2, $label, array('Align' => TEXT_ALIGN_TOPRIGHT)); |
180 | - } |
|
180 | + } |
|
181 | 181 | } |
182 | 182 | |
183 | 183 | // Draw the area chart |
@@ -189,7 +189,7 @@ discard block |
||
189 | 189 | // Render the picture (choose the best way) |
190 | 190 | //$myPicture->autoOutput('pictures/example.drawAreaChart.simple.png'); |
191 | 191 | $myPicture->stroke(); |
192 | - } |
|
192 | + } |
|
193 | 193 | } |
194 | 194 | |
195 | 195 | /** |
@@ -197,48 +197,48 @@ discard block |
||
197 | 197 | * Called to generate the daily credit status chart for the whole project |
198 | 198 | */ |
199 | 199 | function boincstats_get_project_stats_chart() { |
200 | - // pChart library inclusions |
|
201 | - module_load_include('php', 'boincstats', 'includes/pchart/class/pData.class'); |
|
202 | - module_load_include('php', 'boincstats', 'includes/pchart/class/pDraw.class'); |
|
203 | - module_load_include('php', 'boincstats', 'includes/pchart/class/pImage.class'); |
|
204 | - module_load_include('php', 'boincstats', 'includes/pchart/class/pCache.class'); |
|
205 | - |
|
206 | - init_theme(); |
|
207 | - global $theme_key; |
|
208 | - $cache_name = "{$theme_key}_project_chart"; |
|
209 | - |
|
210 | - $color_keys = array('R', 'G', 'B'); |
|
211 | - |
|
212 | - // Get color configuration |
|
213 | - $palette_color_hex = theme_get_setting('boinc_stats_chart_color'); |
|
214 | - $palette_color = array_combine($color_keys, sscanf($palette_color_hex, "#%02x%02x%02x")); |
|
215 | - $backdrop_color_hex = theme_get_setting('boinc_stats_chart_bcolor'); |
|
216 | - $backdrop_color = array_combine($color_keys, sscanf($backdrop_color_hex, "#%02x%02x%02x")); |
|
217 | - |
|
218 | - // Sanity check for cache directory |
|
219 | - if (!boincstats_check_cache_dir()) { |
|
200 | + // pChart library inclusions |
|
201 | + module_load_include('php', 'boincstats', 'includes/pchart/class/pData.class'); |
|
202 | + module_load_include('php', 'boincstats', 'includes/pchart/class/pDraw.class'); |
|
203 | + module_load_include('php', 'boincstats', 'includes/pchart/class/pImage.class'); |
|
204 | + module_load_include('php', 'boincstats', 'includes/pchart/class/pCache.class'); |
|
205 | + |
|
206 | + init_theme(); |
|
207 | + global $theme_key; |
|
208 | + $cache_name = "{$theme_key}_project_chart"; |
|
209 | + |
|
210 | + $color_keys = array('R', 'G', 'B'); |
|
211 | + |
|
212 | + // Get color configuration |
|
213 | + $palette_color_hex = theme_get_setting('boinc_stats_chart_color'); |
|
214 | + $palette_color = array_combine($color_keys, sscanf($palette_color_hex, "#%02x%02x%02x")); |
|
215 | + $backdrop_color_hex = theme_get_setting('boinc_stats_chart_bcolor'); |
|
216 | + $backdrop_color = array_combine($color_keys, sscanf($backdrop_color_hex, "#%02x%02x%02x")); |
|
217 | + |
|
218 | + // Sanity check for cache directory |
|
219 | + if (!boincstats_check_cache_dir()) { |
|
220 | 220 | return; |
221 | - } |
|
221 | + } |
|
222 | 222 | |
223 | - // Initialize the cache object and flush stale images |
|
224 | - $myCache = new pCache(array('CacheFolder' => realpath('.') . '/' . conf_path() . '/files/cache')); |
|
225 | - $myCache->removeOlderThan(60*60*24); |
|
223 | + // Initialize the cache object and flush stale images |
|
224 | + $myCache = new pCache(array('CacheFolder' => realpath('.') . '/' . conf_path() . '/files/cache')); |
|
225 | + $myCache->removeOlderThan(60*60*24); |
|
226 | 226 | |
227 | - if ($myCache->isInCache($cache_name)) { |
|
227 | + if ($myCache->isInCache($cache_name)) { |
|
228 | 228 | $myCache->strokeFromCache($cache_name); |
229 | - } |
|
230 | - else { |
|
229 | + } |
|
230 | + else { |
|
231 | 231 | // Initialize dataset |
232 | 232 | $dataset = array(); |
233 | 233 | $stats_xml = boincstats_get_project_stats('daily'); |
234 | 234 | if ($stats_xml) { |
235 | - // Get the last 60 days of stats for the chart |
|
236 | - for ($j = 30; $j < 90; $j++) { |
|
235 | + // Get the last 60 days of stats for the chart |
|
236 | + for ($j = 30; $j < 90; $j++) { |
|
237 | 237 | $dataset[] = (int) $stats_xml->records->record[$j]; |
238 | - } |
|
238 | + } |
|
239 | 239 | } |
240 | 240 | else { |
241 | - for ($i = 0; $i <= 30; $i++) $dataset[] = 0; |
|
241 | + for ($i = 0; $i <= 30; $i++) $dataset[] = 0; |
|
242 | 242 | } |
243 | 243 | |
244 | 244 | // Create and populate the pData object |
@@ -263,25 +263,25 @@ discard block |
||
263 | 263 | |
264 | 264 | // Draw the scale |
265 | 265 | $scaleSettings = array( |
266 | - 'Mode' => SCALE_MODE_START0, |
|
267 | - 'DrawYLines' => false, |
|
268 | - 'DrawXLines' => false, |
|
269 | - 'GridTicks' => 2, |
|
270 | - 'LabelSkip' => 9, |
|
271 | - 'SkippedAxisAlpha' => 0, |
|
272 | - 'SkippedInnerTickWidth' => 0, |
|
273 | - 'SkippedOuterTickWidth' => 0, |
|
274 | - 'AxisAlpha' => 0, |
|
275 | - 'InnerTickWidth' => 0, |
|
276 | - 'OuterTickWidth' => 0, |
|
277 | - 'XMargin' => 1, |
|
278 | - 'YMargin' => 0, |
|
279 | - 'Floating' => TRUE, |
|
280 | - 'GridR' => 200, |
|
281 | - 'GridG' => 200, |
|
282 | - 'GridB' => 200, |
|
283 | - 'DrawSubTicks' => false, |
|
284 | - 'CycleBackground' => false |
|
266 | + 'Mode' => SCALE_MODE_START0, |
|
267 | + 'DrawYLines' => false, |
|
268 | + 'DrawXLines' => false, |
|
269 | + 'GridTicks' => 2, |
|
270 | + 'LabelSkip' => 9, |
|
271 | + 'SkippedAxisAlpha' => 0, |
|
272 | + 'SkippedInnerTickWidth' => 0, |
|
273 | + 'SkippedOuterTickWidth' => 0, |
|
274 | + 'AxisAlpha' => 0, |
|
275 | + 'InnerTickWidth' => 0, |
|
276 | + 'OuterTickWidth' => 0, |
|
277 | + 'XMargin' => 1, |
|
278 | + 'YMargin' => 0, |
|
279 | + 'Floating' => TRUE, |
|
280 | + 'GridR' => 200, |
|
281 | + 'GridG' => 200, |
|
282 | + 'GridB' => 200, |
|
283 | + 'DrawSubTicks' => false, |
|
284 | + 'CycleBackground' => false |
|
285 | 285 | ); |
286 | 286 | $myPicture->setFontProperties(array('FontSize' => 10)); |
287 | 287 | $myPicture->drawScale($scaleSettings); |
@@ -300,41 +300,41 @@ discard block |
||
300 | 300 | // Render the picture (choose the best way) |
301 | 301 | //$myPicture->autoOutput('pictures/example.drawAreaChart.simple.png'); |
302 | 302 | $myPicture->stroke(); |
303 | - } |
|
303 | + } |
|
304 | 304 | } |
305 | 305 | |
306 | 306 | /* |
307 | 307 | * |
308 | 308 | */ |
309 | 309 | function boincstats_check_cache_dir($cache_path = 'files/cache') { |
310 | - $cache_dir = realpath('.') . '/' . conf_path() . '/' . $cache_path; |
|
311 | - if (!is_writeable($cache_dir)) { |
|
310 | + $cache_dir = realpath('.') . '/' . conf_path() . '/' . $cache_path; |
|
311 | + if (!is_writeable($cache_dir)) { |
|
312 | 312 | if (!is_dir($cache_dir)) { |
313 | - if (!is_writeable(dirname($cache_dir))) { |
|
313 | + if (!is_writeable(dirname($cache_dir))) { |
|
314 | 314 | // If the parent "files" dir isn't even writeable... |
315 | 315 | watchdog('boincstats', '@parent_dir directory is not writeable. This |
316 | 316 | directory must be writeable by the web server.', |
317 | - array('@parent_dir' => dirname($cache_dir)), WATCHDOG_ERROR); |
|
317 | + array('@parent_dir' => dirname($cache_dir)), WATCHDOG_ERROR); |
|
318 | 318 | return FALSE; |
319 | - } |
|
320 | - else { |
|
319 | + } |
|
320 | + else { |
|
321 | 321 | // Create the cache dir |
322 | 322 | if (!mkdir($cache_dir, 0775)) { |
323 | - watchdog('boincstats', 'Failed to create @cache_dir directory. Check |
|
323 | + watchdog('boincstats', 'Failed to create @cache_dir directory. Check |
|
324 | 324 | filesystem permissions...?', |
325 | 325 | array('@cache_dir' => $cache_dir), WATCHDOG_ERROR); |
326 | - return FALSE; |
|
326 | + return FALSE; |
|
327 | + } |
|
327 | 328 | } |
328 | - } |
|
329 | 329 | } |
330 | 330 | else { |
331 | - watchdog('boincstats', 'Cache directory at @cache_dir is not writeable. |
|
331 | + watchdog('boincstats', 'Cache directory at @cache_dir is not writeable. |
|
332 | 332 | Please allow webserver write access.', |
333 | 333 | array('@cache_dir' => $cache_dir), WATCHDOG_ERROR); |
334 | - return FALSE; |
|
334 | + return FALSE; |
|
335 | 335 | } |
336 | - } |
|
337 | - return TRUE; |
|
336 | + } |
|
337 | + return TRUE; |
|
338 | 338 | } |
339 | 339 | |
340 | 340 | /* |
@@ -342,87 +342,87 @@ discard block |
||
342 | 342 | */ |
343 | 343 | function boincstats_get_project_stats($type = 'total', $cpid = NULL) { |
344 | 344 | |
345 | - // Determine the stats environment |
|
346 | - boincstats_check_configuration(); |
|
347 | - $stats_server = variable_get('boinc_stats_server', ''); |
|
348 | - $stats_rpc = variable_get('boinc_stats_project_credit_history_rpc', ''); |
|
349 | - $project_id = variable_get('boinc_stats_remote_project_id', ''); |
|
345 | + // Determine the stats environment |
|
346 | + boincstats_check_configuration(); |
|
347 | + $stats_server = variable_get('boinc_stats_server', ''); |
|
348 | + $stats_rpc = variable_get('boinc_stats_project_credit_history_rpc', ''); |
|
349 | + $project_id = variable_get('boinc_stats_remote_project_id', ''); |
|
350 | 350 | |
351 | - $get = array( |
|
351 | + $get = array( |
|
352 | 352 | 'id' => $project_id |
353 | - ); |
|
354 | - switch ($type) { |
|
355 | - case 'daily': |
|
353 | + ); |
|
354 | + switch ($type) { |
|
355 | + case 'daily': |
|
356 | 356 | $get['daily'] = NULL; |
357 | 357 | break; |
358 | - case 'total': |
|
358 | + case 'total': |
|
359 | 359 | default: |
360 | 360 | } |
361 | 361 | |
362 | - if ($cpid) { |
|
362 | + if ($cpid) { |
|
363 | 363 | // If a user CPID has been provided, limit scope to that user |
364 | 364 | $stats_rpc = variable_get('boinc_stats_user_credit_history_rpc', ''); |
365 | 365 | $get['cpid'] = $cpid; |
366 | - } |
|
366 | + } |
|
367 | 367 | |
368 | - // Construct query string |
|
369 | - $args = array(); |
|
370 | - foreach ($get as $arg => $value) { |
|
368 | + // Construct query string |
|
369 | + $args = array(); |
|
370 | + foreach ($get as $arg => $value) { |
|
371 | 371 | if ($value !== NULL) { |
372 | - $args[] = "{$arg}=" . rawurlencode($value); |
|
372 | + $args[] = "{$arg}=" . rawurlencode($value); |
|
373 | 373 | } |
374 | 374 | else { |
375 | - $args[] = $arg; |
|
375 | + $args[] = $arg; |
|
376 | 376 | } |
377 | - } |
|
378 | - $query = '?' . implode('&', $args); |
|
377 | + } |
|
378 | + $query = '?' . implode('&', $args); |
|
379 | 379 | |
380 | - // Load XML from RPC |
|
381 | - $stats_xml = NULL; |
|
382 | - $target_url = "http://{$stats_server}/{$stats_rpc}{$query}"; |
|
383 | - $result = drupal_http_request($target_url); |
|
384 | - if (in_array($result->code, array(200, 304)) || in_array($result->redirect_code, array(200, 304))) { |
|
380 | + // Load XML from RPC |
|
381 | + $stats_xml = NULL; |
|
382 | + $target_url = "http://{$stats_server}/{$stats_rpc}{$query}"; |
|
383 | + $result = drupal_http_request($target_url); |
|
384 | + if (in_array($result->code, array(200, 304)) || in_array($result->redirect_code, array(200, 304))) { |
|
385 | 385 | $stats_xml = simplexml_load_string($result->data); |
386 | - } |
|
387 | - watchdog('boincstats', $target_url); |
|
388 | - return $stats_xml; |
|
386 | + } |
|
387 | + watchdog('boincstats', $target_url); |
|
388 | + return $stats_xml; |
|
389 | 389 | } |
390 | 390 | |
391 | 391 | /* |
392 | 392 | * |
393 | 393 | */ |
394 | 394 | function boincstats_get_project_total_credit() { |
395 | - $stats_xml = boincstats_get_project_stats(); |
|
396 | - $last_record = end($stats_xml->records->record); |
|
397 | - return ($last_record) ? (int) $last_record : 0; |
|
395 | + $stats_xml = boincstats_get_project_stats(); |
|
396 | + $last_record = end($stats_xml->records->record); |
|
397 | + return ($last_record) ? (int) $last_record : 0; |
|
398 | 398 | } |
399 | 399 | |
400 | 400 | /* |
401 | 401 | * |
402 | 402 | */ |
403 | 403 | function boincstats_get_project_avg_credit() { |
404 | - $stats_xml = boincstats_get_project_stats(); |
|
405 | - return (isset($stats_xml->recent_avg)) ? $stats_xml->recent_avg : 0; |
|
404 | + $stats_xml = boincstats_get_project_stats(); |
|
405 | + return (isset($stats_xml->recent_avg)) ? $stats_xml->recent_avg : 0; |
|
406 | 406 | } |
407 | 407 | |
408 | 408 | /* |
409 | 409 | * |
410 | 410 | */ |
411 | 411 | function boincstats_credit_to_ghours($credit) { |
412 | - return $credit / (100 * 365); |
|
412 | + return $credit / (100 * 365); |
|
413 | 413 | } |
414 | 414 | |
415 | 415 | /* |
416 | 416 | * |
417 | 417 | */ |
418 | 418 | function boincstats_credit_to_flops($credit, $prefix = 0) { |
419 | - $factor = array( |
|
419 | + $factor = array( |
|
420 | 420 | '0' => 0, |
421 | 421 | 'g' => 3, |
422 | 422 | 't' => 6, |
423 | 423 | 'p' => 9 |
424 | - ); |
|
425 | - return $credit / (pow(10, (int) $factor[$prefix]) / 10); |
|
424 | + ); |
|
425 | + return $credit / (pow(10, (int) $factor[$prefix]) / 10); |
|
426 | 426 | } |
427 | 427 | |
428 | 428 | |
@@ -431,22 +431,22 @@ discard block |
||
431 | 431 | * * * * * * * * * * * * * * * * * * * * * * * * * * * */ |
432 | 432 | |
433 | 433 | function boincstats_get_project_stats_overview($type = 'basic') { |
434 | - global $base_path; |
|
435 | - $output = ''; |
|
436 | - switch ($type) { |
|
437 | - case 'basic': |
|
434 | + global $base_path; |
|
435 | + $output = ''; |
|
436 | + switch ($type) { |
|
437 | + case 'basic': |
|
438 | 438 | $output .= '<div class="overlay"><span>(' . bts('Credits per day', array(), NULL, 'boinc:front-page') . ')</span></div>' . "\n"; |
439 | 439 | $output .= '<div class="chart"><img src="' . $base_path . 'charts/project" /></div>' . "\n"; |
440 | 440 | break; |
441 | - case 'detailed': |
|
441 | + case 'detailed': |
|
442 | 442 | $output .= '<div class="stats"><label>' . bts('Total G-hours', array(), NULL, 'boinc:front-page') . ': </label><span>' . number_format(boincstats_credit_to_ghours(boincstats_get_project_total_credit())) . '</span></div>' . "\n"; |
443 | 443 | $output .= '<div class="stats"><label>' . bts('Avg TFlops', array(), NULL, 'boinc:front-page') . ': </label><span>' . number_format(boincstats_credit_to_flops(boincstats_get_project_avg_credit(), 't')) . '</span></div>' . "\n"; |
444 | 444 | //$output .= '<div class="stats"><a href="#">' . bts('Pending credits', array(), NULL, 'boinc:front-page') . '</a></div>' . "\n"; |
445 | 445 | $output .= '<div class="chart"><img src="' . $base_path . 'charts/project" /></div>' . "\n"; |
446 | 446 | break; |
447 | - default: |
|
447 | + default: |
|
448 | 448 | } |
449 | - return $output; |
|
449 | + return $output; |
|
450 | 450 | } |
451 | 451 | |
452 | 452 | |
@@ -458,19 +458,19 @@ discard block |
||
458 | 458 | * Check that the stats system is configured, report if it isn't |
459 | 459 | */ |
460 | 460 | function boincstats_check_configuration() { |
461 | - $project_id = variable_get('boinc_stats_remote_project_id', ''); |
|
462 | - if (!$project_id) { |
|
461 | + $project_id = variable_get('boinc_stats_remote_project_id', ''); |
|
462 | + if (!$project_id) { |
|
463 | 463 | watchdog('boincstats', 'The BOINC stats system is not configured. Please |
464 | 464 | !configure_it', array('!configure_it' => l(t('configure it now'), |
465 | - 'admin/boinc/stats')), WATCHDOG_ERROR); |
|
465 | + 'admin/boinc/stats')), WATCHDOG_ERROR); |
|
466 | 466 | if (user_access('administer site configuration')) { |
467 | - drupal_set_message(t('The BOINC stats system is not configured. Please |
|
467 | + drupal_set_message(t('The BOINC stats system is not configured. Please |
|
468 | 468 | !configure_it', array('!configure_it' => l(t('configure it now'), |
469 | - 'admin/boinc/stats'))), 'error', FALSE); |
|
469 | + 'admin/boinc/stats'))), 'error', FALSE); |
|
470 | 470 | } |
471 | 471 | else { |
472 | - drupal_set_message(t('There is a problem with the site. Please contact |
|
472 | + drupal_set_message(t('There is a problem with the site. Please contact |
|
473 | 473 | the system administrator.'), 'error', FALSE); |
474 | 474 | } |
475 | - } |
|
475 | + } |
|
476 | 476 | } |
@@ -8,38 +8,38 @@ discard block |
||
8 | 8 | |
9 | 9 | |
10 | 10 | /** |
11 | - * The BOINC stats configuration determines where statistics are sourced |
|
12 | - */ |
|
11 | + * The BOINC stats configuration determines where statistics are sourced |
|
12 | + */ |
|
13 | 13 | function boincstats_admin_stats_system(&$form_state) { |
14 | - $form = array(); |
|
15 | - $default = array( |
|
14 | + $form = array(); |
|
15 | + $default = array( |
|
16 | 16 | 'boinc_stats_server' => variable_get('boinc_stats_server', 'stats.gridrepublic.org'), |
17 | 17 | 'boinc_stats_project_list_rpc' => variable_get('boinc_stats_project_list_rpc', 'rpc/get_projects.php'), |
18 | 18 | 'boinc_stats_project_credit_history_rpc' => variable_get('boinc_stats_project_credit_history_rpc', 'rpc2/get_project_tc_history.php'), |
19 | 19 | 'boinc_stats_user_credit_history_rpc' => variable_get('boinc_stats_user_credit_history_rpc', 'rpc2/get_user_credit_history.php'), |
20 | 20 | 'boinc_stats_remote_project_id' => variable_get('boinc_stats_remote_project_id', ''), |
21 | - ); |
|
22 | - // Define the form |
|
23 | - $form['boinc_stats_server'] = array( |
|
21 | + ); |
|
22 | + // Define the form |
|
23 | + $form['boinc_stats_server'] = array( |
|
24 | 24 | '#type' => 'value', |
25 | 25 | '#value' => $default['boinc_stats_server'] |
26 | - ); |
|
27 | - $form['boinc_stats_project_list_rpc'] = array( |
|
26 | + ); |
|
27 | + $form['boinc_stats_project_list_rpc'] = array( |
|
28 | 28 | '#type' => 'value', |
29 | 29 | '#value' => $default['boinc_stats_project_list_rpc'] |
30 | - ); |
|
31 | - $form['boinc_stats_project_credit_history_rpc'] = array( |
|
30 | + ); |
|
31 | + $form['boinc_stats_project_credit_history_rpc'] = array( |
|
32 | 32 | '#type' => 'value', |
33 | 33 | '#value' => $default['boinc_stats_project_credit_history_rpc'] |
34 | - ); |
|
35 | - $form['boinc_stats_user_credit_history_rpc'] = array( |
|
34 | + ); |
|
35 | + $form['boinc_stats_user_credit_history_rpc'] = array( |
|
36 | 36 | '#type' => 'value', |
37 | 37 | '#value' => $default['boinc_stats_user_credit_history_rpc'] |
38 | - ); |
|
39 | - $form['boinc_stats_remote_project_id'] = array( |
|
38 | + ); |
|
39 | + $form['boinc_stats_remote_project_id'] = array( |
|
40 | 40 | '#type' => 'textfield', |
41 | 41 | '#title' => t('Stats ID for @project', array( |
42 | - '@project' => variable_get('site_name', 'Drupal-BOINC'))), |
|
42 | + '@project' => variable_get('site_name', 'Drupal-BOINC'))), |
|
43 | 43 | '#default_value' => $default['boinc_stats_remote_project_id'], |
44 | 44 | '#description' => t('This project must be registered with a stats system in |
45 | 45 | order for some statistics to be available. Currently only one system is |
@@ -47,26 +47,26 @@ discard block |
||
47 | 47 | '!find_project_id' => l(t('Find your project ID'), |
48 | 48 | "http://{$default['boinc_stats_server']}/{$default['boinc_stats_project_list_rpc']}", |
49 | 49 | array('attributes' => array('target' => 'external'))) |
50 | - ) |
|
50 | + ) |
|
51 | 51 | ) |
52 | - ); |
|
53 | - return system_settings_form($form); |
|
52 | + ); |
|
53 | + return system_settings_form($form); |
|
54 | 54 | } |
55 | 55 | |
56 | 56 | /** |
57 | - * Validate the BOINC stats form. |
|
58 | - */ |
|
57 | + * Validate the BOINC stats form. |
|
58 | + */ |
|
59 | 59 | function boincstats_admin_stats_system_validate($form, &$form_state) { |
60 | - $values = $form_state['values']; |
|
61 | - if (!$values['boinc_stats_remote_project_id']) { |
|
60 | + $values = $form_state['values']; |
|
61 | + if (!$values['boinc_stats_remote_project_id']) { |
|
62 | 62 | form_set_error('boinc_stats_remote_project_id', |
63 | - t('Stats may not work without a valid stats ID configured!')); |
|
64 | - } |
|
63 | + t('Stats may not work without a valid stats ID configured!')); |
|
64 | + } |
|
65 | 65 | } |
66 | 66 | |
67 | 67 | /** |
68 | - * Handle post-validation submission of BOINC stats form. |
|
69 | - */ |
|
68 | + * Handle post-validation submission of BOINC stats form. |
|
69 | + */ |
|
70 | 70 | function boincstats_admin_stats_system_submit($form, &$form_state) { |
71 | - drupal_set_message(t('Stats system configuration has been updated.')); |
|
71 | + drupal_set_message(t('Stats system configuration has been updated.')); |
|
72 | 72 | } |