예제 #1
0
 public function postIntegrations(MailchimpIntegrationRequest $request)
 {
     /** @var Group $group */
     $group = Group::findOrFail($request->route('group'));
     /** @var Settings $settings */
     $settings = $group->settings;
     $settings->setMailchimpEnabled($request->get('mailchimp-enabled'));
     $settings->setMailchimpKey($request->get('mailchimp-key'));
     $settings->setMailchimpListId($request->get('mailchimp-list-id'));
     $group->settings = $settings;
     $group->save();
     Session::setGroup($group);
     return redirect('/group/' . $group->id . '/settings/integrations')->withFlashSuccess('Your integration settings have been saved');
 }
 /**
  * Get the validation rules that apply to the request.
  *
  * @return array
  */
 public function rules()
 {
     // validate that the provided API key is accurate
     Validator::extend('valid_mailchimp_key', function ($attr, $val) {
         // maintain running tests offline
         if (app()->environment('testing')) {
             return true;
         }
         $easychimp = new Easychimp(new Mailchimp($val));
         try {
             $easychimp->validateKey();
             // we'll reuse this when validating the list id
             MailchimpIntegrationRequest::$easychimp = $easychimp;
         } catch (InvalidApiKey $e) {
             return false;
         }
         return true;
     });
     // validate that the provided list id is accurate
     Validator::extend('valid_mailchimp_list_id', function ($attr, $val) {
         // maintain running tests offline
         if (app()->environment('testing')) {
             return true;
         }
         return MailchimpIntegrationRequest::$easychimp->mailingList($val)->exists();
     });
     return ['mailchimp-key' => 'required_if:mailchimp-enabled,1|valid_mailchimp_key', 'mailchimp-list-id' => 'required_with:mailchimp-enabled|valid_mailchimp_list_id'];
 }