Просмотр исходного кода

Ticket #5273 - Get rid of duplicates in code.

AntonLV 11 месяцев назад
Родитель
Сommit
30c1e6b096

+ 1 - 1
install/sql/system.sql

@@ -4831,7 +4831,7 @@ INSERT INTO `sys_objects_menu` (`object`, `title`, `title_public`, `set_name`, `
 ('sys_account_popup', '_sys_menu_title_account_popup', '', 'sys_account_popup', 'system', 12, 0, 1, 'BxTemplMenuAccountPopup', ''),
 ('sys_account_notifications', '_sys_menu_title_account_notifications', '', 'sys_account_notifications', 'system', 19, 0, 1, 'BxTemplMenuAccountNotifications', ''),
 ('sys_profile_stats', '_sys_menu_title_profile_stats', '', 'sys_profile_stats', 'system', 21, 0, 1, 'BxTemplMenuProfileStats', ''),
-('sys_tags_cloud', '_sys_menu_title_tags_cloud', '', '', 'system', 21, 0, 1, 'BxBaseMenuTagsCloud', ''),
+('sys_tags_cloud', '_sys_menu_title_tags_cloud', '', '', 'system', 21, 0, 1, 'BxTemplMenuTagsCloud', ''),
 ('sys_profile_followings', '_sys_menu_title_profile_followings', '', 'sys_profile_followings', 'system', 27, 0, 1, 'BxTemplMenuProfileFollowings', ''),
 ('sys_switch_language_popup', '_sys_menu_title_switch_language_popup', '', 'sys_switch_language', 'system', 6, 0, 1, 'BxTemplMenuSwitchLanguage', ''),
 ('sys_switch_language_inline', '_sys_menu_title_switch_language_inline', '', 'sys_switch_language', 'system', 3, 0, 1, 'BxTemplMenuSwitchLanguage', ''),

+ 1 - 1
modules/base/text/classes/BxBaseModTextTemplate.php

@@ -636,7 +636,7 @@ class BxBaseModTextTemplate extends BxBaseModGeneralTemplate
         $bBadgesSingle = isset($aParams['badges_single']) ? $aParams['badges_single'] : false;
         $bBadgesCompact = isset($aParams['badges_compact']) ? $aParams['badges_compact'] : false;
 
-        $sCoverData = ($sKey = 'FIELD_THUMB_POSITION') && isset($CNF[$sKey]) && $aData[$CNF[$sKey]] ?? '';
+        $sCoverData = ($sKey = 'FIELD_THUMB_POSITION') && isset($CNF[$sKey], $aData[$CNF[$sKey]]) ? $aData[$CNF[$sKey]] : '';
         $sCoverSettings = $this->_getImageSettings($CNF['FIELD_THUMB'], $sCoverData, 'unit_cover');
 
         $aTmplVars = array (

+ 1 - 85
modules/boonex/forum/classes/BxForumMenuCategories.php

@@ -141,91 +141,7 @@ class BxForumMenuCategories extends BxTemplMenu
         if(empty($aItems) || !is_array($aItems))
             return $aItems;
 
-        $iMaxNum = count($aItems);
-        $iMenuItemsMin = (int)getParam('bx_forum_visible_categories');
-        if($iMaxNum <= $iMenuItemsMin)
-            return $aItems;
-
-        $mixedCollpsed = $this->getUserChoiceCollapsed();
-        $bCollpsed = $mixedCollpsed === false || $mixedCollpsed == 1;
-
-        for($i = $iMenuItemsMin; $i < $iMaxNum; $i++)
-            $aItems[$i]['class_add'] .= ' bx-mi-aux' . ($bCollpsed ? ' bx-mi-hidden' : '');
-
-        $aShowMoreLinks = [
-            'more' => ['title' => '_sys_show_more', 'icon' => 'chevron-down', 'class' => $bCollpsed ? '' : 'bx-mi-hidden'],
-            'less' => ['title' => '_sys_show_less', 'icon' => 'chevron-up', 'class' => !$bCollpsed ? '' : 'bx-mi-hidden']
-        ];
-
-        foreach($aShowMoreLinks as $sLink => $aLink)
-            $aItems[] = array(
-                'class_add' => 'bx-psmi-show-' . $sLink . ' ' . $aLink['class'],
-                'name' => 'show-' . $sLink,
-                'title' => _t($aLink['title']),
-                'link' => 'javascript:void(0)',
-                'bx_if:onclick' => [
-                    'condition' => true,
-                    'content' => [
-                        'onclick' => 'bx_menu_show_more_less(this, \'' . $this->_sObject . '\', \'.bx-menu-object-' . $this->_sObject . '\')',
-                    ]
-                ],
-                'attrs' => '',
-                'bx_if:image' => [
-                    'condition' => false,
-                    'content' => ['icon_url' => ''],
-                ],
-                'bx_if:image_inline' => [
-                    'condition' => false,
-                    'content' => ['image' => ''],
-                ],
-                'bx_if:icon' => [
-                    'condition' => true,
-                    'content' => ['icon' => $aLink['icon']],
-                ],
-                'bx_if:icon-html' => [
-                    'condition' => false,
-                    'content' => ['icon-a' => ''],
-                ],
-                'bx_if:icon-a' => [
-                    'condition' => false,
-                    'content' => ['icon-a' => ''],
-                ],
-                'bx_if:addon' => [
-                    'condition' => false,
-                    'content' => []
-                ]
-            );
-
-        return $aItems;
-    }
-
-    protected function getMenuItemsRaw ()
-    {
-        $aItems = $this->_oQuery->getMenuItemsBy(array(
-            'type' => 'set_name', 
-            'set_name' => $this->_aObject['set_name']
-        ));
-
-        $aDuplicates = $this->_oQuery->getMenuItemsBy(array(
-            'type' => 'set_name_duplicates', 
-            'set_name' => $this->_aObject['set_name']
-        ));
-
-        $oProfile = BxDolProfile::getInstance();
-        if(!$oProfile)
-            return array();
-
-        $sModule = $oProfile->getModule();
-
-        $aResult = array();
-        foreach($aItems as $aItem) {
-            if(in_array($aItem['name'], $aDuplicates) && $aItem['module'] != $sModule)
-                continue;
-            
-            $aResult[$aItem['name']] = $aItem;
-        }
-
-        return $aResult;
+        return $this->_addMenuItemsMoreLess($aItems, (int)getParam('bx_forum_visible_categories'));
     }
     
     protected function _getMenuItem($a)

+ 88 - 0
template/scripts/BxBaseMenu.php

@@ -281,6 +281,35 @@ class BxBaseMenu extends BxDolMenu
             return $this->_oQuery->getMenuItems();
     }
 
+    protected function getMenuItemsRawProfileRelated ()
+    {
+        $oProfile = BxDolProfile::getInstance();
+        if(!$oProfile)
+            return [];
+
+        $aItems = $this->_oQuery->getMenuItemsBy([
+            'type' => 'set_name', 
+            'set_name' => $this->_aObject['set_name']
+        ]);
+
+        $aDuplicates = $this->_oQuery->getMenuItemsBy([
+            'type' => 'set_name_duplicates',
+            'set_name' => $this->_aObject['set_name']
+        ]);
+
+        $sModule = $oProfile->getModule();
+
+        $aResult = [];
+        foreach($aItems as $aItem) {
+            if(in_array($aItem['name'], $aDuplicates) && $aItem['module'] != $sModule)
+                continue;
+            
+            $aResult[$aItem['name']] = $aItem;
+        }
+
+        return $aResult;
+    }
+
     protected function _getMenuItem ($a)
     {
         if (!$this->_isActive($a) || !$this->_isVisible($a))
@@ -566,6 +595,65 @@ class BxBaseMenu extends BxDolMenu
         return $sAttrs;
     }
 
+    protected function _addMenuItemsMoreLess($aItems, $iMenuItemsMin)
+    {
+        $iMenuItems = count($aItems);
+        if($iMenuItems <= $iMenuItemsMin)
+            return $aItems;
+
+        $mixedCollpsed = $this->getUserChoiceCollapsed();
+        $bCollpsed = $mixedCollpsed === false || $mixedCollpsed == 1;
+
+        for($i = $iMenuItemsMin; $i < $iMenuItems; $i++)
+            $aItems[$i]['class_add'] .= ' bx-mi-aux' . ($bCollpsed ? ' bx-mi-hidden' : '');
+
+        $aShowMoreLinks = [
+            'more' => ['title' => '_sys_show_more', 'icon' => 'chevron-down', 'class' => $bCollpsed ? '' : 'bx-mi-hidden'],
+            'less' => ['title' => '_sys_show_less', 'icon' => 'chevron-up', 'class' => !$bCollpsed ? '' : 'bx-mi-hidden']
+        ];
+
+        foreach($aShowMoreLinks as $sLink => $aLink)
+            $aItems[] = [
+                'class_add' => 'bx-psmi-show-' . $sLink . ' ' . $aLink['class'],
+                'name' => 'show-' . $sLink,
+                'title' => _t($aLink['title']),
+                'link' => 'javascript:void(0)',
+                'bx_if:onclick' => [
+                    'condition' => true,
+                    'content' => [
+                        'onclick' => 'bx_menu_show_more_less(this, \'' . $this->_sObject . '\', \'.bx-menu-object-' . $this->_sObject . '\')',
+                    ]
+                ],
+                'attrs' => '',
+                'bx_if:image' => [
+                    'condition' => false,
+                    'content' => ['icon_url' => ''],
+                ],
+                'bx_if:image_inline' => [
+                    'condition' => false,
+                    'content' => ['image' => ''],
+                ],
+                'bx_if:icon' => [
+                    'condition' => true,
+                    'content' => ['icon' => $aLink['icon']],
+                ],
+                'bx_if:icon-html' => [
+                    'condition' => false,
+                    'content' => ['icon-a' => ''],
+                ],
+                'bx_if:icon-a' => [
+                    'condition' => false,
+                    'content' => ['icon-a' => ''],
+                ],
+                'bx_if:addon' => [
+                    'condition' => false,
+                    'content' => []
+                ]
+            ];
+
+        return $aItems;
+    }
+
     /**
      * Add css/js files which are needed for menu display and functionality.
      */

+ 1 - 25
template/scripts/BxBaseMenuAccountNotifications.php

@@ -32,31 +32,7 @@ class BxBaseMenuAccountNotifications extends BxTemplMenu
 
     protected function getMenuItemsRaw ()
     {
-        $aItems = $this->_oQuery->getMenuItemsBy(array(
-            'type' => 'set_name', 
-            'set_name' => $this->_aObject['set_name']
-        ));
-
-        $aDuplicates = $this->_oQuery->getMenuItemsBy(array(
-            'type' => 'set_name_duplicates',
-            'set_name' => $this->_aObject['set_name']
-        ));
-
-        $oProfile = BxDolProfile::getInstance();
-        if(!$oProfile)
-            return array();
-
-        $sModule = $oProfile->getModule();
-
-        $aResult = array();
-        foreach($aItems as $aItem) {
-            if(in_array($aItem['name'], $aDuplicates) && $aItem['module'] != $sModule)
-                continue;
-            
-            $aResult[$aItem['name']] = $aItem;
-        }
-
-        return $aResult;
+        return $this->getMenuItemsRawProfileRelated();
     }
 
     /**

+ 3 - 81
template/scripts/BxBaseMenuProfileStats.php

@@ -29,92 +29,14 @@ class BxBaseMenuProfileStats extends BxTemplMenuAccountNotifications
         if(empty($aItems) || !is_array($aItems) || $this->_bIsApi)
             return $aItems;
 
-        $iMaxNum = count($aItems);
-        if($iMaxNum <= $this->_iMenuItemsMin)
-            return $aItems;
-
-        $mixedCollpsed = $this->getUserChoiceCollapsed();
-        $bCollpsed = $mixedCollpsed === false || $mixedCollpsed == 1;
-
-        for($i = $this->_iMenuItemsMin; $i < $iMaxNum; $i++)
-            $aItems[$i]['class_add'] .= ' bx-mi-aux' . ($bCollpsed ? ' bx-mi-hidden' : '');
-
-        $aShowMoreLinks = [
-            'more' => ['title' => '_sys_show_more', 'icon' => 'chevron-down', 'class' => $bCollpsed ? '' : 'bx-mi-hidden'],
-            'less' => ['title' => '_sys_show_less', 'icon' => 'chevron-up', 'class' => !$bCollpsed ? '' : 'bx-mi-hidden']
-        ];
-
-        foreach($aShowMoreLinks as $sLink => $aLink)
-            $aItems[] = array(
-                'class_add' => 'bx-psmi-show-' . $sLink . ' ' . $aLink['class'],
-                'name' => 'show-' . $sLink,
-                'title' => _t($aLink['title']),
-                'link' => 'javascript:void(0)',
-                'bx_if:onclick' => [
-                    'condition' => true,
-                    'content' => [
-                        'onclick' => 'bx_menu_show_more_less(this, \'' . $this->_sObject . '\', \'.bx-menu-object-' . $this->_sObject . '\')',
-                    ]
-                ],
-                'attrs' => '',
-                'bx_if:image' => [
-                    'condition' => false,
-                    'content' => ['icon_url' => ''],
-                ],
-                'bx_if:image_inline' => [
-                    'condition' => false,
-                    'content' => ['image' => ''],
-                ],
-                'bx_if:icon' => [
-                    'condition' => true,
-                    'content' => ['icon' => $aLink['icon']],
-                ],
-                'bx_if:icon-html' => [
-                    'condition' => false,
-                    'content' => ['icon-a' => ''],
-                ],
-                'bx_if:icon-a' => [
-                    'condition' => false,
-                    'content' => ['icon-a' => ''],
-                ],
-                'bx_if:addon' => [
-                    'condition' => false,
-                    'content' => []
-                ]
-            );
-
-        return $aItems;
+        return $this->_addMenuItemsMoreLess($aItems, $this->_iMenuItemsMin);
     }
 
     protected function getMenuItemsRaw ()
     {
-        $aItems = $this->_oQuery->getMenuItemsBy(array(
-            'type' => 'set_name', 
-            'set_name' => $this->_aObject['set_name']
-        ));
-
-        $aDuplicates = $this->_oQuery->getMenuItemsBy(array(
-            'type' => 'set_name_duplicates', 
-            'set_name' => $this->_aObject['set_name']
-        ));
-
-        $oProfile = BxDolProfile::getInstance();
-        if(!$oProfile)
-            return array();
-
-        $sModule = $oProfile->getModule();
-
-        $aResult = array();
-        foreach($aItems as $aItem) {
-            if(in_array($aItem['name'], $aDuplicates) && $aItem['module'] != $sModule)
-                continue;
-            
-            $aResult[$aItem['name']] = $aItem;
-        }
-
-        return $aResult;
+        return $this->getMenuItemsRawProfileRelated();
     }
-    
+
     protected function _getMenuItem($a)
     {
         $mixedResult = parent::_getMenuItem($a);

+ 2 - 85
template/scripts/BxBaseMenuTagsCloud.php

@@ -68,97 +68,14 @@ class BxBaseMenuTagsCloud extends BxTemplMenu
         
         $this->_aItems = $aItems;
     }
-    
+
     public function getMenuItems ()
     {
         $aItems = $this->_aItems;
         if(empty($aItems) || !is_array($aItems))
             return $aItems;
 
-        $iMaxNum = count($aItems);
-        if($iMaxNum <= $this->_iMenuItemsMin)
-            return $aItems;
-
-        $mixedCollpsed = $this->getUserChoiceCollapsed();
-        $bCollpsed = $mixedCollpsed === false || $mixedCollpsed == 1;
-
-        for($i = $this->_iMenuItemsMin; $i < $iMaxNum; $i++)
-            $aItems[$i]['class_add'] .= ' bx-mi-aux' . ($bCollpsed ? ' bx-mi-hidden' : '');
-
-        $aShowMoreLinks = [
-            'more' => ['title' => '_sys_show_more', 'icon' => 'chevron-down', 'class' => $bCollpsed ? '' : 'bx-mi-hidden'],
-            'less' => ['title' => '_sys_show_less', 'icon' => 'chevron-up', 'class' => !$bCollpsed ? '' : 'bx-mi-hidden']
-        ];
-
-        foreach($aShowMoreLinks as $sLink => $aLink)
-            $aItems[] = array(
-                'class_add' => 'bx-psmi-show-' . $sLink . ' ' . $aLink['class'],
-                'name' => 'show-' . $sLink,
-                'title' => _t($aLink['title']),
-                'link' => 'javascript:void(0)',
-                'bx_if:onclick' => [
-                    'condition' => false,
-                    'content' => [
-                        'onclick' => 'bx_menu_show_more_less(this, \'' . $this->_sObject . '\', \'.bx-menu-object-' . $this->_sObject . '\')',
-                    ]
-                ],
-                'attrs' => '',
-                'bx_if:image' => [
-                    'condition' => false,
-                    'content' => ['icon_url' => ''],
-                ],
-                'bx_if:image_inline' => [
-                    'condition' => false,
-                    'content' => ['image' => ''],
-                ],
-                'bx_if:icon' => [
-                    'condition' => true,
-                    'content' => ['icon' => $aLink['icon']],
-                ],
-                'bx_if:icon-html' => [
-                    'condition' => false,
-                    'content' => ['icon-a' => ''],
-                ],
-                'bx_if:icon-a' => [
-                    'condition' => false,
-                    'content' => ['icon-a' => ''],
-                ],
-                'bx_if:addon' => [
-                    'condition' => false,
-                    'content' => []
-                ]
-            );
-
-        return $aItems;
-    }
-
-    protected function getMenuItemsRaw ()
-    {
-        $aItems = $this->_oQuery->getMenuItemsBy(array(
-            'type' => 'set_name', 
-            'set_name' => $this->_aObject['set_name']
-        ));
-
-        $aDuplicates = $this->_oQuery->getMenuItemsBy(array(
-            'type' => 'set_name_duplicates', 
-            'set_name' => $this->_aObject['set_name']
-        ));
-
-        $oProfile = BxDolProfile::getInstance();
-        if(!$oProfile)
-            return array();
-
-        $sModule = $oProfile->getModule();
-
-        $aResult = array();
-        foreach($aItems as $aItem) {
-            if(in_array($aItem['name'], $aDuplicates) && $aItem['module'] != $sModule)
-                continue;
-            
-            $aResult[$aItem['name']] = $aItem;
-        }
-
-        return $aResult;
+        return $this->_addMenuItemsMoreLess($aItems, $this->_iMenuItemsMin);
     }
     
     protected function _getMenuItem($a)

+ 21 - 0
template/scripts_templ/BxTemplMenuTagsCloud.php

@@ -0,0 +1,21 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    UnaTemplate UNA Template Classes
+ * @{
+ */
+
+/**
+ * @see BxDolMenu
+ */
+class BxTemplMenuTagsCloud extends BxBaseMenuTagsCloud
+{
+    public function __construct ($aObject, $oTemplate = false)
+    {
+        parent::__construct ($aObject, $oTemplate);
+    }
+}
+
+/** @} */