function getLatLongFromAddressGeoCoder($address) { $addressExp = explode(",", $address); if (count($addressExp) == 3) { $addr = urlencode($addressExp[0]); $city = urlencode($addressExp[1]); $stateZip = explode(" ", $addressExp[2]); $state = urlencode($stateZip[0]); $zip = urlencode($stateZip[1]); //$address = urlencode($address); $url = "http://geocoder.maplarge.com/geocoder/json?address={$addr}&city={$city}&state={$state}&zip={$zip}&country=USA"; //$details_url = "http://maps.googleapis.com/maps/api/geocode/json?address=".$address."&key=AIzaSyAehpaOE86x5u7jBMa3TlhjzDwZ4_6rU68"; $data = getCachedContent($url, get_data($url)); $data = json_decode($data, true); // If Status Code is ZERO_RESULTS, OVER_QUERY_LIMIT, REQUEST_DENIED or INVALID_REQUEST if (!$data['lat']) { return null; } $lat = $data['lat']; $lng = $data['lng']; $response = array(); $response['latitude'] = $lat; $response['longitude'] = $lng; } else { $response['latitude'] = 0.0; $response['longitude'] = 0.0; } return $response; }
function googleImageSearch($searchQueryUrl) { $randomIP = long2ip(rand(0, "4294967295")); $url = $searchQueryUrl . "&rsz=2&imgsz=medium&userip={$randomIP}"; $data = getCachedContent($searchQueryUrl . "1", get_data($url)); $json = json_decode($data); $imgUrl = $json->responseData->results[0]->unescapedUrl; return $imgUrl; }
function stubhubAPI_findEvents($queryString, $optionsArray) { // Filter Parameters $q = urlencode(strtolower($queryString)); $userLat = $optionsArray['userLat']; $userLong = $optionsArray['userLng']; $filterCity = $optionsArray['city']; $filterState = $optionsArray['state']; $filterDate = $optionsArray['date']; $filterDesc = $optionsArray['desc']; $filterRadius = $optionsArray['radius']; $endpoint_stubhub = "http://publicfeed.stubhub.com/listingCatalog/select/"; $url = "{$endpoint_stubhub}?q={$q}&wt=json&stubhubDocumentType=event&rows=50&city={$filterCity}"; $data = $data = getCachedContent($url, get_data($url)); //get_data($url); $json = json_decode($data); $num = $json->response->numFound; $gEvents = array(); $i = 0; // Loop through Json Results from CURL resuest while ($i < $num) { $externalId = empty($json->response->docs[$i]->event_id) ? null : $json->response->docs[$i]->event_id; $city = empty($json->response->docs[$i]->city) ? null : $json->response->docs[$i]->city; $state = empty($json->response->docs[$i]->state) ? null : $json->response->docs[$i]->state; $date = empty($json->response->docs[$i]->event_date) ? null : substr($json->response->docs[$i]->event_date, 0, -10); $desc = empty($json->response->docs[$i]->description) ? null : $json->response->docs[$i]->description; $title = empty($json->response->docs[$i]->title) ? null : $json->response->docs[$i]->title; $venueExternalId = empty($json->response->docs[$i]->venue_config_id) ? null : $json->response->docs[$i]->venue_config_id; $venueName = empty($json->response->docs[$i]->venue_name) ? null : $json->response->docs[$i]->venue_name; $venueAddress = empty($json->response->docs[$i]->addr1) ? null : $json->response->docs[$i]->addr1; $country = empty($json->response->docs[$i]->country) ? null : $json->response->docs[$i]->country; $postalCode = empty($json->response->docs[$i]->zip) ? null : $json->response->docs[$i]->zip; $defaultDomain = empty($json->response->docs[$i]->defaultDomain) ? "http://stubhub.com" : $json->response->docs[$i]->defaultDomain; $venueExternalUrl = empty($json->response->docs[$i]->venueDetailUrlPath) ? null : "http://" . $defaultDomain . "/" . $json->response->docs[$i]->venueDetailUrlPath; $latitude = empty($json->response->docs[$i]->latitude) ? null : $json->response->docs[$i]->latitude; $longitude = empty($json->response->docs[$i]->longitude) ? null : $json->response->docs[$i]->longitude; $timezone = empty($json->response->docs[$i]->jdk_timezone) ? null : $json->response->docs[$i]->jdk_timezone; $startTime = empty($json->response->docs[$i]->event_date) ? null : str_replace("T", " ", substr($json->response->docs[$i]->event_date, 0, -1)); $minPrice = empty($json->response->docs[$i]->minPrice) ? null : $json->response->docs[$i]->minPrice; $maxPrice = empty($json->response->docs[$i]->maxPrice) ? null : $json->response->docs[$i]->maxPrice; $channel = empty($json->response->docs[$i]->channel) ? null : strtolower($json->response->docs[$i]->channel); $eventExternalUrl = empty($json->response->docs[$i]->urlpath) ? null : "http://" . $defaultDomain . "/" . $json->response->docs[$i]->urlpath; $imageExternalUrl = empty($json->response->docs[$i]->image_url) ? null : $json->response->docs[$i]->image_url; $geoParent = empty($json->response->docs[$i]->geography_parent) ? null : $json->response->docs[$i]->geography_parent; $imageExternalUrlLong = empty($json->response->docs[$i]->image_url) ? null : "http://cache1.stubhubstatic.com/data/venue_maps/" . $geoParent . "/" . $json->response->docs[$i]->image_url; if (null != $latitude && null != $longitude && null != $userLat && null != $userLong) { $distance = distanceInMiles($userLat, $userLong, $latitude, $longitude); } else { $distance = null; } $currentEvent = true; if (!empty($startTime)) { date_default_timezone_set($timezone); $currentUnixTime = strtotime("now"); $eventUnixTime = strtotime($startTime); $currentEvent = $currentUnixTime > $eventUnixTime ? false : true; } // If no externalId is set, don't pull record. Avoids empty // records from getting pulled. if (!empty($externalId) && $currentEvent) { if (empty($filterCity) || strtolower($filterCity) == strtolower($city)) { if (empty($filterState) || strtolower($filterState) == strtolower($state)) { if (empty($filterDate) || $filterDate == $date) { if (empty($filterDesc) || strpos(strtolower($desc), strtolower($filterDesc)) !== FALSE) { if (empty($filterRadius) || $distance <= $filterRadius && $distance > 0) { $gEvent = new gEvent(); $gEvent->setExternal_id($externalId); $gEvent->setDatasource("stubhub"); $gEvent->setTitle($title); $gEvent->setDescription($desc); $gEvent->setNotes(""); $gEvent->setVenue_external_id($venueExternalId); $gEvent->setVenue_name($venueName); $gEvent->setVenue_address($venueAddress); $gEvent->setCountry_name($country); $gEvent->setState_name($state); $gEvent->setCity_name($city); $gEvent->setPostal_code($postalCode); $gEvent->setVenue_external_url($venueExternalUrl); $gEvent->setLatitude($latitude); $gEvent->setLongitude($longitude); $gEvent->setDistance(number_format((double) $distance, 2, '.', '')); $gEvent->setTimezone($timezone); $gEvent->setTimezone_abbr(convertTimezoneToAbbr($timezone)); $gEvent->setStart_time($startTime); $gEvent->setEnd_time(""); $gEvent->setStart_date_month(convertDateToMonthOptions($startTime)); $gEvent->setStart_date_day(convertDateToDayOptions($startTime, $timezone)); $gEvent->setStart_date_year(convertDateToYearOptions($startTime)); $gEvent->setStart_date_time(convertDateToTimeOptions($startTime)); $gEvent->setPrice_range($minPrice . " - " . $maxPrice); if (substr($gEvent->getPrice_range(), 0, 2) === "0 ") { $gEvent->setIs_free(true); } else { if ($gEvent->getPrice_range() !== null) { $gEvent->setIs_free(false); } } $minorGenre = trim(str_replace("tickets", " ", $channel)); $majorGenre = trim(str_replace("tickets", " ", $channel)); $gEvent->setMinor_genre(array($minorGenre)); $gEvent->setMajor_genre(array($majorGenre)); $gEvent->setEvent_external_url($eventExternalUrl); // Populate image links found $gEventImages = array(); $gImage = new gEventImage(); $searchImageQuery = explode("[", $desc); $searchImageQuery = explode("-", $searchImageQuery[0]); $searchImageQuery = urlencode($searchImageQuery[0]); $searchImageUrl = "https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q={$searchImageQuery}"; $googleImageUrl = googleImageSearch($searchImageUrl); $gImage->setImage_external_url($googleImageUrl); //$gImage->setImage_external_url("https://cdn4.iconfinder.com/data/icons/small-n-flat/24/calendar-128.png"); $gImage->setImage_category("attraction"); array_push($gEventImages, $gImage); if (isset($imageExternalUrl)) { $gImage = new gEventImage(); $gImage->setImage_external_url($imageExternalUrlLong); $gImage->setImage_category("venue"); array_push($gEventImages, $gImage); } $gEvent->setImages($gEventImages); /* //Populate performers found $gEventPerformers = array(); if(isset($json->response->docs[$i]->AttractionName[0])){ $aI = 0; foreach ($json->response->docs[$i]->AttractionName as $performer) { if(isset($performer) && null != $performer && $performer != ""){ $gPerformer = new gEventPerformer; $gPerformer->setPerformer_name($performer); $gPerformer->setPerformer_external_image_url("http://s1.ticketm.net/tm/en-us".$json->response->docs[$i]->AttractionImage[$aI]); array_push($gEventPerformers, $gPerformer); } $aI++; } } $gEvent->setPerformers($gEventPerformers); */ // Push gEvent object onto arraylist of gEvent objects array_push($gEvents, $gEvent); } } } } } } $i++; } return $gEvents; }
<?php $app->get('/events/find/:eventDesc', function ($eventDesc) use($app) { $eventDesc = trim($eventDesc); $model = new findEventsModel($eventDesc, $app); $saveString = $eventDesc . $app->request()->params('userLat') . $app->request()->params('userLng') . $app->request()->params('city') . $app->request()->params('state') . $app->request()->params('date') . $app->request()->params('sources') . $app->request()->params('radius'); $json_response = getCachedContent($saveString, $model->getJsonWithChecksum()); $app->contentType('application/json'); //echo $json_response; $json_response = preg_replace('/\\\\"/', "\"", $json_response); echo $json_response; /* $options = array( 'lifeTime' => 86400, //24 hours 'pearErrorMode' => CACHE_LITE_ERROR_DIE ); $cache = new Cache_Lite($options); $cache->clean(); echo "cache cleaned!"; */ }); $app->get('/events/eventful/:eventDesc', function ($eventDesc) use($app) { $result = true; //eventfulLookupTest(); if ($result) { $json_response = "{result:'good'}"; } else { $json_response = "{result:'bad'}"; } $app->contentType('application/json');
function ticketmasterAPI_findEvents($queryString, $optionsArray) { // Filter Parameters $q = urlencode(strtolower($queryString)); $userLat = $optionsArray['userLat']; $userLong = $optionsArray['userLng']; $filterCity = $optionsArray['city']; $filterState = $optionsArray['state']; $filterDate = $optionsArray['date']; $filterDesc = $optionsArray['desc']; $filterRadius = $optionsArray['radius']; $endpoint_ticketmaster = "http://www.ticketmaster.com/json/search/event"; $url = "{$endpoint_ticketmaster}?q={$queryString}&rows=50&VenueCity={$filterCity}&VenueState={$filterState}"; $data = getCachedContent($url, get_data($url)); //get_data($url); $json = json_decode($data); $num = $json->response->numFound; $gEvents = array(); $i = 0; // Loop through Json Results from CURL resuest while ($i < $num) { $externalId = empty($json->response->docs[$i]->Id) ? null : $json->response->docs[$i]->Id; $city = empty($json->response->docs[$i]->VenueCity) ? null : $json->response->docs[$i]->VenueCity; $state = empty($json->response->docs[$i]->VenueState) ? null : $json->response->docs[$i]->VenueState; $date = empty($json->response->docs[$i]->PostProcessedData->LocalEventDate) ? null : substr($json->response->docs[$i]->PostProcessedData->LocalEventDate, 0, -15); $desc = empty($json->response->docs[$i]->EventName) ? null : $json->response->docs[$i]->EventName; $title = empty($json->response->docs[$i]->EventName) ? null : $json->response->docs[$i]->EventName; $eventInfo = empty($json->response->docs[$i]->EventInfo) ? null : htmlspecialchars($json->response->docs[$i]->EventInfo . "\n\n", ENT_QUOTES); $eventNotes = empty($json->response->docs[$i]->EventNotes) ? null : htmlspecialchars($json->response->docs[$i]->EventNotes, ENT_QUOTES); $venueExternalId = empty($json->response->docs[$i]->VenueId) ? null : $json->response->docs[$i]->VenueId; $venueName = empty($json->response->docs[$i]->VenueName) ? null : $json->response->docs[$i]->VenueName; $venueAddress = empty($json->response->docs[$i]->VenueAddress) ? null : $json->response->docs[$i]->VenueAddress; $country = empty($json->response->docs[$i]->VenueCountry) ? null : $json->response->docs[$i]->VenueCountry; $postalCode = empty($json->response->docs[$i]->VenuePostalCode) ? null : $json->response->docs[$i]->VenuePostalCode; $defaultDomain = "http://ticketmaster.com"; $venueExternalUrl = empty($json->response->docs[$i]->VenueSEOLink) ? null : $defaultDomain . $json->response->docs[$i]->VenueSEOLink; $venueLatLongString = empty($json->response->docs[$i]->VenueLatLong) ? null : $json->response->docs[$i]->VenueLatLong; $timezone = empty($json->response->docs[$i]->Timezone) ? null : $json->response->docs[$i]->Timezone; $startTime = empty($json->response->docs[$i]->PostProcessedData->LocalEventDate) ? null : str_replace("T", " ", substr($json->response->docs[$i]->PostProcessedData->LocalEventDate, 0, -6)); $priceRange = empty($json->response->docs[$i]->PriceRange) ? null : $json->response->docs[$i]->PriceRange; $minPrice = empty($json->response->docs[$i]->minPrice) ? null : $json->response->docs[$i]->minPrice; $maxPrice = empty($json->response->docs[$i]->maxPrice) ? null : $json->response->docs[$i]->maxPrice; $genre = empty($json->response->docs[$i]->Genre[0]) ? null : $json->response->docs[$i]->Genre; $minorGenre = empty($json->response->docs[$i]->MinorGenre[0]) ? null : $json->response->docs[$i]->MinorGenre; $majorGenre = empty($json->response->docs[$i]->MajorGenre[0]) ? null : $json->response->docs[$i]->MajorGenre; $eventSEOName = empty($json->response->docs[$i]->EventSEOName) ? null : $json->response->docs[$i]->EventSEOName; $eventExternalUrl = $defaultDomain . "/" . $eventSEOName . "/event/" . $externalId; $eventExternalAttractionUrl = empty($json->response->docs[$i]->AttractionSEOLink[0]) ? null : "http://ticketmaster.com" . $json->response->docs[$i]->AttractionSEOLink[0]; $currentEvent = true; $distance = 0.0; if (!empty($venueLatLongString)) { $venueLatLong = explode(",", $venueLatLongString); if (null != $venueLatLong[0] && null != $venueLatLong[1] && null != $userLat && null != $userLong) { $distance = distanceInMiles($userLat, $userLong, $venueLatLong[0], $venueLatLong[1]); } } if (!empty($startTime)) { date_default_timezone_set($timezone); $currentUnixTime = strtotime("now"); $eventUnixTime = strtotime($startTime); $currentEvent = $currentUnixTime > $eventUnixTime ? false : true; } // If no externalId is set, don't pull record. Avoids empty // records from getting pulled. if (!empty($externalId) && $currentEvent) { if (empty($filterCity) || strtolower($filterCity) == strtolower($city)) { if (empty($filterState) || strtolower($filterState) == strtolower($state)) { if (empty($filterDate) || $filterDate == $date) { if (empty($filterDesc) || strpos(strtolower($desc), strtolower($filterDesc)) !== FALSE) { if (empty($filterRadius) || $distance <= $filterRadius && $distance > 0) { $gEvent = new gEvent(); $gEvent->setExternal_id($externalId); $gEvent->setDatasource("ticketmaster"); $gEvent->setTitle($title); $gEvent->setDescription($desc); $gEvent->setNotes($eventInfo . $eventNotes); $gEvent->setVenue_external_id($venueExternalId); $gEvent->setVenue_name($venueName); $gEvent->setVenue_address($venueAddress); $gEvent->setCountry_name($country); $gEvent->setState_name($state); $gEvent->setCity_name($city); $gEvent->setPostal_code($postalCode); $gEvent->setVenue_external_url($venueExternalUrl); if (!empty($venueLatLongString)) { $venueLatLong = explode(",", $venueLatLongString); $gEvent->setLatitude((double) $venueLatLong[0]); $gEvent->setLongitude((double) $venueLatLong[1]); $gEvent->setDistance(number_format((double) $distance, 2, '.', '')); } $gEvent->setTimezone($timezone); $gEvent->setTimezone_abbr(convertTimezoneToAbbr($timezone)); $gEvent->setStart_time($startTime); $gEvent->setEnd_time(""); $gEvent->setStart_date_month(convertDateToMonthOptions($startTime)); $gEvent->setStart_date_day(convertDateToDayOptions($startTime, $timezone)); $gEvent->setStart_date_year(convertDateToYearOptions($startTime)); $gEvent->setStart_date_time(convertDateToTimeOptions($startTime)); $gEvent->setPrice_range($priceRange); if (substr($priceRange, 0, 2) === "0 ") { $gEvent->setIs_free(true); } else { if ($gEvent->getPrice_range() !== null) { $gEvent->setIs_free(false); } } $gEvent->setMinor_genre(array_merge($genre, $minorGenre)); $gEvent->setMajor_genre($majorGenre); $gEvent->setEvent_external_url($eventExternalUrl); // Populate image links found $gEventImages = array(); if (!empty($json->response->docs[$i]->AttractionImage[0])) { foreach ($json->response->docs[$i]->AttractionImage as $image) { if (isset($image) && null != $image && $image != "") { $gImage = new gEventImage(); $gImage->setImage_external_url("http://s1.ticketm.net/tm/en-us" . $image); $gImage->setImage_category("attraction"); array_push($gEventImages, $gImage); } } } if (!empty($json->response->docs[$i]->VenueImage)) { $gImage = new gEventImage(); $gImage->setImage_external_url("http://s1.ticketm.net/tm/en-us" . $json->response->docs[$i]->VenueImage); $gImage->setImage_category("venue"); array_push($gEventImages, $gImage); } $gEvent->setImages($gEventImages); //Populate performers found $gEventPerformers = array(); if (!empty($json->response->docs[$i]->AttractionName[0])) { $aI = 0; foreach ($json->response->docs[$i]->AttractionName as $performer) { if (!empty($performer)) { $gPerformer = new gEventPerformer(); $gPerformer->setPerformer_name($performer); $attractionImageUrl = empty($json->response->docs[$i]->AttractionImage[$aI]) ? null : $json->response->docs[$i]->AttractionImage[$aI]; if (!empty($attractionImageUrl)) { $gPerformer->setPerformer_external_image_url("http://s1.ticketm.net/tm/en-us" . $json->response->docs[$i]->AttractionImage[$aI]); } array_push($gEventPerformers, $gPerformer); } $aI++; } } $gEvent->setPerformers($gEventPerformers); // Push gEvent object onto arraylist of gEvent objects array_push($gEvents, $gEvent); } } } } } } $i++; } return $gEvents; }
public function generateItems() { $filters['userLat'] = $this->app->request->params('userLat'); $filters['userLng'] = $this->app->request->params('userLng'); $filters['city'] = $this->app->request()->params('city'); $filters['state'] = $this->app->request()->params('state'); $filters['date'] = $this->app->request()->params('date'); $filters['desc'] = $this->app->request()->params('desc'); $filters['sources'] = $this->app->request()->params('sources'); $filters['radius'] = $this->app->request()->params('radius'); $searchArray = array('city' => $filters['city'], 'state' => $filters['state'], 'date' => $filters['date'], 'desc' => $this->eventDesc, 'sources' => $filters['sources']); $searchJson = json_encode($searchArray, JSON_FORCE_OBJECT); $dbNeo = new DBHandlerNeo(); $eventSearchRequestId = $dbNeo->isEventSearchRequestExist($searchJson); if ($eventSearchRequestId != null) { //$events = $dbNeo->getEventsByEsrId($eventSearchRequestId); $data = $dbNeo->findEventsBySearch($this->eventDesc, $filters); if ($data != null) { $events = neo4j_findEvents($this->eventDesc, $filters, $data); } if ($events != null) { $this->items = $events; } else { $this->items = array(); } } if (!empty($filters['sources']) && $eventSearchRequestId == null) { $sourceArr = explode(",", $filters['sources']); $stubhub_results = array(); $ticketmaster_results = array(); $eventful_results = array(); foreach ($sourceArr as $source) { if (strcasecmp($source, "stubhub") == 0) { $saveString = "stubhub" . $this->eventDesc . implode(".", $filters); $stubhub_results = getCachedContent($saveString, stubhubAPI_findEvents($this->eventDesc, $filters)); } if (strcasecmp($source, "ticketMaster") == 0) { $saveString = "ticketmaster" . $this->eventDesc . implode(".", $filters); $ticketmaster_results = getCachedContent($saveString, ticketmasterAPI_findEvents($this->eventDesc, $filters)); } if (strcasecmp($source, "eventful") == 0) { $saveString = "eventful" . $this->eventDesc . implode(".", $filters); $eventful_results = getCachedContent($saveString, eventfulAPI_findEvents($this->eventDesc, $filters)); } } $this->items = array_merge($stubhub_results, $ticketmaster_results, $eventful_results); usort($this->items, 'sortgEventsByDate'); } else { if ($eventSearchRequestId == null) { $saveString = $this->eventDesc . implode(".", $filters); $stubhub_results = getCachedContent($saveString, stubhubAPI_findEvents($this->eventDesc, $filters)); $ticketmaster_results = getCachedContent($saveString, ticketmasterAPI_findEvents($this->eventDesc, $filters)); $eventful_results = getCachedContent($saveString, eventfulAPI_findEvents($this->eventDesc, $filters)); $this->items = array_merge($stubhub_results, $ticketmaster_results, $eventful_results); usort($this->items, 'sortgEventsByDate'); } } if ($eventSearchRequestId == null) { $eventSearchRequestId = $dbNeo->insertEventSearchRequest($searchJson, count($this->items)); $dbNeo->createExternalEventsWithRel($this->items, $eventSearchRequestId); } }