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

Contents of /contributions/modules/refresh/refresh.module

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


Revision 1.9 - (show annotations) (download) (as text)
Thu Oct 11 21:38:12 2007 UTC (2 years, 1 month ago) by karna
Branch: MAIN
CVS Tags: DRUPAL-6--1-0, HEAD
Branch point for: DRUPAL-6--1
Changes since 1.8: +3 -2 lines
File MIME type: text/x-php
karna: made hook_node_api compatible with core 6.x
1 <?php
2 // $Id: refresh.module,v 1.8 2007/10/11 21:07:15 karna Exp $
3
4 /**
5 * @refresh
6 * Provides a configurable meta refresh when viewing individual nodes.
7 */
8
9 /**
10 * Implementation of hook_perm().
11 * Creates two new permissions: one to create refreshes and one the change
12 * the global settings of the module.
13 */
14 function refresh_perm() {
15 return array('create refreshes', 'administer refreshes');
16 }
17
18 /**
19 * Implementation of hook_form_alter().
20 * Adds a refresh group and numeric edit field to the node editing form.
21 */
22 function refresh_form_alter(&$form, $form_state, $form_id) {
23
24 if (isset($form['type']) && ($form['type']['#value'] .'_node_form' == $form_id)) {
25 $refresh = $form['#node']->refresh;
26 $form['refresh'] = array(
27 '#type' => 'fieldset',
28 '#title' => t('Refresh settings'),
29 '#collapsible' => TRUE,
30 '#collapsed' => empty($refresh),
31 '#access' => user_access('create refreshes'),
32 '#weight' => 30,
33 );
34 $form['refresh']['refresh'] = array(
35 '#type' => 'textfield',
36 '#default_value' => $refresh,
37 '#maxlength' => 3,
38 '#collapsible' => TRUE,
39 '#collapsed' => TRUE,
40 '#description' => t('Optionally provide a number of seconds after which the node page refreshes.'),
41 );
42 }
43 }
44
45 /**
46 * Implementation of hook_nodeapi().
47 * Display the refresh tag when displaying a node (by itself, not on the homepage)
48 * and manipulates the refresh data of the node at the appropiate moments.
49 */
50 function refresh_nodeapi(&$node, $op, $teaser, $page) {
51 switch ($op) {
52 case 'view':
53 // Only add a refresh tag when viewing the node by itself
54 if (($page) && ($node->refresh > 0)) {
55 drupal_set_html_head('<meta http-equiv="refresh" content="' . check_plain($node->refresh) . '" />');
56 }
57 break;
58
59 case 'load':
60 $result = db_query("SELECT seconds FROM {node_refresh} WHERE nid = %d AND vid = %d", $node->nid, $node->vid);
61 if ($result) {
62 $node->refresh = db_result($result);
63 }
64 break;
65 }
66
67 if (user_access('create refreshes') || user_access('administer refreshes')) {
68 switch ($op) {
69 case 'validate':
70 $refresh = trim($node->refresh);
71 if ((strlen($refresh) > 0) && ($refresh <= 0)) {
72 form_set_error('refresh', t('The refresh number is invalid. Please enter a number &gt; 0 or blank.'));
73 }
74 break;
75
76 case 'submit':
77 $result = db_query("SELECT seconds FROM {node_refresh} WHERE nid = %d AND vid = %d", $node->nid, $node->vid);
78 if (!db_num_rows($result) && ($node->nid > 0)) {
79 $result = db_query("INSERT INTO {node_refresh} (nid, vid, seconds) VALUES (%d, %d, %d)", $node->nid, $node->vid, (int) $node->refresh);
80 }
81 break;
82
83 case 'insert':
84 $result = db_query("INSERT INTO {node_refresh} (nid, vid, seconds) VALUES (%d, %d, %d)", $node->nid, $node->vid, (int) $node->refresh);
85 break;
86
87 case 'update':
88 if ((int) $node->refresh > 0) {
89 $result = db_query("UPDATE {node_refresh} SET seconds = %d WHERE nid = %d AND vid = %d", (int) $node->refresh, $node->nid, $node->vid);
90 }
91 else {
92 $result = db_query("DELETE FROM {node_refresh} WHERE nid = %d AND vid = %d", $node->nid, $node->vid);
93 }
94 break;
95
96 case 'delete':
97 $result = db_query("DELETE FROM {node_refresh} WHERE nid = %d AND vid = %d", $node->nid, $node->vid);
98 break;
99 }
100 }
101 }

  ViewVC Help
Powered by ViewVC 1.1.2