summaryrefslogtreecommitdiff
path: root/www/crm/wp-content/plugins/civicrm/civicrm/ext/api4/api4.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/crm/wp-content/plugins/civicrm/civicrm/ext/api4/api4.php')
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/ext/api4/api4.php193
1 files changed, 193 insertions, 0 deletions
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/ext/api4/api4.php b/www/crm/wp-content/plugins/civicrm/civicrm/ext/api4/api4.php
new file mode 100644
index 00000000..9c05d773
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/ext/api4/api4.php
@@ -0,0 +1,193 @@
+<?php
+
+require_once 'api4.civix.php';
+require_once 'api/Exception.php';
+
+use Symfony\Component\DependencyInjection\Reference;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
+use Symfony\Component\Config\FileLocator;
+
+/**
+ * Procedural wrapper for the OO api version 4.
+ *
+ * @param string $entity
+ * @param string $action
+ * @param array $params
+ * @param string|int $index
+ * If $index is a string, the results array will be indexed by that key.
+ * If $index is an integer, only the result at that index will be returned.
+ *
+ * @return \Civi\Api4\Generic\Result
+ * @throws \API_Exception
+ * @throws \Civi\API\Exception\NotImplementedException
+ */
+function civicrm_api4($entity, $action, $params = [], $index = NULL) {
+ $apiCall = \Civi\Api4\Utils\ActionUtil::getAction($entity, $action);
+ foreach ($params as $name => $param) {
+ $setter = 'set' . ucfirst($name);
+ $apiCall->$setter($param);
+ }
+ $result = $apiCall->execute();
+
+ // Index results by key
+ if ($index && is_string($index) && !CRM_Utils_Rule::integer($index)) {
+ $result->indexBy($index);
+ }
+ // Return result at index
+ if (CRM_Utils_Rule::integer($index)) {
+ $item = $result->itemAt($index);
+ if (is_null($item)) {
+ throw new \API_Exception("Index $index not found in api results");
+ }
+ $result->exchangeArray($item);
+
+ }
+ return $result;
+}
+
+/**
+ * @param ContainerBuilder $container
+ */
+function api4_civicrm_container($container) {
+ $loader = new XmlFileLoader($container, new FileLocator(__DIR__));
+ $loader->load('services.xml');
+
+ $container->getDefinition('civi_api_kernel')->addMethodCall(
+ 'registerApiProvider',
+ [new Reference('action_object_provider')]
+ );
+
+ // add event subscribers$container->get(
+ $dispatcher = $container->getDefinition('dispatcher');
+ $subscribers = $container->findTaggedServiceIds('event_subscriber');
+
+ foreach (array_keys($subscribers) as $subscriber) {
+ $dispatcher->addMethodCall(
+ 'addSubscriber',
+ [new Reference($subscriber)]
+ );
+ }
+
+ // add spec providers
+ $providers = $container->findTaggedServiceIds('spec_provider');
+ $gatherer = $container->getDefinition('spec_gatherer');
+
+ foreach (array_keys($providers) as $provider) {
+ $gatherer->addMethodCall(
+ 'addSpecProvider',
+ [new Reference($provider)]
+ );
+ }
+
+ if (defined('CIVICRM_UF') && CIVICRM_UF === 'UnitTests') {
+ $loader->load('tests/services.xml');
+ }
+}
+
+/**
+ * Implements hook_civicrm_coreResourceList().
+ */
+function api4_civicrm_coreResourceList(&$list, $region) {
+ if ($region == 'html-header') {
+ Civi::resources()->addScriptFile('org.civicrm.api4', 'js/api4.js', -9000, $region);
+ }
+}
+
+/**
+ * Implements hook_civicrm_config().
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_config
+ */
+function api4_civicrm_config(&$config) {
+ _api4_civix_civicrm_config($config);
+}
+
+/**
+ * Implements hook_civicrm_xmlMenu().
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_xmlMenu
+ */
+function api4_civicrm_xmlMenu(&$files) {
+ _api4_civix_civicrm_xmlMenu($files);
+}
+
+/**
+ * Implements hook_civicrm_install().
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_install
+ */
+function api4_civicrm_install() {
+ _api4_civix_civicrm_install();
+}
+
+/**
+ * Implements hook_civicrm_uninstall().
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_uninstall
+ */
+function api4_civicrm_uninstall() {
+ _api4_civix_civicrm_uninstall();
+}
+
+/**
+ * Implements hook_civicrm_enable().
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_enable
+ */
+function api4_civicrm_enable() {
+ _api4_civix_civicrm_enable();
+}
+
+/**
+ * Implements hook_civicrm_disable().
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_disable
+ */
+function api4_civicrm_disable() {
+ _api4_civix_civicrm_disable();
+}
+
+/**
+ * Implements hook_civicrm_upgrade().
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_upgrade
+ */
+function api4_civicrm_upgrade($op, CRM_Queue_Queue $queue = NULL) {
+ return _api4_civix_civicrm_upgrade($op, $queue);
+}
+
+/**
+ * Implements hook_civicrm_managed().
+ *
+ * Generate a list of entities to create/deactivate/delete when this module
+ * is installed, disabled, uninstalled.
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_managed
+ */
+function api4_civicrm_managed(&$entities) {
+ _api4_civix_civicrm_managed($entities);
+}
+
+/**
+ * Implements hook_civicrm_angularModules().
+ *
+ * Generate a list of Angular modules.
+ *
+ * Note: This hook only runs in CiviCRM 4.5+. It may
+ * use features only available in v4.6+.
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_caseTypes
+ */
+function api4_civicrm_angularModules(&$angularModules) {
+ _api4_civix_civicrm_angularModules($angularModules);
+}
+
+/**
+ * Implements hook_civicrm_alterSettingsFolders().
+ *
+ * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_alterSettingsFolders
+ */
+function api4_civicrm_alterSettingsFolders(&$metaDataFolders = NULL) {
+ _api4_civix_civicrm_alterSettingsFolders($metaDataFolders);
+}