Esempio n. 1
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;
     }
 }
Esempio n. 2
0
    /**
     *
     * 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;
    }
Esempio n. 3
0
 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;
 }