ソースを参照

Ticket #2103 - Related changes in core and another modules.

AntonLV 7 年 前
親
コミット
8aaf1d9085

+ 1 - 1
inc/classes/BxDol.php

@@ -265,7 +265,7 @@ interface iBxDolContentInfoService
     public function serviceGetSearchResultUnit ($iContentId, $sUnitTemplate = '');
     public function serviceGetAll ($aParams = array());
 
-    public function serviceGetSearchableFieldsExtended();
+    public function serviceGetSearchableFieldsExtended($aInputsAdd = array());
     public function serviceGetSearchResultExtended($aParams, $iStart = 0, $iPerPage = 0);
 }
 /** @} */

+ 13 - 9
inc/classes/BxDolCmts.php

@@ -1220,7 +1220,7 @@ class BxDolCmts extends BxDolFactory implements iBxDolReplaceable, iBxDolContent
         return $this->_oQuery->getCommentsBy($aParams);
     }
 
-    public function serviceGetSearchableFieldsExtended()
+    public function serviceGetSearchableFieldsExtended($aInputsAdd = array())
     {
         $oForm = BxDolForm::getObjectInstance('sys_comment', 'sys_comment_post', $this->_oTemplate);
         if(!$oForm)
@@ -1248,16 +1248,20 @@ class BxDolCmts extends BxDolFactory implements iBxDolReplaceable, iBxDolContent
             )
         );
 
-        foreach ($oForm->aInputs as $aInput)
-            if (in_array($aInput['type'], BxDolSearchExtended::$SEARCHABLE_TYPES) && !in_array($aInput['name'], $aSrchNamesExcept))
+        $aInputs = $oForm->aInputs;
+        if(!empty($aInputsAdd) && is_array($aInputsAdd))
+            $aInputs = array_merge($aInputs, $aInputsAdd);
+
+        foreach($aInputs as $aInput)
+            if(in_array($aInput['type'], BxDolSearchExtended::$SEARCHABLE_TYPES) && !in_array($aInput['name'], $aSrchNamesExcept))
                 $aResult[$aInput['name']] = array(
-                	'type' => $aInput['type'], 
-                        'caption_system' => !empty($aInput['caption_system_src']) ? $aInput['caption_system_src'] : '',
-                	'caption' => !empty($aInput['caption_src']) ? $aInput['caption_src'] : (!empty($aSrchCaptions[$aInput['name']]) ? $aSrchCaptions[$aInput['name']] : ''),
-                	'info' => !empty($aInput['info_src']) ? $aInput['info_src'] : '',
-                	'value' => !empty($aInput['value']) ? $aInput['value'] : '',
+                    'type' => $aInput['type'], 
+                    'caption_system' => !empty($aInput['caption_system_src']) ? $aInput['caption_system_src'] : '',
+                    'caption' => !empty($aInput['caption_src']) ? $aInput['caption_src'] : (!empty($aSrchCaptions[$aInput['name']]) ? $aSrchCaptions[$aInput['name']] : ''),
+                    'info' => !empty($aInput['info_src']) ? $aInput['info_src'] : '',
+                    'value' => !empty($aInput['value']) ? $aInput['value'] : '',
                     'values' => !empty($aInput['values_src']) ? $aInput['values_src'] : '',
-                	'pass' => !empty($aInput['db']['pass']) ? $aInput['db']['pass'] : ''
+                    'pass' => !empty($aInput['db']['pass']) ? $aInput['db']['pass'] : ''
                 );
 
         return $aResult;

+ 30 - 11
modules/base/general/classes/BxBaseModGeneralModule.php

@@ -184,7 +184,7 @@ class BxBaseModGeneralModule extends BxDolModule
         return $this->_oDb->getEntriesByAuthor((int)$iProfileId);
     }
 
-    public function serviceGetSearchableFieldsExtended()
+    public function serviceGetSearchableFieldsExtended($aInputsAdd = array())
     {
         $CNF = &$this->_oConfig->CNF;
         if(empty($CNF['OBJECT_FORM_ENTRY']))
@@ -213,9 +213,12 @@ class BxBaseModGeneralModule extends BxDolModule
             $aInputs = array_merge($aInputs, $oForm->aInputs);
         }
 
+        if(!empty($aInputsAdd) && is_array($aInputsAdd))
+            $aInputs = array_merge($aInputs, $aInputsAdd);
+
         foreach($aInputs as $aInput)
-            if(in_array($aInput['type'], BxDolSearchExtended::$SEARCHABLE_TYPES) && !in_array($aInput['name'], $this->_aSearchableNamesExcept))
-                $aResult[$aInput['name']] = array(
+            if(in_array($aInput['type'], BxDolSearchExtended::$SEARCHABLE_TYPES) && !in_array($aInput['name'], $this->_aSearchableNamesExcept)) {
+                $aField = array(
                     'type' => $aInput['type'], 
                     'caption_system' => $aInput['caption_system_src'],
                     'caption' => $aInput['caption_src'],
@@ -225,6 +228,12 @@ class BxBaseModGeneralModule extends BxDolModule
                     'pass' => !empty($aInput['db']['pass']) ? $aInput['db']['pass'] : '',
                 );
 
+                if(isset($aInput['search_type']))
+                    $aField['search_type'] = $aInput['search_type'];
+
+                $aResult[$aInput['name']] = $aField;
+            }
+
         return $aResult;
     }
 
@@ -241,24 +250,31 @@ class BxBaseModGeneralModule extends BxDolModule
         return isset($this->_oConfig->CNF['ICON']) ? $this->_oConfig->CNF['ICON'] : '';
     }
 
-    public function serviceGetSearchableFields ()
+    public function serviceGetSearchableFields ($aInputsAdd = array())
     {
         $CNF = $this->_oConfig->CNF;
 
-        if (!isset($CNF['PARAM_SEARCHABLE_FIELDS']) || !isset($CNF['OBJECT_FORM_ENTRY']) || !isset($CNF['OBJECT_FORM_ENTRY_DISPLAY_ADD']))
+        if(!isset($CNF['PARAM_SEARCHABLE_FIELDS']) || !isset($CNF['OBJECT_FORM_ENTRY']) || !isset($CNF['OBJECT_FORM_ENTRY_DISPLAY_ADD']))
+            return array();
+
+        $oForm = BxDolForm::getObjectInstance($CNF['OBJECT_FORM_ENTRY'], $CNF['OBJECT_FORM_ENTRY_DISPLAY_ADD'], $this->_oTemplate);
+        if(!$oForm)
             return array();
 
+        $aInputs = $oForm->aInputs;
+        if(!empty($aInputsAdd) && is_array($aInputsAdd))
+            $aInputs = array_merge($aInputs, $aInputsAdd);
+
         $aTextTypes = array('text', 'textarea');
         $aTextFields = array();
-        $oForm = BxDolForm::getObjectInstance($CNF['OBJECT_FORM_ENTRY'], $CNF['OBJECT_FORM_ENTRY_DISPLAY_ADD'], $this->_oTemplate);
-        foreach ($oForm->aInputs as $r) {
-            if (in_array($r['type'], $aTextTypes))
+        foreach($aInputs as $r)
+            if(in_array($r['type'], $aTextTypes))
                 $aTextFields[$r['name']] = $r['caption'];
-        }
+
         return $aTextFields;
     }
     
-	public function serviceManageTools($sType = 'common')
+    public function serviceManageTools($sType = 'common')
     {
         $oGrid = BxDolGrid::getObjectInstance($this->_oConfig->getGridObject($sType));
         if(!$oGrid)
@@ -1435,7 +1451,7 @@ class BxBaseModGeneralModule extends BxDolModule
         exit;
     }
 
-    protected function _getContent($iContentId = 0, $sFuncGetContent = 'getContentInfoById')
+    protected function _getContent($iContentId = 0, $sFuncGetContent = true)
     {
         if(!$iContentId)
             $iContentId = bx_process_input(bx_get('id'), BX_DATA_INT);
@@ -1443,6 +1459,9 @@ class BxBaseModGeneralModule extends BxDolModule
         if(!$iContentId)
             return false;
 
+        if($sFuncGetContent === true)
+            $sFuncGetContent = 'getContentInfoById';
+
         if(empty($sFuncGetContent) || !method_exists($this->_oDb, $sFuncGetContent))
             return $iContentId;
 

+ 2 - 2
modules/base/profile/classes/BxBaseModProfileModule.php

@@ -85,11 +85,11 @@ class BxBaseModProfileModule extends BxBaseModGeneralModule implements iBxDolCon
         return parent::serviceGetSearchResultUnit($iContentId, $sUnitTemplate);
     }
 
-    public function serviceGetSearchableFieldsExtended()
+    public function serviceGetSearchableFieldsExtended($aInputsAdd = array())
     {
         $CNF = &$this->_oConfig->CNF;
 
-        $aResult = parent::serviceGetSearchableFieldsExtended();
+        $aResult = parent::serviceGetSearchableFieldsExtended($aInputsAdd);
         if(!$this->serviceActAsProfile())
             return $aResult;
 

+ 10 - 4
modules/base/text/classes/BxBaseModTextModule.php

@@ -171,12 +171,12 @@ class BxBaseModTextModule extends BxBaseModGeneralModule implements iBxDolConten
     {
         return $this->_serviceBrowseWithParam ('context', 'profile_id', $iProfileId, $aParams);
     }
-    
+
     public function _serviceBrowseWithParam ($sParamName, $sParamGet, $sParamVal, $aParams = array())
     {
-        if (!$sParamVal)
+        if(!$sParamVal)
             $sParamVal = bx_process_input(bx_get($sParamGet), BX_DATA_INT);
-        if (!$sParamVal)
+        if(!$sParamVal)
             return '';
 
         $bEmptyMessage = true;
@@ -185,7 +185,13 @@ class BxBaseModTextModule extends BxBaseModGeneralModule implements iBxDolConten
             unset($aParams['empty_message']);
         }
 
-        return $this->_serviceBrowse ($sParamName, array_merge(array($sParamName => $sParamVal), $aParams), BX_DB_PADDING_DEF, $bEmptyMessage);
+        $bAjaxPaginate = true;
+        if(isset($aParams['ajax_paginate'])) {
+            $bAjaxPaginate = (bool)$aParams['ajax_paginate'];
+            unset($aParams['ajax_paginate']);
+        }
+
+        return $this->_serviceBrowse ($sParamName, array_merge(array($sParamName => $sParamVal), $aParams), BX_DB_PADDING_DEF, $bEmptyMessage, $bAjaxPaginate);
     }
     
     /**

+ 2 - 2
modules/boonex/forum/classes/BxForumModule.php

@@ -91,11 +91,11 @@ class BxForumModule extends BxBaseModTextModule
     /** 
      * @ref bx_forum-get_searchable_fields "get_searchable_fields"
      */
-    public function serviceGetSearchableFields ()
+    public function serviceGetSearchableFields ($aInputsAdd = array())
     {
         $CNF = &$this->_oConfig->CNF;
 
-        $aResult = parent::serviceGetSearchableFields();
+        $aResult = parent::serviceGetSearchableFields($aInputsAdd);
         $aResult[$CNF['FIELD_TEXT_COMMENTS']] = _t('_bx_forum_form_entry_input_text_comments');
 
         return $aResult;

+ 2 - 2
modules/boonex/market/classes/BxMarketModule.php

@@ -120,11 +120,11 @@ class BxMarketModule extends BxBaseModTextModule
     /** 
      * @ref bx_market-get_searchable_fields "get_searchable_fields"
      */
-    public function serviceGetSearchableFields ()
+    public function serviceGetSearchableFields ($aInputsAdd = array())
     {
         $CNF = &$this->_oConfig->CNF;
 
-        $aResult = parent::serviceGetSearchableFields();
+        $aResult = parent::serviceGetSearchableFields($aInputsAdd);
         unset($aResult[$CNF['FIELD_PRICE_SINGLE']], $aResult[$CNF['FIELD_TRIAL_RECURRING']]);
 
         return $aResult;

+ 2 - 2
modules/boonex/snipcart/classes/BxSnipcartModule.php

@@ -57,11 +57,11 @@ class BxSnipcartModule extends BxBaseModTextModule
     /** 
      * @ref bx_snipcart-get_searchable_fields "get_searchable_fields"
      */
-    public function serviceGetSearchableFields ()
+    public function serviceGetSearchableFields ($aInputsAdd = array())
     {
         $CNF = &$this->_oConfig->CNF;
 
-        $aResult = parent::serviceGetSearchableFields();
+        $aResult = parent::serviceGetSearchableFields($aInputsAdd);
         unset($aResult[$CNF['FIELD_PRICE']], $aResult[$CNF['FIELD_WEIGHT']]);
 
         return $aResult;

+ 7 - 1
template/scripts/BxBaseFormView.php

@@ -1334,11 +1334,17 @@ BLAH;
 
         $sOptions = '';
 
-        if (isset($aInput['values']) and is_array($aInput['values'])) {
+        if (isset($aInput['values']) && is_array($aInput['values'])) {
             if (count($aInput['values']) > 3 && $sDivider == $this->_sDivider)
                 $sDivider = $this->_sDividerAlt;
+            
             // generate complex input using simple standard inputs
             foreach ($aInput['values'] as $sValue => $sLabel) {
+                if(is_array($sLabel)) {
+                    $sValue = $sLabel['key'];
+                    $sLabel = $sLabel['value'];
+                }
+
                 // create new simple input
                 $aNewInput = array(
                     'type'    => $sType,

+ 8 - 5
template/scripts/BxBaseSearchExtended.php

@@ -205,13 +205,16 @@ class BxBaseSearchExtended extends BxDolSearchExtended
             if((int)$aField['active'] == 0)
                 continue;
 
-            if (in_array($aField['search_type'], array('checkbox_set', 'select_multiple')) && (isset($aField['values']['']) || isset($aField['values'][0]))) {
-                unset($aField['values']['']);
-                unset($aField['values'][0]);
+            if(in_array($aField['search_type'], array('checkbox_set', 'select_multiple'))) {
+                if(isset($aField['values']['']))
+                    unset($aField['values']['']);
+
+                if(isset($aField['values'][0]) && !is_array($aField['values'][0]))
+                    unset($aField['values'][0]);
             }
-            
+
             $aAttrs = array();
-            
+
             if(in_array($aField['search_type'], array('datepicker_range_age')) && isset($aField['search_value']) && $aField['search_value'] != ''){
                 $aTmp = BxDolService::callSerialized($aField['search_value']);
                 if (isset($aTmp['min']) && isset($aTmp['max'])){