/[drupal]/contributions/modules/blogger/blogger.module
ViewVC logotype

Contents of /contributions/modules/blogger/blogger.module

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.13 - (show annotations) (download) (as text)
Wed Jun 18 02:36:34 2008 UTC (17 months, 1 week ago) by thenicespider
Branch: MAIN
CVS Tags: DRUPAL-5--1-4, HEAD
Changes since 1.12: +10 -3 lines
File MIME type: text/x-php
New - Order by Created Date and Random (thank to sebs-http://drupal.org/user/61080)
1 <?php
2 // $Id: blogger.module,v 1.129 2006/09/10 11:04:00 wendy Exp $
3
4 /**
5 * @file
6 * The Blogger module displays list of bloggers.
7 */
8
9 /**
10 * Implementation of hook_help().
11 */
12 function blogger_help($section) {
13 switch ($section) {
14 case 'admin/help#blogger':
15 $output = '<p>'. t('The Blogger module displays a list of bloggers.') .'</p>';
16 $output .= t("<p>You can configure:"
17 ."<ul>"
18 ."<li>How many bloggers will displayed.</li>"
19 ."<li>Show numbers of Blogs.</li>"
20 ."<li>Order by none, name or numbers of blogs.</li>"
21 ."<li>Upper, small or wordcas.e</li>"
22 ."<li>All bloggers in page format with pagination support.</li>"
23 ."<li>Whether display Avatar or not.</li>"
24 ."</ul>"
25 ."</p>");
26 return $output;
27 case 'admin/modules#description':
28 return t('Displays list of bloggers.');
29 }
30 }
31
32 /**
33 * Implementation of hook_perm
34 */
35 function blogger_perm() {
36 return array('access blogger', 'administer blogger');
37 }
38
39 function blogger_admin_settings() {
40
41 // only administrators can access this function
42
43 // Generate the form - settings applying to all patterns first
44 $form['blogger_settings'] = array(
45 '#type' => 'fieldset',
46 '#weight' => -20,
47 '#title' => t('Basic settings'),
48 '#collapsible' => TRUE,
49 '#collapsed' => FALSE
50 );
51
52 $form['blogger_settings']['blogger_maxdisp'] = array(
53 '#type' => 'textfield',
54 '#title' => t('Maximum number of bloggers'),
55 '#default_value' => variable_get('blogger_maxdisp', 10),
56 '#description' => t("The maximum number of bloggers to display in the block."),
57 '#maxlength' => '5', '#size' => '5');
58
59 $form['blogger_settings']['blogger_shownum'] = array(
60 '#type' => 'checkbox',
61 '#title' => t('Show number of written blogs.'),
62 '#default_value' => variable_get('blogger_shownum', 0),
63 '#description' => t("Display how many blogs has been written, i.e: Samuel(7), Linda(10)."),
64 '#maxlength' => '1', '#size' => '1');
65
66 $form['blogger_settings']['blogger_order'] = array(
67 '#type' => 'radios',
68 '#title' => t('Order by'),
69 '#default_value' => variable_get('blogger_order', 0),
70 '#options' => array(t('none'), t('Name'),
71 t('Blog Count'), t('Date'), t('Random')),
72 '#description' => t("Order by none, Name or Numbers of blogs.")
73 );
74
75 $form['blogger_settings']['blogger_case'] = array(
76 '#type' => 'select',
77 '#title' => t('Case format'),
78 '#default_value' => variable_get('blogger_case', 0),
79 '#options' => array(t('None'), t('Smallcase'), t('Uppercase'), t('Wordcase')),
80 '#description' => t("Change case format of the blogger's name.")
81 );
82
83 $form['blogger_settings_advanced'] = array(
84 '#type' => 'fieldset',
85 '#weight' => -15,
86 '#title' => t('Advanced settings'),
87 '#collapsible' => TRUE,
88 '#collapsed' => TRUE
89 );
90
91 $form['blogger_settings_advanced']['blogger_on_blog_only'] = array(
92 '#type' => 'checkbox',
93 '#title' => t('Show Blogger module when content type is blog only.'),
94 '#default_value' => variable_get('blogger_on_blog_only', 0),
95 '#description' => t("Show Blogger module when content type is blog only, otherwise hide this module."),
96 '#maxlength' => '1', '#size' => '1');
97
98 $form['blogger_settings_advanced']['blogger_exclude'] = array(
99 '#type' => 'textfield',
100 '#title' => t('Exlude these UIDs'),
101 '#default_value' => variable_get('blogger_exclude', "'0'"),
102 '#description' => t("Exclude any UIDs, i.e to exlude user with UID 5 and 7: '5','7'<br/><b>CAUTION:</b> to display all blogger don't make this field blank, instead fill with: '0'"));
103
104 $form['blogger_settings_avatar'] = array(
105 '#type' => 'fieldset',
106 '#weight' => -10,
107 '#title' => t('Avatar settings'),
108 '#collapsible' => TRUE,
109 '#collapsed' => TRUE
110 );
111
112 $form['blogger_settings_avatar']['blogger_avatar'] = array(
113 '#type' => 'checkbox',
114 '#title' => t('Show blogger\'s avatar.'),
115 '#default_value' => variable_get('blogger_avatar', 0),
116 '#description' => t("Display blogger's avatar. The avatar file will displayed on block and page."),
117 '#maxlength' => '1', '#size' => '1');
118
119 $form['blogger_settings_avatar']['blogger_avatar_width'] = array(
120 '#type' => 'textfield',
121 '#title' => t('Avatar width'),
122 '#default_value' => variable_get('blogger_avatar_width', 20),
123 '#description' => t("Set avatar width in px. Set to 0 (zero) if you want to use original width. If you want to set 200 px width then just enter 200 (without px). Tip: to keep picture aspect ratio then you can set the width to certain value but set to 0 (zero) the height value."),
124 '#maxlength' => '5', '#size' => '5');
125
126 $form['blogger_settings_avatar']['blogger_avatar_height'] = array(
127 '#type' => 'textfield',
128 '#title' => t('Avatar height'),
129 '#default_value' => variable_get('blogger_avatar_height', 20),
130 '#description' => t("Set avatar height in px. Set to 0 (zero) if you want to use original height."),
131 '#maxlength' => '5', '#size' => '5');
132 //return $form;
133 return system_settings_form($form);
134 }
135
136
137 /**
138 * Menu callback. Prints a listing of active nodes on the site.
139 */
140
141 function blogger_menu($may_cache) {
142 // Add main CSS functionality.
143 drupal_add_css(drupal_get_path('module', 'blogger') .'/blogger.css');
144 $items = array();
145
146 $items[] = array(
147 'path' => 'admin/settings/blogger',
148 'title' => t('Blogger'),
149 'description' => t('Control how blogger displayed.'),
150 'callback' => 'drupal_get_form',
151 'callback arguments' => array('blogger_admin_settings'),
152 'access' => user_access('administer blogger'),
153 'type' => MENU_NORMAL_ITEM);
154
155 $items[] = array(
156 'path' => 'blogger/list',
157 'title' => t('Blogger'),
158 'callback' => 'blogger_page_list',
159 'access' => user_access('access blogger'),
160 'type' => MENU_CALLBACK);
161
162 return $items;
163 }
164
165 /**
166 * Implementation of hook_block().
167 *
168 * Generates blogger block
169 */
170 function blogger_block($op = 'list', $delta = 0) {
171 if ($op == 'list')
172 {
173 $blocks[0]['info'] = t('Bloggers');
174 return $blocks;
175 }
176
177 if ($op == 'view' && user_access('access blogger'))
178 {
179 $maxdisp = variable_get("blogger_maxdisp", 10);
180 $shownum = variable_get("blogger_shownum", 0);
181 $blogger_order = variable_get("blogger_order", 0);
182 $blogger_exclude = variable_get("blogger_exclude", "'0'");
183
184 $blogger_case = variable_get("blogger_case", 0);
185 $blogger_avatar = variable_get("blogger_avatar", 0);
186 $blogger_avatar_width = variable_get("blogger_avatar_width", 20);
187 $blogger_avatar_height = variable_get("blogger_avatar_height", 20);
188 $blogger_on_blog_only = variable_get("blogger_on_blog_only", 0);
189
190 if ($blogger_on_blog_only) {
191 if (arg(0) != 'blog') {
192 if (arg(0) == 'node' && is_numeric(arg(1))) {
193 $node = node_load(arg(1));
194 $content_type = $node->type;
195 if ($content_type!='blog') {return FALSE;}
196 } else {
197 return FALSE;
198 }
199 }
200 }
201
202 $sql = " SELECT n.uid, u.name, count(u.name) AS numitems, u.picture "
203 ." FROM {node} n "
204 ." INNER JOIN {users} u ON u.uid = n.uid "
205 ." WHERE n.type = 'blog' and n.status = 1 "
206 ." and n.uid not in ($blogger_exclude) "
207 ." GROUP BY n.uid"
208 .($blogger_order<>0 ? " ORDER BY " : "")
209 .($blogger_order==1 ? "u.name" : "")
210 .($blogger_order==2 ? "numitems DESC, u.name" : "")
211 .($blogger_order==3 ? "n.created DESC, u.name" : "")
212 .($blogger_order==4 ? "RAND()" : "")
213 ." LIMIT $maxdisp"
214 ;
215 $results = db_query($sql);
216
217 $block_content = '<div id="blogger">';
218
219 if (!db_num_rows($results)) {
220 $block_content .= 'No blogger';
221 $block_content .= '</div>';
222 } else {
223
224 $block_content .= '<table>';
225 $i = 0;
226 while ( $data = db_fetch_object($results) ) {
227 $i++;
228 switch ($blogger_case) {
229 default:
230 case 0:
231 break;
232 case 1: //smallcase
233 $data->name = strtolower($data->name);
234 break;
235 case 2: //uppercase
236 $data->name = strtoupper($data->name);
237 break;
238 case 3: //Wordcase
239 $data->name = ucwords($data->name);
240 break;
241 }
242 $showdata = ($shownum ? $data->name.' ('.$data->numitems.')' : $data->name);
243
244 if (($blogger_avatar) AND ($data->picture<>"")) {
245 $blogger_img = base_path().$data->picture;
246 $showpict = "<img src='$blogger_img' "
247 .($blogger_avatar_width<>0 ? " width=$blogger_avatar_width " : " ")
248 .($blogger_avatar_height<>0 ? " height=$blogger_avatar_height " : " ")
249 ."></>";
250 } else {
251 $showpict = "";
252 }
253
254 $block_content .= '<tr class="'.(($i % 2) ? 'odd' : 'even') .'">';
255 if ($blogger_avatar) {
256 $block_content .= '<td '.($blogger_avatar_width<>0 ? " width=$blogger_avatar_width " : " ").'>'.$showpict.'</td>';
257 }
258
259 $block_content .= '<td>'. l($showdata, "blog/$data->uid").'</td>';
260 $block_content .= '</tr>';
261
262 //$block_content = 'ssadsdsd 123';
263 }
264 $block_content .= '</table>';
265 $block_content .= '</div>';
266
267 // add a more link to our page that displays all the links
268 $block_content .=
269 '<div class="more-link">'.
270 l(t("more"), "blogger/list", array("title" => t("More bloggers...")))
271 .'</div>';
272
273 }
274
275 $block['subject'] = t('Bloggers');
276 $block['content'] = $block_content;
277 return $block;
278 }
279 }
280
281 function blogger_page_list()
282 {
283 $maxdisp = 25;
284 $shownum = variable_get("blogger_shownum", 0);
285 $blogger_order = variable_get("blogger_order", 0);
286 $blogger_exclude = variable_get("blogger_exclude", "'0'");
287
288 $blogger_case = variable_get("blogger_case", 0);
289 $blogger_avatar = variable_get("blogger_avatar", 0);
290 $blogger_avatar_width = variable_get("blogger_avatar_width", 0);
291 $blogger_avatar_height = variable_get("blogger_avatar_height", 0);
292
293 $sql_counts = " SELECT DISTINCT (u.name)"
294 ." FROM {users} u"
295 ." INNER JOIN {node} n ON n.uid=u.uid"
296 ." WHERE u.name<>'' AND n.type='blog' AND n.status=1"
297 ;
298 $dse_sql_counts = db_query($sql_counts);
299 $cnt_sql_counts = db_num_rows($dse_sql_counts);
300 $sql_counts = "SELECT $cnt_sql_counts";
301
302 $sql = " SELECT n.uid, u.name, count(u.name) AS numitems, u.picture, n.title "
303 ." FROM {node} n "
304 ." INNER JOIN {users} u ON u.uid = n.uid "
305 ." WHERE n.type = 'blog' AND n.status=1 "
306 ." and n.uid not in ($blogger_exclude) "
307 ." GROUP BY n.uid"
308 .($blogger_order<>0 ? " ORDER BY " : "")
309 .($blogger_order==1 ? "u.name" : "")
310 .($blogger_order==2 ? "numitems DESC, u.name" : "")
311 .($blogger_order==3 ? "n.created DESC, u.name" : "")
312 .($blogger_order==4 ? "RAND()" : "")
313 ;
314 $sql = db_rewrite_sql($sql);
315
316 //$results = pager_query($sql, 1, 0, $sql_count, COMMENT_PUBLISHED, $uid, $uid);
317 $results = pager_query($sql, $maxdisp, 0, $sql_counts);
318
319 $i=1;
320 while ($node = db_fetch_object($results)) {
321 //l($node->title, "node/$node->nid") .' '. theme('mark', node_mark($node->nid, $node->changed)),
322 switch ($blogger_case)
323 {
324 default:
325 case 0:
326 break;
327 case 1: //smallcase
328 $node->name = strtolower($node->name);
329 break;
330 case 2: //uppercase
331 $node->name = strtoupper($node->name);
332 break;
333 case 3: //Wordcase
334 $node->name = ucwords($node->name);
335 break;
336 }
337
338 //Latest blog
339 $sql = " SELECT n.title, nid "
340 ." FROM {node} n "
341 ." WHERE n.uid = '$node->uid' AND n.type='blog' AND n.status=1"
342 ." ORDER BY n.created DESC"
343 ." LIMIT 1"
344 ;
345 $latest_blogs = db_query($sql);
346 $latest_blog = db_fetch_object($latest_blogs);
347 //
348 if (($blogger_avatar) AND ($node->picture<>""))
349 {
350 $blogger_img = base_path().$node->picture;
351 $showpict = "<img src='$blogger_img' align='center'"
352 .($blogger_avatar_width<>0 ? " width=$blogger_avatar_width " : " ")
353 .($blogger_avatar_height<>0 ? " height=$blogger_avatar_height " : " ")
354 ."></>";
355 }
356 else
357 { $showpict = ""; }
358 //
359 if (!$blogger_avatar)
360 {
361 $rows[] = array(
362 l($node->name, "blog/$node->uid"),
363 $node->numitems,
364 l($latest_blog->title, "node/$latest_blog->nid")
365 );
366 } else {
367 $rows[] = array(
368 l($node->name, "blog/$node->uid"),
369 $node->numitems,
370 l($latest_blog->title, "node/$latest_blog->nid"),
371 "$showpict"
372 );
373 }
374 }
375 if (!$blogger_avatar) { $header = array( t('Name'), t('Numbers of Blogs'),t('Latest Blog') ); }
376 else { $header = array( t('Name'), t('Numbers of Blogs'),t('Latest Blog'), t('Avatar') ); }
377
378 $output = '<div id="blogger">';
379 $output .= theme('table', $header, $rows);
380 $output .= theme('pager', NULL, $maxdisp, 0);
381 $output .= '</div>';
382
383 return $output;
384 }
385

  ViewVC Help
Powered by ViewVC 1.1.2