17 parent::__construct($oConfig,
$oDb);
22 $aLevelInfo = $this->_oDb->getMembershipsBy(array(
'type' =>
'level_id',
'id' => $aUserLevel[
'ID']));
23 if(isset($aUserLevel[
'DateExpires']))
24 $sTxtExpiresIn =
_t(
'_membership_txt_expires_in', floor(($aUserLevel[
'DateExpires'] -
time())/86400));
26 $sTxtExpiresIn =
_t(
'_membership_txt_expires_never');
28 $this->
addCss(
'levels.css');
30 'id' => $aLevelInfo[
'mem_id'],
31 'title' => $aLevelInfo[
'mem_name'],
32 'icon' => $this->_oConfig->getIconsUrl() . $aLevelInfo[
'mem_icon'],
33 'description' => str_replace(
"\$",
"$", $aLevelInfo[
'mem_description']),
34 'expires' => $sTxtExpiresIn
38 return array(
$sContent, array(), array(),
false);
43 $sCurrencyCode = strtoupper($this->_oConfig->getCurrencyCode());
44 $sCurrencySign = $this->_oConfig->getCurrencySign();
49 $aMemberships = array();
50 foreach($aValues
as $aValue) {
51 list($sJsCode, $sJsMethod) = $oPayment->getAddToCartJs(0, $this->_oConfig->getId(), $aValue[
'price_id'], 1,
true);
53 $aMemberships[] = array(
55 'url_root' => CH_WSB_URL_ROOT,
56 'id' => $aValue[
'mem_id'],
57 'title' => $aValue[
'mem_name'],
58 'icon' => $this->_oConfig->getIconsUrl() . $aValue[
'mem_icon'],
59 'ch_if:show_description' => array(
60 'condition' => strlen($aValue[
'mem_description']) > 0,
62 'description' => str_replace(
"\$",
"$", $aValue[
'mem_description']),
65 'days' => $aValue[
'price_days'] > 0 ? $aValue[
'price_days'] .
' ' .
_t(
'_membership_txt_days') :
_t(
'_membership_txt_expires_never') ,
66 'price' => $aValue[
'price_amount'],
67 'currency_code' => $sCurrencyCode,
68 'add_to_cart_js' => $sJsMethod
73 $this->
addCss(array(
'levels.css',
'levels_tablet.css',
'levels_phone.css'));
75 'js_code' => $oPayment->getCartJs(),
76 'ch_repeat:levels' => $aMemberships
79 return array(
$sContent, array(), array(),
false);
84 $iModuleId = $this->_oConfig->getId();
85 $iSelectedLevel = $iSelectedProvider = 0;
87 $sCurrencyCode = strtoupper($this->_oConfig->getCurrencyCode());
88 $sCurrencySign = $this->_oConfig->getCurrencySign();
93 $aProviders = $oPayment->getProviders(0);
94 if(
empty($aProviders))
95 return array(
MsgBox(
_t(
'_membership_err_no_payment_options')));
98 $aTmplVarsLevels = array();
100 $bPaid = (int)$aLevel[
'price_amount'] > 0;
102 $iPriceDays = (int)$aLevel[
'price_days'];
103 $fPriceAmount = (float)$aLevel[
'price_amount'];
105 $aTmplVarsLevels[] = array(
107 'js_object' => $this->_oConfig->getJsObject(
'join'),
108 'id' => $aLevel[
'mem_id'],
109 'descriptor' => (
int)$aLevel[
'mem_id'] ==
MEMBERSHIP_ID_STANDARD ? $this->_oConfig->getStandardDescriptor() : $oPayment->getCartItemDescriptor(0, $iModuleId, $aLevel[
'price_id'], 1),
110 'checked' =>
$iIndex == $iSelectedLevel ?
'checked="checked"' :
'',
111 'title' => $aLevel[
'mem_name'],
112 'icon' => $this->_oConfig->getIconsUrl() . $aLevel[
'mem_icon'],
113 'ch_if:show_description' => array(
114 'condition' => strlen($aLevel[
'mem_description']) > 0,
116 'description' => str_replace(
"\$",
"$", $aLevel[
'mem_description']),
119 'days' => $iPriceDays > 0 ? $iPriceDays .
' ' .
_t(
'_membership_txt_days') :
_t(
'_membership_txt_expires_never'),
120 'price' => $fPriceAmount,
121 'ch_if:show_price_paid' => array(
122 'condition' => $bPaid,
124 'price' => $fPriceAmount,
125 'currency_code' => $sCurrencyCode,
128 'ch_if:show_price_free' => array(
129 'condition' => !$bPaid,
137 $aTmplVarsProviders = array();
138 if(!
empty($aProviders))
139 foreach($aProviders
as $iIndex => $aProvider) {
140 if((
int)$aProvider[
'for_visitor'] != 1)
143 $aTmplVarsProviders[] = array(
144 'name' => $aProvider[
'name'],
145 'caption' => $aProvider[
'caption_cart'],
146 'checked' =>
$iIndex == $iSelectedProvider ?
'checked="checked"' :
''
149 if(
empty($aTmplVarsProviders))
150 return array(
MsgBox(
_t(
'_membership_err_no_payment_options')));
152 $bSelectedLevelPaid = (int)$aLevels[$iSelectedLevel][
'price_amount'] > 0;
154 $bSelectedProvider = count($aTmplVarsProviders) == 1;
155 $sSelectedProvider = $bSelectedProvider ? $aTmplVarsProviders[0][
'name'] :
'';
159 $bCaptcha = $this->_oConfig->isCaptchaOnPaidJoin();
163 $sCaptcha = $oCaptcha ? $oCaptcha->display($bDynamic) :
_t(
'_sys_txt_captcha_not_available');
166 $aTmplParams = array(
167 'js_object' => $this->_oConfig->getJsObject(
'join'),
168 'js_code' => $this->getJsCode(
'join',
true),
169 'submit_url' => CH_WSB_URL_ROOT . $this->_oConfig->getBaseUri() .
'join_submit',
170 'ch_repeat:levels' => $aTmplVarsLevels,
171 'ch_if:show_providers_selector' => array(
172 'condition' => !$bSelectedProvider,
174 'ch_if:show_providers_selector_hidden' => array(
175 'condition' => !$bSelectedLevelPaid,
178 'ch_repeat:providers' => $aTmplVarsProviders
181 'ch_if:show_captcha' => array(
182 'condition' => $bCaptcha,
184 'captcha' => $sCaptcha
187 'ch_if:show_selected_provider' => array(
188 'condition' => $bSelectedProvider,
190 'name' => $sSelectedProvider
193 'txt_checkout' =>
_t($bSelectedLevelPaid ?
'_membership_btn_pay' :
'_membership_btn_select')
197 $sCssJs .= $this->
addCss(array(
'levels.css',
'levels_tablet.css',
'levels_phone.css'), $bDynamic);
198 $sCssJs .= $this->
addJs(
'join.js', $bDynamic);
200 $this->
addJsTranslation(array(
'_membership_err_need_select_level',
'_membership_err_need_select_provider'));
201 return array(($bDynamic ? $sCssJs :
'') . $this->
parseHtmlByName(
'select_level_block.html', $aTmplParams), array(), array(),
false);
209 $iIndex = isset($aParams[
'index']) ? (int)$aParams[
'index'] : 9;
211 $_page[
'js_name'] = isset($aParams[
'js']) ? $aParams[
'js'] :
'';
212 $_page[
'css_name'] = isset($aParams[
'css']) ? $aParams[
'css'] :
'';
213 $_page[
'header'] = isset($aParams[
'title'][
'page']) ? $aParams[
'title'][
'page'] :
'';
215 if(isset($aParams[
'content']))
216 foreach($aParams[
'content']
as $sKey => $sValue)
227 $iIndex = isset($aParams[
'index']) ? (int)$aParams[
'index'] : 0;
229 $_page[
'js_name'] = isset($aParams[
'js']) ? $aParams[
'js'] :
'';
230 $_page[
'css_name'] = isset($aParams[
'css']) ? $aParams[
'css'] :
'';
231 $_page[
'extra_js'] = isset($aParams[
'extra_js']) ? $aParams[
'extra_js'] :
'';
235 if(isset($aParams[
'content']))
236 foreach($aParams[
'content']
as $sKey => $sValue)
239 if(isset($aParams[
'title'][
'page']))
241 if(isset($aParams[
'title'][
'block']))
244 if(isset($aParams[
'breadcrumb']))
245 $GLOBALS[
'oTopMenu']->setCustomBreadcrumbs($aParams[
'breadcrumb']);
254 'page' =>
_t(
'_membership_pcaption_error'),
255 'block' =>
_t(
'_membership_bcaption_error')
266 $sJsObject = $this->_oConfig->getJsObject(
$sType);
267 $sJsClass = $this->_oConfig->getJsClass(
$sType);
270 'sActionUrl' => CH_WSB_URL_ROOT . $this->_oConfig->getBaseUri(),
271 'sObjName' => $sJsObject,
272 'sAnimationEffect' => $this->_oConfig->getAnimationEffect(),
273 'iAnimationSpeed' => $this->_oConfig->getAnimationSpeed(),
276 'sErrSelectLevel' =>
ch_js_string(
_t(
'_membership_err_need_select_level')),
277 'sErrSelectProvider' =>
ch_js_string(
_t(
'_membership_err_need_select_provider'))
280 $sContent .=
'var ' . $sJsObject .
' = new ' . $sJsClass .
'(' . json_encode($aOptions) .
');';