/** * Translate permission. * * @param string $perm * Permission string e.g "administer CiviCRM", "cms:access user record", "Drupal:administer content", * "Joomla:action:com_asset" * * @param string $nativePrefix * @param array $map * Array($portableName => $nativeName). * * @return NULL|string * a permission name */ public function translatePermission($perm, $nativePrefix, $map) { list($civiPrefix, $name) = CRM_Utils_String::parsePrefix(':', $perm, NULL); switch ($civiPrefix) { case $nativePrefix: return $name; // pass through // pass through case 'cms': return CRM_Utils_Array::value($name, $map, CRM_Core_Permission::ALWAYS_DENY_PERMISSION); case NULL: return $name; default: return CRM_Core_Permission::ALWAYS_DENY_PERMISSION; } }
/** * @param $perm * * @internal param string $name e.g. "administer CiviCRM", "cms:access user record", "Drupal:administer content", "Joomla:example.action:com_some_asset" * @return ALWAYS_DENY_PERMISSION|ALWAYS_ALLOW_PERMISSION|array(0 => $joomlaAction, 1 => $joomlaAsset) */ function translateJoomlaPermission($perm) { if ($perm === CRM_Core_Permission::ALWAYS_DENY_PERMISSION || $perm === CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION) { return $perm; } list($civiPrefix, $name) = CRM_Utils_String::parsePrefix(':', $perm, NULL); switch ($civiPrefix) { case 'Joomla': return explode(':', $name); case 'cms': // FIXME: This needn't be DENY, but we don't currently have any translations. return CRM_Core_Permission::ALWAYS_DENY_PERMISSION; case NULL: return array('civicrm.' . CRM_Utils_String::munge(strtolower($name)), 'com_civicrm'); default: return CRM_Core_Permission::ALWAYS_DENY_PERMISSION; } }
/** * @dataProvider parsePrefixData * @param $input * @param $defaultPrefix * @param $expected */ public function testParsePrefix($input, $defaultPrefix, $expected) { $actual = CRM_Utils_String::parsePrefix(':', $input, $defaultPrefix); $this->assertEquals($expected, $actual); }