/** * @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); }