getMemberMembershipInfo($iProfileId, 0, true); if(empty($aLevel) || !is_array($aLevel)) return $this->_bIsApi ? [] : ''; $oTemplate = BxDolTemplate::getInstance(); $aLevelInfo = $this->getMembershipInfo($aLevel['id']); $bOwner = $bCanView = false; if(($iLoggedPid = bx_get_logged_profile_id()) && ($oLogged = BxDolProfile::getInstance($iLoggedPid)) !== false) { $bOwner = BxDolProfile::getInstance($iProfileId)->getAccountId() == $oLogged->getAccountId(); $aCheck = checkActionModule($iLoggedPid, 'show membership private info', 'system', false); $bCanView = $aCheck[CHECK_ACTION_RESULT] === CHECK_ACTION_RESULT_ALLOWED; } if($this->_bIsApi) { $sIconS = $aLevelInfo['icon']; $sIconD = $oTemplate->getImage($sIconS, ['wrap_in_tag' => false]); return [ 'profile' => BxDolProfile::getData($iProfileId), 'level' => [ 'id' => $aLevel['id'], 'name' => !empty($aLevelInfo['name']) ? _t($aLevelInfo['name']) : '', 'description' => !empty($aLevelInfo['description']) ? _t($aLevelInfo['description']) : '', 'icon' => strcmp($sIconS, $sIconD) != 0 ? $sIconD : BxDolIconset::getObjectInstance()->getIcon($sIconD), 'date_starts' => (int)$aLevel['date_starts'], 'date_expires' => (int)$aLevel['date_expires'], ] ]; } $aTmplVarsPrivateInfo = []; $bTmplVarsPrivateInfo = (($bOwner || $bCanView) && !empty($aLevel['date_starts'])); if($bTmplVarsPrivateInfo) $aTmplVarsPrivateInfo = array( 'date_start' => bx_time_js($aLevel['date_starts']), 'date_expire' => (int)$aLevel['date_expires'] > 0 ? bx_time_js($aLevel['date_expires']) : _t('_sys_acl_expire_never'), 'bx_if:show_state' => array( 'condition' => !empty($aLevel['state']), 'content' => array( 'state' => _t('_sys_acl_state_' . $aLevel['state']) ) ) ); $aTmplVarsActions = []; if($bOwner) { $aDowngradable = $this->getMemberships(false, true, true, true); unset($aDowngradable[MEMBERSHIP_ID_STANDARD]); if(in_array($aLevel['id'], array_keys($aDowngradable))) $aTmplVarsActions[] = [ 'href' => 'javascript:void(0)', 'bx_if:show_onclick' => [ 'condition' => true, 'content' => [ 'onclick' => 'javascript:bx_reset_acl_level(' . $iProfileId . ', this)' ] ], 'content' => _t('_sys_acl_downgrade') ]; } $sTmplName = 'acl_membership.html'; $aTmplVars = [ 'html_id' => 'sys-acl-profile-' . $iProfileId, 'level' => _t($aLevel['name']), 'thumbnail' => $oTemplate->getImage($aLevelInfo['icon'], ['class' => 'bx-acl-m-thumbnail']), 'bx_if:show_private_info' => [ 'condition' => $bTmplVarsPrivateInfo, 'content' => $aTmplVarsPrivateInfo ], 'bx_if:show_actions' => [ 'condition' => !empty($aTmplVarsActions), 'content' => [ 'bx_repeat:actions' => $aTmplVarsActions ] ] ]; $sContent = $oTemplate->parseHtmlByName($sTmplName, $aTmplVars); /** * @hooks * @hookdef hook-system-page_output_block_acl_level 'system', 'page_output_block_acl_level' - hook to override profile membership page block * - $unit_name - equals `system` * - $action - equals `page_output_block_acl_level` * - $object_id - not used * - $sender_id - not used * - $extra_params - array of additional params with the following array keys: * - `block_owner` - [int] profile id to show membership level for * - `block_code` - [string] by ref, block code, can be overridden in hook processing * @hook @ref hook-system-page_output_block_acl_level */ bx_alert('system', 'page_output_block_acl_level', 0, false, [ 'block_owner' => $iProfileId, 'block_tmpl_name' => $sTmplName, 'block_tmpl_vars' => $aTmplVars, 'block_code' => &$sContent, 'block_code_ref' => &$sContent, ]); $oTemplate->addCss(['acl.css']); return $sContent; } /** * Print code for membership status * $iProfileId - ID of profile * $offer_upgrade - will this code be printed at [c]ontrol [p]anel */ function GetMembershipStatus($iProfileId, $bOfferUpgrade = true) { $aMembershipInfo = $this->getMemberMembershipInfo($iProfileId); $sViewMembershipActions = "
("._t("_VIEW_MEMBERSHIP_ACTIONS").")
"; // Show colored membership name $ret = ''; if ( $aMembershipInfo['ID'] == MEMBERSHIP_ID_STANDARD || $aMembershipInfo['ID'] == MEMBERSHIP_ID_AUTHENTICATED) { $ret .= _t( "_MEMBERSHIP_STANDARD" ). $sViewMembershipActions; if ( $bOfferUpgrade ) $ret .= " ". _t( "_MEMBERSHIP_UPGRADE_FROM_STANDARD" ); } else { $ret .= "{$aMembershipInfo['Name']}$sViewMembershipActions"; $days_left = (int)( ($aMembershipInfo['DateExpires'] - time()) / (24 * 3600) ); if(!is_null($aMembershipInfo['DateExpires'])) { $ret .= ( $days_left > 0 ) ? _t( "_MEMBERSHIP_EXPIRES_IN_DAYS", $days_left ) : _t( "_MEMBERSHIP_EXPIRES_TODAY", date( "H:i", $aMembershipInfo['DateExpires'] ), date( "H:i" ) ); } else { $ret.= _t("_MEMBERSHIP_EXPIRES_NEVER"); } } return $ret; } } /** @} */