Esempio n. 1
0
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;
Esempio n. 2
0
 /**
  * Экспорт результатов
  */
 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)));
 }