Skip to content
Snippets Groups Projects
mjwshared.php 6.02 KiB
Newer Older
  • Learn to ignore specific revisions
  • mattwire's avatar
    mattwire committed
    <?php
    
    /*
     +--------------------------------------------------------------------+
     | Copyright CiviCRM LLC. All rights reserved.                        |
     |                                                                    |
     | This work is published under the GNU AGPLv3 license with some      |
     | permitted exceptions and without any warranty. For full license    |
     | and copyright information, see https://civicrm.org/licensing       |
     +--------------------------------------------------------------------+
    
    mattwire's avatar
    mattwire committed
     */
    
    mattwire's avatar
    mattwire committed
    
    require_once 'mjwshared.civix.php';
    use CRM_Mjwshared_ExtensionUtil as E;
    
    /**
     * Implements hook_civicrm_config().
     *
     * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_config
     */
    function mjwshared_civicrm_config(&$config) {
      _mjwshared_civix_civicrm_config($config);
    
    
      if (isset(Civi::$statics[__FUNCTION__])) { return; }
      Civi::$statics[__FUNCTION__] = 1;
    
    
    mattwire's avatar
    mattwire committed
      // Symfony hook priorities - see https://docs.civicrm.org/dev/en/latest/hooks/usage/symfony/#priorities
    
      // Make sure this runs after everything else but before minifier
      Civi::dispatcher()->addListener('hook_civicrm_buildAsset', 'mjwshared_symfony_civicrm_buildAsset', -990);
    
    mattwire's avatar
    mattwire committed
      // This should run before (almost) anything else as we're loading shared libraries
    
      Civi::dispatcher()->addListener('hook_civicrm_coreResourceList', 'mjwshared_symfony_civicrm_coreResourceList', 1000);
    
    mattwire's avatar
    mattwire committed
    }
    
    /**
     * Implements hook_civicrm_xmlMenu().
     *
     * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_xmlMenu
     */
    function mjwshared_civicrm_xmlMenu(&$files) {
      _mjwshared_civix_civicrm_xmlMenu($files);
    }
    
    /**
     * Implements hook_civicrm_install().
     *
     * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_install
     */
    function mjwshared_civicrm_install() {
      _mjwshared_civix_civicrm_install();
    }
    
    /**
     * Implements hook_civicrm_postInstall().
     *
     * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_postInstall
     */
    function mjwshared_civicrm_postInstall() {
      _mjwshared_civix_civicrm_postInstall();
    }
    
    /**
     * Implements hook_civicrm_uninstall().
     *
     * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_uninstall
     */
    function mjwshared_civicrm_uninstall() {
      _mjwshared_civix_civicrm_uninstall();
    }
    
    /**
     * Implements hook_civicrm_enable().
     *
     * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_enable
     */
    function mjwshared_civicrm_enable() {
      _mjwshared_civix_civicrm_enable();
    }
    
    /**
     * Implements hook_civicrm_disable().
     *
     * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_disable
     */
    function mjwshared_civicrm_disable() {
      _mjwshared_civix_civicrm_disable();
    }
    
    /**
     * Implements hook_civicrm_upgrade().
     *
     * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_upgrade
     */
    function mjwshared_civicrm_upgrade($op, CRM_Queue_Queue $queue = NULL) {
      return _mjwshared_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 mjwshared_civicrm_managed(&$entities) {
      _mjwshared_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 mjwshared_civicrm_caseTypes(&$caseTypes) {
      _mjwshared_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 mjwshared_civicrm_angularModules(&$angularModules) {
      _mjwshared_civix_civicrm_angularModules($angularModules);
    }
    
    /**
     * Implements hook_civicrm_alterSettingsFolders().
     *
     * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_alterSettingsFolders
     */
    function mjwshared_civicrm_alterSettingsFolders(&$metaDataFolders = NULL) {
      _mjwshared_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 mjwshared_civicrm_entityTypes(&$entityTypes) {
      _mjwshared_civix_civicrm_entityTypes($entityTypes);
    }
    
    /**
    
     * Implements hook_civicrm_coreResourceList().
    
    mattwire's avatar
    mattwire committed
     */
    
    function mjwshared_symfony_civicrm_coreResourceList($event, $hook) {
      if ($event->region === 'html-header') {
        // Load the CRM.payment library
        // We want this library loaded early. Weights are negative earlier, positive later (opposite to symfony).
        // CiviCRM "earliest" is -9999 we'll go with -2000 to load after CiviCRM core but before anything else.
        \Civi::resources()->addScriptUrl(\Civi::service('asset_builder')->getUrl(
          'crm.payment.js',
          [
            'path' => \Civi::resources()->getPath(E::LONG_NAME, 'js/crm.payment.js'),
            'mimetype' => 'application/javascript',
          ]
        ), -2000, $event->region);
      }
    
    
    /**
     * Implements hook_civicrm_check().
     *
     * @throws \CiviCRM_API3_Exception
     */
    function mjwshared_civicrm_check(&$messages) {
      CRM_Mjwshared_Check::checkRequirements($messages);
    }
    
    
    /**
     * @param \Civi\Core\Event\GenericHookEvent $event
     * @param $hook
     *
     * @throws \CiviCRM_API3_Exception
     */
    function mjwshared_symfony_civicrm_buildAsset($event, $hook) {
      $extensions = civicrm_api3('Extension', 'get', [
        'full_name' => "minifier",
      ]);
      if (empty($extensions['id']) || ($extensions['values'][$extensions['id']]['status'] !== 'installed')) {
        if (empty($event->content) && !empty($event->params['path'])) {
          $event->content = file_get_contents($event->params['path']);
        }
    
        if (empty($event->mimeType) && !empty($event->params['mimetype'])) {
          $event->mimeType = $event->params['mimetype'];
        }