<?php require_once 'dataprocessor.civix.php'; use CRM_Dataprocessor_ExtensionUtil as E; use \Symfony\Component\DependencyInjection\ContainerBuilder; use \Symfony\Component\DependencyInjection\Definition; /** * @return \Civi\DataProcessor\Factory */ function dataprocessor_get_factory() { $container = \Civi::container(); if ($container->has('data_processor_factory')) { return \Civi::service('data_processor_factory'); } return null; } /** * Implements hook_civicrm_container() * * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_container/ */ function dataprocessor_civicrm_container(ContainerBuilder $container) { // Register the TypeFactory $container->setDefinition('data_processor_factory', new Definition('Civi\DataProcessor\Factory')); $apiKernelDefinition = $container->getDefinition('civi_api_kernel'); $apiProviderDefinition = new Definition('Civi\DataProcessor\Output\Api'); $apiKernelDefinition->addMethodCall('registerApiProvider', array($apiProviderDefinition)); } /** * Implements hook_civicrm_alterAPIPermissions() * * All Data Processor api outputs have their own permission. * Except for the FormProcessorExecutor api. * * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_alterAPIPermissions/ */ function dataprocessor_civicrm_alterAPIPermissions($entity, $action, &$params, &$permissions) { // We have to check the camelcase and the non camel case names $entityNonCamelCase = _civicrm_api_get_entity_name_from_camel($entity); $entityCamelCase = _civicrm_api_get_camel_name($entity); $api_action = $action; if ($action == 'getfields' && isset($params['api_action'])) { $api_action = $params['api_action']; } $actionNonCamelCase = _civicrm_api_get_entity_name_from_camel($api_action); $actionCamelCase = _civicrm_api_get_camel_name($api_action); $dao = CRM_Core_DAO::executeQuery(" SELECT * FROM civicrm_data_processor_output o INNER JOIN civicrm_data_processor p ON o.data_processor_id = p.id WHERE p.is_active = 1 AND (LOWER(api_entity) = LOWER(%1) OR LOWER(api_entity) = LOWER(%2)) AND ( LOWER(api_action) = LOWER(%3) OR LOWER(api_count_action) = LOWER(%3) OR LOWER(api_action) = LOWER(%4) OR LOWER(api_count_action) = LOWER(%4) )", array( 1 => array($entityCamelCase, 'String'), 2 => array($entityNonCamelCase, 'String'), 3 => array($actionNonCamelCase, 'String'), 4 => array($actionCamelCase, 'String')) ); while ($dao->fetch()) { $permissions[$entity][$action] = array($dao->permission); } } /** * Implements hook_civicrm_alterMenu(). * * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_alterMenu/ */ function dataprocessor_civicrm_alterMenu(&$items) { \Civi\DataProcessor\Output\UIOutputHelper::alterMenu($items); } /** * Implements hook_civicrm_pre(). * * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_pre/ * * @param $op * @param $objectName * @param $objectId * @param $params */ function dataprocessor_civicrm_pre($op, $objectName, $objectId, &$params) { \Civi\DataProcessor\Output\UIOutputHelper::preHook($op, $objectName, $objectId, $params); } /** * Implements hook_civicrm_post(). * * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_post/ * * @param $op * @param $objectName * @param $objectId * @param $objectRef */ function dataprocessor_civicrm_post($op, $objectName, $objectId, &$objectRef) { \Civi\DataProcessor\Output\UIOutputHelper::postHook($op, $objectName, $objectId, $objectRef); } function dataprocessor_civicrm_dataprocessor_export(&$dataProcessor) { \Civi\DataProcessor\Output\UIOutputHelper::hookExport($dataProcessor); } /** * Implements hook_civicrm_config(). * * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_config */ function dataprocessor_civicrm_config(&$config) { _dataprocessor_civix_civicrm_config($config); } /** * Implements hook_civicrm_xmlMenu(). * * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_xmlMenu */ function dataprocessor_civicrm_xmlMenu(&$files) { _dataprocessor_civix_civicrm_xmlMenu($files); } /** * Implements hook_civicrm_install(). * * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_install */ function dataprocessor_civicrm_install() { _dataprocessor_civix_civicrm_install(); } /** * Implements hook_civicrm_postInstall(). * * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_postInstall */ function dataprocessor_civicrm_postInstall() { _dataprocessor_civix_civicrm_postInstall(); } /** * Implements hook_civicrm_uninstall(). * * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_uninstall */ function dataprocessor_civicrm_uninstall() { _dataprocessor_civix_civicrm_uninstall(); } /** * Implements hook_civicrm_enable(). * * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_enable */ function dataprocessor_civicrm_enable() { _dataprocessor_civix_civicrm_enable(); } /** * Implements hook_civicrm_disable(). * * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_disable */ function dataprocessor_civicrm_disable() { _dataprocessor_civix_civicrm_disable(); } /** * Implements hook_civicrm_upgrade(). * * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_upgrade */ function dataprocessor_civicrm_upgrade($op, CRM_Queue_Queue $queue = NULL) { return _dataprocessor_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 dataprocessor_civicrm_managed(&$entities) { _dataprocessor_civix_civicrm_managed($entities); } /** * Implements hook_civicrm_caseTypes(). * * Generate a list of case-types. * * Note: This hook only runs in CiviCRM 4.4+. * * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_caseTypes */ function dataprocessor_civicrm_caseTypes(&$caseTypes) { _dataprocessor_civix_civicrm_caseTypes($caseTypes); } /** * 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_angularModules */ function dataprocessor_civicrm_angularModules(&$angularModules) { _dataprocessor_civix_civicrm_angularModules($angularModules); } /** * Implements hook_civicrm_alterSettingsFolders(). * * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_alterSettingsFolders */ function dataprocessor_civicrm_alterSettingsFolders(&$metaDataFolders = NULL) { _dataprocessor_civix_civicrm_alterSettingsFolders($metaDataFolders); } /** * Implements hook_civicrm_entityTypes(). * * Declare entity types provided by this module. * * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_entityTypes */ function dataprocessor_civicrm_entityTypes(&$entityTypes) { _dataprocessor_civix_civicrm_entityTypes($entityTypes); } // --- Functions below this ship commented out. Uncomment as required. --- /** * Implements hook_civicrm_preProcess(). * * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_preProcess * function dataprocessor_civicrm_preProcess($formName, &$form) { } // */ /** * Implements hook_civicrm_navigationMenu(). * * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_navigationMenu */ function dataprocessor_civicrm_navigationMenu(&$menu) { _dataprocessor_civix_insert_navigation_menu($menu, 'Administer', array( 'label' => E::ts('Data Processor'), 'name' => 'data_processor', 'url' => '', 'permission' => 'administer CiviCRM', 'operator' => 'OR', 'separator' => 0 )); _dataprocessor_civix_insert_navigation_menu($menu, 'Administer/data_processor', array( 'label' => E::ts('Manage Data Processors'), 'name' => 'manage_data_processors', 'url' => CRM_Utils_System::url('civicrm/dataprocessor/manage', 'reset=1', true), 'permission' => 'administer CiviCRM', 'operator' => 'OR', 'separator' => 0, )); _dataprocessor_civix_insert_navigation_menu($menu, 'Administer/data_processor', array( 'label' => E::ts('Add Data Processor'), 'name' => 'add_data_processor', 'url' => CRM_Utils_System::url('civicrm/dataprocessor/form/edit', 'reset=1&action=add', true), 'permission' => 'administer CiviCRM', 'operator' => 'OR', 'separator' => 0, )); _dataprocessor_civix_navigationMenu($menu); }