Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
1 | <?php |
||
12 | class socialbuttons_module |
||
13 | { |
||
14 | public $u_action; |
||
15 | |||
16 | public function main($id, $mode) |
||
17 | { |
||
18 | global $config, $user, $template, $request; |
||
19 | |||
20 | $user->add_lang_ext('tas2580/socialbuttons', 'common'); |
||
21 | $this->tpl_name = 'acp_socialbuttons_body'; |
||
22 | $this->page_title = $user->lang('ACP_SOCIALBUTTONS_TITLE'); |
||
23 | |||
24 | add_form_key('acp_socialbuttons'); |
||
25 | |||
26 | // Form is submitted |
||
27 | if ($request->is_set_post('submit')) |
||
28 | { |
||
29 | if (!check_form_key('acp_socialbuttons')) |
||
30 | { |
||
31 | trigger_error($user->lang('FORM_INVALID') . adm_back_link($this->u_action), E_USER_WARNING); |
||
32 | } |
||
33 | $forums = implode(',', $request->variable('enable_f', array(0))); |
||
34 | $desc_forums = implode(',', $request->variable('enable_og_desc_f', array(0))); |
||
35 | // Set the new settings to config |
||
36 | $config->set('socialbuttons_position', $request->variable('position', 0)); |
||
37 | $config->set('socialbuttons_enable_forums', $forums); |
||
38 | $config->set('socialbuttons_display_on_index', $request->variable('display_on_index', 0)); |
||
39 | $config->set('socialbuttons_enable', $request->variable('enable', 0)); |
||
40 | $config->set('socialbuttons_cachetime', $request->variable('cachetime', 0)); |
||
41 | $config->set('socialbuttons_multiplicator', $request->variable('multiplicator', 1)); |
||
42 | $config->set('socialbuttons_facebook', $request->variable('facebook', 0)); |
||
43 | $config->set('socialbuttons_twitter', $request->variable('twitter', 0)); |
||
44 | $config->set('socialbuttons_google', $request->variable('google', 0)); |
||
45 | $config->set('socialbuttons_linkedin', $request->variable('linkedin', 0)); |
||
46 | $config->set('socialbuttons_style', $request->variable('style', 1)); |
||
47 | $config->set('socialbuttons_showshares', $request->variable('showshares', 0)); |
||
48 | $config->set('socialbuttons_use_seo_urls', $request->variable('use_seo_urls', '')); |
||
49 | $config->set('socialbuttons_enable_og', $request->variable('enable_og', 0)); |
||
50 | $config->set('socialbuttons_enable_og_title', $request->variable('enable_og_title', 0)); |
||
51 | $config->set('socialbuttons_enable_og_desc', $request->variable('enable_og_desc', 0)); |
||
52 | $config->set('socialbuttons_og_image', $request->variable('og_image', '')); |
||
53 | $config->set('socialbuttons_enable_og_desc_forums', $desc_forums); |
||
54 | trigger_error($user->lang('ACP_SAVED') . adm_back_link($this->u_action)); |
||
55 | } |
||
56 | |||
57 | // Send the curent settings to template |
||
58 | $position = isset($config['socialbuttons_position']) ? $config['socialbuttons_position'] : false; |
||
59 | $multiplicator = isset($config['socialbuttons_multiplicator']) ? $config['socialbuttons_multiplicator'] : true; |
||
60 | $style = isset($config['socialbuttons_style']) ? $config['socialbuttons_style'] : true; |
||
61 | $desc_forums = isset($config['socialbuttons_enable_og_desc_forums']) ? explode(',', $config['socialbuttons_enable_og_desc_forums']) : array(); |
||
62 | $forums = isset($config['socialbuttons_enable_forums']) ? explode(',', $config['socialbuttons_enable_forums']) : array(); |
||
63 | |||
64 | $template->assign_vars(array( |
||
65 | 'U_ACTION' => $this->u_action, |
||
66 | 'POSITION_OPTIONS' => $this->position_select($position), |
||
67 | 'MULTIPLICATOR_OPTIONS' => $this->multiplicator_select($multiplicator), |
||
68 | 'BUTTON_STYLES' => $this->button_style($style), |
||
69 | 'S_ENABLE' => isset($config['socialbuttons_enable']) ? $config['socialbuttons_enable'] : false, |
||
70 | 'S_DISPLAY_ON_INDEX' => isset($config['socialbuttons_display_on_index']) ? $config['socialbuttons_display_on_index'] : false, |
||
71 | 'S_USE_SEO_URLS' => isset($config['socialbuttons_use_seo_urls']) ? $config['socialbuttons_use_seo_urls'] : false, |
||
72 | 'S_SHOWSHARES' => isset($config['socialbuttons_showshares']) ? $config['socialbuttons_showshares'] : false, |
||
73 | 'CACHETIME' => isset($config['socialbuttons_cachetime']) ? $config['socialbuttons_cachetime'] : false, |
||
74 | 'S_FACEBOOK' => isset($config['socialbuttons_facebook']) ? $config['socialbuttons_facebook'] : '', |
||
75 | 'S_TWITTER' => isset($config['socialbuttons_twitter']) ? $config['socialbuttons_twitter'] : '', |
||
76 | 'S_GOOGLE' => isset($config['socialbuttons_google']) ? $config['socialbuttons_google'] : '', |
||
77 | 'S_LINKEDIN' => isset($config['socialbuttons_linkedin']) ? $config['socialbuttons_linkedin'] : '', |
||
78 | 'S_ENABLE_OG' => isset($config['socialbuttons_enable_og']) ? $config['socialbuttons_enable_og'] : '', |
||
79 | 'S_ENABLE_OG_TITLE' => isset($config['socialbuttons_enable_og_title']) ? $config['socialbuttons_enable_og_title'] : '', |
||
80 | 'S_ENABLE_OG_DESC' => isset($config['socialbuttons_enable_og_desc']) ? $config['socialbuttons_enable_og_desc'] : '', |
||
81 | 'OG_IMAGE' => isset($config['socialbuttons_og_image']) ? $config['socialbuttons_og_image'] : '', |
||
82 | 'FORUM_DESC_SELECT' => make_forum_select($desc_forums, false, false, true), |
||
83 | 'FORUM_ENABLE_SELECT' => make_forum_select($forums, false, false, true), |
||
84 | )); |
||
85 | } |
||
86 | |||
87 | /** |
||
88 | * Generates a list of styles for the buttons |
||
89 | * |
||
90 | * @global object $phpbb_extension_manager |
||
91 | * @param int $selected |
||
92 | * @return string |
||
93 | */ |
||
94 | private function button_style($selected) |
||
95 | { |
||
96 | global $phpbb_extension_manager; |
||
97 | $path = $phpbb_extension_manager->get_extension_path('tas2580/socialbuttons', true) . 'images/'; |
||
98 | $return = ''; |
||
99 | for ($i = 1; $i <= 10; $i++) |
||
100 | { |
||
101 | $checked = ($selected == $i) ? ' checked="checked"' : ''; |
||
102 | $return .= '<input type="radio"' . $checked . ' class="radio" id="style" name="style" value="' . $i . '" /> <img align="top" src="' . $path . 'sprite' . $i . '.png" alt="" /><br /><br />'; |
||
103 | } |
||
104 | return $return; |
||
105 | } |
||
106 | |||
107 | /** |
||
108 | * Generates a option list with positions for the buttons |
||
109 | * |
||
110 | * @global object $user |
||
111 | * @param int $selected |
||
112 | * @return string |
||
113 | */ |
||
114 | View Code Duplication | private function position_select($selected) |
|
122 | |||
123 | /** |
||
124 | * Generates a option list for the cache tine multiplicator |
||
125 | * |
||
126 | * @global object $user |
||
127 | * @param int $selected |
||
128 | * @return string |
||
129 | */ |
||
130 | View Code Duplication | private function multiplicator_select($selected) |
|
138 | } |
||
139 |
This check looks from parameters that have been defined for a function or method, but which are not used in the method body.