/** * Run the geocoding process. * * @param string Geocoding mode: "missing" or "all" * * @return string HTML code with geocoding results */ protected function geocode($mode) { if ($mode != 'all' && $mode != 'missing') { //wrong mode $message = new t3lib_FlashMessage('Invalid geocoding mode', '', t3lib_FlashMessage::ERROR); return $message->render(); } if ($mode == 'missing') { $where = 'tx_odsosm_lon = 0 AND tx_odsosm_lat = 0'; } else { $where = '1'; } $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'tt_address', $where . ' AND pid = ' . $this->pObj->id); $count = 0; $updated = 0; $html = ''; while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $oldRow = $row; ++$count; if (!tx_odsosm_div::updateAddress($row)) { //not updated continue; } $GLOBALS['TYPO3_DB']->exec_UPDATEquery('tt_address', 'uid = ' . intval($row['uid']), array('tx_odsosm_lat' => $row['lat'], 'tx_odsosm_lon' => $row['lon'])); $err = $GLOBALS['TYPO3_DB']->sql_error(); if ($err) { $message = new t3lib_FlashMessage('SQL error: ' . htmlspecialchars($err), '', t3lib_FlashMessage::ERROR); $html .= $message->render(); } ++$updated; } $message = new t3lib_FlashMessage('Updated ' . $updated . ' of ' . $count . ' address records', '', $updated == $count ? t3lib_FlashMessage::OK : t3lib_FlashMessage::WARNING); $html .= $message->render(); return $html . '<br/><br/>'; }
public function getMainLayers($layers, $backpath = '') { // Main layer $i = 0; $jsMainLayer = ''; foreach ($layers as $layer) { $jsMainLayer .= $this->getLayer($layer, $i, $backpath); $i++; } tx_odsosm_div::addJsFiles($this->scripts); return $jsMainLayer; }
public function getMapBE($layers, $mode, $lat, $lon, $zoom) { $jsMainLayer = $this->getMainLayers($layers, $GLOBALS['BACK_PATH'] . '../'); // Include JS $this->getMapCore($GLOBALS['BACK_PATH'] . '../'); tx_odsosm_div::addJsFiles($this->scripts); // Action switch ($mode) { case 'vector': $action = $this->getJSvectors(); break; default: $action = $this->getJScoordinates(); break; } return 'var map; //complex object of type OpenLayers.Map ' . $action . ' function map(){ ' . $this->getMapMain() . ' ' . $jsMainLayer . ' ' . $this->getMapCenter($lat, $lon, $zoom) . ' mapAction(); }'; }
function processDatamap_postProcessFieldArray($status, $table, $id, &$fieldArray, $obj) { switch ($table) { case 'fe_users': case 'tt_address': $config = tx_odsosm_div::getConfig(array('autocomplete')); // Search coordinates if ($config['autocomplete'] && ($fieldArray['zip'] || $fieldArray['city'] || $fieldArray['address'])) { $address = $obj->datamap[$table][$id]; if ($config['autocomplete'] == 2 || floatval($address['tx_odsosm_lon']) == 0) { $ll = tx_odsosm_div::updateAddress($address); if ($ll) { $fieldArray['tx_odsosm_lon'] = sprintf('%01.6f', $address['lon']); $fieldArray['tx_odsosm_lat'] = sprintf('%01.6f', $address['lat']); if ($address['street']) { $fieldArray['address'] = $address['street']; if ($address['housenumber']) { $fieldArray['address'] .= ' ' . $address['housenumber']; } } if ($address['zip']) { $fieldArray['zip'] = $address['zip']; } if ($address['city']) { $fieldArray['city'] = $address['city']; } if ($address['state'] && $table == 'tt_address') { $fieldArray['region'] = $address['state']; } if ($address['country']) { $fieldArray['country'] = $address['country']; } } } } break; case 'tx_odsosm_track': $filename = PATH_site . 'uploads/tx_odsosm/' . $fieldArray['file']; if ($fieldArray['file'] && file_exists($filename)) { require_once t3lib_extMgm::extPath('ods_osm', 'res/geoPHP/geoPHP.inc'); $polygon = geoPHP::load(file_get_contents($filename), pathinfo($filename, PATHINFO_EXTENSION)); $box = $polygon->getBBox(); $fieldArray['min_lon'] = sprintf('%01.6f', $box['minx']); $fieldArray['min_lat'] = sprintf('%01.6f', $box['miny']); $fieldArray['max_lon'] = sprintf('%01.6f', $box['maxx']); $fieldArray['max_lat'] = sprintf('%01.6f', $box['maxy']); } break; case 'tx_odsosm_marker': if ($fieldArray['icon'] && file_exists(PATH_site . 'uploads/tx_odsosm/' . $fieldArray['icon'])) { $size = getimagesize(PATH_site . 'uploads/tx_odsosm/' . $fieldArray['icon']); $fieldArray['size_x'] = $size[0]; $fieldArray['size_y'] = $size[1]; $fieldArray['offset_x'] = -round($size[0] / 2); $fieldArray['offset_y'] = -$size[1]; } break; case 'tx_odsosm_vector': if ($fieldArray['data']) { $this->lon = array(); $this->lat = array(); $vector = json_decode($fieldArray['data']); foreach ($vector->geometry->coordinates[0] as $coordinates) { $this->lon[] = $coordinates[0]; $this->lat[] = $coordinates[1]; } } $fieldArray['min_lon'] = sprintf('%01.6f', min($this->lon)); $fieldArray['min_lat'] = sprintf('%01.6f', min($this->lat)); $fieldArray['max_lon'] = sprintf('%01.6f', max($this->lon)); $fieldArray['max_lat'] = sprintf('%01.6f', max($this->lat)); break; } }
function extractGroup($record_ids) { // get pages if (!empty($record_ids['pages'])) { $tables = array('fe_users', 'fe_groups', 'tt_address', 'tt_address_group', 'tx_odsosm_track'); $pids = implode(',', $record_ids['pages']); foreach ($tables as $table) { $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid', $table, 'pid IN (' . $pids . ')' . $this->cObj->enableFields($table)); while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $record_ids[$table][] = $row['uid']; } } } // get records $records = array(); foreach ($record_ids as $table => $items) { foreach ($items as $item) { $item = intval($item); switch ($table) { case 'fe_groups': $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'fe_groups', 'uid=' . $item . $this->cObj->enableFields('fe_groups')); $group = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res); if ($group) { $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'fe_users', 'FIND_IN_SET("' . $item . '",usergroup)' . $this->cObj->enableFields('fe_users')); while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $records['fe_users'][$row['uid']] = $row; $records['fe_users'][$row['uid']]['group_uid'] = 'fe_groups_' . $group['uid']; $records['fe_users'][$row['uid']]['group_title'] = $group['title']; $records['fe_users'][$row['uid']]['group_description'] = $group['description']; $records['fe_users'][$row['uid']]['tx_odsosm_marker'] = $group['tx_odsosm_marker']; } } break; case 'tt_address_group': $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'tt_address_group', 'uid=' . $item . tx_odsosm_div::getWhere('tt_address_group')); $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res); $group = tx_odsosm_div::getOverlay('tt_address_group', $row); if ($group) { $res = $GLOBALS['TYPO3_DB']->exec_SELECT_mm_query('tt_address.*', 'tt_address', 'tt_address_group_mm', 'tt_address_group', 'AND tt_address_group.uid=' . intval($group['uid']) . $this->cObj->enableFields('tt_address')); while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $records['tt_address'][$row['uid']] = $row; $records['tt_address'][$row['uid']]['group_uid'] = 'tt_address_group_' . $group['uid']; $records['tt_address'][$row['uid']]['group_title'] = $group['title']; $records['tt_address'][$row['uid']]['group_description'] = $group['description']; $records['tt_address'][$row['uid']]['tx_odsosm_marker'] = $group['tx_odsosm_marker']; } } break; default: $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', $table, 'uid=' . $item . $this->cObj->enableFields($table)); $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res); if ($row) { $records[$table][$item] = $row; } break; } } } // Hook to change records foreach ($this->hooks as $hook) { if (method_exists($hook, 'changeRecords')) { $hook->changeRecords($records, $record_ids, $this); } } // get lon&lat foreach ($records as $table => $items) { foreach ($items as $uid => $row) { switch ($table) { case 'fe_users': case 'tt_address': if ($row['tx_odsosm_lon']) { $this->lons[] = floatval($row['tx_odsosm_lon']); $this->lats[] = floatval($row['tx_odsosm_lat']); } else { unset($records[$table][$uid]); } break; case 'tx_odsosm_track': case 'tx_odsosm_vector': if ($row['min_lon']) { $this->lons[] = floatval($row['min_lon']); $this->lats[] = floatval($row['min_lat']); $this->lons[] = floatval($row['max_lon']); $this->lats[] = floatval($row['max_lat']); } else { unset($records[$table][$uid]); } break; } } } // No markers if (count($this->lons) == 0) { if ($this->config['no_marker'] == 1) { $this->lons[] = $this->config['lon']; $this->lats[] = $this->config['lat']; } } return $records; }
function updateCache($address, $search = array()) { $set = array('search_city' => $search['city'], 'country' => $address['country'], 'state' => $address['state'], 'city' => $address['city'], 'zip' => $address['zip'], 'street' => $address['street'], 'housenumber' => $address['housenumber']); $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'tx_odsosm_geocache', implode(' AND ', tx_odsosm_div::getSet($set, 'tx_odsosm_geocache'))); $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res); if ($row) { $set = array('tstamp' => time(), 'service_hit' => $row['service_hit'] + 1); $GLOBALS['TYPO3_DB']->exec_UPDATEquery('tx_odsosm_geocache', 'uid=' . $row['uid'], $set); } else { $set['tstamp'] = time(); $set['crdate'] = time(); $set['service_hit'] = 1; $set['lat'] = $address['lat']; $set['lon'] = $address['lon']; $GLOBALS['TYPO3_DB']->exec_INSERTquery('tx_odsosm_geocache', $set); } }