echo '<hr/>'; echo '<p style="color:blue;">Расширенные данные полученные из ipgeobase:</p>'; echo '<pre>'; echo 'Все данные: ' . "\n"; print_r($data); echo '</pre>'; // также данный класс можно использовать для получения и проверки валидности реального ip адреса посетителя $city = $geo->get_value('city', true); // получаем название города echo 'Достаем город<br />'; echo $city . '<br />'; $ip = $geo->get_ip(); // получаем ip адрес echo 'Достаем IP<br />'; echo $ip . '<br />'; if ($geo->is_valid_ip($ip)) { echo 'IP адрес валиден'; } else { echo 'IP адрес не валиден'; } // Пробуем достать данные из куки //echo "<hr/>Данные из Cookie<br/>"; echo '<hr/><p style="color:blue;">Сохраненные данные из Cookie</p>'; if (isset($_COOKIE['geobase'])) { echo '<p style="color:green">В cookie содержатся гео-данные. Можно их использовать без повторного запроса к ipgeobae!</p>'; $geobase = $_COOKIE['geobase']; echo '<pre>'; print_r(unserialize($geobase)); echo '</pre>'; $city = $geo->get_value('city', false); echo $city;
/** * Экспорт результатов */ function showExport() { global $surveys_dictonaries; // список справочников из настроек include_once PATH_COMMON . '/classes/geo.php'; $geo = new Geo(array('dbname' => $this->geo_dbname, 'tablename' => $this->geo_tablename)); $columns = sql_getRows("SHOW COLUMNS FROM `surveys_users`", true); if (!isset($columns['region'])) { sql_query("ALTER TABLE `surveys_users` ADD region VARCHAR( 255 ) NOT NULL;"); } if (!isset($columns['city'])) { sql_query("ALTER TABLE `surveys_users` ADD city VARCHAR( 255 ) NOT NULL;"); } if (!isset($columns['district'])) { sql_query("ALTER TABLE `surveys_users` ADD district VARCHAR( 255 ) NOT NULL;"); } if (!isset($columns['country'])) { sql_query("ALTER TABLE `surveys_users` ADD country VARCHAR( 255 ) NOT NULL;"); } $id = (int) get('id', 0, 'g'); $export = array(); $export2 = array(); $quests = sql_getRows('SELECT id, text, type FROM surveys_quests WHERE id_survey=' . $id); // Cоберем верхнюю строку - заголовки $row = array(); foreach ($this->exported_fields as $fld) { $row[] = $this->str('export_' . $fld); } foreach ($quests as $k => $quest) { $row[] = $this->__csv_chars($quest['text']); $variants = sql_getRows("SELECT id, text FROM surveys_quest_variants\n WHERE id_quest={$quest['id']} ORDER BY priority"); foreach ($variants as $v) { $v['text'] = $this->__csv_chars($v['text']); if ($quest['type'] == 'single' || $quest['type'] == 'multi') { $row[] = $v['text']; } elseif ($quest['type'] == 'catalog') { $catalog = $this->getDictonaryValues($v['text']); foreach ($catalog as $item) { $row[] = $item['name']; } } } if (in_array($quest['type'], array('single', 'multi', 'catalog'))) { $row[] = ''; } $quests[$k]['variants'] = $variants; } $export[] = implode(';', $row); $export2[] = implode(';', $row); $users = sql_getRows("SELECT * FROM surveys_users WHERE id_survey = '{$id}' ORDER BY date", false); // Cоберем результаты foreach ($users as $k => $u) { $u['number'] = $k + 1; if (!$u['country'] && !$u['district'] && !$u['region'] && !$u['city'] && $geo->is_valid_ip($u['ip'])) { $geo->ip = $u['ip']; $ip_data = $geo->get_value(); $u['city'] = mysql_real_escape_string($ip_data['city']); $u['region'] = mysql_real_escape_string($ip_data['region']); $u['district'] = mysql_real_escape_string($ip_data['district']); $u['country'] = mysql_real_escape_string($ip_data['country']); sql_query('UPDATE surveys_users SET city="' . $u['city'] . '", region="' . $u['region'] . '", district="' . $u['district'] . '", country="' . $u['country'] . '" WHERE id="' . $u['id'] . '"'); } $sql = "SELECT af.text as text\n FROM surveys_log as sl LEFT JOIN surveys_free_answ as af\n ON (af.id_variant=sl.id_variant && af.id_user=sl.id_user)\n WHERE sl.id_user='******'id']}'"; $row = array(); foreach ($this->exported_fields as $fld) { $row[] = $u[$fld]; } $row2 = $row; foreach ($quests as $quest) { switch ($quest['type']) { case 'single': case 'multi': $row[] = ''; $row2[] = ''; foreach ($quest['variants'] as $v) { $data = sql_getRow($sql . ' AND sl.id_variant = ' . $v['id']); if (!empty($data)) { $row[] = $this->str('export_cb_answer'); if ($data['text']) { $row2[] = $this->__csv_chars($data['text']); } else { $row2[] = $v['text']; } } else { $row[] = $this->str('export_cb_no_answer'); $row2[] = $this->str('export_cb_no_answer'); } } $row[] = ''; $row2[] = ''; break; case 'catalog': $row[] = ''; $row2[] = ''; $catalog = $this->getDictonaryValues($quest['variants']['0']['text']); // данные для типа опроса, справочник $data = sql_getRow('SELECT t.' . $surveys_dictonaries[$quest['variants']['0']['text']]['value'] . ', t.' . $surveys_dictonaries[$quest['variants']['0']['text']]['name'] . ' as text FROM surveys_log sl LEFT JOIN ' . $surveys_dictonaries[$quest['variants']['0']['text']]['table'] . ' as t ON (t.id=sl.text) WHERE sl.id_user='******'id'] . ' AND sl.id_quest=' . (int) $quest['id']); // список вариантов ответов foreach ($catalog as $item) { if (!empty($data) && $data[$surveys_dictonaries[$quest['variants']['0']['text']]['value']] == $item['value']) { $row[] = $this->str('export_cb_answer'); $row2[] = $this->__csv_chars($item['name']); } else { $row[] = $this->str('export_cb_no_answer'); $row2[] = $this->str('export_cb_no_answer'); } } $row[] = ''; $row2[] = ''; break; break; default: foreach ($quest['variants'] as $v) { $text = $this->__csv_chars(sql_getValue($sql . ' AND sl.id_variant = ' . $v['id'])); $row[] = $text; $row2[] = $text; } } } $export[] = implode(';', $row); $export2[] = implode(';', $row2); } $this->writeArchive(array('exported_survey_v_check.csv' => implode("\n", $export), 'exported_survey_v_text.csv' => implode("\n", $export2))); }