/**
  * @param Contact $contact
  * @return string
  */
 public static function resolveContactWithLink(Contact $contact)
 {
     $linkContent = static::renderRestrictedContactAccessLink($contact);
     if (ActionSecurityUtil::canCurrentUserPerformAction('Details', $contact)) {
         $moduleClassName = static::resolveModuleClassName($contact);
         $linkRoute = '/' . $moduleClassName::getDirectoryName() . '/default/details';
         $link = ActionSecurityUtil::resolveLinkToModelForCurrentUser(strval($contact), $contact, $moduleClassName, $linkRoute);
         if ($link != null) {
             $linkContent = $link;
         }
     }
     return ZurmoHtml::tag('div', array('class' => 'email-recipient-name'), $linkContent);
 }
 public static function resolveAsUserOrContact(Item $item)
 {
     foreach (array('Contact', 'User') as $modelClassName) {
         try {
             $modelDerivationPathToItem = RuntimeUtil::getModelDerivationPathToItem($modelClassName);
             $model = $item->castDown(array($modelDerivationPathToItem));
             $moduleClassName = $modelClassName::getModuleClassName();
             $linkRoute = '/' . $moduleClassName::getDirectoryName() . '/default/details';
             return ActionSecurityUtil::resolveLinkToModelForCurrentUser(strval($model), $model, $moduleClassName, $linkRoute);
         } catch (NotFoundException $e) {
         }
     }
     throw new NotSupportedException();
 }
 /**
  * @param Contact $contact
  * @return string
  */
 public static function resolveModuleIdWithLinkContentForContactOrLead(Contact $contact)
 {
     $linkContent = null;
     if (ActionSecurityUtil::canCurrentUserPerformAction('Details', $contact)) {
         $moduleClassName = $contact->getModuleClassName();
         $moduleId = ContactWebFormsUtil::getResolvedModuleIdForContactWebFormEntry($contact);
         $linkRoute = '/' . $moduleId . '/default/details';
         $link = ActionSecurityUtil::resolveLinkToModelForCurrentUser(strval($contact), $contact, $moduleClassName, $linkRoute);
         if ($link != null) {
             $linkContent = $link;
         }
         return ZurmoHtml::tag('div', array(), $linkContent);
     }
 }
 /**
  * @param Account $account
  * @return string
  */
 public static function resolveAccountWithLinkContent(Account $account)
 {
     if (ActionSecurityUtil::canCurrentUserPerformAction('Details', $account)) {
         $moduleClassName = $account->getModuleClassName();
         $linkRoute = '/' . $moduleClassName::getDirectoryName() . '/default/details';
         $link = ActionSecurityUtil::resolveLinkToModelForCurrentUser(strval($account), $account, $moduleClassName, $linkRoute);
         if ($link != null) {
             $linkContent = $link;
         }
         return ZurmoHtml::tag('div', array(), $linkContent);
     }
 }
 /**
  * @depends testCanCurrentUserPerformAction
  */
 public function testResolveLinkToModelForCurrentUser()
 {
     Yii::app()->user->userModel = User::getByUsername('super');
     $notSavedAccount = new Account();
     $link = ActionSecurityUtil::resolveLinkToModelForCurrentUser('bpoboo', $notSavedAccount, 'AccountsModule', 'accounts/default/details');
     $this->assertNull($link);
     $accounts = Account::getByName('Supermart');
     $betty = User::getByUsername('betty');
     $bettyAccount = AccountTestHelper::createAccountByNameForOwner('bopbeebop', $betty);
     Yii::app()->user->userModel = $betty;
     $link = ActionSecurityUtil::resolveLinkToModelForCurrentUser('bpoboo', $bettyAccount, 'AccountsModule', 'accounts/default/details');
     $this->assertEquals('bpoboo', $link);
     $betty->setRight('AccountsModule', AccountsModule::RIGHT_ACCESS_ACCOUNTS, Right::ALLOW);
     $this->assertTrue($betty->save());
     $link = ActionSecurityUtil::resolveLinkToModelForCurrentUser('bpoboo', $bettyAccount, 'AccountsModule', 'accounts/default/details');
     $this->assertContains('accounts/default/details', $link);
     $this->assertEquals(1, count($accounts));
     $link = ActionSecurityUtil::resolveLinkToModelForCurrentUser('bpoboo', $accounts[0], 'AccountsModule', 'accounts/default/details');
     $this->assertEquals(null, $link);
 }