protected function synchronizeUser()
 {
     $alwaysUpdate = $this->option('force-update');
     $this->progressbar = $this->getHelperSet()->get('progress');
     $this->progressbar->start($this->output, User::count());
     User::chunk(500, function ($users) use($alwaysUpdate) {
         foreach ($users as $user) {
             $this->progressbar->advance();
             $email = $user->email;
             MailChimpIntegration::syncMemberToMailChimp($email, $user, false);
         }
     });
     ${$this}->progressbar->finish();
 }
示例#2
0
 public function getMailchimpInterestIdOptions()
 {
     $options = [];
     try {
         $groupId = $this->mailchimp_group_id;
         $groups = MailChimpIntegration::getMailchimpInterestList($groupId);
         foreach ($groups as $i) {
             $options[$i->id] = $i->name;
         }
     } catch (Exception $e) {
         // Do nothing
     }
     return $options;
 }
示例#3
0
 /**
  * {@inheritDoc}
  */
 public function boot()
 {
     // Handle locations upon login
     $this->registerLocation();
     // Register timezone settings
     date_default_timezone_set(Settings::get('timezone', Config::get('app.timezone')));
     // Register ServiceProviders
     App::register('DMA\\Friends\\FriendsServiceProvider');
     App::register('Maatwebsite\\Excel\\ExcelServiceProvider');
     // Register aliases
     $alias = AliasLoader::getInstance();
     $alias->alias('Excel', 'Maatwebsite\\Excel\\Facades\\Excel');
     // Register Event Subscribers
     $subscriber = new FriendsEventHandler();
     Event::subscribe($subscriber);
     // Bind user and point events to trigger user synchronization with MailChimp
     MailChimpIntegration::bindEvents();
     // Generate barcode_id when a user object is created
     // TODO: Migrate when user plugin is forked
     User::creating(function ($user) {
         if (empty($user->barcode_id)) {
             $user->barcode_id = substr(md5($user->email), 0, 9);
         }
     });
     // Extend the user model to support our custom metadata
     User::extend(function ($model) {
         $model->hasOne['metadata'] = ['DMA\\Friends\\Models\\Usermeta', 'key' => 'user_id'];
         $model->hasMany['activityLogs'] = ['DMA\\Friends\\Models\\ActivityLog'];
         $model->hasMany['bookmarks'] = ['DMA\\Friends\\Models\\Bookmark'];
         $model->hasMany['notifications'] = ['DMA\\Friends\\Models\\Notification'];
         $model->hasMany['rates'] = ['DMA\\Friends\\Models\\UserRate'];
         $model->belongsToMany['activities'] = ['DMA\\Friends\\Models\\Activity', 'table' => 'dma_friends_activity_user', 'user_id', 'activity_id', 'timestamps' => true, 'order' => 'dma_friends_activity_user.created_at desc'];
         $model->belongsToMany['steps'] = ['DMA\\Friends\\Models\\Step', 'table' => 'dma_friends_step_user', 'user_id', 'step_id', 'timestamps' => true, 'order' => 'dma_friends_step_user.created_at desc'];
         $model->belongsToMany['badges'] = ['DMA\\Friends\\Models\\Badge', 'table' => 'dma_friends_badge_user', 'user_id', 'badge_id', 'timestamps' => true, 'order' => 'dma_friends_badge_user.created_at desc'];
         $model->belongsToMany['rewards'] = ['DMA\\Friends\\Models\\Reward', 'table' => 'dma_friends_reward_user', 'user_id', 'reward_id', 'timestamps' => true, 'order' => 'dma_friends_reward_user.created_at desc'];
         $model->belongsToMany['groups'] = ['DMA\\Friends\\Models\\UserGroup', 'table' => 'dma_friends_users_groups', 'key' => 'user_id', 'foreignKey' => 'group_id', 'pivot' => ['membership_status']];
     });
     // Extend User fields
     $context = $this;
     Event::listen('backend.form.extendFields', function ($widget) use($context) {
         $context->extendedUserFields($widget);
         $context->extendedSettingFields($widget);
     });
     Event::listen('backend.list.extendColumns', function ($widget) {
         if (!$widget->getController() instanceof \RainLab\User\Controllers\Users) {
             return;
         }
         $widget->addColumns(['barcode_id' => ['label' => 'Barcode ID'], 'full_name' => ['label' => 'Full Name', 'relation' => 'metadata', 'sortable' => false, 'select' => "concat(first_name, ' ', last_name)", 'searchable' => true], 'first_name' => ['label' => 'First Name', 'relation' => 'metadata', 'select' => '@first_name', 'searchable' => true], 'last_name' => ['label' => 'Last Name', 'relation' => 'metadata', 'select' => '@last_name', 'searchable' => true], 'points' => ['label' => 'Points'], 'zip' => ['label' => 'Zip'], 'current_member_number' => ['label' => 'Membership ID', 'relation' => 'metadata', 'select' => '@current_member_number']]);
     });
 }