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

Contents of /contributions/modules/feedburner/feedburner.module

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


Revision 1.8 - (show annotations) (download) (as text)
Fri Jul 27 05:11:41 2007 UTC (2 years, 4 months ago) by davereid
Branch: MAIN
CVS Tags: HEAD
Branch point for: DRUPAL-5, DRUPAL-6--1
Changes since 1.7: +154 -617 lines
File MIME type: text/x-php
Major code overhaul
Using FeedBurner database table
Split module into admin/user/base functions
1 <?php
2 // $Id$
3
4 // Predefine some default variables
5 define('FEEDBURNER_DEFAULT_USERAGENTS', 'feedburner|feedvalidator');
6 define('FEEDBURNER_DEFAULT_REDIRECT_STATUS', 307);
7 define('FEEDBURNER_DEFAULT_DOMAIN', 'feeds.feedburner.com');
8 define('FEEDBURNER_QUERY_STRING_DISABLE_REDIRECT', 'no_redirect');
9
10 /**
11 * Implementation of hook_help().
12 * Displays helpful descriptions and hints on necessary pages.
13 */
14 function feedburner_help($section) {
15 switch ($section) {
16 case 'feedburner_about':
17 $output = '<p style="text-align: center; font-size: smaller;">'. t("This module was developed by <a href=\"@link1\">Dave Reid</a> with assistance from <a href=\"@link2\">FeedBurner</a>.<br />If you like this module please consider <a href=\"@link3\">donating to the developer's replacement laptop fund</a>.", array('@link1' => 'http://davereid.net/', '@link2' => 'http://www.feedburner.com/', '@link3' => 'http://davereid.net/laptop-fund')) .'</p>';
18 return $output;
19 case 'admin/help#feedburner':
20 $output = feedburner_help('feedburner_about');
21 return $output;
22 case 'admin/settings/feedburner':
23 $output = '<p>'. t("These are the settings for the FeedBurner module. Once you have everything set, check out your site's <a href=\"@link\">FeedBurner feeds</a>.", array('@link' => url('admin/build/feedburner'))) .'</p>';
24 return $output;
25 case 'admin/build/feedburner':
26 $output = '<p>'. t('This is the FeedBurner site feed redirection building page. Make sure to check out the <a href="@link">FeedBurner settings</a>.', array('@link' => url('admin/settings/feedburner'))) .'</p>';
27 return $output;
28
29
30 }
31 }
32
33 /**
34 * Implementation of hook_perm().
35 * Defines a few access roles utilized in this module.
36 */
37 function feedburner_perm() {
38 return array('administer FeedBurner', 'view FeedFlare', 'edit own blog FeedBurner redirection');
39 }
40
41 function feedburner_menu($may_cache) {
42 $items = array();
43
44 $feedburner_admin = user_access('administer FeedBurner');
45
46 if ($may_cache) {
47 $items[] = array(
48 'path' => 'admin/settings/feedburner',
49 'title' => t('FeedBurner'),
50 'description' => t('Administer FeedBurner integration.'),
51 'callback' => 'drupal_get_form',
52 'callback arguments' => array('feedburner_admin_settings'),
53 'access' => $feedburner_admin,
54 );
55 $items[] = array(
56 'path' => 'admin/build/feedburner',
57 'title' => t('FeedBurner'),
58 'description' => t('Change site feed redirections to FeedBurner.'),
59 'callback' => 'feedburner_admin_build',
60 'access' => $feedburner_admin,
61 );
62 $items[] = array(
63 'path' => 'admin/build/feedburner/list',
64 'title' => t('List'),
65 'type' => MENU_DEFAULT_LOCAL_TASK,
66 'weight' => -10,
67 );
68 $items[] = array(
69 'path' => 'admin/build/feedburner/add',
70 'title' => t('Add'),
71 'callback' => 'drupal_get_form',
72 'callback arguments' => array('feedburner_admin_build_edit'),
73 'access' => $feedburner_admin,
74 'type' => MENU_LOCAL_TASK,
75 );
76 $items[] = array(
77 'path' => 'admin/build/feedburner/edit',
78 'title' => t('Edit'),
79 'callback' => 'drupal_get_form',
80 'callback arguments' => array('feedburner_admin_build_edit'),
81 'access' => $feedburner_admin,
82 'type' => MENU_CALLBACK,
83 );
84 $items[] = array(
85 'path' => 'admin/build/feedburner/remove',
86 'title' => t('Remove'),
87 //'callback' => 'drupal_get_form',
88 //'callback arguments' => array('feedburner_admin_build_remove'),
89 'callback' => 'feedburner_admin_build_remove',
90 'access' => $feedburner_admin,
91 'type' => MENU_CALLBACK,
92 );
93 $items[] = array(
94 'path' => 'feedburner/verify',
95 'callback' => 'feedburner_verify',
96 'access' => $feedburner_admin,
97 'type' => MENU_CALLBACK,
98 );
99 $items[] = array(
100 'path' => 'feedburner/autocomplete',
101 'title' => t('Feeds autocomplete'),
102 'callback' => 'feedburner_autocomplete',
103 'access' => $feedburner_admin,
104 'type' => MENU_CALLBACK,
105 );
106 $items[] = array(
107 'path' => 'feedburner/test',
108 'callback' => 'feedburner_test',
109 'access' => true,
110 );
111 }
112 return $items;
113 }
114
115 /**
116 * Implementation of hook_init().
117 */
118 function feedburner_init() {
119 $useragent = $_SERVER['HTTP_USER_AGENT'];
120 $useragents = '/'. variable_get('feedburner_useragents', FEEDBURNER_DEFAULT_USERAGENTS) .'/i';
121 if (!preg_match($useragents, $useragent)) {
122 drupal_bootstrap(DRUPAL_BOOTSTRAP_PATH);
123 //preg_match('/admin\/build\/feedburner/', referer_uri())
124 $feed = _feedburner_load($_GET['q']);
125 if (isset($feed['fb_uri']) && !isset($_GET['feedburner']) /*&& $_GET['FEEDBURNER'] != 'NOREDIRECT'*/) {
126 $url = _feedburner_url($feed['fb_uri']);
127 $status = intval(variable_get('feedburner_redirect_status', FEEDBURNER_DEFAULT_REDIRECT_STATUS));
128 drupal_goto($url, null, null, $status);
129 }
130 }
131 /*else {
132 global $_FEEDBURNER_NO_CACHE;
133 $_FEEDBURNER_NO_CACHE = true;
134 return;
135 }*/
136 }
137
138 /**
139 * Implementation of hook_exit().
140 */
141 /*function feedburner_exit() {
142 global $_FEEDBURNER_NO_CACHE;
143 if ($_FEEDBURNER_NO_CACHE == true) {
144 // Remove page from cache
145 }
146 }*/
147
148 /**
149 * Implementation of hook_user().
150 */
151 function feedburner_user($op, &$edit, &$account, $category = null) {
152 require_once('./'. drupal_get_path('module', 'feedburner') .'/feedburner.user.inc');
153 return _feedburner_user($op, $edit, $account, $category);
154 }
155
156 /**
157 * Implementation of hook_block().
158 */
159 /*function feedburner_block($op = 'list', $delta = 0, $edit = array()) {
160 require_once('./'. drupal_get_path('module', 'feedburner') .'/feedburner.block.inc');
161 return _feedburner_block($op, $delta, $edit);
162 }*/
163
164 /**
165 * Defines the FeedBurner admin settings form
166 */
167 function feedburner_admin_settings() {
168 require_once('./'. drupal_get_path('module', 'feedburner') .'/feedburner.admin.inc');
169 return _feedburner_settings_form();
170 }
171
172 function feedburner_admin_build() {
173 require_once('./'. drupal_get_path('module', 'feedburner') .'/feedburner.admin.inc');
174 return _feedburner_build_overview();
175 }
176
177 function feedburner_admin_build_edit() {
178 require_once('./'. drupal_get_path('module', 'feedburner') .'/feedburner.admin.inc');
179 $path = _feedburner_path_keys();
180 /*if ($path != drupal_get_normal_path($path)) {
181 //drupal_goto('admin/build/feedburner/edit/'. drupal_get_normal_path($path));
182 }*/
183 $result = _feedburner_load($path, 'local_uri, fb_uri');
184 if (empty($result)) {
185 drupal_set_title('Add FeedBurner Redirect');
186 $output = _feedburner_build_edit_form(array('local_uri' => $path));
187 }
188 else {
189 drupal_set_title('Edit FeedBurner Redirect');
190 $output = _feedburner_build_edit_form($result);
191 }
192 return $output;
193 }
194
195 function feedburner_admin_build_remove() {
196 require_once('./'. drupal_get_path('module', 'feedburner') .'/feedburner.admin.inc');
197 return _feedburner_build_remove();
198 }
199
200 function feedburner_autocomplete() {
201 require_once('./'. drupal_get_path('module', 'feedburner') .'/feedburner.admin.inc');
202 return _feedburner_autocomplete();
203 }
204
205 function feedburner_verify($fb_uri) {
206 require_once('./'. drupal_get_path('module', 'feedburner') .'/feedburner.admin.inc');
207 _feedburner_verify_feed($fb_uri, (isset($_GET['local_uri']) ? $_GET['local_uri'] : db_result(db_query("SELECT local_uri FROM {feedburner_feeds} WHERE fb_uri = '%s'", $fb_uri))));
208 /*if (_feedburner_verify_feed($fb_uri) == true) {
209 //drupal_set_message(t('The FeedBurner feed %path was successfully verified.', array('%path' => $fb_uri)));
210 }
211 else {
212 //$local_uri = $_GET['local_uri'];
213 //$local_uri = db_result(db_query("SELECT local_uri FROM {feedburner_feeds} WHERE fb_uri = '%s'", $fb_uri));
214 //drupal_set_message(t('The FeedBurner feed %path could not be verified. Please check that you have set up the feed in <a href="@fb-account">your FeedBurner account</a> or you can <a href="@fb-create">burn the feed at Feedburner</a>.', array('%path' => $fb_uri, '@fb-account' => 'http://www.feedburner.com/fb/a/myfeeds', '@fb-create' => 'https://www.feedburner.com/fb/a/addfeed?sourceUrl='. url($local_uri, null, null, true) .'&mappedUri='. $fb_uri)));
215 }*/
216 drupal_goto('admin/build/feedburner');
217
218 }
219
220 function _feedburner_url($fb_uri = '') {
221 return 'http://'. variable_get('feedburner_domain', FEEDBURNER_DEFAULT_DOMAIN) .'/'. $fb_uri;
222 }
223
224 /**
225 * Helper function to load details about a FeedBurner feed from the database.
226 * @param local_uri The local system uri
227 * @param parts The fields to load from the database, defaulted to 'fb_uri'
228 * @return false if not found, otherwise array of details about feed
229 */
230 function _feedburner_load($local_uri, $parts = 'fb_uri') {
231 if (empty($local_uri)) {
232 return false;
233 }
234 $result = db_fetch_array(db_query("SELECT %s FROM {feedburner_feeds} WHERE local_uri = LOWER('%s')", $parts, $local_uri));
235 return (empty($result) ? false : $result);
236 }
237
238 // Test function
239 function feedburner_test() {
240 echo '<pre>';
241 require_once('./'. drupal_get_path('module', 'feedburner') .'/feedburner.admin.inc');
242 $data = drupal_http_request(url('rss.xml', null, null, true));
243 //unset($data->data);
244 var_export($data->headers['Content-Type']);
245 var_export((bool) preg_match('/rss|rdf|atom|xml/i', $data->headers['Content-Type']));
246 //$data->data = wordwrap(htmlspecialchars($data->data), 200, "\n");
247 //var_export($data);
248 echo '</pre>'; die();
249 }

  ViewVC Help
Powered by ViewVC 1.1.2