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

Contents of /contributions/modules/used_modules/used_modules.module

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


Revision 1.7 - (show annotations) (download) (as text)
Fri Apr 25 01:02:50 2008 UTC (19 months ago) by narno
Branch: MAIN
CVS Tags: DRUPAL-5--1-0, HEAD
Branch point for: DRUPAL-5
Changes since 1.6: +51 -31 lines
File MIME type: text/x-php
Code cleaning and optimisation
1 <?php
2 /**
3 * $Id: used_modules.module,v 1.6 2008/04/24 03:37:58 narno Exp $
4 * @author Arnaud 'Narno' Ligny <arnaud.ligny@narno.com>
5 * @copyright Narno.com
6 */
7
8 define('DRUPAL_PROJET_PATH', 'http://drupal.org/project/%s');
9
10 /**
11 * Implementation of hook_perm().
12 */
13 function used_modules_perm() {
14 return array('view used modules');
15 }
16
17 /**
18 * Implementation of hook_help().
19 */
20 function used_modules_help($section) {
21 switch ($section) {
22 case 'admin/settings/used_modules':
23 case 'admin/help#used_modules':
24 $output = '<p>';
25 $output .= t("<em>Used modules</em> is a simple module that display a table of modules are used on your Drupal website.");
26 $output .= '</p>';
27 $output .= '<p>';
28 $output .= t('<a href="@user-access">Allowed users</a> are able to view used modules on this <a href="@used-modules">page</a> or in a <a href="@build-block">block</a>.', array('@user-access' => url('admin/user/access', NULL, 'module-used_modules'), '@used-modules' => url('modules/used'), '@build-block' => url('admin/build/block')));
29 $output .= '</p>';
30 break;
31 }
32 return $output;
33 }
34
35 /**
36 * Implementation of hook_menu().
37 */
38 function used_modules_menu($may_cache) {
39 $items = array();
40 if ($may_cache) {
41 // admin
42 $items[] = array(
43 'path' => 'admin/settings/used_modules',
44 'title' => t('Used modules page'),
45 'description' => t('Settings for the used modules page.'),
46 'callback' => 'drupal_get_form',
47 'callback arguments' => array('used_modules_admin_settings'),
48 'access' => user_access('administer site configuration'),
49 'type' => MENU_NORMAL_ITEM
50 );
51 // page
52 $items[] = array(
53 'path' => 'modules/used',
54 'title' => t('Used modules'),
55 'description' => t('Used modules on this site.'),
56 'callback' => 'used_modules_page',
57 'access' => user_access('view used modules'),
58 'type' => MENU_NORMAL_ITEM
59 );
60 }
61 return $items;
62 }
63
64 /**
65 * admin settings
66 */
67 function used_modules_admin_settings() {
68 $form = array();
69 $form['used_modules_page_title'] = array(
70 '#type' => 'textfield',
71 '#title' => t('Title'),
72 '#default_value' => variable_get('used_modules_page_title', 'Used modules'),
73 '#size' => 60,
74 '#maxlength' => 128,
75 '#required' => TRUE,
76 );
77 $form['used_modules_page_description'] = array(
78 '#type' => 'textarea',
79 '#title' => t('Page description'),
80 '#default_value' => variable_get('used_modules_page_description', 'List of modules are used on my website.'),
81 '#cols' => 72,
82 '#rows' => 3
83 );
84 $form['used_modules_page_display_description'] = array(
85 '#type' => 'checkbox',
86 '#title' => t('Display modules description'),
87 '#default_value' => variable_get('used_modules_page_display_description', TRUE)
88 );
89 $form['used_modules_page_display_version'] = array(
90 '#type' => 'checkbox',
91 '#title' => t('Display modules version'),
92 '#default_value' => variable_get('used_modules_page_display_version', FALSE)
93 );
94 return system_settings_form($form);
95 }
96
97 /**
98 * Used modules page
99 */
100 function used_modules_page() {
101 // title
102 drupal_set_title(variable_get('used_modules_page_title', 'Used modules'));
103 // description
104 $output = variable_get('used_modules_page_description', 'List of modules are used on my website.');
105 // result table
106 $display_description = variable_get('used_modules_page_display_description', TRUE);
107 $display_version = variable_get('used_modules_page_display_version', FALSE);
108 $table = _used_modules($display_description, $display_version);
109 $output .= theme('table', $table['header'], $table['rows']);
110 return $output;
111 }
112
113 /**
114 * Implementation of hook_block().
115 */
116 function used_modules_block($op = 'list', $delta = 0, $edit = array()) {
117 switch ($op) {
118 case 'list':
119 $blocks[0]['info'] = t('Used modules');
120 return $blocks;
121 case 'configure':
122 switch($delta) {
123 case 0:
124 $form['description'] = array(
125 '#type' => 'textarea',
126 '#title' => t('Page description'),
127 '#default_value' => variable_get('used_modules_block_' . $delta . '_description', 'List of modules are used on my website.'),
128 '#cols' => 72,
129 '#rows' => 3
130 );
131 $form['display_description'] = array(
132 '#type' => 'checkbox',
133 '#title' => t('Display modules description'),
134 '#default_value' => variable_get('used_modules_block_' . $delta . '_display_description', TRUE)
135 );
136 $form['display_version'] = array(
137 '#type' => 'checkbox',
138 '#title' => t('Display modules version'),
139 '#default_value' => variable_get('used_modules_block_' . $delta . '_display_version', FALSE)
140 );
141 return $form;
142 break;
143 }
144 case 'save':
145 variable_set('used_modules_block_' . $delta . '_description', $edit['description']);
146 variable_set('used_modules_block_' . $delta . '_display_description', $edit['display_description']);
147 variable_set('used_modules_block_' . $delta . '_display_version', $edit['display_version']);
148 break;
149 case 'view':
150 if (user_access('view used modules')) {
151 switch($delta) {
152 case 0:
153 $block['subject'] = t('Used modules');
154 $block['content'] = theme('used_modules_block', $delta);
155 break;
156 }
157 }
158 return $block;
159 }
160 }
161
162 /**
163 * theme function for the used_modules block contents
164 */
165 function theme_used_modules_block($block) {
166 drupal_add_css(drupal_get_path('module', 'used_modules') . '/used_modules.css');
167 switch ($block) {
168 case 0:
169 // description
170 $output = variable_get('used_modules_block_' . $block . '_description', '');
171 // result table
172 $display_description = variable_get('used_modules_block_' . $block . '_display_description', TRUE);
173 $display_version = variable_get('used_modules_block_' . $block . '_display_version', FALSE);
174 $table = _used_modules($display_description, $display_version);
175 $output .= '<div id="block-used_modules-list">' . theme('table', $table['header'], $table['rows']) . '</div>';
176 return $output;
177 }
178 }
179
180 /**
181 * main fonction
182 */
183 function _used_modules($display_description = TRUE, $display_version = FALSE) {
184 // header
185 $header[] = t('Name');
186 if ($display_description == TRUE) {
187 $header[] = t('Description');
188 }
189 if ($display_version == TRUE) {
190 $header[] = t('Version');
191 }
192 // rows
193 $rows = array();
194 $module_list = module_list();
195 sort($module_list);
196 foreach ($module_list as $module) {
197 $module_info = _module_parse_info_file(drupal_get_path('module', $module) . '/' . $module . '.info');
198 if (!empty($module_info) && $module_info['project'] != 'drupal' && !empty($module_info['project'])) {
199 $rows_tmp = array(l($module_info['name'], sprintf(DRUPAL_PROJET_PATH, $module_info['project'])));
200 if ($display_description == TRUE) {
201 $rows_description = array($module_info['description']);
202 $rows_tmp = array_merge($rows_tmp, $rows_description);
203 }
204 if ($display_version == TRUE) {
205 $rows_version = array($module_info['version']);
206 $rows_tmp = array_merge($rows_tmp, $rows_version);
207 }
208 $rows[] = $rows_tmp;
209 }
210 }
211 return array('header' => $header, 'rows' => $rows);
212 }
213 ?>

  ViewVC Help
Powered by ViewVC 1.1.2