addValue('name', $location['name']) ->addValue('display_name', $location['display_name']) ->addValue('description', $location['description']) ->addValue('is_default', $location['is_default']) ->execute(); // $this->ctx->log->info(E::ts('Created %1 LocationType', [1 => $location['name']])); } catch (\CRM_Core_Exception $e) { if ($e->getMessage() == 'DB Error: already exists') { // $this->ctx->log->info(E::ts('LocationType %1 already exists', [1 => $location['name']])); continue; } // $this->ctx->log->err(E::ts('Failed to create %1 LocationType', [1 => $location['name']])); throw $e; } } } /** * Example: Work with entities usually not available during the install step. * * This method can be used for any post-install tasks. For example, if a step * of your installation depends on accessing an entity that is itself * created during the installation (e.g., a setting or a managed entity), do * so here to avoid order of operation problems. */ // public function postInstall(): void { // $customFieldId = civicrm_api3('CustomField', 'getvalue', array( // 'return' => array("id"), // 'name' => "customFieldCreatedViaManagedHook", // )); // civicrm_api3('Setting', 'create', array( // 'myWeirdFieldSetting' => array('id' => $customFieldId, 'weirdness' => 1), // )); // } /** * Example: Run an external SQL script when the module is uninstalled. * * Note that if a file is present sql\auto_uninstall that will run regardless * of this hook. */ // public function uninstall(): void { // $this->executeSqlFile('sql/my_uninstall.sql'); // } /** * Runs when enabling the extension. * * @throws \CRM_Core_Exception */ public function enable(): void { // Enable CustomGroups foreach (MAILINGLISTSYNC_CUSTOM_GROUPS as $customGroup) { CustomGroup::update(FALSE) ->addWhere('name', '=', $customGroup) ->addValue('is_active', 1) ->execute(); // $this->ctx->log->info(E::ts('Enabled %1 CustomGroup', [1 => $customGroup])); } } /** * Runs when disabling the extension. * * @throws \CRM_Core_Exception */ public function disable(): void { // Disable CustomGroups foreach (MAILINGLISTSYNC_CUSTOM_GROUPS as $customGroup) { CustomGroup::update(FALSE) ->addWhere('name', '=', $customGroup) ->addValue('is_active', 0) ->execute(); // $this->ctx->log->info(E::ts('Disabled %1 CustomGroup', [1 => $customGroup])); } } /** * Example: Run a couple simple queries. * * @return TRUE on success * @throws CRM_Core_Exception */ // public function upgrade_4200(): bool { // $this->ctx->log->info('Applying update 4200'); // CRM_Core_DAO::executeQuery('UPDATE foo SET bar = "whiz"'); // CRM_Core_DAO::executeQuery('DELETE FROM bang WHERE willy = wonka(2)'); // return TRUE; // } /** * Example: Run an external SQL script. * * @return TRUE on success * @throws CRM_Core_Exception */ // public function upgrade_4201(): bool { // $this->ctx->log->info('Applying update 4201'); // // this path is relative to the extension base dir // $this->executeSqlFile('sql/upgrade_4201.sql'); // return TRUE; // } /** * Example: Run a slow upgrade process by breaking it up into smaller chunk. * * @return TRUE on success * @throws CRM_Core_Exception */ // public function upgrade_4202(): bool { // $this->ctx->log->info('Planning update 4202'); // PEAR Log interface // $this->addTask(E::ts('Process first step'), 'processPart1', $arg1, $arg2); // $this->addTask(E::ts('Process second step'), 'processPart2', $arg3, $arg4); // $this->addTask(E::ts('Process second step'), 'processPart3', $arg5); // return TRUE; // } // public function processPart1($arg1, $arg2) { sleep(10); return TRUE; } // public function processPart2($arg3, $arg4) { sleep(10); return TRUE; } // public function processPart3($arg5) { sleep(10); return TRUE; } /** * Example: Run an upgrade with a query that touches many (potentially * millions) of records by breaking it up into smaller chunks. * * @return TRUE on success * @throws CRM_Core_Exception */ // public function upgrade_4203(): bool { // $this->ctx->log->info('Planning update 4203'); // PEAR Log interface // $minId = CRM_Core_DAO::singleValueQuery('SELECT coalesce(min(id),0) FROM civicrm_contribution'); // $maxId = CRM_Core_DAO::singleValueQuery('SELECT coalesce(max(id),0) FROM civicrm_contribution'); // for ($startId = $minId; $startId <= $maxId; $startId += self::BATCH_SIZE) { // $endId = $startId + self::BATCH_SIZE - 1; // $title = E::ts('Upgrade Batch (%1 => %2)', array( // 1 => $startId, // 2 => $endId, // )); // $sql = ' // UPDATE civicrm_contribution SET foobar = apple(banana()+durian) // WHERE id BETWEEN %1 and %2 // '; // $params = array( // 1 => array($startId, 'Integer'), // 2 => array($endId, 'Integer'), // ); // $this->addTask($title, 'executeSql', $sql, $params); // } // return TRUE; // } }