private function convertOrganization($row, $type)
 {
     $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->setType($type);
     $organization->setWebpage($row['webpage']);
     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);
             $address = $this->convertAddress($row);
             $organization->setLocation($address);
         }
     }
     return $organization;
 }
示例#2
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;
     }
 }