'twingle_api_key', 'title' => E::ts('Twingle API key'), 'type' => CRM_Utils_Type::T_STRING, 'api.required' => 0, 'description' => E::ts('The key to access the Twingle API'), ]; $spec['test'] = [ 'name' => 'test', 'title' => E::ts('Test'), 'type' => CRM_Utils_Type::T_BOOLEAN, 'api.required' => 0, 'description' => E::ts('If this is set true, no database change will be made'), ]; } /** * TwingleSync.Get API * * @param array $params * * @return array * API result descriptor * * @throws \CiviCRM_API3_Exception|\API_Exception * @see civicrm_api3_create_success * */ function civicrm_api3_twingle_sync_Get($params) { $result_values = []; // If function call provides an API key, use it instead of the API key set // on the extension settings page $apiKey = empty($params['twingle_api_key']) ? CRM_Core_BAO_Setting::getItem('', 'twingle_api_key') : $params['twingle_api_key']; $twingleApi = new TwingleApiCall($apiKey); // Get all projects from Twingle and store them in $projects $projects = $twingleApi->getProject(); // Create projects as campaigns if they do not exist and store results in // $result_values $i = 0; foreach ($projects as $project) { if (is_array($project)) { $result_values['sync']['projects'][$i++] = $twingleApi->syncProject($project); } } return civicrm_api3_create_success($result_values); }