Conditions | 22 |
Paths | 2688 |
Total Lines | 220 |
Code Lines | 146 |
Lines | 0 |
Ratio | 0 % |
Changes | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
1 | <?php |
||
274 | function apply_block() |
||
275 | { |
||
276 | $xoops = Xoops::getInstance(); |
||
277 | $xoops->db()->queryF("UPDATE " . |
||
278 | $xoops->db()->prefix("block_module_link") . |
||
279 | " SET module_id = -1, pageid = 0 WHERE module_id < 2 AND pageid = 1"); |
||
280 | |||
281 | //Change block module link to remove pages |
||
282 | //Remove page links for module subpages |
||
283 | $xoops->db()->queryF("DELETE FROM " . |
||
284 | $xoops->db()->prefix("block_module_link") . |
||
285 | " WHERE pageid > 0"); |
||
286 | |||
287 | $sql = "ALTER TABLE `" . |
||
288 | $xoops->db()->prefix("block_module_link") . |
||
289 | "` DROP PRIMARY KEY"; |
||
290 | $xoops->db()->queryF($sql); |
||
291 | $sql = "ALTER TABLE `" . |
||
292 | $xoops->db()->prefix("block_module_link") . |
||
293 | "` DROP pageid"; |
||
294 | $xoops->db()->queryF($sql); |
||
295 | $sql = "ALTER IGNORE TABLE `" . |
||
296 | $xoops->db()->prefix("block_module_link") . |
||
297 | "` ADD PRIMARY KEY (`block_id` , `module_id`)"; |
||
298 | $xoops->db()->queryF($sql); |
||
299 | |||
300 | $xoops->db()->queryF("RENAME TABLE `" . |
||
301 | $xoops->db()->prefix("newblocks") . |
||
302 | "` TO `" . |
||
303 | $xoops->db()->prefix("newblocks_bak") . |
||
304 | "`"); |
||
305 | |||
306 | // Create new block table |
||
307 | $sql = "CREATE TABLE " . $xoops->db()->prefix("newblocks") . " ( |
||
308 | bid mediumint(8) unsigned NOT NULL auto_increment, |
||
309 | mid smallint(5) unsigned NOT NULL default '0', |
||
310 | func_num tinyint(3) unsigned NOT NULL default '0', |
||
311 | options varchar(255) NOT NULL default '', |
||
312 | name varchar(150) NOT NULL default '', |
||
313 | title varchar(255) NOT NULL default '', |
||
314 | content text, |
||
315 | side tinyint(1) unsigned NOT NULL default '0', |
||
316 | weight smallint(5) unsigned NOT NULL default '0', |
||
317 | visible tinyint(1) unsigned NOT NULL default '0', |
||
318 | block_type char(1) NOT NULL default '', |
||
319 | c_type char(1) NOT NULL default '', |
||
320 | isactive tinyint(1) unsigned NOT NULL default '0', |
||
321 | dirname varchar(50) NOT NULL default '', |
||
322 | func_file varchar(50) NOT NULL default '', |
||
323 | show_func varchar(50) NOT NULL default '', |
||
324 | edit_func varchar(50) NOT NULL default '', |
||
325 | template varchar(50) NOT NULL default '', |
||
326 | bcachetime int(10) unsigned NOT NULL default '0', |
||
327 | last_modified int(10) unsigned NOT NULL default '0', |
||
328 | PRIMARY KEY (bid), |
||
329 | KEY mid (mid), |
||
330 | KEY visible (visible), |
||
331 | KEY isactive_visible_mid (isactive,visible,mid), |
||
332 | KEY mid_funcnum (mid,func_num) |
||
333 | ) TYPE=MyISAM; |
||
334 | "; |
||
335 | $xoops->db()->queryF($sql); |
||
336 | |||
337 | $sql = "SELECT MAX(instanceid) FROM " . |
||
338 | $xoops->db()->prefix('block_instance'); |
||
339 | $result = $xoops->db()->query($sql); |
||
340 | list($MaxInstanceId) = $xoops->db()->fetchRow($result); |
||
341 | |||
342 | // Change custom block mid from 1 to 0 |
||
343 | $sql = "UPDATE `" . |
||
344 | $xoops->db()->prefix("newblocks_bak") . |
||
345 | "` SET mid = 0 WHERE show_func = 'b_system_custom_show'"; |
||
346 | $result = $xoops->db()->queryF($sql); |
||
347 | |||
348 | $sql = "SELECT b.*, i.instanceid " . " FROM " . |
||
349 | $xoops->db()->prefix('block_instance') . " AS i LEFT JOIN " . $xoops->db()->prefix("newblocks_bak") . |
||
350 | " AS b ON b.bid = i.bid " . " GROUP BY b.dirname, b.bid, i.instanceid"; |
||
351 | $result = $xoops->db()->query($sql); |
||
352 | $dirname = ''; |
||
353 | $bid = 0; |
||
354 | $block_key = null; |
||
355 | while (false !== ($row = $xoops->db()->fetchArray($result))) { |
||
356 | if ($row['dirname'] != $dirname) { |
||
357 | $dirname = $row['dirname']; |
||
358 | $modversion = array(); |
||
359 | if (!@include XOOPS_ROOT_PATH . '/modules/' . $dirname . '/xoops_version.php') { |
||
360 | continue; |
||
361 | } |
||
362 | } |
||
363 | if (empty($modversion['blocks']) && $dirname != 'system') { |
||
364 | continue; |
||
365 | } |
||
366 | |||
367 | $isClone = true; |
||
368 | if ($row['bid'] != $bid) { |
||
369 | $bid = $row['bid']; |
||
370 | $isClone = false; |
||
371 | $block_key = null; |
||
372 | $block_key = @$this->_block_lookup($row, $modversion['blocks']); |
||
373 | } |
||
374 | if ($block_key === null) { |
||
375 | continue; |
||
376 | } |
||
377 | |||
378 | // Copy data from block instance table and blocks table |
||
379 | $sql = "INSERT INTO " . |
||
380 | $xoops->db()->prefix("newblocks") . |
||
381 | " (bid, mid, options, name, title, side, weight, visible, " . |
||
382 | " func_num, " . |
||
383 | " block_type, " . |
||
384 | " c_type, " . |
||
385 | " isactive, dirname, func_file," . |
||
386 | " show_func, edit_func, template, bcachetime, last_modified)" . |
||
387 | " SELECT " . |
||
388 | " i.instanceid, c.mid, i.options, c.name, i.title, i.side, i.weight, i.visible, " . |
||
389 | " {$block_key}, " . |
||
390 | ($isClone ? " CASE WHEN c.show_func='b_system_custom_show' THEN 'C' ELSE 'D' END," : " CASE WHEN c.show_func='b_system_custom_show' THEN 'C' WHEN c.mid = 1 THEN 'S' ELSE 'M' END,") . |
||
391 | " CASE WHEN c.c_type='' THEN 'H' ELSE c.c_type END," . |
||
392 | " c.isactive, c.dirname, c.func_file," . |
||
393 | " c.show_func, c.edit_func, c.template, i.bcachetime, c.last_modified" . |
||
394 | " FROM " . $xoops->db()->prefix("block_instance") . |
||
395 | " AS i," . |
||
396 | " " . |
||
397 | $xoops->db()->prefix("newblocks_bak") . |
||
398 | " AS c" . |
||
399 | " WHERE i.bid = c.bid" . |
||
400 | " AND i.instanceid = " . |
||
401 | $row['instanceid']; |
||
402 | $xoops->db()->queryF($sql); |
||
403 | } |
||
404 | |||
405 | $sql = "SELECT b.* " . |
||
406 | "FROM " . |
||
407 | $xoops->db()->prefix("newblocks_bak") . |
||
408 | " AS b LEFT JOIN " . |
||
409 | $xoops->db()->prefix('block_instance') . |
||
410 | " AS i ON b.bid = i.bid " . |
||
411 | " WHERE i.instanceid IS NULL" . |
||
412 | " GROUP BY b.dirname, b.bid"; |
||
413 | $result = $xoops->db()->query($sql); |
||
414 | $dirname = ''; |
||
415 | $bid = 0; |
||
416 | $block_key = null; |
||
417 | while (false !== ($row = $xoops->db()->fetchArray($result))) { |
||
418 | if ($row['dirname'] != $dirname) { |
||
419 | $dirname = $row['dirname']; |
||
420 | $modversion = array(); |
||
421 | if (!@include XOOPS_ROOT_PATH . '/modules/' . $dirname . '/xoops_version.php') { |
||
422 | continue; |
||
423 | } |
||
424 | } |
||
425 | if (empty($modversion['blocks']) && $dirname != 'system') { |
||
426 | continue; |
||
427 | } |
||
428 | |||
429 | if ($row['bid'] != $bid) { |
||
430 | $bid = $row['bid']; |
||
431 | $block_key = null; |
||
432 | $block_key = @$this->_block_lookup($row, $modversion['blocks']); |
||
433 | } |
||
434 | if ($block_key === null) { |
||
435 | continue; |
||
436 | } |
||
437 | |||
438 | // Copy data from blocks table |
||
439 | $sql = " INSERT INTO " . $xoops->db() |
||
440 | ->prefix("newblocks") . " (bid, mid, options, name, title, side, weight, visible, " . " func_num, " . " block_type, " . " c_type, " . " isactive, dirname, func_file," . " show_func, edit_func, template, bcachetime, last_modified)" . " SELECT " . " bid + {$MaxInstanceId}, mid, options, name, name, 0, 0, 0, " . " {$block_key}, " . " CASE WHEN show_func='b_system_custom_show' THEN 'C' WHEN mid = 1 THEN 'S' ELSE 'M' END," . " CASE WHEN c_type='' THEN 'H' ELSE c_type END," . " isactive, dirname, func_file," . " show_func, edit_func, template, 0, last_modified" . " FROM " . $xoops |
||
441 | ->db()->prefix("newblocks_bak") . " WHERE bid = " . $row['bid']; |
||
442 | $xoops->db()->queryF($sql); |
||
443 | |||
444 | // Build block-module link |
||
445 | $sql = " INSERT INTO " . $xoops->db() |
||
446 | ->prefix("block_module_link") . " (block_id, module_id)" . " SELECT " . " bid + {$MaxInstanceId}, -1" . " FROM " . $xoops |
||
447 | ->db()->prefix("newblocks_bak") . " WHERE bid = " . $row['bid']; |
||
448 | $xoops->db()->queryF($sql); |
||
449 | } |
||
450 | |||
451 | // Dealing with tables |
||
452 | $xoops->db()->queryF("DROP TABLE `" . $xoops->db()->prefix("block_instance") . "`;"); |
||
453 | $xoops->db()->queryF("DROP TABLE `" . $xoops->db()->prefix("newblocks_bak") . "`;"); |
||
454 | |||
455 | // Deal with custom blocks, convert options to type and content |
||
456 | $sql = "SELECT bid, options FROM `" . $xoops->db() |
||
457 | ->prefix("newblocks") . "` WHERE show_func='b_system_custom_show'"; |
||
458 | $result = $xoops->db()->query($sql); |
||
459 | while (false !== (list($bid, $options) = $xoops->db()->fetchRow($result))) { |
||
460 | $_options = unserialize($options); |
||
461 | $content = $_options[0]; |
||
462 | $type = $_options[1]; |
||
463 | $xoops->db()->queryF("UPDATE `" . $xoops->db() |
||
464 | ->prefix("newblocks") . "` SET c_type = '{$type}', options = '', content = " . $xoops->db() |
||
465 | ->quote($content) . " WHERE bid = {$bid}"); |
||
466 | } |
||
467 | |||
468 | // Deal with block options, convert array values to "," and "|" delimited |
||
469 | $sql = "UPDATE `" . $xoops->db() |
||
470 | ->prefix("newblocks") . "` SET options = '' WHERE show_func <> 'b_system_custom_show' AND ( options = 'a:1:{i:0;s:0:\"\";}' OR options = 'a:0:{}' )"; |
||
471 | $result = $xoops->db()->queryF($sql); |
||
472 | $sql = "SELECT bid, options FROM `" . $xoops->db() |
||
473 | ->prefix("newblocks") . "` WHERE show_func <> 'b_system_custom_show' AND options <> ''"; |
||
474 | $result = $xoops->db()->query($sql); |
||
475 | while (false !== (list($bid, $_options) = $xoops->db()->fetchRow($result))) { |
||
476 | $options = unserialize($_options); |
||
477 | if (empty($options) || !is_array($options)) { |
||
478 | $options = array(); |
||
479 | } |
||
480 | $count = count($options); |
||
481 | //Convert array values to comma-separated |
||
482 | for ($i = 0; $i < $count; $i++) { |
||
483 | if (is_array($options[$i])) { |
||
484 | $options[$i] = implode(',', $options[$i]); |
||
485 | } |
||
486 | } |
||
487 | $options = implode('|', $options); |
||
488 | $sql = "UPDATE `" . $xoops->db()->prefix("newblocks") . "` SET options = " . $xoops->db() |
||
489 | ->quote($options) . " WHERE bid = {$bid}"; |
||
490 | $xoops->db()->queryF($sql); |
||
491 | } |
||
492 | |||
493 | return true; |
||
494 | } |
||
501 |
Adding explicit visibility (
private
,protected
, orpublic
) is generally recommend to communicate to other developers how, and from where this method is intended to be used.