Cheetah
ChWsbSubscription.php
Go to the documentation of this file.
1 <?php
2 
8 ch_import('ChWsbSubscriptionQuery');
9 
10 define('CH_WSB_SBS_TYPE_VISITOR', 0);
11 define('CH_WSB_SBS_TYPE_MEMBER', 1);
12 
48 {
49  var $_oDb;
54 
58  function __construct()
59  {
60  $this->_oDb = new ChWsbSubscriptionQuery($this);
61  $this->_bDataAdded = false;
62  $this->_sJsObject = 'oChWsbSubscription';
63  $this->_sActionUrl = $GLOBALS['site']['url'] . 'subscription.php';
64  $this->_sVisitorPopup = 'sbs_visitor_popup';
65  }
66 
67  static public function getInstance()
68  {
69  if(!isset($GLOBALS['chWsbClasses']['ChWsbSubscription']))
70  $GLOBALS['chWsbClasses']['ChWsbSubscription'] = new ChWsbSubscription();
71 
72  return $GLOBALS['chWsbClasses']['ChWsbSubscription'];
73  }
74 
75  function getMySubscriptions()
76  {
78  $aUserInfo = getProfileInfo();
79 
80  $aSubscriptions = $this->_oDb->getSubscriptionsByUser((int)$aUserInfo['ID']);
81  if(empty($aSubscriptions))
82  return MsgBox(_t('_Empty'));
83 
84  $sContent = "";
85  if((int)$aUserInfo['EmailNotify'] == 0)
86  $sContent .= MsgBox(_t('_sbs_wrn_email_notify_disabled', CH_WSB_URL_ROOT . 'pedit.php?ID=' . (int)$aUserInfo['ID']));
87 
88  $aForm = array(
89  'form_attrs' => array(
90  'id' => 'sbs-subscriptions-form',
91  'name' => 'sbs-subscriptions-form',
92  'action' => ch_html_attribute($_SERVER['PHP_SELF']),
93  'method' => 'post',
94  'enctype' => 'multipart/form-data'
95  ),
96  'params' => array(),
97  'inputs' => array()
98  );
99  $sUnit = '';
100  $bCollapsed = true;
101  $sTmplRow = $oSysTemplate->getHtml('subscription_row.html');
102  foreach($aSubscriptions as $aSubscription) {
103  $oFunction = function($arg1, $arg2, $arg3) use ($aSubscription) {
104  return eval($aSubscription['params']);
105  };
106 
107  $aParams = $oFunction($aSubscription['unit'], $aSubscription['action'], $aSubscription['object_id']);
108  if(isset($aParams['skip']) && $aParams['skip'] === true)
109  continue;
110 
111  if($sUnit != $aSubscription['unit']) {
112  if(!empty($sUnit))
113  $aForm['inputs'][$sUnit . '_end'] = array(
114  'type' => 'block_end'
115  );
116  $aForm['inputs'][$aSubscription['unit'] . '_begin'] = array(
117  'type' => 'block_header',
118  'caption' => _t('_sbs_txt_title_' . $aSubscription['unit']),
119  'collapsable' => true,
120  'collapsed' => $bCollapsed
121  );
122 
123  $sUnit = $aSubscription['unit'];
124  $bCollapsed = true;
125  }
126 
127  $sName = 'sbs-subscription_' . $aSubscription['entry_id'];
128  $aForm['inputs'][$sName] = array(
129  'type' => 'custom',
130  'name' => $sName,
131  'content' => $oSysTemplate->parseHtmlByContent($sTmplRow, array(
132  'js_object' => $this->_sJsObject,
133  'obj_link' => $aParams['template']['ViewLink'],
134  'obj_title' => $aParams['template']['Subscription'],
135  'unsbs_link' => $this->_getUnsubscribeLink($aSubscription['entry_id'])
136  )),
137  'colspan' => true
138  );
139  }
140 
141  $aForm['inputs'][$sUnit . '_end'] = array(
142  'type' => 'block_end'
143  );
144 
146  $sContent .= $oForm->getCode();
147  $sContent .= $this->_getJsCode();
148 
149  $GLOBALS['oTopMenu']->setCurrentProfileID((int)$aUserInfo['ID']);
150 
151  $oSysTemplate->addJs(array('ChWsbSubscription.js'));
152  $oSysTemplate->addCss(array('subscription.css'));
153  $oSysTemplate->addJsTranslation('_sbs_wrn_unsubscribe');
154  return $oSysTemplate->parseHtmlByName('default_margin.html', array('content' => $sContent));
155  }
156  function getData($bDynamic = false)
157  {
159 
160  $sContent = '';
161  if(!$this->_bDataAdded) {
162  $sContent .= $this->_getJsCode();
163 
164  $aForm = array(
165  'form_attrs' => array(
166  'id' => 'sbs_form',
167  'name' => 'sbs_form',
168  'action' => $this->_sActionUrl,
169  'method' => 'post',
170  'enctype' => 'multipart/form-data',
171  'onSubmit' => 'javascript: return ' . $this->_sJsObject . '.send(this);'
172 
173  ),
174  'inputs' => array (
175  'direction' => array (
176  'type' => 'hidden',
177  'name' => 'direction',
178  'value' => ''
179  ),
180  'unit' => array (
181  'type' => 'hidden',
182  'name' => 'unit',
183  'value' => ''
184  ),
185  'action' => array (
186  'type' => 'hidden',
187  'name' => 'action',
188  'value' => ''
189  ),
190  'object_id' => array (
191  'type' => 'hidden',
192  'name' => 'object_id',
193  'value' => ''
194  ),
195  'user_name' => array (
196  'type' => 'text',
197  'name' => 'user_name',
198  'caption' => _t('_sys_txt_sbs_name'),
199  'value' => '',
200  'attrs' => array (
201  'id' => 'sbs_name'
202  )
203  ),
204  'user_email' => array (
205  'type' => 'text',
206  'name' => 'user_email',
207  'caption' => _t('_sys_txt_sbs_email'),
208  'value' => '',
209  'attrs' => array (
210  'id' => 'sbs_email'
211  )
212  ),
213  'sbs_controls' => array (
214  'type' => 'input_set',
215  array (
216  'type' => 'submit',
217  'name' => 'sbs_subscribe',
218  'value' => _t('_sys_btn_sbs_subscribe'),
219  'attrs' => array(
220  'onClick' => 'javascript:$("#' . $this->_sVisitorPopup . ' [name=\'direction\']").val(\'subscribe\')',
221  )
222  ),
223  array (
224  'type' => 'submit',
225  'name' => 'sbs_unsubscribe',
226  'value' => _t('_sys_btn_sbs_unsubscribe'),
227  'attrs' => array(
228  'onClick' => 'javascript:$("#' . $this->_sVisitorPopup . ' [name=\'direction\']").val(\'unsubscribe\')',
229  )
230  ),
231  )
232 
233  )
234  );
236  $sContent .= PopupBox($this->_sVisitorPopup, _t('_sys_bcpt_subscribe'), $oSysTemplate->parseHtmlByName('default_margin.html', array(
237  'content' => $oForm->getCode()
238  )));
239 
240  $this->_bDataAdded = true;
241  }
242 
243  $sCssJs = '';
244  $sCssJs .= $oSysTemplate->addCss(array('subscription.css', 'subscription_phone.css'), $bDynamic);
245  $sCssJs .= $oSysTemplate->addJs(array('ChWsbSubscription.js'), $bDynamic);
246  return ($bDynamic ? $sCssJs : '') . $sContent;
247  }
248  function getButton($iUserId, $sUnit, $sAction = '', $iObjectId = 0)
249  {
250  if($this->_oDb->isSubscribed(array('user_id' => $iUserId, 'unit' => $sUnit, 'action' => $sAction, 'object_id' => $iObjectId)))
251  $aResult = array(
252  'title' => _t('_sys_btn_sbs_unsubscribe'),
253  'script' => $this->_sJsObject . ".unsubscribe(" . $iUserId . ", '" . $sUnit . "', '" . $sAction . "', " . $iObjectId . ")"
254  );
255  else
256  $aResult = array(
257  'title' => _t('_sys_btn_sbs_subscribe'),
258  'script' => $this->_sJsObject . ".subscribe(" . $iUserId . ", '" . $sUnit . "', '" . $sAction . "', " . $iObjectId . ")"
259  );
260 
261  return $aResult;
262  }
263 
264  function subscribeVisitor($sUserName, $sUserEmail, $sUnit, $sAction, $iObjectId = 0)
265  {
266  $aResult = $this->_processVisitor('add', $sUserName, $sUserEmail, $sUnit, $sAction, $iObjectId);
267  return $aResult;
268  }
269  function unsubscribeVisitor($sUserName, $sUserEmail, $sUnit, $sAction, $iObjectId = 0)
270  {
271  return $this->_processVisitor('delete', $sUserName, $sUserEmail, $sUnit, $sAction, $iObjectId);
272  }
273  function subscribeMember($iUserId, $sUnit, $sAction, $iObjectId = 0)
274  {
275  return $this->_processMember('add', $iUserId, $sUnit, $sAction, $iObjectId);
276  }
277  function unsubscribeMember($iUserId, $sUnit, $sAction, $iObjectId = 0)
278  {
279  return $this->_processMember('delete', $iUserId, $sUnit, $sAction, $iObjectId);
280  }
281  function unsubscribe($aParams)
282  {
283  $aRequest = array();
284 
285  switch($aParams['type']) {
286  case 'sid';
287  $aRequest = array('sid' => $aParams['sid']);
288  break;
289  case 'object_id';
290  $aRequest = array('unit' => $aParams['unit'], 'object_id' => $aParams['object_id']);
291  break;
292  case 'visitor':
293  $aRequest = array(
294  'type' => CH_WSB_SBS_TYPE_VISITOR,
295  'user_id' => $aParams['id']
296  );
297  break;
298  case 'member':
299  $aRequest = array(
300  'type' => CH_WSB_SBS_TYPE_MEMBER,
301  'user_id' => $aParams['id']
302  );
303  break;
304  }
305  return $this->_oDb->deleteSubscription($aRequest);
306  }
307  function send($sUnit, $sAction, $iObjectId = 0, $aExtras = array())
308  {
309  return $this->_oDb->sendDelivery(array(
310  'unit' => $sUnit,
311  'action' => $sAction,
312  'object_id' => $iObjectId
313  ));
314  }
316  {
317  return $this->_oDb->getSubscribersCount($iType);
318  }
319  function getSubscribers($iType = CH_WSB_SBS_TYPE_VISITOR, $iStart = 0, $iCount = 1)
320  {
321  return $this->_oDb->getSubscribers($iType, $iStart, $iCount);
322  }
323 
324  function _processMember($sDirection, $iUserId, $sUnit, $sAction, $iObjectId)
325  {
326  $sMethodName = $sDirection . 'Subscription';
327  return $this->_oDb->$sMethodName(array(
328  'type' => CH_WSB_SBS_TYPE_MEMBER,
329  'user_id' => $iUserId,
330  'unit' => $sUnit,
331  'action' => $sAction,
332  'object_id' => $iObjectId
333  ));
334  }
335  function _processVisitor($sDirection, $sUserName, $sUserEmail, $sUnit, $sAction, $iObjectId)
336  {
337  $sMethodName = $sDirection . 'Subscription';
338  return $this->_oDb->$sMethodName(array(
339  'type' => CH_WSB_SBS_TYPE_VISITOR,
340  'user_name' => $sUserName,
341  'user_email' => $sUserEmail,
342  'unit' => $sUnit,
343  'action' => $sAction,
344  'object_id' => $iObjectId
345  ));
346  }
347 
348  function _getJsCode()
349  {
350  ob_start();
351  ?>
352  var <?=$this->_sJsObject; ?> = new ChWsbSubscription({
353  sActionUrl: '<?=$this->_sActionUrl; ?>',
354  sObjName: '<?=$this->_sJsObject; ?>',
355  sVisitorPopup: '<?=$this->_sVisitorPopup; ?>'
356  });
357  <?php
358  $sContent = ob_get_clean();
359 
360  return $GLOBALS['oSysTemplate']->_wrapInTagJsCode($sContent);
361  }
362 
363  function _getUnsubscribeLink($mixedIds)
364  {
365  $aIds = array();
366  if(is_int($mixedIds))
367  $aIds = array($mixedIds);
368  else if(is_string($mixedIds))
369  $aIds = explode(",", $mixedIds);
370  else if(is_array($mixedIds))
371  $aIds = $mixedIds;
372 
373  return !empty($aIds) ? $this->_sActionUrl . '?sid=' . urlencode(base64_encode(implode(",", $aIds))) : '';
374  }
375 }
ChWsbSubscription\getMySubscriptions
getMySubscriptions()
Definition: ChWsbSubscription.php:75
ChWsbSubscription\$_oDb
$_oDb
Definition: ChWsbSubscription.php:49
ChTemplFormView
Definition: ChTemplFormView.php:11
ChWsbSubscription\unsubscribe
unsubscribe($aParams)
Definition: ChWsbSubscription.php:281
MsgBox
MsgBox($sText, $iTimer=0)
Definition: design.inc.php:175
ChWsbSubscriptionQuery
Definition: ChWsbSubscriptionQuery.php:12
ChWsbSubscription\unsubscribeMember
unsubscribeMember($iUserId, $sUnit, $sAction, $iObjectId=0)
Definition: ChWsbSubscription.php:277
ch_import
ch_import($sClassName, $aModule=array())
Definition: utils.inc.php:1218
$aResult
$aResult
Definition: index.php:19
use
GNU LESSER GENERAL PUBLIC LICENSE February Free Software Inc Franklin Fifth MA USA Everyone is permitted to copy and distribute verbatim copies of this license but changing it is not allowed[This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it By the GNU General Public Licenses are intended to guarantee your freedom to share and change free software to make sure the software is free for all its users This the Lesser General Public applies to some specially designated software packages typically libraries of the Free Software Foundation and other authors who decide to use it You can use it but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular based on the explanations below When we speak of free we are referring to freedom of use
Definition: license.txt:27
php
ChWsbSubscription\$_bDataAdded
$_bDataAdded
Definition: ChWsbSubscription.php:50
ChWsbSubscription\$_sVisitorPopup
$_sVisitorPopup
Definition: ChWsbSubscription.php:53
ChWsbSubscription\getInstance
static getInstance()
Definition: ChWsbSubscription.php:67
ChWsbSubscription\_getJsCode
_getJsCode()
Definition: ChWsbSubscription.php:348
ch_html_attribute
ch_html_attribute($mixedInput)
Definition: utils.inc.php:1324
$oForm
$oForm
Definition: host_tools.php:42
ChWsbSubscription\send
send($sUnit, $sAction, $iObjectId=0, $aExtras=array())
Definition: ChWsbSubscription.php:307
ChWsbSubscription
Definition: ChWsbSubscription.php:48
ChWsbSubscription\_processVisitor
_processVisitor($sDirection, $sUserName, $sUserEmail, $sUnit, $sAction, $iObjectId)
Definition: ChWsbSubscription.php:335
ChWsbSubscription\getData
getData($bDynamic=false)
Definition: ChWsbSubscription.php:156
ChWsbSubscription\subscribeMember
subscribeMember($iUserId, $sUnit, $sAction, $iObjectId=0)
Definition: ChWsbSubscription.php:273
global
if(!defined("GLOBAL_MODULE")) define("GLOBAL_MODULE" global
Definition: header.inc.php:25
ChWsbSubscription\getSubscribersCount
getSubscribersCount($iType=CH_WSB_SBS_TYPE_VISITOR)
Definition: ChWsbSubscription.php:315
ChWsbSubscription\unsubscribeVisitor
unsubscribeVisitor($sUserName, $sUserEmail, $sUnit, $sAction, $iObjectId=0)
Definition: ChWsbSubscription.php:269
$sContent
$sContent
Definition: bottom_menu_compose.php:169
_t
_t($key, $arg0="", $arg1="", $arg2="")
Definition: languages.inc.php:509
ChWsbSubscription\$_sJsObject
$_sJsObject
Definition: ChWsbSubscription.php:51
ChWsbSubscription\$_sActionUrl
$_sActionUrl
Definition: ChWsbSubscription.php:52
ChWsbSubscription\getSubscribers
getSubscribers($iType=CH_WSB_SBS_TYPE_VISITOR, $iStart=0, $iCount=1)
Definition: ChWsbSubscription.php:319
ChWsbSubscription\_processMember
_processMember($sDirection, $iUserId, $sUnit, $sAction, $iObjectId)
Definition: ChWsbSubscription.php:324
CH_WSB_SBS_TYPE_MEMBER
const CH_WSB_SBS_TYPE_MEMBER
Definition: ChWsbSubscription.php:11
PopupBox
PopupBox($sName, $sTitle, $sContent, $aActions=array())
Definition: design.inc.php:189
getProfileInfo
getProfileInfo($iProfileID=0, $checkActiveStatus=false, $forceCache=false)
Definition: profiles.inc.php:249
$aForm
$aForm
Definition: forgot.php:43
CH_WSB_SBS_TYPE_VISITOR
const CH_WSB_SBS_TYPE_VISITOR
Definition: ChWsbSubscription.php:10
ChWsbSubscription\_getUnsubscribeLink
_getUnsubscribeLink($mixedIds)
Definition: ChWsbSubscription.php:363
ChWsbSubscription\getButton
getButton($iUserId, $sUnit, $sAction='', $iObjectId=0)
Definition: ChWsbSubscription.php:248
$sAction
$sAction
Definition: categories.php:274
$oSysTemplate
$oSysTemplate
Definition: params.inc.php:22
ChWsbSubscription\subscribeVisitor
subscribeVisitor($sUserName, $sUserEmail, $sUnit, $sAction, $iObjectId=0)
Definition: ChWsbSubscription.php:264
empty
Attr AllowedRel this is empty
Definition: Attr.AllowedRel.txt:7
as
as
Definition: Filter.ExtractStyleBlocks.Escaping.txt:10
$sName
$sName
Definition: ChWsbAdminTools.php:853
ChWsbSubscription\__construct
__construct()
Definition: ChWsbSubscription.php:58
$GLOBALS
$GLOBALS['iAdminPage']
Definition: advanced_settings.php:10