/** * Override of parent::achieveGoal to support auto-retry * * @param string $integration The integration name of the API Goal * @param string $call_name The call name of the API Goal * @param uint $contact_id The contact ID of the contact on which to execute * @return mixed[] */ public function achieveGoal($integration, $call_name, $contact_id) { $tries = 0; do { $result = parent::achieveGoal($integration, $call_name, $contact_id); } while ((!is_array($result) || !$result[0]['success']) && ++$tries < 3); if (!is_array($result) || !$result[0]['success']) { file_put_contents(dirname(__FILE__) . '/log.txt', "Call to achieveGoal failed ({$tries} tries): " . PHP_EOL . print_r($integration, TRUE) . PHP_EOL . print_r($call_name, TRUE) . PHP_EOL . print_r($contact_id, TRUE) . PHP_EOL . print_r($result, TRUE) . PHP_EOL . PHP_EOL, FILE_APPEND); } return $result; }