* {inheritdoc}
*/
public function getActionNames($version, $entity) {
+ $entity = _civicrm_api_get_camel_name($entity);
$entities = $this->getEntityNames($version);
if (!in_array($entity, $entities)) {
return array();
*/
public function onApiResolve(\Civi\API\Event\ResolveEvent $event) {
$apiRequest = $event->getApiRequest();
- $actions = isset($this->actions[$apiRequest['entity']]) ? $this->actions[$apiRequest['entity']] : $this->actions['*'];
+ $actions = $this->getActionNames($apiRequest['version'], $apiRequest['entity']);
if (in_array($apiRequest['action'], $actions)) {
$apiRequest['is_metadata'] = TRUE;
$event->setApiRequest($apiRequest);
* {inheritdoc}
*/
function getActionNames($version, $entity) {
+ $entity = _civicrm_api_get_camel_name($entity, $version);
return isset($this->actions[$entity]) ? $this->actions[$entity] : $this->actions['*'];
}
}
--- /dev/null
+<?php
+/**
+ * Test Generated example of using contact getactions API
+ * Getting the available actions for an entity. *
+ */
+function contact_getactions_example(){
+$params = array();
+
+try{
+ $result = civicrm_api3('contact', 'getactions', $params);
+}
+catch (CiviCRM_API3_Exception $e) {
+ // handle error here
+ $errorMessage = $e->getMessage();
+ $errorCode = $e->getErrorCode();
+ $errorData = $e->getExtraParams();
+ return array('error' => $errorMessage, 'error_code' => $errorCode, 'error_data' => $errorData);
+}
+
+return $result;
+}
+
+/**
+ * Function returns array of result expected from previous function
+ */
+function contact_getactions_expectedresult(){
+
+ $expectedResult = array(
+ 'is_error' => 0,
+ 'version' => 3,
+ 'count' => 17,
+ 'values' => array(
+ '0' => 'create',
+ '1' => 'delete',
+ '2' => 'get',
+ '3' => 'getactions',
+ '4' => 'getcount',
+ '5' => 'getfields',
+ '6' => 'getlist',
+ '7' => 'getoptions',
+ '8' => 'getquick',
+ '9' => 'getrefcount',
+ '10' => 'getsingle',
+ '11' => 'getvalue',
+ '12' => 'merge',
+ '13' => 'proximity',
+ '14' => 'replace',
+ '15' => 'setvalue',
+ '16' => 'update',
+ ),
+ 'deprecated' => array(
+ 'getquick' => 'The "getquick" action is deprecated in favor of "getlist".',
+ 'update' => 'The "update" action is deprecated. Use "create" with an id instead.',
+ ),
+);
+
+ return $expectedResult;
+}
+
+
+/*
+* This example has been generated from the API test suite. The test that created it is called
+*
+* testGetActions and can be found in
+* https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php
+*
+* You can see the outcome of the API tests at
+* https://test.civicrm.org/job/CiviCRM-master-git/
+*
+* To Learn about the API read
+* http://wiki.civicrm.org/confluence/display/CRMDOC/Using+the+API
+*
+* Browse the api on your own site with the api explorer
+* http://MYSITE.ORG/path/to/civicrm/api/explorer
+*
+* Read more about testing here
+* http://wiki.civicrm.org/confluence/display/CRM/Testing
+*
+* API Standards documentation:
+* http://wiki.civicrm.org/confluence/display/CRM/API+Architecture+Standards
+*/
$action = empty($action) ? 'getlist' : $action;
$entityAction = 'GetList';
}
+ elseif (strstr($function, 'GetActions')) {
+ $action = empty($action) ? 'getactions' : $action;
+ $entityAction = 'GetActions';
+ }
elseif (strstr($function, 'Get')) {
$action = empty($action) ? 'get' : $action;
$entityAction = 'Get';
$this->assertEquals(1, $result['count']);
}
-
/**
* CRM-15443 - ensure getlist api does not return deleted or deceased contacts
*/
$this->assertEquals(1, $result['count'], 'In line ' . __LINE__);
$this->assertEquals($contact3, $result['values'][0]['id'], 'In line ' . __LINE__);
}
+
+ /**
+ * Test contact.getactions
+ */
+ function testGetActions() {
+ $description = "Getting the available actions for an entity.";
+ $result = $this->callAPIAndDocument($this->_entity, 'getactions', array(), __FUNCTION__, __FILE__, $description);
+ $expected = array(
+ 'create',
+ 'delete',
+ 'get',
+ 'getactions',
+ 'getcount',
+ 'getfields',
+ 'getlist',
+ 'getoptions',
+ 'getquick',
+ 'getrefcount',
+ 'getsingle',
+ 'getvalue',
+ 'merge',
+ 'proximity',
+ 'replace',
+ 'setvalue',
+ 'update',
+ );
+ $deprecated = array(
+ 'update',
+ 'getquick',
+ );
+ foreach ($expected as $action) {
+ $this->assertTrue(in_array($action, $result['values']), "Expected action $action");
+ }
+ foreach ($deprecated as $action) {
+ $this->assertArrayKeyExists($action, $result['deprecated']);
+ }
+ }
}