$m->housenumber = MOD_crypt::MemberReadCrypted($member->address->HouseNumber);
$m->zip = MOD_crypt::MemberReadCrypted($member->address->Zip);
$m->birthday = date("d", strtotime($member->BirthDate));
$m->birthmonth = date("m", strtotime($member->BirthDate));
$selYear = date("Y", strtotime($member->BirthDate));
$birthYearOptions = buildBirthYearOptions($selYear);
$m->gender = $member->Gender;
// values from previous form submit
if (!($mem_redirect = $this->layoutkit->formkit->getMemFromRedirect())) {
    // this is a fresh form
    foreach ($m as $key => $value) {
        $vars[$key] = $value;
    }
    $Geo = new GeoModel();
    if (isset($vars['geonameid']) && !isset($vars['geonamename'])) {
        $vars['geonamename'] = $Geo->getDataById($vars['geonameid'])->name;
    }
    $vars['geonamecountry'] = '';
    if (!isset($vars['errors'])) {
        $vars['errors'] = array();
    }
} else {
    $vars = $mem_redirect->post;
}
$lang = $this->model->get_profile_language();
$profile_language = $lang->id;
$profile_language_code = $lang->ShortCode;
$words = $this->getWords();
$messengers = $member->messengers();
$website = $member->WebSite;
$groups = $member->get_group_memberships();
Esempio n. 2
0
 /**
  * set the location of a member
  */
 public function setLocation($IdMember, $geonameid = false)
 {
     // Address IdCity address must only consider Populated palces (definition of cities), it also must consider the address checking process
     $Rank = 0;
     // Rank=0 means the main address, todo when we will deal with several addresses we will need to consider the other rank Values ;
     $IdMember = (int) $IdMember;
     $geonameid = (int) $geonameid;
     $errors = array();
     if (empty($IdMember)) {
         // name is not set:
         $errors['Name'] = 'Name not set';
     }
     if (empty($geonameid)) {
         // name is not set:
         $errors['Geonameid'] = 'Geoname not set';
     }
     // get Member's current Location
     $result = $this->singleLookup("\nSELECT  a.IdCity\nFROM    addresses AS a\nWHERE   a.IdMember = '{$IdMember}'\n    AND a.rank = 0\n            ");
     if (!isset($result) || $result->IdCity != $geonameid) {
         // Check Geo and maybe add location
         $geomodel = new GeoModel();
         if (!$geomodel->getDataById($geonameid)) {
             // if the geonameid is not in our DB, let's add it
             if (!$geomodel->addGeonameId($geonameid, 'member_primary')) {
                 $vars['errors'] = array('geoinserterror');
                 return false;
             }
         } else {
             // the geonameid is in our DB, so just update the counters
             //get id for usagetype:
             $usagetypeId = $geomodel->getUsagetypeId('member_primary')->id;
             $update = $geomodel->updateUsageCounter($geonameid, $usagetypeId, 'add');
         }
         $result = $this->singleLookup("\nUPDATE  addresses\nSET     IdCity = {$geonameid}\nWHERE   IdMember = {$IdMember} and Rank=" . $Rank);
         // name is not set:
         if (!empty($result)) {
             $errors['Geonameid'] = 'Geoname not set';
         }
         $result = $this->singleLookup("\nUPDATE  members\nSET     IdCity = {$geonameid}\nWHERE   id = {$IdMember}\n                ");
         if (!empty($result)) {
             $errors['Geonameid'] = 'Member IdCity not set';
         } else {
             $this->logWrite("The Member with the Id: " . $IdMember . " changed his location to Geo-Id: " . $geonameid, "Members");
         }
         if (empty($errors) && ($m = $this->createEntity('Member')->findById($IdMember))) {
             // if a member with status NeedMore updates her/his profile, moving them back to pending
             if ($m->Status == 'NeedMore') {
                 $m->Status = 'Pending';
                 $m->update();
             }
         }
         return array('errors' => $errors, 'IdMember' => $result);
     } else {
         // geonameid hasn't changed
         return false;
     }
 }