Beispiel #1
0
 /**
  * Tests Name->setUnstructured()
  */
 public function testSetUnstructured()
 {
     $this->Name->setFormatted($this->unstructured);
     $this->assertEquals($this->Name->getFormatted(), $this->unstructured);
 }
 public function getPeople($ids, $fields, $options, $token)
 {
     $first = $options->getStartIndex();
     $max = $options->getCount();
     $this->checkDb();
     $ret = array();
     $filterQuery = '';
     $options->setFilterBy(null);
     //DateOfBirth
     $query = "\n\t\tSELECT * FROM `Profiles` WHERE `ID` IN (" . implode(',', $ids) . ") {$filterQuery} ORDER BY `ID`\n\t";
     /*
     		`ID` AS 'id',
     		`NickName` AS 'first_name',
     		`NickName` AS 'last_name',
     		`DescriptionMe` AS 'about_me',
     		20 AS 'age',
     		`DateOfBirth` AS 'date_of_birth',
     		1 AS 'children',
     		'' AS 'ethnicity',
     		'' AS 'fashion',
     		'' AS 'happiest_when',
     		'' AS 'humor',
     		'' AS 'job_interests' 
     */
     $res = mysqli_query($this->db, $query);
     if ($res) {
         while ($row = @mysqli_fetch_array($res, MYSQLI_ASSOC)) {
             $person_id = $row['ID'];
             $sFirstName = isset($row['FirstName']) ? $row['FirstName'] : $row['NickName'];
             $sLastName = isset($row['LastName']) ? $row['LastName'] : '';
             $name = new Name($sFirstName . ' ' . $sLastName);
             $name->setGivenName($sFirstName);
             $name->setFamilyName($sLastName);
             $person = new Person($person_id, $name);
             $person->setDisplayName($name->getFormatted());
             $sAboutMe = isset($row['DescriptionMe']) ? $row['DescriptionMe'] : '';
             $person->setAboutMe($sAboutMe);
             $sDateOfBirth = isset($row['DateOfBirth']) ? date('Y-m-d', $row['DateOfBirth']) : '';
             $sAge = $sDateOfBirth != '' ? $this->bx_getAge($sDateOfBirth) : '';
             $person->setAge($sAge);
             $sChildren = isset($row['Children']) ? $row['Children'] : '';
             $person->setChildren($sChildren);
             $person->setBirthday($sDateOfBirth);
             $sEthnicity = isset($row['Ethnicity']) ? $row['Ethnicity'] : '';
             $person->setEthnicity($sEthnicity);
             $sFashion = isset($row['Fashion']) ? $row['Fashion'] : '';
             $person->setFashion($sFashion);
             $sHappiestWhen = isset($row['HappiestWhen']) ? $row['HappiestWhen'] : '';
             $person->setHappiestWhen($sHappiestWhen);
             $sHumor = isset($row['Humor']) ? $row['Humor'] : '';
             $person->setHumor($sHumor);
             $sJobInterests = isset($row['JobInterests']) ? $row['JobInterests'] : '';
             $person->setJobInterests($sJobInterests);
             $sLivingArrangement = isset($row['LivingArrangement']) ? $row['LivingArrangement'] : '';
             $person->setLivingArrangement($sLivingArrangement);
             $sLookingFor = isset($row['LookingFor']) ? $row['LookingFor'] : '';
             $person->setLookingFor($sLookingFor);
             $sNickName = isset($row['NickName']) ? $row['NickName'] : '';
             $person->setNickname($sNickName);
             $sPets = isset($row['Pets']) ? $row['Pets'] : '';
             $person->setPets($sPets);
             $sPoliticalViews = isset($row['PoliticalViews']) ? $row['PoliticalViews'] : '';
             $person->setPoliticalViews($sPoliticalViews);
             $sProfileSong = isset($row['ProfileSong']) ? $row['ProfileSong'] : '';
             $person->setProfileSong($sProfileSong);
             $person->setProfileUrl($this->url_prefix . '/profile/' . $person_id);
             //'A' TODO
             $sProfileVideo = isset($row['ProfileVideo']) ? $row['ProfileVideo'] : '';
             $person->setProfileVideo($sProfileVideo);
             $sRelationshipStatus = isset($row['RelationshipStatus']) ? $row['RelationshipStatus'] : '';
             $person->setRelationshipStatus($sRelationshipStatus);
             $sReligion = isset($row['Religion']) ? $row['Religion'] : '';
             $person->setReligion($sReligion);
             $sRomance = isset($row['Romance']) ? $row['Romance'] : '';
             $person->setRomance($sRomance);
             $sScaredOf = isset($row['ScaredOf']) ? $row['ScaredOf'] : '';
             $person->setScaredOf($sScaredOf);
             $sSexualOrientation = isset($row['SexualOrientation']) ? $row['SexualOrientation'] : '';
             $person->setSexualOrientation($sSexualOrientation);
             $person->setStatus($row['UserStatus']);
             $person->setThumbnailUrl(!empty($row['thumbnail_url']) ? $this->url_prefix . $row['thumbnail_url'] : '');
             //'A' TODO
             if (!empty($row['thumbnail_url'])) {
                 // also report thumbnail_url in standard photos field (this is the only photo supported by partuza)
                 $person->setPhotos(array(new Photo($this->url_prefix . $row['thumbnail_url'], 'thumbnail', true)));
             }
             $sUtcOffset = isset($row['TimeZone']) ? $row['TimeZone'] : "-00:00";
             $person->setUtcOffset(sprintf('%+03d:00', $sUtcOffset));
             // force "-00:00" utc-offset format
             if (!empty($row['Drinker'])) {
                 $person->setDrinker($row['Drinker']);
             }
             if (!empty($row['Sex'])) {
                 $person->setGender(strtolower($row['Sex']));
             }
             if (!empty($row['Smoker'])) {
                 $person->setSmoker($row['Smoker']);
             }
             /* the following fields require additional queries so are only executed if requested */
             if (isset($fields['activities']) || in_array('@all', $fields)) {
                 $activities = array();
                 //'A' we haven`t activities yet
                 /*$res2 = mysqli_query($this->db, "select activity from person_activities where person_id = " . $person_id);
                   while (list($activity) = @mysqli_fetch_row($res2)) {
                     $activities[] = $activity;
                   }*/
                 $person->setActivities($activities);
             }
             if (isset($fields['addresses']) || in_array('@all', $fields)) {
                 $addresses = array();
                 $sCountry = isset($row['Country']) ? $row['Country'] : '';
                 $sRegion = isset($row['City']) ? $row['City'] : '';
                 //'A'  region -> city
                 $sZip = isset($row['zip']) ? $row['zip'] : '';
                 if (empty($row['unstructured_address'])) {
                     $row['unstructured_address'] = trim($row['street_address'] . " " . $sRegion . " " . $sCountry);
                 }
                 $addres = new Address($row['unstructured_address']);
                 $addres->setCountry($sCountry);
                 if (!empty($row['latitude'])) {
                     $addres->setLatitude($row['latitude']);
                 }
                 if (!empty($row['longitude'])) {
                     $addres->setLongitude($row['longitude']);
                 }
                 if (!empty($row['locality'])) {
                     $addres->setLocality($row['locality']);
                 }
                 $addres->setPostalCode($sZip);
                 $addres->setRegion($sRegion);
                 if (!empty($row['street_address'])) {
                     $addres->setStreetAddress($row['street_address']);
                 }
                 if (!empty($row['street_address'])) {
                     $addres->setType($row['street_address']);
                 }
                 //FIXME quick and dirty hack to demo PC
                 $addres->setPrimary(true);
                 $addresses[] = $addres;
                 $person->setAddresses($addresses);
             }
             if (isset($fields['bodyType']) || in_array('@all', $fields)) {
                 //'A' we haven`t bodyType at all
                 /*$res2 = mysqli_query($this->db, "select * from person_body_type where person_id = " . $person_id);
                   if (@mysqli_num_rows($res2)) {
                     $row = @mysql_fetch_array($res2, MYSQLI_ASSOC);
                     $bodyType = new BodyType();
                     $bodyType->setBuild($row['build']);
                     $bodyType->setEyeColor($row['eye_color']);
                     $bodyType->setHairColor($row['hair_color']);
                     $bodyType->setHeight($row['height']);
                     $bodyType->setWeight($row['weight']);
                     $person->setBodyType($bodyType);
                   }*/
             }
             if (isset($fields['books']) || in_array('@all', $fields)) {
                 //'A' we haven`t books at all
                 /*$books = array();
                   $res2 = mysqli_query($this->db, "select book from person_books where person_id = " . $person_id);
                   while (list($book) = @mysqli_fetch_row($res2)) {
                     $books[] = $book;
                   }
                   $person->setBooks($books);*/
             }
             if (isset($fields['cars']) || in_array('@all', $fields)) {
                 //'A' we haven`t cars at all
                 /*$cars = array();
                   $res2 = mysqli_query($this->db, "select car from person_cars where person_id = " . $person_id);
                   while (list($car) = @mysqli_fetch_row($res2)) {
                     $cars[] = $car;
                   }
                   $person->setCars($cars);*/
             }
             if (isset($fields['currentLocation']) || in_array('@all', $fields)) {
                 //'A' we haven`t currentLocation at all
                 /*$addresses = array();
                   $res2 = mysqli_query($this->db, "select addresses.* from person_current_location, person_addresses, addresses where addresses.id = person_current_location.address_id and person_addresses.person_id = " . $person_id);
                   if (@mysqli_num_rows($res2)) {
                     $row = mysqli_fetch_array($res2, MYSQLI_ASSOC);
                     if (empty($row['unstructured_address'])) {
                       $row['unstructured_address'] = trim($row['street_address'] . " " . $row['region'] . " " . $row['country']);
                     }
                     $addres = new Address($row['unstructured_address']);
                     $addres->setCountry($row['country']);
                     $addres->setLatitude($row['latitude']);
                     $addres->setLongitude($row['longitude']);
                     $addres->setLocality($row['locality']);
                     $addres->setPostalCode($row['postal_code']);
                     $addres->setRegion($row['region']);
                     $addres->setStreetAddress($row['street_address']);
                     $addres->setType($row['address_type']);
                     $person->setCurrentLocation($addres);
                   }*/
             }
             if (isset($fields['emails']) || in_array('@all', $fields)) {
                 $emails = array();
                 //'A' we haven`t multi emails, only single
                 /*$res2 = mysqli_query($this->db, "select address, email_type from person_emails where person_id = " . $person_id);
                   while (list($address, $type) = @mysqli_fetch_row($res2)) {
                     $emails[] = new Email(strtolower($address), $type); // TODO: better email canonicalization; remove dups
                   }
                   $person->setEmails($emails);*/
                 $sEmail = isset($row['Email']) ? $row['Email'] : '';
                 $emails[] = new Email(strtolower($sEmail), 'main');
                 $person->setEmails($emails);
             }
             if (isset($fields['food']) || in_array('@all', $fields)) {
                 //'A' we haven`t food at all
                 /*$foods = array();
                   $res2 = mysqli_query($this->db, "select food from person_foods where person_id = " . $person_id);
                   while (list($food) = @mysqli_fetch_row($res2)) {
                     $foods[] = $food;
                   }
                   $person->setFood($foods);*/
             }
             if (isset($fields['heroes']) || in_array('@all', $fields)) {
                 //'A' we haven`t heroes at all
                 /*$strings = array();
                   $res2 = mysqli_query($this->db, "select hero from person_heroes where person_id = " . $person_id);
                   while (list($data) = @mysqli_fetch_row($res2)) {
                     $strings[] = $data;
                   }
                   $person->setHeroes($strings);*/
             }
             if (isset($fields['interests']) || in_array('@all', $fields)) {
                 //'A' we haven`t interests at all
                 /* $strings = array();
                    $res2 = mysqli_query($this->db, "select interest from person_interests where person_id = " . $person_id);
                    while (list($data) = @mysqli_fetch_row($res2)) {
                      $strings[] = $data;
                    }
                    $person->setInterests($strings);*/
             }
             $organizations = array();
             $fetchedOrg = false;
             if (isset($fields['jobs']) || in_array('@all', $fields)) {
                 //'A' we haven`t jobs at all
                 /*$res2 = mysqli_query($this->db, "select organizations.* from person_jobs, organizations where organizations.id = person_jobs.organization_id and person_jobs.person_id = " . $person_id);
                   while ($row = mysqli_fetch_array($res2, MYSQLI_ASSOC)) {
                     $organization = new Organization();
                     $organization->setDescription($row['description']);
                     $organization->setEndDate($row['end_date']);
                     $organization->setField($row['field']);
                     $organization->setName($row['name']);
                     $organization->setSalary($row['salary']);
                     $organization->setStartDate($row['start_date']);
                     $organization->setSubField($row['sub_field']);
                     $organization->setTitle($row['title']);
                     $organization->setWebpage($row['webpage']);
                     $organization->setType('job');
                     if ($row['address_id']) {
                       $res3 = mysqli_query($this->db, "select * from addresses where id = " . $row['address_id']);
                       if (mysqli_num_rows($res3)) {
                         $row = mysqli_fetch_array($res3, MYSQLI_ASSOC);
                         if (empty($row['unstructured_address'])) {
                           $row['unstructured_address'] = trim($row['street_address'] . " " . $row['region'] . " " . $row['country']);
                         }
                         $addres = new Address($row['unstructured_address']);
                         $addres->setCountry($row['country']);
                         $addres->setLatitude($row['latitude']);
                         $addres->setLongitude($row['longitude']);
                         $addres->setLocality($row['locality']);
                         $addres->setPostalCode($row['postal_code']);
                         $addres->setRegion($row['region']);
                         $addres->setStreetAddress($row['street_address']);
                         $addres->setType($row['address_type']);
                         $organization->setAddress($address);
                       }
                     }
                     $organizations[] = $organization;
                   }
                   $fetchedOrg = true;*/
             }
             if (isset($fields['schools']) || in_array('@all', $fields)) {
                 //'A' we haven`t schools at all
                 /*$res2 = mysqli_query($this->db, "select organizations.* from person_schools, organizations where organizations.id = person_schools.organization_id and person_schools.person_id = " . $person_id);
                   while ($row = mysqli_fetch_array($res2, MYSQLI_ASSOC)) {
                     $organization = new Organization();
                     $organization->setDescription($row['description']);
                     $organization->setEndDate($row['end_date']);
                     $organization->setField($row['field']);
                     $organization->setName($row['name']);
                     $organization->setSalary($row['salary']);
                     $organization->setStartDate($row['start_date']);
                     $organization->setSubField($row['sub_field']);
                     $organization->setTitle($row['title']);
                     $organization->setWebpage($row['webpage']);
                     $organization->setType($row['school']);
                     if ($row['address_id']) {
                       $res3 = mysqli_query($this->db, "select * from addresses where id = " . $row['address_id']);
                       if (mysqli_num_rows($res3)) {
                         $row = mysqli_fetch_array($res3, MYSQLI_ASSOC);
                         if (empty($row['unstructured_address'])) {
                           $row['unstructured_address'] = trim($row['street_address'] . " " . $row['region'] . " " . $row['country']);
                         }
                         $addres = new Address($row['unstructured_address']);
                         $addres->setCountry($row['country']);
                         $addres->setLatitude($row['latitude']);
                         $addres->setLongitude($row['longitude']);
                         $addres->setLocality($row['locality']);
                         $addres->setPostalCode($row['postal_code']);
                         $addres->setRegion($row['region']);
                         $addres->setStreetAddress($row['street_address']);
                         $addres->setType($row['address_type']);
                         $organization->setAddress($address);
                       }
                     }
                     $organizations[] = $organization;
                   }
                   $fetchedOrg = true;*/
             }
             if ($fetchedOrg) {
                 $person->setOrganizations($organizations);
             }
             //TODO languagesSpoken, currently missing the languages / countries tables so can't do this yet
             if (isset($fields['movies']) || in_array('@all', $fields)) {
                 //'A' possible after
                 /*$strings = array();
                   $res2 = mysqli_query($this->db, "select movie from person_movies where person_id = " . $person_id);
                   while (list($data) = @mysqli_fetch_row($res2)) {
                     $strings[] = $data;
                   }
                   $person->setMovies($strings);*/
             }
             if (isset($fields['music']) || in_array('@all', $fields)) {
                 //'A' possible after
                 /*$strings = array();
                   $res2 = mysqli_query($this->db, "select music from person_music where person_id = " . $person_id);
                   while (list($data) = @mysqli_fetch_row($res2)) {
                     $strings[] = $data;
                   }
                   $person->setMusic($strings);*/
             }
             if (isset($fields['phoneNumbers']) || in_array('@all', $fields)) {
                 //'A' we haven`t phoneNumbers at all
                 /*$numbers = array();
                   $res2 = mysqli_query($this->db, "select number, number_type from person_phone_numbers where person_id = " . $person_id);
                   while (list($number, $type) = @mysqli_fetch_row($res2)) {
                     $numbers[] = new Phone($number, $type);
                   }
                   $person->setPhoneNumbers($numbers);*/
             }
             if (isset($fields['ims']) || in_array('@all', $fields)) {
                 //'A' we haven`t ims at all
                 /*$ims = array();
                   $res2 = mysqli_query($this->db, "select value, value_type from person_ims where person_id = " . $person_id);
                   while (list($value, $type) = @mysqli_fetch_row($res2)) {
                     $ims[] = new Im($value, $type);
                   }
                   $person->setIms($ims);*/
             }
             if (isset($fields['accounts']) || in_array('@all', $fields)) {
                 //'A' we haven`t accounts at all
                 /*$accounts = array();
                   $res2 = mysqli_query($this->db, "select domain, userid, username from person_accounts where person_id = " . $person_id);
                   while (list($domain, $userid, $username) = @mysqli_fetch_row($res2)) {
                     $accounts[] = new Account($domain, $userid, $username);
                   }
                   $person->setAccounts($accounts);*/
             }
             if (isset($fields['quotes']) || in_array('@all', $fields)) {
                 //'A' we haven`t quotes at all
                 /*$strings = array();
                   $res2 = mysqli_query($this->db, "select quote from person_quotes where person_id = " . $person_id);
                   while (list($data) = @mysqli_fetch_row($res2)) {
                     $strings[] = $data;
                   }
                   $person->setQuotes($strings);*/
             }
             if (isset($fields['sports']) || in_array('@all', $fields)) {
                 //'A' we haven`t sports at all
                 /*$strings = array();
                   $res2 = mysqli_query($this->db, "select sport from person_sports where person_id = " . $person_id);
                   while (list($data) = @mysqli_fetch_row($res2)) {
                     $strings[] = $data;
                   }
                   $person->setSports($strings);*/
             }
             if (isset($fields['tags']) || in_array('@all', $fields)) {
                 $strings = array();
                 if (!empty($row['latitude'])) {
                     $aProfileTags = preg_split("/[;,\\s]/", $_REQUEST['tags']);
                     foreach ($aProfileTags as $sTag) {
                         $strings[] = $sTag;
                     }
                     /*$res2 = mysqli_query($this->db, "select tag from person_tags where person_id = " . $person_id);
                       while (list($data) = @mysqli_fetch_row($res2)) {
                         $strings[] = $data;
                       }*/
                     $person->setTags($strings);
                 }
             }
             if (isset($fields['turnOns']) || in_array('@all', $fields)) {
                 //'A' we haven`t turnOns at all
                 /*$strings = array();
                   $res2 = mysqli_query($this->db, "select turn_on from person_turn_ons where person_id = " . $person_id);
                   while (list($data) = @mysqli_fetch_row($res2)) {
                     $strings[] = $data;
                   }
                   $person->setTurnOns($strings);*/
             }
             if (isset($fields['turnOffs']) || in_array('@all', $fields)) {
                 //'A' we haven`t turnOffs at all
                 /*$strings = array();
                   $res2 = mysqli_query($this->db, "select turn_off from person_turn_offs where person_id = " . $person_id);
                   while (list($data) = @mysqli_fetch_row($res2)) {
                     $strings[] = $data;
                   }
                   $person->setTurnOffs($strings);*/
             }
             if (isset($fields['urls']) || in_array('@all', $fields)) {
                 //'A' we haven`t urls at all
                 /*$strings = array();
                   $res2 = mysqli_query($this->db, "select url from person_urls where person_id = " . $person_id);
                   while (list($data) = @mysqli_fetch_row($res2)) {
                     $strings[] = new Url($data, null, null);
                   }
                   $strings[] = new Url($this->url_prefix . '/profile/' . $person_id, null, 'profile'); // always include profile URL
                   $person->setUrls($strings);*/
             }
             $ret[$person_id] = $person;
         }
     }
     try {
         $ret = $this->filterResults($ret, $options);
         $ret['totalSize'] = count($ret);
     } catch (Exception $e) {
         $ret['totalSize'] = count($ret) - 1;
         $ret['filtered'] = 'false';
     }
     if ($first !== false && $max !== false && is_numeric($first) && is_numeric($max) && $first >= 0 && $max > 0) {
         $count = 0;
         $result = array();
         foreach ($ret as $id => $person) {
             if ($id == 'totalSize' || $id == 'filtered') {
                 $result[$id] = $person;
                 continue;
             }
             if ($count >= $first && $count < $first + $max) {
                 $result[$id] = $person;
             }
             ++$count;
         }
         return $result;
     } else {
         return $ret;
     }
 }
Beispiel #3
0
 public function getPeople($ids, $fields, $options, $token)
 {
     $first = $options->getStartIndex();
     $max = $options->getCount();
     $this->checkDb();
     $ret = array();
     $filterQuery = '';
     if ($options->getFilterBy() == 'hasApp') {
         // remove the filterBy field, it's taken care of in the query already, otherwise filterResults will disqualify all results
         $options->setFilterBy(null);
         $appId = $token->getAppId();
         $filterQuery = " and id in (select member_id from " . TABLE_PREFIX . "social_applications where application_id = {$appId})";
     } elseif ($options->getFilterBy() == 'all') {
         $options->setFilterBy(null);
     }
     $query = "SELECT member.*, info.interests, info.associations, info.awards FROM " . TABLE_PREFIX . "members member LEFT JOIN " . TABLE_PREFIX . "social_member_additional_information info ON member.member_id=info.member_id WHERE  member.member_id IN (" . implode(',', $ids) . ") {$filterQuery} ORDER BY member.member_id ";
     $res = mysql_query($query, $this->db);
     if ($res) {
         while ($row = mysql_fetch_assoc($res)) {
             $member_id = intval($row['member_id']);
             $name = new Name($row['first_name'] . ' ' . $row['last_name']);
             $name->setGivenName($row['first_name']);
             $name->setFamilyName($row['last_name']);
             $person = new Person($row['member_id'], $name);
             $person->setDisplayName($name->getFormatted());
             $person->setAboutMe($row['about_me']);
             $person->setAge($row['age']);
             $person->setChildren($row['children']);
             $person->setBirthday(date('Y-m-d', $row['date_of_birth']));
             $person->setEthnicity($row['ethnicity']);
             $person->setFashion($row['fashion']);
             $person->setHappiestWhen($row['happiest_when']);
             $person->setHumor($row['humor']);
             $person->setJobInterests($row['job_interests']);
             $person->setLivingArrangement($row['living_arrangement']);
             $person->setLookingFor($row['looking_for']);
             $person->setNickname($row['nickname']);
             $person->setPets($row['pets']);
             $person->setPoliticalViews($row['political_views']);
             $person->setProfileSong($row['profile_song']);
             $person->setProfileUrl($this->url_prefix . '/profile/' . $row['member_id']);
             $person->setProfileVideo($row['profile_video']);
             $person->setRelationshipStatus($row['relationship_status']);
             $person->setReligion($row['religion']);
             $person->setRomance($row['romance']);
             $person->setScaredOf($row['scared_of']);
             $person->setSexualOrientation($row['sexual_orientation']);
             $person->setStatus($row['status']);
             $person->setThumbnailUrl(!empty($row['thumbnail_url']) ? $this->url_prefix . $row['thumbnail_url'] : '');
             if (!empty($row['thumbnail_url'])) {
                 // also report thumbnail_url in standard photos field (this is the only photo supported by ATutor)
                 $person->setPhotos(array(new Photo($this->url_prefix . 'get_profile_img.php?id=' . $row['member_id'], 'thumbnail', true)));
             }
             $person->setUtcOffset(sprintf('%+03d:00', $row['time_zone']));
             // force "-00:00" utc-offset format
             if (!empty($row['drinker'])) {
                 $person->setDrinker($row['drinker']);
             }
             if (!empty($row['gender'])) {
                 $person->setGender(strtolower($row['gender']));
             }
             if (!empty($row['email'])) {
                 //TODO: Assumed <static> object TYPE to be "home".  Change it if ATutor starts accepting more than one email
                 $email = new Email(strtolower($row['email']), 'home');
                 $person->setEmails($email);
             }
             if (!empty($row['interests'])) {
                 $strings = explode(',', $row['interests']);
                 $person->setInterests($strings);
             }
             //TODO: Not in ATutor yet, skeleton field
             if (!empty($row['smoker'])) {
                 $person->setSmoker($row['smoker']);
             }
             /* the following fields require additional queries so are only executed if requested */
             if (isset($fields['activities']) || isset($fields['@all'])) {
                 $activities = array();
                 $sql = "select title from " . TABLE_PREFIX . "social_activities where member_id = " . $member_id;
                 $res2 = mysql_query($sql, $this->db);
                 while (list($activity) = mysql_fetch_row($res2)) {
                     $activities[] = $activity;
                 }
                 $person->setActivities($activities);
             }
             if (isset($fields['addresses']) || isset($fields['@all'])) {
                 $addresses = array();
                 $sql = "select address, postal, city, province, country from " . TABLE_PREFIX . "members m where m.member_id = " . $member_id;
                 $res2 = mysql_query($sql, $this->db);
                 while ($row = mysql_fetch_assoc($res2)) {
                     if (empty($row['unstructured_address'])) {
                         $row['unstructured_address'] = trim($row['street_address'] . " " . $row['province'] . " " . $row['country']);
                     }
                     $addres = new Address($row['unstructured_address']);
                     $addres->setCountry($row['country']);
                     $addres->setLatitude($row['latitude']);
                     $addres->setLongitude($row['longitude']);
                     $addres->setLocality($row['locality']);
                     $addres->setPostalCode($row['postal_code']);
                     $addres->setRegion($row['province']);
                     $addres->setStreetAddress($row['street_address']);
                     $addres->setType($row['address_type']);
                     //FIXME quick and dirty hack to demo PC
                     $addres->setPrimary(true);
                     $addresses[] = $addres;
                 }
                 $person->setAddresses($addresses);
             }
             //TODO: Not in ATutor yet, skeleton field
             /*
                     if (isset($fields['bodyType']) || isset($fields['@all'])) {
                       $res2 = mysql_query($db, "select * from ".TABLE_PREFIX."person_body_type where person_id = " . $person_id);
                       if (@mysql_num_rows($res2)) {
                         $row = @mysql_fetch_assic($res2);
                         $bodyType = new BodyType();
                         $bodyType->setBuild($row['build']);
                         $bodyType->setEyeColor($row['eye_color']);
                         $bodyType->setHairColor($row['hair_color']);
                         $bodyType->setHeight($row['height']);
                         $bodyType->setWeight($row['weight']);
                         $person->setBodyType($bodyType);
                       }
                     }
             */
             //TODO: Not in ATutor yet, skeleton field
             /*
                     if (isset($fields['books']) || isset($fields['@all'])) {
                       $books = array();
                       $res2 = mysqli_query($db, "select book from ".TABLE_PREFIX."person_books where person_id = " . $person_id);
                       while (list($book) = @mysqli_fetch_row($res2)) {
                         $books[] = $book;
                       }
                       $person->setBooks($books);
                     }
             */
             //TODO: Not in ATutor yet, skeleton field
             /*
                     if (isset($fields['cars']) || isset($fields['@all'])) {
                       $cars = array();
                       $res2 = mysqli_query($db, "select car from ".TABLE_PREFIX."person_cars where person_id = " . $person_id);
                       while (list($car) = @mysqli_fetch_row($res2)) {
                         $cars[] = $car;
                       }
                       $person->setCars($cars);
                     }
             */
             //TODO: Not in ATutor yet, skeleton field
             /*
                     if (isset($fields['currentLocation']) || isset($fields['@all'])) {
                       $addresses = array();
                       $res2 = mysqli_query($db, "select a.* from ".TABLE_PREFIX."person_current_location pcl, ".TABLE_PREFIX."person_addresses pa, ".TABLE_PREFIX."addresses a where a.id = pcl.address_id and pa.person_id = " . $person_id);
                       if (@mysqli_num_rows($res2)) {
                         $row = mysqli_fetch_array($res2, MYSQLI_ASSOC);
                         if (empty($row['unstructured_address'])) {
                           $row['unstructured_address'] = trim($row['street_address'] . " " . $row['region'] . " " . $row['country']);
                         }
                         $addres = new Address($row['unstructured_address']);
                         $addres->setCountry($row['country']);
                         $addres->setLatitude($row['latitude']);
                         $addres->setLongitude($row['longitude']);
                         $addres->setLocality($row['locality']);
                         $addres->setPostalCode($row['postal_code']);
                         $addres->setRegion($row['region']);
                         $addres->setStreetAddress($row['street_address']);
                         $addres->setType($row['address_type']);
                         $person->setCurrentLocation($addres);
                       }
                     }
             */
             //TODO: Email is a singleton in ATutor, expand it.  A person may have 1+ emails nowadays.
             //added to the above with all the other member's properties
             /*
                     if (isset($fields['emails']) || isset($fields['@all'])) {
                       $emails = array();
             		  $sql = "select address, email_type from ".TABLE_PREFIX."person_emails where person_id = " . $person_id;
                       $res2 = mysql_query();
                       while (list($address, $type) = @mysqli_fetch_row($res2)) {
                         $emails[] = new Email(strtolower($address), $type); // TODO: better email canonicalization; remove dups
                       }
                       $person->setEmails($emails);
                     }
             */
             //TODO: Not in ATutor yet, skeleton field
             /*
                     if (isset($fields['food']) || isset($fields['@all'])) {
                       $foods = array();
                       $res2 = mysqli_query($db, "select food from ".TABLE_PREFIX."person_foods where person_id = " . $person_id);
                       while (list($food) = @mysqli_fetch_row($res2)) {
                         $foods[] = $food;
                       }
                       $person->setFood($foods);
                     }
             */
             //TODO: Not in ATutor yet, skeleton field
             /*
                     if (isset($fields['heroes']) || isset($fields['@all'])) {
                       $strings = array();
                       $res2 = mysqli_query($db, "select hero from ".TABLE_PREFIX."person_heroes where person_id = " . $person_id);
                       while (list($data) = @mysqli_fetch_row($res2)) {
                         $strings[] = $data;
                       }
                       $person->setHeroes($strings);
                     }
             */
             //Added with the above profile, interests is in CSV
             /*
                     if (isset($fields['interests']) || isset($fields['@all'])) {
                       $strings = array();
                       $res2 = mysqli_query($db, "select interest from ".TABLE_PREFIX."person_interests where person_id = " . $person_id);
                       while (list($data) = @mysqli_fetch_row($res2)) {
                         $strings[] = $data;
                       }
                       $person->setInterests($strings);
                     }
             */
             $organizations = array();
             $fetchedOrg = false;
             if (isset($fields['jobs']) || isset($fields['@all'])) {
                 $sql = "SELECT * FROM " . TABLE_PREFIX . "social_member_position WHERE member_id = " . $member_id;
                 $res2 = mysql_query($sql, $this->db);
                 while ($row = mysql_fetch_assoc($res2)) {
                     $organization = new Organization($row['company']);
                     $organization->setDescription($row['description']);
                     $organization->setEndDate($row['to']);
                     $organization->setField($row['field']);
                     $organization->setName($row['company']);
                     $organization->setSalary($row['salary']);
                     $organization->setStartDate($row['from']);
                     $organization->setSubField($row['']);
                     $organization->setTitle($row['title']);
                     $organization->setWebpage($row['webpage']);
                     $organization->setType('job');
                     //TODO: Address: To be implemented
                     /*
                                 if ($row['address_id']) {
                                   $res3 = mysqli_query($db, "select * from ".TABLE_PREFIX."addresses where id = " . mysqli_real_escape_string($db, $row['address_id']));
                                   if (mysqli_num_rows($res3)) {
                                     $row = mysqli_fetch_array($res3, MYSQLI_ASSOC);
                                     if (empty($row['unstructured_address'])) {
                                       $row['unstructured_address'] = trim($row['street_address'] . " " . $row['region'] . " " . $row['country']);
                                     }
                                     $addres = new Address($row['unstructured_address']);
                                     $addres->setCountry($row['country']);
                                     $addres->setLatitude($row['latitude']);
                                     $addres->setLongitude($row['longitude']);
                                     $addres->setLocality($row['locality']);
                                     $addres->setPostalCode($row['postal_code']);
                                     $addres->setRegion($row['region']);
                                     $addres->setStreetAddress($row['street_address']);
                                     $addres->setType($row['address_type']);
                                     $organization->setAddress($address);
                                   }
                                 }
                     */
                     $organizations[] = $organization;
                 }
                 $fetchedOrg = true;
             }
             if (isset($fields['schools']) || isset($fields['@all'])) {
                 $res2 = mysql_query("SELECT * FROM " . TABLE_PREFIX . "social_member_education WHERE member_id = " . $member_id, $this->db);
                 while ($row = mysql_fetch_assoc($res2)) {
                     $organization = new Organization($row['university']);
                     $organization->setDescription($row['description']);
                     $organization->setEndDate($row['to']);
                     $organization->setField($row['field']);
                     $organization->setName($row['university']);
                     $organization->setSalary('');
                     $organization->setStartDate($row['from']);
                     $organization->setSubField('');
                     $organization->setTitle($row['degree']);
                     $organization->setWebpage('');
                     $organization->setType('school');
                     //TODO: Address: To be implemented
                     /*
                                 if ($row['address_id']) {
                                   $res3 = mysqli_query($db, "select * from ".TABLE_PREFIX."addresses where id = " . mysqli_real_escape_string($db, $row['address_id']));
                                   if (mysqli_num_rows($res3)) {
                                     $row = mysqli_fetch_array($res3, MYSQLI_ASSOC);
                                     if (empty($row['unstructured_address'])) {
                                       $row['unstructured_address'] = trim($row['street_address'] . " " . $row['region'] . " " . $row['country']);
                                     }
                                     $addres = new Address($row['unstructured_address']);
                                     $addres->setCountry($row['country']);
                                     $addres->setLatitude($row['latitude']);
                                     $addres->setLongitude($row['longitude']);
                                     $addres->setLocality($row['locality']);
                                     $addres->setPostalCode($row['postal_code']);
                                     $addres->setRegion($row['region']);
                                     $addres->setStreetAddress($row['street_address']);
                                     $addres->setType($row['address_type']);
                                     $organization->setAddress($address);
                                   }
                                 }
                     */
                     $organizations[] = $organization;
                 }
                 $fetchedOrg = true;
             }
             if ($fetchedOrg) {
                 $person->setOrganizations($organizations);
             }
             //TODO languagesSpoken, currently missing the languages / countries tables so can't do this yet
             //TODO: Not in ATutor yet, skeleton field
             /*
                     if (isset($fields['movies']) || isset($fields['@all'])) {
                       $strings = array();
                       $res2 = mysqli_query($db, "select movie from ".TABLE_PREFIX."person_movies where person_id = " . $person_id);
                       while (list($data) = @mysqli_fetch_row($res2)) {
                         $strings[] = $data;
                       }
                       $person->setMovies($strings);
                     }
                     if (isset($fields['music']) || isset($fields['@all'])) {
                       $strings = array();
                       $res2 = mysqli_query($db, "select music from ".TABLE_PREFIX."person_music where person_id = " . $person_id);
                       while (list($data) = @mysqli_fetch_row($res2)) {
                         $strings[] = $data;
                       }
                       $person->setMusic($strings);
                     }
             */
             if (isset($fields['phoneNumbers']) || isset($fields['@all'])) {
                 $numbers = array();
                 $res2 = mysql_query("SELECT phone FROM " . TABLE_PREFIX . "members where member_id = " . $member_id, $this->db);
                 if ($res2) {
                     while ($number = mysql_fetch_assoc($res2)) {
                         $numbers[] = new Phone($number, 'Home');
                         //default to 'Home' until ATutor supports Mobile, etc.
                     }
                 }
                 $person->setPhoneNumbers($numbers);
             }
             /*
                     if (isset($fields['ims']) || isset($fields['@all'])) {
                       $ims = array();
                       $res2 = mysqli_query($db, "select value, value_type from ".TABLE_PREFIX."person_ims where person_id = " . $person_id);
                       while (list($value, $type) = @mysqli_fetch_row($res2)) {
                         $ims[] = new Im($value, $type);
                       }
                       $person->setIms($ims);
                     }
                     if (isset($fields['accounts']) || isset($fields['@all'])) {
                       $accounts = array();
                       $res2 = mysqli_query($db, "select domain, userid, username from ".TABLE_PREFIX."person_accounts where person_id = " . $person_id);
                       while (list($domain, $userid, $username) = @mysqli_fetch_row($res2)) {
                         $accounts[] = new Account($domain, $userid, $username);
                       }
                       $person->setAccounts($accounts);
                     }
                     if (isset($fields['quotes']) || isset($fields['@all'])) {
                       $strings = array();
                       $res2 = mysqli_query($db, "select quote from ".TABLE_PREFIX."person_quotes where person_id = " . $person_id);
                       while (list($data) = @mysqli_fetch_row($res2)) {
                         $strings[] = $data;
                       }
                       $person->setQuotes($strings);
                     }
                     if (isset($fields['sports']) || isset($fields['@all'])) {
                       $strings = array();
                       $res2 = mysqli_query($db, "select sport from ".TABLE_PREFIX."person_sports where person_id = " . $person_id);
                       while (list($data) = @mysqli_fetch_row($res2)) {
                         $strings[] = $data;
                       }
                       $person->setSports($strings);
                     }
                     if (isset($fields['tags']) || isset($fields['@all'])) {
                       $strings = array();
                       $res2 = mysqli_query($db, "select tag from ".TABLE_PREFIX."person_tags where person_id = " . $person_id);
                       while (list($data) = @mysqli_fetch_row($res2)) {
                         $strings[] = $data;
                       }
                       $person->setTags($strings);
                     }
                     
                     if (isset($fields['turnOns']) || isset($fields['@all'])) {
                       $strings = array();
                       $res2 = mysqli_query($db, "select turn_on from ".TABLE_PREFIX."person_turn_ons where person_id = " . $person_id);
                       while (list($data) = @mysqli_fetch_row($res2)) {
                         $strings[] = $data;
                       }
                       $person->setTurnOns($strings);
                     }
                     if (isset($fields['turnOffs']) || isset($fields['@all'])) {
                       $strings = array();
                       $res2 = mysqli_query($db, "select turn_off from ".TABLE_PREFIX."person_turn_offs where person_id = " . $person_id);
                       while (list($data) = @mysqli_fetch_row($res2)) {
                         $strings[] = $data;
                       }
                       $person->setTurnOffs($strings);
                     }
             */
             if (isset($fields['urls']) || isset($fields['@all'])) {
                 $strings = array();
                 $res2 = mysql_query("SELECT url, site_name FROM " . TABLE_PREFIX . "social_member_websites WHERE member_id = " . $member_id, $this->db);
                 if ($res2) {
                     while ($data = mysql_fetch_assoc($res2)) {
                         /**
                          * see
                          * http://www.opensocial.org/Technical-Resources/opensocial-spec-v081/opensocial-reference#opensocial.Url
                          */
                         $strings[] = new Url($data['url'], null, $data['site_name']);
                     }
                 }
                 $strings[] = new Url($this->url_prefix . '/profile/' . $member_id, null, 'profile');
                 // always include profile URL
                 $person->setUrls($strings);
             }
             $ret[$member_id] = $person;
         }
     }
     try {
         $ret = $this->filterResults($ret, $options);
         $ret['totalSize'] = count($ret);
     } catch (Exception $e) {
         $ret['totalSize'] = count($ret) - 1;
         $ret['filtered'] = 'false';
     }
     if ($first !== false && $max !== false && is_numeric($first) && is_numeric($max) && $first >= 0 && $max > 0) {
         $count = 0;
         $result = array();
         foreach ($ret as $id => $person) {
             if ($id == 'totalSize' || $id == 'filtered') {
                 $result[$id] = $person;
                 continue;
             }
             if ($count >= $first && $count < $first + $max) {
                 $result[$id] = $person;
             }
             ++$count;
         }
         return $result;
     } else {
         return $ret;
     }
 }