Cheetah
pedit.php
Go to the documentation of this file.
1 <?php
2 
8 require_once( './inc/header.inc.php' );
9 require_once( CH_DIRECTORY_PATH_INC . 'admin.inc.php' );
10 require_once( CH_DIRECTORY_PATH_INC . 'db.inc.php' );
11 require_once( CH_DIRECTORY_PATH_INC . 'match.inc.php' );
12 ch_import('ChWsbProfileFields');
13 ch_import('ChWsbProfilesController');
14 ch_import('ChTemplFormView');
15 ch_import('ChWsbPageView');
16 ch_import('ChWsbPrivacy');
17 
19 {
20  var $iProfileID; // id of profile which will be edited
21  var $iArea = 0; // 2=owner, 3=admin, 4=moderator
22  var $bCouple = false; // if we edititng couple profile
23  var $aCoupleMutualFields; // couple mutual fields
24 
25  var $oPC; // object of profiles controller
26  var $oPF; // object of profile fields
27 
28  var $aBlocks; // blocks of page (with items)
29  var $aItems; // all items within blocks
30 
31  var $aProfiles; // array with profiles (couple) data
32  var $aValues; // values
33  var $aOldValues; // values before save
34  var $aErrors; // generated errors
35 
36  var $bAjaxMode; // if the script was called via ajax
37 
38  var $bForceAjaxSave = false;
39 
42 
43  function __construct()
44  {
46 
47  $this -> aProfiles = array( 0 => array(), 1 => array() ); // double arrays (for couples)
48  $this -> aValues = array( 0 => array(), 1 => array() );
49  $this -> aErrors = array( 0 => array(), 1 => array() );
50 
51  $iId = ch_get('ID');
52  $this -> iProfileID = (int)$iId;
53 
54  // basic checks
55  if( $logged['member'] ) {
57  if( !$this -> iProfileID ) {
58  //if profile id is not set by request, edit own profile
59  $this -> iProfileID = $iMemberID;
60  $this -> iArea = 2;
61  } else {
62  // check if this member is owner
63  if( $this -> iProfileID == $iMemberID )
64  $this -> iArea = 2;
65  }
66  } elseif( $logged['admin'] )
67  $this -> iArea = 3;
68  elseif( $logged['moderator'] )
69  $this -> iArea = 4;
70 
71  $this -> bAjaxMode = ( isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) and $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' );
72  $this -> bForceAjaxSave = ch_get('force_ajax_save');
73 
74  parent::__construct('pedit');
75  }
76 
77  function getBlockCode_Info()
78  {
79  if( !$this -> iProfileID )
80  return _t( '_Profile not specified' );
81 
82  if( !$this -> iArea )
83  return _t( '_You cannot edit this profile' );
84 
85  /* @var $this->oPC ChWsbProfilesController */
86  $this -> oPC = new ChWsbProfilesController();
87 
88  //get profile info array
89  $this -> aProfiles[0] = $this -> oPC -> getProfileInfo( $this -> iProfileID );
90  if( !$this -> aProfiles[0] )
91  return _t( '_Profile not found' );
92 
93  if( $this -> aProfiles[0]['Couple'] ) { // load couple profile
94  $this -> aProfiles[1] = $this -> oPC -> getProfileInfo( $this -> aProfiles[0]['Couple'] );
95 
96  if( !$this -> aProfiles[1] )
97  return _t( '_Couple profile not found' );
98 
99  $this -> bCouple = true; //couple enabled
100  }
101 
102  /* @var $this->oPF ChWsbProfileFields */
103  $this -> oPF = new ChWsbProfileFields( $this -> iArea );
104  if( !$this -> oPF -> aArea )
105  return 'Profile Fields cache not loaded. Cannot continue.';
106 
107  $this -> aCoupleMutualFields = $this -> oPF -> getCoupleMutualFields();
108 
109  //collect blocks
110  $this -> aBlocks = $this -> oPF -> aArea;
111 
112  //collect items
113  $this -> aItems = array();
114  foreach ($this -> aBlocks as $aBlock) {
115  foreach( $aBlock['Items'] as $iItemID => $aItem )
116  $this -> aItems[$iItemID] = $aItem;
117  }
118 
119  $this -> aValues[0] = $this -> oPF -> getValuesFromProfile( $this -> aProfiles[0] ); // set default values
120  if( $this -> bCouple )
121  $this -> aValues[1] = $this -> oPF -> getValuesFromProfile( $this -> aProfiles[1] ); // set default values
122 
123  $this -> aOldValues = $this -> aValues;
124 
125  $sStatusText = '';
126  if( isset($_POST['do_submit']) ) {
127  $this -> oPF -> processPostValues( $this -> bCouple, $this -> aValues, $this -> aErrors, 0, $this -> iProfileID, (int)$_POST['pf_block'] );
128 
129  //--- move necessary mutual fields in second profile for correct work of some features like browsing, etc.
130  $aMutualFieldsCopy = $this->oPF->getCoupleMutualFieldsCopy();
131  if(!empty($aMutualFieldsCopy) && is_array($aMutualFieldsCopy)) {
132  $aMutualFieldsCopy = array_intersect_key($this -> aValues[0], array_flip($aMutualFieldsCopy));
133 
134  $this -> aValues[1] = array_merge($this -> aValues[1], $aMutualFieldsCopy);
135  }
136 
137  if( empty( $this -> aErrors[0] ) and empty( $this -> aErrors[1] ) ) { // do not save in ajax mode
138  if (!$this -> bAjaxMode or $this->bForceAjaxSave) {
139  $this -> saveProfile();
140  $sStatusText = '_Save profile successful';
141  }
142  }
143  }
144 
145  if($this -> bAjaxMode) {
146  $this -> showErrorsJson();
147  exit;
148  } else
149  return array($this -> showEditForm($sStatusText), array(), array(), false);
150  }
152  {
153  $oPrivacy = new ChWsbPrivacy('sys_page_compose_privacy', 'id', 'user_id');
154 
155  $this->aFormPrivacy = array(
156  'form_attrs' => array(
157  'id' => 'profile_edit_privacy',
158  'name' => 'profile_edit_privacy',
159  'action' => CH_WSB_URL_ROOT . 'pedit.php?ID=' . $this->iProfileID,
160  'method' => 'post',
161  'enctype' => 'multipart/form-data'
162  ),
163  'params' => array (
164  'db' => array(
165  'table' => '',
166  'key' => '',
167  'uri' => '',
168  'uri_title' => '',
169  'submit_name' => 'save_privacy'
170  ),
171  ),
172  'inputs' => array (
173  'profile_id' => array(
174  'type' => 'hidden',
175  'name' => 'profile_id',
176  'value' => $this->iProfileID,
177  ),
178  'allow_view_to' => $oPrivacy->getGroupChooser(getLoggedId(), 'profile', 'view'),
179  'save_privacy' => array(
180  'type' => 'submit',
181  'name' => 'save_privacy',
182  'value' => _t('_edit_profile_privacy_save'),
183  ),
184  )
185  );
186  $aProfileInfo = getProfileInfo($this->iProfileID);
187  $this->aFormPrivacy['inputs']['allow_view_to']['value'] = $aProfileInfo['allow_view_to'];
188 
189  $oForm = new ChTemplFormView($this->aFormPrivacy);
190  $oForm->initChecker();
191 
192  if($oForm->isSubmittedAndValid()) {
193  $iProfileId = (int)$_POST['profile_id'];
194  $iAllowViewTo = (int)$_POST['allow_view_to'];
196 
197  if ((int)db_res("UPDATE `Profiles` SET `allow_view_to`='" . $iAllowViewTo . "' WHERE `ID`='" . $iProfileId . "' LIMIT 1") > 0) {
198  $sStatusText = '_Save profile successful';
200 
201  if (ChWsbModule::getInstance('ChWmapModule'))
202  ChWsbService::call('wmap', 'response_entry_change', array('profiles', $iProfileId));
203 
204  // create system event
205  ch_import('ChWsbAlerts');
206  $oZ = new ChWsbAlerts('profile', 'edit', $iProfileId, 0, array('OldProfileInfo' => $aProfileInfo, 'privacy' => $iAllowViewTo));
207  $oZ->alert();
208  }
209  }
210 
211  if($sStatusText)
213 
214  return array($sStatusText . $oForm->getCode(), array(), array(), false);
215  }
217  {
218  if(!isAdmin())
219  return;
220 
221  $sUnlimited = process_line_output(_t('_pfm_unlimited'));
222 
223  $this->aFormMembership = array(
224  'form_attrs' => array(
225  'id' => 'profile_edit_membership',
226  'name' => 'profile_edit_membership',
227  'action' => CH_WSB_URL_ROOT . 'pedit.php?ID=' . $this->iProfileID,
228  'method' => 'post',
229  'enctype' => 'multipart/form-data'
230  ),
231  'params' => array (
232  'db' => array(
233  'table' => '',
234  'key' => '',
235  'uri' => '',
236  'uri_title' => '',
237  'submit_name' => 'save_membership'
238  ),
239  ),
240  'inputs' => array(
241  'doSetMembership' => array(
242  'type' => 'hidden',
243  'name' => 'doSetMembership',
244  'value' => 'yes',
245  ),
246  'MembershipInfo' => array(
247  'type' => 'custom',
248  'caption' => _t('_Membership_current'),
249  'content' => ''
250  ),
251  'MembershipID' => array(
252  'type' => 'select',
253  'name' => 'MembershipID',
254  'caption' => _t('_Membership_name'),
255  'value' => '',
256  'values' => array(),
257  'required' => 0,
258  'attrs' => array(
259  'onchange' => 'checkStandard()'
260  ),
261  'checker' => array (
262  'func' => 'avail',
263  'params' => array(),
264  'error' => _t('_Membership_name_err_empty'),
265  ),
266  'db' => array (
267  'pass' => 'Int',
268  ),
269  ),
270  'MembershipDays' => array(
271  'type' => 'text',
272  'name' => 'MembershipDays',
273  'caption' => _t('_Membership_days'),
274  'value' => $sUnlimited,
275  'required' => 0,
276  'attrs' => array(
277  'onfocus' => "if(MembershipDays.value == '" . $sUnlimited . "') MembershipDays.value = ''",
278  'onblur' => "if(MembershipDays.value == '') MembershipDays.value = '" . $sUnlimited . "'"
279  ),
280  'info' => _t('_Membership_days_info'),
281  'db' => array (
282  'pass' => 'Xss',
283  ),
284  ),
285  'MembershipImmediately' => array(
286  'type' => 'checkbox',
287  'name' => 'MembershipImmediately',
288  'caption' => _t('_Membership_starts'),
289  'value' => 'on',
290  'required' => 0,
291  'db' => array (
292  'pass' => 'Xss',
293  ),
294  ),
295  'save_membership' => array(
296  'type' => 'submit',
297  'name' => 'save_membership',
298  'value' => _t('_Membership_save'),
299  ),
300  )
301  );
302 
303  $aMemberships = getMemberships();
304  foreach($aMemberships as $iId => $sName)
306  $this->aFormMembership['inputs']['MembershipID']['values'][] = array('key' => $iId, 'value' => $sName);
307 
308  $oForm = new ChTemplFormView($this->aFormMembership);
309  $oForm->initChecker();
310 
311  $sContent = "";
312  if($oForm->isSubmittedAndValid()) {
313  $iMshipID = (int)$oForm->getCleanValue('MembershipID');
314  $iMshipDays = (int)$oForm->getCleanValue('MembershipDays'); //0 = unlim
315  $bStartsNow = $oForm->getCleanValue('MembershipImmediately') == 'on';
316 
317  $bSave = setMembership( $this -> iProfileID, $iMshipID, $iMshipDays, $bStartsNow );
318  $sContent .= MsgBox(_t($bSave ? '_Membership_save_msg_saved' : '_Membership_save_err_saved'), 3);
319  }
320 
324  $aMembershipCurrent = getMemberMembershipInfo($this->iProfileID);
325  $sMembershipCurrent = $aMembershipCurrent['Name'];
326  if($aMembershipCurrent['ID'] != MEMBERSHIP_ID_STANDARD)
327  $sMembershipCurrent .= ', ' . (!isset($aMembershipCurrent['DateExpires']) ? _t('_MEMBERSHIP_EXPIRES_NEVER') : _t('_MEMBERSHIP_EXPIRES', defineTimeInterval($aMembershipCurrent['DateExpires'])));
328 
329  $oForm->aInputs['MembershipInfo']['content'] = $sMembershipCurrent;
330 
331  ob_start();
332 ?>
333  <script type="text/javascript">
334  <!--
335  function checkStandard()
336  {
337  var iId = parseInt($("[name='MembershipID']").val());
338  if(iId == <?=MEMBERSHIP_ID_STANDARD; ?>) {
339  $("[name='MembershipDays']").attr('disabled', 'disabled');
340  $("[name='MembershipImmediately']").attr('disabled', 'disabled');
341  } else {
342  $("[name='MembershipDays']").removeAttr('disabled');
343  $("[name='MembershipImmediately']").removeAttr('disabled');
344  }
345  }
346  $(document).ready(function() {
347  checkStandard();
348  });
349  -->
350  </script>
351 <?php
352  $sContent .= ob_get_clean();
353  return array($sContent . $oForm->getCode(), array(), array(), false);
354  }
355 
356  function showErrorsJson()
357  {
358  header('Content-Type:text/javascript; charset=utf-8');
359  echo $this -> oPF -> genJsonErrors( $this -> aErrors, $this -> bCouple );
360  }
361 
363  {
364  $aEditFormParams = array(
365  'couple_enabled' => $this->bCouple,
366  'couple' => $this->bCouple,
367  'page' => $this->iPage,
368  'hiddens' => array('ID' => $this -> iProfileID, 'do_submit' => '1'), //$this->genHiddenFieldsArray(),
369  'errors' => $this->aErrors,
370  'values' => $this->aValues,
371  'profile_id' => $this->iProfileID,
372  );
373 
374  if($sStatusText)
376 
377  return $sStatusText . $this->oPF->getFormCode($aEditFormParams);
378  }
379 
380  function saveProfile()
381  {
382  $aProfileInfo = db_arr("SELECT * FROM `Profiles` WHERE `ID` = {$this -> iProfileID}");
383  $aDiff = $this -> getDiffValues(0);
384  $aUpd = $this -> oPF -> getProfileFromValues( $aDiff );
385 
386  $aUpd['DateLastEdit'] = date( 'Y-m-d H:i:s' );
387  if( !getParam('autoApproval_ifProfile') && $this -> iArea == 2 )
388  $aUpd['Status'] = 'Approval';
389 
390  if( ( $this -> iArea == 3 or $this -> iArea == 4 ) and isset( $_POST['doSetMembership'] ) and $_POST['doSetMembership'] == 'yes' )
391  $this -> setMembership();
392 
393  $bResult = $this -> oPC -> updateProfile( $this -> iProfileID, $aUpd );
394  if($bResult && $this -> iProfileID == getLoggedId() && isset($aUpd['Password']))
395  ch_login($this -> iProfileID, false, false);
396 
397  if (ChWsbModule::getInstance('ChWmapModule'))
398  ChWsbService::call('wmap', 'response_entry_change', array('profiles', $this->iProfileID));
399 
400  // create system event
401  ch_import('ChWsbAlerts');
402  $oZ = new ChWsbAlerts('profile', 'edit', $this -> iProfileID, 0, array('OldProfileInfo' => $aProfileInfo) );
403  $oZ->alert();
404 
405  if( $this -> bCouple ) {
406  $aDiff = $this -> getDiffValues(1);
407  $aUpd = $this -> oPF -> getProfileFromValues( $aDiff );
408 
409  $aUpd['DateLastEdit'] = date( 'Y-m-d H:i:s' );
410  if( !getParam('autoApproval_ifProfile') && $this -> iArea == 2 )
411  $aUpd['Status'] = 'Approval';
412 
413  $this -> oPC -> updateProfile( $this -> aProfiles[0]['Couple'], $aUpd );
414  }
415  }
416 
417  function getDiffValues($iInd)
418  {
419  $aOld = $this -> aOldValues[$iInd];
420  $aNew = $this -> aValues[$iInd];
421 
422  $aDiff = array();
423  foreach( $aNew as $sName => $mNew ){
424  $mOld = $aOld[$sName];
425 
426  if( is_array($mNew) ) {
427  if( count($mNew) == count($mOld) ) {
428  //compare each value
429  $mOldS = $mOld;
430  $mNewS = $mNew;
431  sort( $mOldS ); //sort them for correct comparison
432  sort( $mNewS );
433 
434  foreach( $mNewS as $iKey => $sVal )
435  if( $mNewS[$iKey] != $mOld[$iKey] ) {
436  $aDiff[$sName] = $mNew; //found difference
437  break;
438  }
439  } else
440  $aDiff[$sName] = $mNew;
441  } else {
442  if( $mNew != $mOld )
443  $aDiff[$sName] = $mNew;
444  }
445  }
446 
447  return $aDiff;
448  }
449 }
450 
451 $_page['name_index'] = 25;
452 $_page['css_name'] = 'pedit.css';
453 $_page['extra_js'] .= '<script type="text/javascript" language="JavaScript" src="' . $site['plugins'] . 'jquery/jquery.form.min.js"></script>';
454 $_page['extra_js'] .= '<script type="text/javascript" language="JavaScript" src="inc/js/pedit.js"></script>';
455 
456 check_logged();
457 
458 if (!(isAdmin() || isModerator() || (isLogged() && getLoggedId() == ch_get('ID')))) {
459  $GLOBALS['oSysTemplate']->displayAccessDenied ();
460  exit;
461 }
462 
463 $_page['header'] = _t( '_Edit Profile' );
464 $_page['header_text'] = _t( '_Edit Profile' );
465 $_ni = $_page['name_index'];
466 
468 $_page_cont[$_ni]['page_main_code'] = $oEditProc->getCode();
469 PageCode();
header
</code > Be careful enabling this directive if you have a redirector script that does not use the< code > Location</code > HTTP header
Definition: URI.MungeResources.txt:10
document
Output SortAttr HTML Purifier will sort attributes by name before writing them back to the document
Definition: Output.SortAttr.txt:8
ch_login
ch_login($iId, $bRememberMe=false, $bAlert=true)
Definition: profiles.inc.php:514
ChTemplFormView
Definition: ChTemplFormView.php:11
$_ni
$_ni
Definition: pedit.php:465
ChWsbProfileFields
Definition: ChWsbProfileFields.php:13
MsgBox
MsgBox($sText, $iTimer=0)
Definition: design.inc.php:175
ChWsbPEditProcessor\$aProfiles
$aProfiles
Definition: pedit.php:31
ChWsbPEditProcessor\$iProfileID
$iProfileID
Definition: pedit.php:20
ChWsbModule\getInstance
static getInstance($sClassName)
Definition: ChWsbModule.php:89
check_logged
check_logged()
Definition: admin.inc.php:238
ChWsbPageView
Definition: ChWsbPageView.php:99
ChWsbPEditProcessor\getBlockCode_Privacy
getBlockCode_Privacy()
Definition: pedit.php:151
defineTimeInterval
defineTimeInterval($iTime, $bAutoDateConvert=true, $bShort=false)
Definition: utils.inc.php:831
ch_import
ch_import($sClassName, $aModule=array())
Definition: utils.inc.php:1218
ch_get
ch_get($sName)
Definition: utils.inc.php:1664
setMembership
setMembership($iMemberId, $iMembershipId, $iDays=0, $bStartsNow=false, $sTransactionId='', $isSendMail=true)
Definition: membership_levels.inc.php:561
ChWsbPEditProcessor\$iArea
$iArea
Definition: pedit.php:21
php
$oZ
$oZ
Definition: db.php:20
ChWsbPEditProcessor\$oPC
$oPC
Definition: pedit.php:25
$iId
$iId
Definition: license.php:15
ChWsbPEditProcessor\$aItems
$aItems
Definition: pedit.php:29
isLogged
isLogged()
Definition: profiles.inc.php:24
ChWsbPEditProcessor\showErrorsJson
showErrorsJson()
Definition: pedit.php:356
MEMBERSHIP_ID_STANDARD
const MEMBERSHIP_ID_STANDARD
Definition: membership_levels.inc.php:49
getMemberships
getMemberships($purchasableOnly=false)
Definition: membership_levels.inc.php:670
ChWsbPEditProcessor\$aFormMembership
$aFormMembership
Definition: pedit.php:41
ChWsbPageView\$iMemberID
$iMemberID
Definition: ChWsbPageView.php:104
ChWsbPEditProcessor\$oPF
$oPF
Definition: pedit.php:26
isAdmin
isAdmin()
Definition: index.php:649
ChWsbPEditProcessor\$aErrors
$aErrors
Definition: pedit.php:34
isModerator
isModerator($iId=0)
Definition: profiles.inc.php:58
$oForm
$oForm
Definition: host_tools.php:42
ChWsbAlerts
Definition: ChWsbAlerts.php:39
$_page
$_page['name_index']
Definition: pedit.php:451
db_arr
db_arr($query, $bindings=[])
Definition: db.inc.php:76
exit
exit
Definition: cart.php:21
createUserDataFile
createUserDataFile( $userID)
Definition: profiles.inc.php:192
ChWsbPEditProcessor\saveProfile
saveProfile()
Definition: pedit.php:380
and
and
Definition: license.txt:18
getParam
getParam($sParamName, $bUseCache=true)
Definition: db.inc.php:130
getLoggedId
getLoggedId()
Definition: profiles.inc.php:32
ChWsbPEditProcessor\__construct
__construct()
Definition: pedit.php:43
$site
$site['ver']
Definition: version.inc.php:8
ChWsbPEditProcessor\$bAjaxMode
$bAjaxMode
Definition: pedit.php:36
ChWsbPEditProcessor\$bCouple
$bCouple
Definition: pedit.php:22
type
if(!defined("USER_STATUS_TYPE")) define("USER_STATUS_TYPE" type
Definition: constants.inc.php:13
global
if(!defined("GLOBAL_MODULE")) define("GLOBAL_MODULE" global
Definition: header.inc.php:25
ChWsbPEditProcessor\$aValues
$aValues
Definition: pedit.php:32
$bResult
$bResult
Definition: get_file.php:11
$sContent
$sContent
Definition: bottom_menu_compose.php:169
_t
_t($key, $arg0="", $arg1="", $arg2="")
Definition: languages.inc.php:509
PageCode
PageCode($oTemplate=null)
Definition: design.inc.php:91
ChWsbPEditProcessor\getBlockCode_Membership
getBlockCode_Membership()
Definition: pedit.php:216
ChWsbPEditProcessor\$aFormPrivacy
$aFormPrivacy
Definition: pedit.php:40
MEMBERSHIP_ID_NON_MEMBER
const MEMBERSHIP_ID_NON_MEMBER
Definition: membership_levels.inc.php:48
process_line_output
process_line_output($text, $maxwordlen=100)
Definition: utils.inc.php:328
ChWsbPEditProcessor\$bForceAjaxSave
$bForceAjaxSave
Definition: pedit.php:38
ChWsbProfilesController
Definition: ChWsbProfilesController.php:12
$aProfileInfo
$aProfileInfo
Definition: short_profile_info.php:23
$oEditProc
$oEditProc
Definition: pedit.php:467
getMemberMembershipInfo
getMemberMembershipInfo($iMemberId, $iTime='', $bCheckUserStatus=false)
Definition: membership_levels.inc.php:234
ChWsbPEditProcessor\$aBlocks
$aBlocks
Definition: pedit.php:28
db_res
db_res($query, $bindings=[])
Definition: db.inc.php:39
$logged
$logged['member']
Definition: activation_email.php:16
ChWsbPEditProcessor\$aCoupleMutualFields
$aCoupleMutualFields
Definition: pedit.php:23
getProfileInfo
getProfileInfo($iProfileID=0, $checkActiveStatus=false, $forceCache=false)
Definition: profiles.inc.php:249
$sStatusText
$sStatusText
Definition: db.php:25
ChWsbPEditProcessor\getDiffValues
getDiffValues($iInd)
Definition: pedit.php:417
$_page_cont
$_page_cont[$_ni]['page_main_code']
Definition: pedit.php:468
ChWsbPrivacy
Definition: ChWsbPrivacy.php:60
ChWsbPEditProcessor\$aOldValues
$aOldValues
Definition: pedit.php:33
ChWsbPEditProcessor
Definition: pedit.php:19
empty
Attr AllowedRel this is empty
Definition: Attr.AllowedRel.txt:7
ChWsbService\call
static call($mixed, $sMethod, $aParams=array(), $sClass='Module')
Definition: ChWsbService.php:32
ChWsbPEditProcessor\getBlockCode_Info
getBlockCode_Info()
Definition: pedit.php:77
as
as
Definition: Filter.ExtractStyleBlocks.Escaping.txt:10
$sName
$sName
Definition: ChWsbAdminTools.php:853
ChWsbPEditProcessor\showEditForm
showEditForm( $sStatusText)
Definition: pedit.php:362
$iProfileId
if( $sMembersList) $iProfileId
Definition: communicator.php:29
$GLOBALS
$GLOBALS['iAdminPage']
Definition: advanced_settings.php:10
or
Voluntary License Schemes The Licensor waives the right to collect whether individually or
Definition: license.txt:37