Enable access to helpdesk only if user have special product
Add this code to site.php file:
function helpdeskEnabled(){
$user = Am_Di::getInstance()->auth->getUser();
if(!$user) return true; // give user chance to log in first
foreach($user->getActiveProducts() as $p){
$data = $p->getBillingPlanData();
if($data['helpdesk_enabled']) return true;
}
return false;
}
Am_Di::getInstance()->billingPlanTable->customFields()
->add(new Am_CustomFieldSelect('helpdesk_enabled', "Enable access to helpdesk", '', '', array('options' => array(0=>'No', 1=>'Yes'))));
Am_Di::getInstance()->hook->add('userMenu', function (Am_Event $event){
$menu = $event->getMenu();
if(!helpdeskEnabled()) $menu->removePage($menu->findOneBy('id', 'helpdesk'));
});
Am_Di::getInstance()->hook->add(Am_Event::INIT_CONTROLLER_PAGES, function (Am_Event $event){
$c = $event->getController();
if(!is_a($c, 'Helpdesk_IndexController')) return;
if(!helpdeskEnabled()) throw new Am_Exception_InputError('Access denied!');
});
By default access to helpdesk will be disabled for all users. You can enable it for selected products only(aMember CP -> Manage Products -> Edit Product -> Enable access to helpdesk)