Skip to content

Commit

Permalink
Ticket #2451 - Privacy dynamic loading.
Browse files Browse the repository at this point in the history
  • Loading branch information
AntonLV committed Nov 12, 2019
1 parent 39eab84 commit 18c7b8b
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 16 deletions.
3 changes: 2 additions & 1 deletion inc/classes/BxDolPrivacy.php
Expand Up @@ -163,6 +163,7 @@ public static function getGroupChooser($sObject, $iOwnerId = 0, $aParams = array
$sTitle = _t(!empty($sTitle) ? $sTitle : '_' . $sName);
}

$bDynamicMode = isset($aParams['dynamic_mode']) ? (bool)$aParams['dynamic_mode'] : false;
return array(
'type' => 'select',
'name' => $sName,
Expand All @@ -180,7 +181,7 @@ public static function getGroupChooser($sObject, $iOwnerId = 0, $aParams = array
'db' => array(
'pass' => 'Int'
),
'content' => $oPrivacy->getJsScript()
'content' => $oPrivacy->getJsScript($bDynamicMode)
);
}

Expand Down
68 changes: 55 additions & 13 deletions modules/base/general/classes/BxBaseModGeneralFormEntry.php
Expand Up @@ -69,7 +69,21 @@ public function __construct($aInfo, $oTemplate = false)
$this->aInputs[$CNF['FIELD_PHOTO']]['ghost_template'] = '';
}

$this->_preparePrivacyField('VIEW');
$aPrivacyFields = $this->_getPrivacyFields();
foreach($aPrivacyFields as $sField => $sObject)
$this->_preparePrivacyField($sField, $sObject);
}

function getCode($bDynamicMode = false)
{
if(!$bDynamicMode && bx_is_dynamic_request())
$bDynamicMode = true;

$aPrivacyFields = $this->_getPrivacyFields();
foreach($aPrivacyFields as $sField => $sObject)
$this->_addCssJsPrivacyField($sField, $sObject, $bDynamicMode);

return parent::getCode($bDynamicMode);
}

/**
Expand Down Expand Up @@ -138,7 +152,9 @@ function initChecker ($aValues = array (), $aSpecificValues = array())
$this->aInputs[$CNF['FIELD_ANONYMOUS']]['checked'] = $aValues[$CNF['FIELD_AUTHOR']] < 0;
}

$this->_preloadPrivacyField('VIEW', $aValues);
$aPrivacyFields = $this->_getPrivacyFields();
foreach($aPrivacyFields as $sField => $sObject)
$this->_preloadPrivacyField($sField, $sObject, $aValues);

parent::initChecker ($aValues, $aSpecificValues);
}
Expand Down Expand Up @@ -436,45 +452,71 @@ protected function _processMetas(&$aValsToAdd)
}
}

protected function _preparePrivacyField($Type)
protected function _getPrivacyFields()
{
$CNF = &$this->_oModule->_oConfig->CNF;

$aFields = array('FIELD_ALLOW_VIEW_TO' => 'OBJECT_PRIVACY_VIEW');
if(isset($CNF['PRIVACY_FIELD_TO_OBJECT']) && is_array($CNF['PRIVACY_FIELD_TO_OBJECT']))
$aFields = $CNF['PRIVACY_FIELD_TO_OBJECT'];

return $aFields;
}

function _addCssJsPrivacyField($sField, $sObject, $bDynamicMode = false)
{
$CNF = &$this->_oModule->_oConfig->CNF;

if(!isset($CNF['FIELD_ALLOW_' . $Type . '_TO']) || !isset($this->aInputs[$CNF['FIELD_ALLOW_' . $Type . '_TO']]) || !isset($CNF['OBJECT_PRIVACY_' . $Type]))
if(!isset($CNF[$sField]) || !isset($this->aInputs[$CNF[$sField]]) || !isset($CNF[$sObject]))
return;

$oPrivacy = BxDolPrivacy::getObjectInstance($CNF['OBJECT_PRIVACY_' . $Type]);
$oPrivacy = BxDolPrivacy::getObjectInstance($CNF[$sObject]);
if(!$oPrivacy)
return;

$this->aInputs[$CNF[$sField]]['content'] = $oPrivacy->addCssJs($bDynamicMode) . $this->aInputs[$CNF[$sField]]['content'];
}

protected function _preparePrivacyField($sField, $sObject)
{
$CNF = &$this->_oModule->_oConfig->CNF;

if(!isset($CNF[$sField]) || !isset($this->aInputs[$CNF[$sField]]) || !isset($CNF[$sObject]))
return;

$oPrivacy = BxDolPrivacy::getObjectInstance($CNF[$sObject]);
if(!$oPrivacy)
return;

$aSave = array('db' => array('pass' => 'Xss'));
array_walk($this->aInputs[$CNF['FIELD_ALLOW_' . $Type . '_TO']], function ($a, $k, $aSave) {
array_walk($this->aInputs[$CNF[$sField]], function ($a, $k, $aSave) {
if (in_array($k, array('info', 'caption', 'value')))
$aSave[0][$k] = $a;
}, array(&$aSave));

$aGroupChooser = $oPrivacy->getGroupChooser($CNF['OBJECT_PRIVACY_' . $Type]);
$aGroupChooser = $oPrivacy->getGroupChooser($CNF[$sObject], 0, array(
'dynamic_mode' => $this->_bDynamicMode
));

$this->aInputs[$CNF['FIELD_ALLOW_' . $Type . '_TO']] = array_merge($this->aInputs[$CNF['FIELD_ALLOW_' . $Type . '_TO']], $aGroupChooser, $aSave);
$this->aInputs[$CNF[$sField]] = array_merge($this->aInputs[$CNF[$sField]], $aGroupChooser, $aSave);
}

protected function _preloadPrivacyField($Type, $aValues)
protected function _preloadPrivacyField($sField, $sObject, $aValues)
{
$CNF = &$this->_oModule->_oConfig->CNF;

if(!isset($CNF['FIELD_ALLOW_' . $Type . '_TO']) || !isset($this->aInputs[$CNF['FIELD_ALLOW_' . $Type . '_TO']]) || !isset($CNF['OBJECT_PRIVACY_' . $Type]))
if(!isset($CNF[$sField]) || !isset($this->aInputs[$CNF[$sField]]) || !isset($CNF[$sObject]))
return;

$oPrivacy = BxDolPrivacy::getObjectInstance($CNF['OBJECT_PRIVACY_' . $Type]);
$oPrivacy = BxDolPrivacy::getObjectInstance($CNF[$sObject]);
if(!$oPrivacy)
return;

$iContentId = !empty($aValues[$CNF['FIELD_ID']]) ? (int)$aValues[$CNF['FIELD_ID']] : 0;
$iProfileId = !empty($iContentId) ? (int)$this->getContentOwnerProfileId($iContentId) : bx_get_logged_profile_id();
$iGroupId = !empty($aValues[$CNF['FIELD_ALLOW_' . $Type . '_TO']]) ? $aValues[$CNF['FIELD_ALLOW_' . $Type . '_TO']] : 0;
$iGroupId = !empty($aValues[$CNF[$sField]]) ? $aValues[$CNF[$sField]] : 0;

$sKey = $CNF['FIELD_ALLOW_' . $Type . '_TO'];
$sKey = $CNF[$sField];
if(!isset($this->aInputs[$sKey]['content']))
$this->aInputs[$sKey]['content'] = '';

Expand Down
2 changes: 1 addition & 1 deletion modules/boonex/ads/js/entry.js
Expand Up @@ -60,7 +60,7 @@ BxAdsEntry.prototype.onChangeCategory = function(oElement) {
if(!sFormId)
return;

$('#' + sFormId).replaceWith(oContent);
$('form#' + sFormId).replaceWith(oContent);
},
'json'
);
Expand Down
2 changes: 1 addition & 1 deletion template/scripts/BxBasePrivacy.php
Expand Up @@ -61,7 +61,7 @@ public function getJsScript($bDynamicMode = false)
return $this->addCssJs($bDynamicMode) . $this->_oTemplate->_wrapInTagJsCode("if(window['" . $this->_sJsObjName . "'] == undefined) var " . $this->_sJsObjName . " = new " . $this->_sJsObjClass . "(" . json_encode($aParams) . ");");
}

protected function addCssJs($bDynamicMode = false)
public function addCssJs($bDynamicMode = false)
{
$sInclude = '';

Expand Down

0 comments on commit 18c7b8b

Please sign in to comment.