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; }
/** * Tests Organization->setWebpage() */ public function testSetWebpage() { $this->Organization->setWebpage('webpage'); $this->assertEquals('webpage', $this->Organization->webpage); }
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; } }