From bcf88d24f314cff286b0e20dbcd849f7c40c3f8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eric=20Espi=C3=A9?= Date: Mon, 9 Oct 2017 11:58:10 +0000 Subject: [PATCH] =?UTF-8?q?N=C2=B0870:=20Bulk=20operation=20and=20obsolesc?= =?UTF-8?q?ence=20flag=20*=20Avoid=20the=20hidden=20selection=20(and=20upd?= =?UTF-8?q?ate)=20of=20obsolete=20data=20when=20the=20user=20does=20not=20?= =?UTF-8?q?want=20to=20see=20the=20obsolete=20data.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SVN:trunk[4997] --- core/dbsearch.class.php | 5 +++++ pages/UI.php | 25 ++++++++++++++++++------- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/core/dbsearch.class.php b/core/dbsearch.class.php index 699c494b3..6ee33e931 100644 --- a/core/dbsearch.class.php +++ b/core/dbsearch.class.php @@ -835,4 +835,9 @@ abstract class DBSearch CMDBSource::Query($sUpdateQuery); } } + + public function UpdateContextFromUser() + { + $this->SetShowObsoleteData(utils::ShowObsoleteData()); + } } diff --git a/pages/UI.php b/pages/UI.php index 967a7bf39..b57dfed2f 100644 --- a/pages/UI.php +++ b/pages/UI.php @@ -520,8 +520,8 @@ try throw new ApplicationException(Dict::Format('UI:Error:1ParametersMissing', 'filter')); } $oP->set_title(Dict::S('UI:SearchResultsPageTitle')); - // TO DO: limit the search filter by the user context $oFilter = DBSearch::unserialize($sFilter); // TO DO : check that the filter is valid + $oFilter->UpdateContextFromUser(); DisplaySearchSet($oP, $oFilter, $bSearchForm, '' /* sBaseClass */, $sFormat); break; @@ -677,9 +677,10 @@ EOF { throw new ApplicationException(Dict::Format('UI:Error:1ParametersMissing', 'filter')); } - // TO DO: limit the search filter by the user context $oFilter = DBObjectSearch::unserialize($sFilter); // TO DO : check that the filter is valid - $sClass = $oFilter->GetClass(); + // Add user filter + $oFilter->UpdateContextFromUser(); + $sClass = $oFilter->GetClass(); $oChecker = new ActionChecker($oFilter, UR_ACTION_BULK_MODIFY); $oP->add("

".Dict::S('UI:ModifyAllPageTitle')."

\n"); @@ -692,6 +693,8 @@ EOF $sFilter = utils::ReadParam('filter', '', false, 'raw_data'); $sClass = utils::ReadParam('class', '', false, 'class'); $oFullSetFilter = DBObjectSearch::unserialize($sFilter); + // Add user filter + $oFullSetFilter->UpdateContextFromUser(); $aSelectedObj = utils::ReadMultipleSelection($oFullSetFilter); $sCancelUrl = "./UI.php?operation=search&filter=".urlencode($sFilter)."&".$oAppContext->GetForLink(); $aContext = array('filter' => $sFilter); @@ -703,8 +706,9 @@ EOF case 'preview_or_modify_all': // Preview or apply bulk modify $oP->DisableBreadCrumb(); $sFilter = utils::ReadParam('filter', '', false, 'raw_data'); - // TO DO: limit the search filter by the user context $oFilter = DBObjectSearch::unserialize($sFilter); // TO DO : check that the filter is valid + // Add user filter + $oFilter->UpdateContextFromUser(); $oChecker = new ActionChecker($oFilter, UR_ACTION_BULK_MODIFY); $sClass = utils::ReadParam('class', '', false, 'class'); @@ -958,8 +962,8 @@ EOF } $oP->set_title(Dict::S('UI:BulkDeletePageTitle')); $oP->add("

".Dict::S('UI:BulkDeleteTitle')."

\n"); - // TO DO: limit the search filter by the user context $oFilter = DBSearch::unserialize($sFilter); // TO DO : check that the filter is valid + $oFilter->UpdateContextFromUser(); $oChecker = new ActionChecker($oFilter, UR_ACTION_BULK_DELETE); DisplayMultipleSelectionForm($oP, $oFilter, 'bulk_delete', $oChecker); break; @@ -999,6 +1003,8 @@ EOF // Several objects $sFilter = utils::ReadPostedParam('filter', ''); $oFullSetFilter = DBObjectSearch::unserialize($sFilter); + // Add user filter + $oFullSetFilter->UpdateContextFromUser(); $aSelectObject = utils::ReadMultipleSelection($oFullSetFilter); if ( empty($sClass) || empty($aSelectObject)) // TO DO: check that the class name is valid ! { @@ -1113,7 +1119,8 @@ EOF throw new ApplicationException(Dict::Format('UI:Error:3ParametersMissing', 'filter', 'stimulus', 'state')); } $oFilter = DBObjectSearch::unserialize($sFilter); - $sClass = $oFilter->GetClass(); + $oFilter->UpdateContextFromUser(); + $sClass = $oFilter->GetClass(); $aStimuli = MetaModel::EnumStimuli($sClass); $sActionLabel = $aStimuli[$sStimulus]->GetLabel(); $sActionDetails = $aStimuli[$sStimulus]->GetDescription(); @@ -1137,7 +1144,9 @@ EOF throw new ApplicationException(Dict::Format('UI:Error:3ParametersMissing', 'filter', 'stimulus', 'state')); } $oFilter = DBObjectSearch::unserialize($sFilter); - $sClass = $oFilter->GetClass(); + // Add user filter + $oFilter->UpdateContextFromUser(); + $sClass = $oFilter->GetClass(); $aSelectObject = utils::ReadMultipleSelection($oFilter); if (count($aSelectObject) == 0) { @@ -1314,6 +1323,8 @@ EOF { // For archiving the modification $oFilter = DBObjectSearch::unserialize($sFilter); + // Add user filter + $oFilter->UpdateContextFromUser(); $sClass = $oFilter->GetClass(); $aObjects = array(); foreach($aSelectObject as $iId)