/**
  * gets the group that this user's friends belong to 
  */
 public function getGroupFor($type)
 {
     $groupType = $type . 'Group';
     $groupTypeID = $type . 'GroupID';
     if ($this->owner->{$groupTypeID}) {
         return $this->owner->{$groupType}();
     }
     $title = $this->owner->Email . ' ' . $type;
     $group = SimpleMemberList::get()->filter(array('Title' => $title))->first();
     if ($group && $group->exists()) {
         $this->owner->{$groupTypeID} = $group->ID;
         return $group;
     } else {
         $group = $this->transactionManager->runAsAdmin(function () use($title) {
             $group = SimpleMemberList::create();
             $group->Title = $title;
             $group->write();
             return $group;
         });
         if ($group) {
             $this->owner->{$groupTypeID} = $group->ID;
         }
         return $group;
     }
 }
 public function run($request)
 {
     if (!$this->transactionManager) {
         Injector::inst()->inject($this);
     }
     $this->transactionManager->runAsAdmin(function () {
         $members = DataList::create('Member');
         foreach ($members as $member) {
             if (!$member->Username) {
                 list($username) = explode('@', $member->Email);
                 $member->Username = preg_replace('/\\W+/', '_', $username);
                 echo "Updating '{$username}' <br/>\n";
                 $member->write();
             } else {
                 echo "{$member->Username} already set <br/>\n";
             }
         }
     });
 }