* @return array Items (see above) - Returns false if total failure.
*
*/
- public function modelAction ($search = false)
+ public function modelAction ($request = 'onMap', $search = false, $searchText = '')
{
$items = array();
// Do sanity check on supplied data
- if (!is_array($search) || count($search) <= 0) {
+ if ($request == 'onMap' && (!is_array($search) || count($search) <= 0)) {
return false;
}
- // Build query where clause for each search area
- $latLonWhereForEventLoc = '( ';
- $latLonWhereForMembLoc = '( ';
- $or = '';
- foreach ($search as $area) {
- $latLonWhereForEventLoc .= " $or ( (L.lat BETWEEN ".$area['latMin']." AND ".$area['latMax'].") AND (L.lon BETWEEN ".$area['lonMin']." AND ".$area['lonMax'].") ) ";
- $latLonWhereForMembLoc .= " $or ( (I.lat BETWEEN ".$area['latMin']." AND ".$area['latMax'].") AND (I.lon BETWEEN ".$area['lonMin']." AND ".$area['lonMax'].") ) ";
- $or = 'OR';
+ // If this is an "onMap" request build query where clause for each search area - otherwise it's anywhere
+ $latLonWhereForEventLoc = '';
+ $latLonWhereForMembLoc = '';
+ if ($request == 'onMap') {
+
+ $latLonWhereForEventLoc = ' AND ( ';
+ $latLonWhereForMembLoc = ' AND ( ';
+ $or = '';
+ foreach ($search as $area) {
+ $latLonWhereForEventLoc .= " $or ( (L.lat BETWEEN ".$area['latMin']." AND ".$area['latMax'].") AND (L.lon BETWEEN ".$area['lonMin']." AND ".$area['lonMax'].") ) ";
+ $latLonWhereForMembLoc .= " $or ( (I.lat BETWEEN ".$area['latMin']." AND ".$area['latMax'].") AND (I.lon BETWEEN ".$area['lonMin']." AND ".$area['lonMax'].") ) ";
+ $or = 'OR';
+ }
+ $latLonWhereForEventLoc .= ')';
+ $latLonWhereForMembLoc .= ')';
+
+ }
+
+ $testWhere = '';
+ if ($searchText != '') {
+ $textWhere .= "
+ AND (
+ E.name like '%".addslashes($searchText)."%'
+ OR E.descr like '%".addslashes($searchText)."%'
+ )
+ ";
}
- $latLonWhereForEventLoc .= ')';
- $latLonWhereForMembLoc .= ')';
// Determine first and last dates to display
$dateFrom = "2016-11-22 00:00:00";
WHERE event = E.id
AND active
) > '$dateTo'
- AND $latLonWhereForEventLoc
+ $latLonWhereForEventLoc
+ $textWhere
+
;";
$eventsEventLocations = $this->wpdb->get_results($sql, ARRAY_A);
//trigger_error(print_r($eventsEventLocations,1), E_USER_NOTICE);
WHERE event = E.id
AND active
) > '$dateTo'
- AND $latLonWhereForMembLoc
+ $latLonWhereForEventLoc
+ $textWhere
;";
+
$eventsMemberLocations = $this->wpdb->get_results($sql, ARRAY_A);
// Merge both arrays into one to simplify further processing
- $events = array_merge($eventsEventLocations, $eventsMemberLocations);
+ $eventsData = array_merge($eventsEventLocations, $eventsMemberLocations);
// Rebuild data with correct array format for map items
- if (is_array($events) && count($events) > 0) {
- foreach ($events as $k=>$v) {
+ $events = array();
+ if (is_array($eventsData) && count($eventsData) > 0) {
+ foreach ($eventsData as $k=>$v) {
// Get any categories for this event
$cats = array();
;";
$eventCats = $this->wpdb->get_results($sql, ARRAY_A);
- $events[$k] = array(
+ // Add to results - Key is {type}.{event ID}
+ $events['Event'+$v['id']] = array(
'type' => 'Event',
'id' => $v['id'],
'lat' => $v['lat'],
* The array supplied is in the following standardized format. This format is
* used for all generic map items aggregated from multiple sources.
*
+ * 'request' What type of request is being made - Request only
+ * 'filter' A string filter to use to limit results - Request only
+ * 'area' A set of lat/lon areas to get results for (if request = 'onMap') - Request only
+ * If false then get all results without regard as to where they are.
+ * 'sources' An array of source information for what type of item and which add-on - Each source adds one entry here
+ * 'mapItems' Array of new map items to return to NearMe - Each source adds one or more map items here
+ *
* array(
- * search => array(
+ * 'request' => {'onMap', 'anywhere'}
+ * 'filter' => {some search string}
+ * 'area' => array(
* // First area to search
* array(
* 'latMax' => {lat at North end of area},
* ),
* // Additional areas
* ),
- * mapItems => array(
+ * 'sources' => array(
+ * addOn' => {addOn slug},
+ * 'type' => {text name for the marker type (i.e. Member, ...)}
+ * ),
+ * 'mapItems' => array(
* array(
- * 'type' => {type of item, i.e. 'member', 'event', ...},
- * 'id' => {ID of item for reference},
- * 'lat' => {Latitude},
- * 'lon' => {Longitude},
- * 'name' => {Name of item},
- * 'addr1' => {Address line 1 of location},
- * 'addr2' => {Address line 2 of location},
- * 'city' => {City of location},
- * 'state' => {State code of location},
- * 'zip' => {Postal Code of location},
- * 'phone' => {Contact phone number},
- * 'email' => {Contact E-Mail address},
- * 'url' => {URL of item},
- * 'detailPage' => {URL of detail page, if available},
- * 'region' => {Region name, if available},
- * 'category' => {Category name if available},
- * 'description'=> {Description},
- * 'shortDescr' => {Short Description}
+ * 'type' => {type of item, i.e. 'member', 'event', ...},
+ * 'id' => {ID of item for reference},
+ * 'lat' => {Latitude},
+ * 'lon' => {Longitude},
+ * 'name' => {Name of item},
+ * 'loc_name' => {Name of Location},
+ * 'addr1' => {Address line 1 of location},
+ * 'addr2' => {Address line 2 of location},
+ * 'city' => {City of location},
+ * 'state' => {State code of location},
+ * 'zip' => {Postal Code of location},
+ * 'phone' => {Contact phone number},
+ * 'email' => {Contact E-Mail address},
+ * 'url' => {URL of item},
+ * 'region' => {Region name, if available},
+ * 'categories' => {array of categories - i.e. array( 0 = array( id => {id}, name => {name}), ... )
+ * 'descr' => {Description},
+ * 'short_descr' => {Short Description},
+ * 'detail_page' => {URL of detail page, if available},
+ * 'dates' => {Text stating date, dates, or date range},
+ * 'times' => {Text stating time, times, or time range}
* )
* )
* )
// Call dedicated model to perform search
include_once GLM_MEMBERS_EVENTS_PLUGIN_PATH . '/models/front/events/eventDataByLatLon.php';
$MapItems = new GlmMembersFront_events_eventDataByLatLon($this->wpdb, $this->config);
- $mapItems = $MapItems->modelAction($data['search']);
+ $mapItems = $MapItems->modelAction($data['request'], $data['area'], $data['filter']);
// Add the info on this source
$data['sources'][GLM_MEMBERS_EVENTS_PLUGIN_SLUG] = array(