Sfoglia il codice sorgente

Ticket #3976 - Manage grids: Audience filter is available even if the feature is disabled site-wide.

AntonLV 4 anni fa
parent
commit
269802c22b

+ 6 - 1
inc/classes/BxDolContentFilter.php

@@ -69,7 +69,12 @@ class BxDolContentFilter extends BxDolFactory implements iBxDolSingleton
     {
         return $this->_iDefaultValue;
     }
-            
+
+    public function getValues()
+    {
+        return BxDolFormQuery::getDataItems($this->_sDataList);
+    }
+
     public function getInput($aInput, $iProfileId = 0)
     {
         return $this->_getInput('content', $aInput, $iProfileId);

+ 13 - 9
modules/base/groups/classes/BxBaseModGroupsGridAdministration.php

@@ -37,9 +37,10 @@ class BxBaseModGroupsGridAdministration extends BxBaseModProfileGridAdministrati
         if($this->_oModule->_oConfig->isAutoApprove())
             $this->_aFilter1Values[BX_BASE_MOD_GENERAL_STATUS_PENDING] = $CNF['T']['filter_item_pending'];
 
-        if(($this->_bContentFilter = !empty($CNF['FIELD_CF'])) !== false) {
+        $oCf = BxDolContentFilter::getInstance();
+        if(($this->_bContentFilter = ($oCf->isEnabled() && !empty($CNF['FIELD_CF']))) !== false) {
             $this->_sFilter2Name = 'filter2';
-            $this->_aFilter2Values = BxDolFormQuery::getDataItems('sys_content_filter');
+            $this->_aFilter2Values = $oCf->getValues();
 
             if(($sFilter2 = bx_get($this->_sFilter2Name)) !== false) {
                 $this->_sFilter2Value = bx_process_input($sFilter2);
@@ -126,18 +127,21 @@ class BxBaseModGroupsGridAdministration extends BxBaseModProfileGridAdministrati
     {
         $CNF = &$this->_oModule->_oConfig->CNF;
 
-        if(strpos($sFilter, $this->_sParamsDivider) !== false) {
-            $aFilters = explode($this->_sParamsDivider, $sFilter);
-            if($this->_bContentFilter)
-                list($this->_sFilter1Value, $this->_sFilter2Value, $sFilter) = $aFilters;
-            else
-                list($this->_sFilter1Value, $sFilter) = $aFilters;
+        $aFilterParts = explode($this->_sParamsDivider, $sFilter);
+        switch (substr_count($sFilter, $this->_sParamsDivider)) {
+            case 1:
+                list($this->_sFilter1Value, $sFilter) = $aFilterParts;
+                break;
+
+            case 2:
+                list($this->_sFilter1Value, $this->_sFilter2Value, $sFilter) = $aFilterParts;
+                break;
         }
 
     	if(!empty($this->_sFilter1Value))
             $this->_aOptions['source'] .= $this->_oModule->_oDb->prepareAsString(" AND `" . $this->_sStatusField . "`=?", $this->_sFilter1Value);
 
-        if(!empty($this->_sFilter2Value))
+        if($this->_bContentFilter && !empty($this->_sFilter2Value))
             $this->_aOptions['source'] .= $this->_oModule->_oDb->prepareAsString(" AND `" . $CNF['FIELD_CF'] . "`=?", $this->_sFilter2Value);
 
         return parent::_getDataSqlInner($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage);

+ 13 - 12
modules/base/profile/classes/BxBaseModProfileGridAdministration.php

@@ -156,7 +156,7 @@ class BxBaseModProfileGridAdministration extends BxBaseModGeneralGridAdministrat
         $sUrl = BX_DOL_URL_ROOT . 'page/audit-administration?profile=' . $oProfile->id();
 
     	$a['attr'] = array_merge($a['attr'], array(
-    		"onclick" => "window.open('" . $sUrl . "','_audit');"
+            "onclick" => "window.open('" . $sUrl . "','_audit');"
     	));
 
     	return $this->_getActionDefault ($sType, $sKey, $a, $isSmall, $isDisabled, $aRow);
@@ -185,38 +185,39 @@ class BxBaseModProfileGridAdministration extends BxBaseModGeneralGridAdministrat
     	$oProfile = $this->_getProfileObject($mixedId);
 
     	if($oProfile instanceof BxDolProfileUndefined)
-    		return false;
+            return false;
 
-		$iAction = BX_PROFILE_ACTION_MANUAL;
+        $iAction = BX_PROFILE_ACTION_MANUAL;
         $bSendEmailNotification = $this->_oModule->serviceActAsProfile();
     	return $isChecked ? $oProfile->activate($iAction, 0, $bSendEmailNotification) : $oProfile->suspend($iAction, 0, $bSendEmailNotification);
     }
 
     protected function _getDataSql($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage)
-    { 
-        $iFilterPartsCount = substr_count($sFilter, $this->_sParamsDivider);
-        switch ($iFilterPartsCount) {
+    {
+        $aFilterParts = explode($this->_sParamsDivider, $sFilter);
+        switch (substr_count($sFilter, $this->_sParamsDivider)) {
             case 1:
-                list($this->_sFilter1Value, $sFilter) = explode($this->_sParamsDivider, $sFilter);
+                list($this->_sFilter1Value, $sFilter) = $aFilterParts;
                 break;
+
             case 2:
-                list($this->_sFilter1Value, $this->_sFilter2Value, $sFilter) = explode($this->_sParamsDivider, $sFilter);
+                list($this->_sFilter1Value, $this->_sFilter2Value, $sFilter) = $aFilterParts;
                 break;
         }
-        
+
     	if(!empty($this->_sFilter1Value))
-        	$this->_aOptions['source'] .= $this->_oModule->_oDb->prepareAsString(" AND `tp`.`status`=?", $this->_sFilter1Value);
+            $this->_aOptions['source'] .= $this->_oModule->_oDb->prepareAsString(" AND `tp`.`status`=?", $this->_sFilter1Value);
 
         return $this->_getDataSqlInner($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage);
     }
-    
+
     protected function _getDataSqlInner($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage)
     {
         return parent::_getDataSql($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage);
     }
 
     //--- Layout methods ---//
-	protected function _getFilterControls()
+    protected function _getFilterControls()
     {
         parent::_getFilterControls();
 

+ 13 - 9
modules/base/text/classes/BxBaseModTextGridAdministration.php

@@ -42,9 +42,10 @@ class BxBaseModTextGridAdministration extends BxBaseModGeneralGridAdministration
             $this->_aQueryAppend['filter1'] = $this->_sFilter1Value;
         }
 
-        if(($this->_bContentFilter = !empty($CNF['FIELD_CF'])) !== false) {
+        $oCf = BxDolContentFilter::getInstance();
+        if(($this->_bContentFilter = ($oCf->isEnabled() && !empty($CNF['FIELD_CF']))) !== false) {
             $this->_sFilter2Name = 'filter2';
-            $this->_aFilter2Values = BxDolFormQuery::getDataItems('sys_content_filter');
+            $this->_aFilter2Values = $oCf->getValues();
 
             if(($sFilter2 = bx_get($this->_sFilter2Name)) !== false) {
                 $this->_sFilter2Value = bx_process_input($sFilter2);
@@ -92,18 +93,21 @@ class BxBaseModTextGridAdministration extends BxBaseModGeneralGridAdministration
     {
         $CNF = &$this->_oModule->_oConfig->CNF;
 
-        if(strpos($sFilter, $this->_sParamsDivider) !== false) {
-            $aFilters = explode($this->_sParamsDivider, $sFilter);
-            if($this->_bContentFilter)
-                list($this->_sFilter1Value, $this->_sFilter2Value, $sFilter) = $aFilters;
-            else
-                list($this->_sFilter1Value, $sFilter) = $aFilters;
+        $aFilterParts = explode($this->_sParamsDivider, $sFilter);
+        switch (substr_count($sFilter, $this->_sParamsDivider)) {
+            case 1:
+                list($this->_sFilter1Value, $sFilter) = $aFilterParts;
+                break;
+
+            case 2:
+                list($this->_sFilter1Value, $this->_sFilter2Value, $sFilter) = $aFilterParts;
+                break;
         }
 
     	if(!empty($this->_sFilter1Value))
             $this->_aOptions['source'] .= $this->_oModule->_oDb->prepareAsString(" AND `" . $this->_sStatusField . "`=?", $this->_sFilter1Value);
 
-        if(!empty($this->_sFilter2Value))
+        if($this->_bContentFilter && !empty($this->_sFilter2Value))
             $this->_aOptions['source'] .= $this->_oModule->_oDb->prepareAsString(" AND `" . $CNF['FIELD_CF'] . "`=?", $this->_sFilter2Value);
 
         return parent::_getDataSql($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage);