Conditions | 42 |
Paths | > 20000 |
Total Lines | 222 |
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 namespace XoopsModules\Smartobject; |
||
588 | public function render($fetchOnly = false, $debug = false) |
||
589 | { |
||
590 | require_once XOOPS_ROOT_PATH . '/class/template.php'; |
||
591 | |||
592 | $this->_tpl = new \XoopsTpl(); |
||
593 | |||
594 | /** |
||
595 | * We need access to the vars of the SmartObject for a few things in the table creation. |
||
596 | * Since we may not have a SmartObject to look into now, let's create one for this purpose |
||
597 | * and we will free it after |
||
598 | */ |
||
599 | $this->_tempObject = $this->_objectHandler->create(); |
||
600 | |||
601 | $this->_criteria->setStart(isset($_GET['start' . $this->_objectHandler->keyName]) ? (int)$_GET['start' . $this->_objectHandler->keyName] : 0); |
||
602 | |||
603 | $this->setSortOrder(); |
||
604 | |||
605 | if (!$this->_isTree) { |
||
606 | $this->_limitsel = isset($_GET['limitsel']) ? $_GET['limitsel'] : Smartobject\Utility::getCookieVar($_SERVER['PHP_SELF'] . '_limitsel', '15'); |
||
607 | } else { |
||
608 | $this->_limitsel = 'all'; |
||
609 | } |
||
610 | |||
611 | $this->_limitsel = isset($_POST['limitsel']) ? $_POST['limitsel'] : $this->_limitsel; |
||
612 | Smartobject\Utility::setCookieVar($_SERVER['PHP_SELF'] . '_limitsel', $this->_limitsel); |
||
613 | $limitsArray = $this->getLimitsArray(); |
||
614 | $this->_criteria->setLimit($this->_limitsel); |
||
615 | |||
616 | $this->_filtersel = isset($_GET['filtersel']) ? $_GET['filtersel'] : $this->getDefaultFilter(); |
||
617 | $this->_filtersel = isset($_POST['filtersel']) ? $_POST['filtersel'] : $this->_filtersel; |
||
618 | Smartobject\Utility::setCookieVar($_SERVER['PHP_SELF'] . '_' . $this->_id . '_filtersel', $this->_filtersel); |
||
619 | $filtersArray = $this->getFiltersArray(); |
||
620 | |||
621 | if ($filtersArray) { |
||
622 | $this->_tpl->assign('smartobject_optionssel_filtersArray', $filtersArray); |
||
623 | } |
||
624 | |||
625 | // Check if the selected filter is defined and if so, create the selfilter2 |
||
626 | if (isset($this->_filterseloptions[$this->_filtersel])) { |
||
627 | // check if method associate with this filter exists in the handler |
||
628 | if (is_array($this->_filterseloptions[$this->_filtersel])) { |
||
629 | $filter = $this->_filterseloptions[$this->_filtersel]; |
||
630 | $this->_criteria->add($filter['criteria']); |
||
631 | } else { |
||
632 | if (method_exists($this->_objectHandler, $this->_filterseloptions[$this->_filtersel])) { |
||
633 | |||
634 | // then we will create the selfilter2 options by calling this method |
||
635 | $method = $this->_filterseloptions[$this->_filtersel]; |
||
636 | $this->_filtersel2options = $this->_objectHandler->$method(); |
||
637 | |||
638 | $this->_filtersel2 = isset($_GET['filtersel2']) ? $_GET['filtersel2'] : $this->getDefaultFilter2(); |
||
639 | $this->_filtersel2 = isset($_POST['filtersel2']) ? $_POST['filtersel2'] : $this->_filtersel2; |
||
640 | |||
641 | $filters2Array = $this->getFilters2Array(); |
||
642 | $this->_tpl->assign('smartobject_optionssel_filters2Array', $filters2Array); |
||
643 | |||
644 | Smartobject\Utility::setCookieVar($_SERVER['PHP_SELF'] . '_filtersel2', $this->_filtersel2); |
||
645 | if ('default' !== $this->_filtersel2) { |
||
646 | $this->_criteria->add(new \Criteria($this->_filtersel, $this->_filtersel2)); |
||
647 | } |
||
648 | } |
||
649 | } |
||
650 | } |
||
651 | // Check if we have a quicksearch |
||
652 | |||
653 | if (isset($_POST['quicksearch_' . $this->_id]) && '' != $_POST['quicksearch_' . $this->_id]) { |
||
654 | $quicksearch_criteria = new \CriteriaCompo(); |
||
655 | if (is_array($this->_quickSearch['fields'])) { |
||
656 | foreach ($this->_quickSearch['fields'] as $v) { |
||
657 | $quicksearch_criteria->add(new \Criteria($v, '%' . $_POST['quicksearch_' . $this->_id] . '%', 'LIKE'), 'OR'); |
||
658 | } |
||
659 | } else { |
||
660 | $quicksearch_criteria->add(new \Criteria($this->_quickSearch['fields'], '%' . $_POST['quicksearch_' . $this->_id] . '%', 'LIKE')); |
||
661 | } |
||
662 | $this->_criteria->add($quicksearch_criteria); |
||
663 | } |
||
664 | |||
665 | $this->_objects = $this->fetchObjects($debug); |
||
666 | |||
667 | require_once XOOPS_ROOT_PATH . '/class/pagenav.php'; |
||
668 | if ($this->_criteria->getLimit() > 0) { |
||
669 | |||
670 | /** |
||
671 | * Geeting rid of the old params |
||
672 | * $new_get_array is an array containing the new GET parameters |
||
673 | */ |
||
674 | $new_get_array = []; |
||
675 | |||
676 | /** |
||
677 | * $params_of_the_options_sel is an array with all the parameters of the page |
||
678 | * but without the pagenave parameters. This array will be used in the |
||
679 | * OptionsSelection |
||
680 | */ |
||
681 | $params_of_the_options_sel = []; |
||
682 | |||
683 | $not_needed_params = ['sortsel', 'limitsel', 'ordersel', 'start' . $this->_objectHandler->keyName]; |
||
684 | foreach ($_GET as $k => $v) { |
||
685 | if (!in_array($k, $not_needed_params)) { |
||
686 | $new_get_array[] = "$k=$v"; |
||
687 | $params_of_the_options_sel[] = "$k=$v"; |
||
688 | } |
||
689 | } |
||
690 | |||
691 | /** |
||
692 | * Adding the new params of the pagenav |
||
693 | */ |
||
694 | $new_get_array[] = 'sortsel=' . $this->_sortsel; |
||
695 | $new_get_array[] = 'ordersel=' . $this->_ordersel; |
||
696 | $new_get_array[] = 'limitsel=' . $this->_limitsel; |
||
697 | $otherParams = implode('&', $new_get_array); |
||
698 | |||
699 | $pagenav = new \XoopsPageNav($this->_objectHandler->getCount($this->_criteria), $this->_criteria->getLimit(), $this->_criteria->getStart(), 'start' . $this->_objectHandler->keyName, $otherParams); |
||
700 | $this->_tpl->assign('smartobject_pagenav', $pagenav->renderNav()); |
||
701 | } |
||
702 | $this->renderOptionSelection($limitsArray, $params_of_the_options_sel); |
||
703 | |||
704 | // retreive the current url and the query string |
||
705 | $current_urls = Smartobject\Utility::getCurrentUrls(); |
||
706 | $current_url = $current_urls['full_phpself']; |
||
707 | $query_string = $current_urls['querystring']; |
||
708 | if ($query_string) { |
||
709 | $query_string = str_replace('?', '', $query_string); |
||
710 | } |
||
711 | $query_stringArray = explode('&', $query_string); |
||
712 | $new_query_stringArray = []; |
||
713 | foreach ($query_stringArray as $query_string) { |
||
714 | if (false === strpos($query_string, 'sortsel') && false === strpos($query_string, 'ordersel')) { |
||
715 | $new_query_stringArray[] = $query_string; |
||
716 | } |
||
717 | } |
||
718 | $new_query_string = implode('&', $new_query_stringArray); |
||
719 | |||
720 | $orderArray = []; |
||
721 | $orderArray['ASC']['image'] = 'desc.png'; |
||
722 | $orderArray['ASC']['neworder'] = 'DESC'; |
||
723 | $orderArray['DESC']['image'] = 'asc.png'; |
||
724 | $orderArray['DESC']['neworder'] = 'ASC'; |
||
725 | |||
726 | $aColumns = []; |
||
727 | |||
728 | foreach ($this->_columns as $column) { |
||
729 | $qs_param = ''; |
||
730 | $aColumn = []; |
||
731 | $aColumn['width'] = $column->getWidth(); |
||
732 | $aColumn['align'] = $column->getAlign(); |
||
733 | $aColumn['key'] = $column->getKeyName(); |
||
734 | if ('checked' === $column->_keyname) { |
||
735 | $aColumn['caption'] = '<input type ="checkbox" id="checkall_smartobjects" name="checkall_smartobjects"' . ' value="checkall_smartobjects" onclick="smartobject_checkall(window.document.form_' . $this->_id . ', \'selected_smartobjects\');">'; |
||
736 | } elseif ($column->getCustomCaption()) { |
||
737 | $aColumn['caption'] = $column->getCustomCaption(); |
||
738 | } else { |
||
739 | $aColumn['caption'] = isset($this->_tempObject->vars[$column->getKeyName()]['form_caption']) ? $this->_tempObject->vars[$column->getKeyName()]['form_caption'] : $column->getKeyName(); |
||
740 | } |
||
741 | // Are we doing a GET sort on this column ? |
||
742 | $getSort = (isset($_GET[$this->_objectHandler->_itemname . '_' . 'sortsel']) |
||
743 | && $_GET[$this->_objectHandler->_itemname . '_' . 'sortsel'] == $column->getKeyName()) |
||
744 | || ($this->_sortsel == $column->getKeyName()); |
||
745 | $order = isset($_GET[$this->_objectHandler->_itemname . '_' . 'ordersel']) ? $_GET[$this->_objectHandler->_itemname . '_' . 'ordersel'] : 'DESC'; |
||
746 | |||
747 | if (isset($_REQUEST['quicksearch_' . $this->_id]) && '' != $_REQUEST['quicksearch_' . $this->_id]) { |
||
748 | $qs_param = '&quicksearch_' . $this->_id . '=' . $_REQUEST['quicksearch_' . $this->_id]; |
||
749 | } |
||
750 | if (!$this->_enableColumnsSorting || 'checked' === $column->_keyname || !$column->isSortable()) { |
||
751 | $aColumn['caption'] = $aColumn['caption']; |
||
752 | } elseif ($getSort) { |
||
753 | $aColumn['caption'] = '<a href="' |
||
754 | . $current_url |
||
755 | . '?' |
||
756 | . $this->_objectHandler->_itemname |
||
757 | . '_' |
||
758 | . 'sortsel=' |
||
759 | . $column->getKeyName() |
||
760 | . '&' |
||
761 | . $this->_objectHandler->_itemname |
||
762 | . '_' |
||
763 | . 'ordersel=' |
||
764 | . $orderArray[$order]['neworder'] |
||
765 | . $qs_param |
||
766 | . '&' |
||
767 | . $new_query_string |
||
768 | . '">' |
||
769 | . $aColumn['caption'] |
||
770 | . ' <img src="' |
||
771 | . SMARTOBJECT_IMAGES_ACTIONS_URL |
||
772 | . $orderArray[$order]['image'] |
||
773 | . '" alt="ASC"></a>'; |
||
774 | } else { |
||
775 | $aColumn['caption'] = '<a href="' . $current_url . '?' . $this->_objectHandler->_itemname . '_' . 'sortsel=' . $column->getKeyName() . '&' . $this->_objectHandler->_itemname . '_' . 'ordersel=ASC' . $qs_param . '&' . $new_query_string . '">' . $aColumn['caption'] . '</a>'; |
||
776 | } |
||
777 | $aColumns[] = $aColumn; |
||
778 | } |
||
779 | $this->_tpl->assign('smartobject_columns', $aColumns); |
||
780 | |||
781 | if ($this->_quickSearch) { |
||
782 | $this->_tpl->assign('smartobject_quicksearch', $this->_quickSearch['caption']); |
||
783 | } |
||
784 | |||
785 | $this->createTableRows(); |
||
786 | |||
787 | $this->_tpl->assign('smartobject_showFilterAndLimit', $this->_showFilterAndLimit); |
||
788 | $this->_tpl->assign('smartobject_isTree', $this->_isTree); |
||
789 | $this->_tpl->assign('smartobject_show_action_column_title', $this->_showActionsColumnTitle); |
||
790 | $this->_tpl->assign('smartobject_table_header', $this->_tableHeader); |
||
791 | $this->_tpl->assign('smartobject_table_footer', $this->_tableFooter); |
||
792 | $this->_tpl->assign('smartobject_printer_friendly_page', $this->_printerFriendlyPage); |
||
793 | $this->_tpl->assign('smartobject_user_side', $this->_userSide); |
||
794 | $this->_tpl->assign('smartobject_has_actions', $this->_hasActions); |
||
795 | $this->_tpl->assign('smartobject_head_css_class', $this->_head_css_class); |
||
796 | $this->_tpl->assign('smartobject_actionButtons', $this->_actionButtons); |
||
797 | $this->_tpl->assign('smartobject_introButtons', $this->_introButtons); |
||
798 | $this->_tpl->assign('smartobject_id', $this->_id); |
||
799 | if (!empty($this->_withSelectedActions)) { |
||
800 | $this->_tpl->assign('smartobject_withSelectedActions', $this->_withSelectedActions); |
||
801 | } |
||
802 | |||
803 | $smartobjectTable_template = $this->_customTemplate ?: 'smartobject_smarttable_display.tpl'; |
||
804 | if ($fetchOnly) { |
||
805 | return $this->_tpl->fetch('db:' . $smartobjectTable_template); |
||
806 | } else { |
||
807 | $this->_tpl->display('db:' . $smartobjectTable_template); |
||
808 | } |
||
809 | } |
||
810 | |||
825 |
This check looks for assignments to scalar types that may be of the wrong type.
To ensure the code behaves as expected, it may be a good idea to add an explicit type cast.