XSS sebezhetőség miatt check_plain() a változó tartalmára
[drupal_tuksi02.git] / nevergone_1.module
blob957d4a9046753225f8896177c48016555abd2077
1 <?php
2 // $Id$
5 /* modul azonosító konstansként */
6 define('MODULE_ID', 'nevergone_1');
8 /* felhasználónév */
9 define('WIDGET_USER', 'tanarurkerem');
11 /* widget kódja */
12 define('WIDGET', '<script type="text/javascript" src="http://feeds.delicious.com/v2/js/networkbadge/' . WIDGET_USER . '?showadd&icon=s&name&itemcount&nwcount&fancount"></script>');
15 /* hook_menu() implementáció */
16 function nevergone_1_menu() {
17   $items['admin/content/' . MODULE_ID] = array(
18     'title' => MODULE_ID . ' #tuksi02 settings',
19     'page callback' => drupal_get_form,
20     'page arguments' => array('nevergone_1_settings_form'),
21     'access arguments' => array('administer access'),
22   );
23   $items[MODULE_ID] = array(
24     'title' => MODULE_ID . ' #tuksi02',
25     'page callback' => 'nevergone_1_page',
26     'access arguments' => array('access content'),
27   );
28   return $items;
32 /* modul admin oldalán megjelenő form */
33 function nevergone_1_settings_form() {
34   $form['widget'] = array( /* beviteli mező */
35     '#type' => 'textfield',
36     '#title' => MODULE_ID . ' widget felhasználó neve',
37     '#default_value' => variable_get('nevergone_1_widget', WIDGET_USER),
38     '#description' => check_plain(str_replace(WIDGET_USER, variable_get('nevergone_1_widget', ''), WIDGET)),
39   );
40   $form['submit'] = array( /* "Save configuration" gomb */
41     '#type' => 'submit',
42     '#value' => t('Save configuration'),
43   );
44   $form['reset'] = array( /* "Reset to defaults" gomb */
45     '#type' => 'submit',
46     '#value' => t('Reset to defaults'),
47     '#submit' => array('nevergone_1_settings_form_clear'), /* reset form */
48   );
49   return $form;
53 /* modul admin form törlése */
54 function nevergone_1_settings_form_clear($form, &$form_state) {
55   $form_state['rebuild'] = TRUE; /* újra kell építeni a formot */
56   $form_state['values']['widget'] = WIDGET_USER; /* eredeti érték */
57   variable_set('nevergone_1_widget', WIDGET_USER);
58   drupal_flush_all_caches(); /* gyorstár ürítése */
62 /* modul admin form ellenőrzése: a felhasználónév nem lehet üres */
63 function nevergone_1_settings_form_validate($form, &$form_state) {
64   if (empty ($form_state['values']['widget'])) {
65     form_error($form['widget'], 'Nem lehet üres a felhasználónév!');
66   }
70 /* modul admin form elküldése: felhasználónév mentése */
71 function nevergone_1_settings_form_submit($form, &$form_state) {
72   variable_set('nevergone_1_widget', $form_state['values']['widget']);
73   drupal_flush_all_caches(); /* gyorstár ürítése */
77 /* hook_theme implementáció */
78 function nevergone_1_theme($existing, $type, $theme, $path) {
79   return array(
80     'nevergone_1_page' => array( /* sminkeléshez használt függvény neve: theme_nevergone_1_page(), és az átadott paraméterek */
81       'arguments' => array('widget' => NULL),
82     ),
83     'nevergone_1_block' => array(
84       'arguments' => array('widget' => NULL),
85     ),
86   );
90 /* oldal sminkeléséhez használt függvény */
91 function theme_nevergone_1_page($widget) {
92   return $widget;
96 /* modul oldalának megjelenítése */
97 function nevergone_1_page() {
98   $widget = variable_get('nevergone_1_widget', '');
99   $widget = str_replace(WIDGET_USER, check_plain(variable_get('nevergone_1_widget', '')), WIDGET);
100   return theme(nevergone_1_page, $widget); /* sminkeléssel generált eredmény */
104 /* hook_block() implementáció */
105 function nevergone_1_block($op = 'list', $delta = 0, $edit = array()) {
106   switch ($op) {
107     case 'list': /* blokkok listája */
108       $blocks['0'] = array(
109         'info' => 'Blokktégla (nevergone_1)',
110       );
111       return $blocks;
112       break;
113     case 'view': /* blokk tartalma */
114       $blocks = array();
115       /* nézzük a delta-t, hátha egyszer több blokk lesz a modulban */
116       switch ($delta) {
117         case '0':
118           $widget = variable_get('nevergone_1_widget', '');
119           $widget = str_replace(WIDGET_USER, check_plain(variable_get('nevergone_1_widget', '')), WIDGET);
120           $blocks['subject'] = MODULE_ID;
121           $blocks['content'] = theme(nevergone_1_block, $widget);
122           break;
123       }
124       return $blocks;
125       break;
126   }
130 /* blokk sminkeléséhez használt függvény */
131 function theme_nevergone_1_block($widget) {
132   return $widget;
136 /* hook_filter() implementáció */
137 function nevergone_1_filter($op, $delta = 0, $format = -1, $text = '', $cache_id = 0) {
138   switch ($op) {
139     case 'list':
140       $filters = array(
141         '0' => 'nevergone_1 filter',
142       );
143       return $filters;
144       break;
145     case 'prepare':
146       return $text;
147       break;
148     case 'process':
149       $widget_code = str_replace(WIDGET_USER, check_plain(variable_get('nevergone_1_widget', '')), WIDGET);
150       return str_replace('[widget]', $widget_code, $text);
151       break;
152     case 'no cache':
153       return TRUE; /* cache kikapcsolása */
154       break;
155   }
159 /* hook_filter_tips() implementáció */
160 function nevergone_1_filter_tips($delta, $format, $long = FALSE) {
161   switch ($delta) {
162     case '0':
163       return 'nevergone_1 példafilter leírása';
164       break;
165   }