/** * 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; } }
/** * * FIXME: IdCity is written both to the members and the address table! * This is just imitating the strategy of bw/signup.php! * JY Comment : wont fix, this redudancy is on purpose (this is so useful ...) * * This has NOT been executed: * ALTER TABLE members * MODIFY COLUMN `id` int( 11 ) NOT NULL COMMENT 'IdMember' * As a result, we do NOT use * '.$this->dao->nextId('members').', * */ public function registerBWMember($vars) { // ******************************************************************** // members // ******************************************************************** $query = ' INSERT INTO `members` ( `Username`, `IdCity`, `Gender`, `HideGender`, `created`, `BirthDate`, `HideBirthDate`, `Accomodation` ) VALUES ( \'' . $vars['username'] . '\', ' . $vars['geonameid'] . ', \'' . $vars['gender'] . '\', \'' . $vars['genderhidden'] . '\', now(), \'' . $vars['iso_date'] . '\', \'' . $vars['agehidden'] . '\', \'' . $vars['accommodation'] . '\' )'; $members = $this->dao->query($query); $memberID = $members->insertId(); $memberEntity = new Member($memberID); $vars['password'] = $memberEntity->preparePassword($vars['password']); $motherTongue = $this->createEntity('Language', $vars['mothertongue']); $memberLanguageEntity = $this->createEntity('MemberLanguage'); $memberLanguageEntity->setSpokenLanguage($memberEntity, $motherTongue, 'MotherLanguage'); // Check if selected MotherTongue is in the list of translated languages and set it as preferred language $model = new FlaglistModel(); $languages = $model->getLanguages(); $languageFilter = function ($lang) { return function ($v) use($lang) { return $v->id == $lang; }; }; $filteredLanguages = array_filter($languages, $languageFilter($motherTongue->id)); if (!empty($filteredLanguages)) { $update = "\r\n INSERT INTO\r\n memberspreferences\r\n SET\r\n IdMember = " . $memberEntity->id . ",\r\n IdPreference = 1,\r\n Value = " . $motherTongue->id; $this->dao->query($update); } $memberEntity->update(); $memberEntity->setPassword($vars['password']); // ******************************************************************** // e-mail, names/members // ******************************************************************** $cryptedfieldsEmail = MOD_crypt::insertCrypted($vars['email'], "members.Email", $memberID, $memberID, "always"); $cryptedfieldsFirstname = MOD_crypt::insertCrypted($this->dao->escape(strip_tags($vars['firstname'])), "members.FirstName", $memberID, $memberID); $cryptedfieldsSecondname = MOD_crypt::insertCrypted($this->dao->escape(strip_tags($vars['secondname'])), "members.SecondName", $memberID, $memberID); $cryptedfieldsLastname = MOD_crypt::insertCrypted($this->dao->escape(strip_tags($vars['lastname'])), "members.LastName", $memberID, $memberID); $query = ' UPDATE `members` SET `Email`=' . $cryptedfieldsEmail . ', `FirstName`=' . $cryptedfieldsFirstname . ', `SecondName`=' . $cryptedfieldsSecondname . ', `LastName`=' . $cryptedfieldsLastname . ' WHERE `id` = ' . $memberID; $this->dao->query($query); // ******************************************************************** // address/addresses // ******************************************************************** $query = ' INSERT INTO addresses ( `IdMember`, `IdCity`, `HouseNumber`, `StreetName`, `Zip`, `created`, `Explanation` ) VALUES ( ' . $memberID . ', ' . $vars['geonameid'] . ', 0, 0, 0, now(), 0)'; $s = $this->dao->query($query); if (!$s->insertId()) { $vars['errors'] = array('inserror'); return false; } // ******************************************************************** // location (where Philipp would put it) // ******************************************************************** $geomodel = new GeoModel(); if (!$geomodel->addGeonameId($vars['geonameid'], 'member_primary')) { $vars['errors'] = array('geoinserterror'); return false; } // Only for bugtesting and backwards compatibility the geo-views in our DB $CityName = "not found in cities view"; $geonameId = intval($vars['geonameid']); $sqry = "\r\n SELECT\r\n name\r\n FROM\r\n geonames_cache\r\n WHERE\r\n geonameId = {$geonameId}\r\n "; $qry = $this->dao->query($sqry); if ($qry) { $rr = $qry->fetch(PDB::FETCH_OBJ); if (isset($rr->name)) { $CityName = $rr->name; } else { MOD_log::get()->write("Signup bug [" . $sqry . "]" . " (With New Signup !)", "Signup"); } } MOD_log::get()->writeIdMember($memberID, "member <b>" . $vars['username'] . "</b> is signuping with success in city [" . $CityName . "] using language (" . $_SESSION["lang"] . " IdMember=#" . $memberID . " (With New Signup !)", "Signup"); return $memberID; }
public function updateActivity($args) { // First add geo location to geonames_cache if it doesn't exist yet $locationId = $args->post['activity-location-id']; if ($locationId != 0) { $geomodel = new GeoModel(); $geomodel->addGeonameId($locationId, 'member_primary'); } else { $locationId = $this->getLoggedInMember()->IdCity; } $activity = new Activity($args->post['activity-id']); $activity->title = $args->post['activity-title']; $activity->address = $args->post['activity-address']; $activity->locationId = $locationId; $startdate = strtotime($args->post['activity-start-date']); $activity->dateTimeStart = date('Y-m-d H:i:s', $startdate); $enddate = strtotime($args->post['activity-end-date']); $activity->dateTimeEnd = date('Y-m-d H:i:s', $enddate); $activity->description = $args->post['activity-description']; $activity->public = isset($args->post['activity-public']); $activity->update(); return $activity; }