<?php
ini_set('memory_limit', '-1');
include_once('./_common.php');

// clean the output buffer
ob_end_clean();

if (!(version_compare(phpversion(), '5.3.0', '>=') && defined('G5_BROWSCAP_USE') && G5_BROWSCAP_USE))
  die('사용할 수 없는 기능입니다.');

if ($is_admin != 'super')
  die('최고관리자로 로그인 후 실행해 주세요.');

// browscap cache 파일 체크
if (!is_file(G5_DATA_PATH . '/cache/browscap_cache.php')) {
  echo '<p>Browscap 정보가 없습니다. 아래 링크로 이동해 Browscap 정보를 업데이트 하세요.</p>' . PHP_EOL;
  echo '<p><a href="' . G5_ADMIN_URL . '/browscap.php">Browscap 업데이트</a></p>' . PHP_EOL;
  exit;
}

include_once(G5_PLUGIN_PATH . '/browscap/Browscap.php');
$browscap = new phpbrowscap\Browscap(G5_DATA_PATH . '/cache');
$browscap->doAutoUpdate = false;
$browscap->cacheFilename = 'browscap_cache.php';

// 데이터 변환
$rows = preg_replace('#[^0-9]#', '', $_GET['rows']);
if (!$rows)
  $rows = 100;

$sql_common = " from {$g5['visit_table']} where vi_agent <> '' and ( vi_browser = '' or vi_os = '' or vi_device = '' ) ";
$sql_order = " order by vi_id desc ";
$sql_limit = " limit 0, $rows ";

$sql = " select count(vi_id) as cnt $sql_common ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];

$sql = " select vi_id, vi_agent, vi_browser, vi_os, vi_device
            $sql_common
            $sql_order
            $sql_limit ";
$result = sql_query($sql);

$cnt = 0;
for ($i = 0; $row = sql_fetch_array($result); $i++) {
  $info = $browscap->getBrowser($row['vi_agent']);

  $brow = $row['vi_browser'];
  if (!$brow)
    $brow = $info->Comment;

  $os = $row['vi_os'];
  if (!$os)
    $os = $info->Platform;

  $device = $row['vi_device'];
  if (!$device)
    $device = $info->Device_Type;

  $sql2 = " update {$g5['visit_table']}
                set vi_browser  = '$brow',
                    vi_os       = '$os',
                    vi_device   = '$device'
                where vi_id = '{$row['vi_id']}' ";
  sql_query($sql2);

  $cnt++;
}

if (($total_count - $cnt) == 0 || $total_count == 0)
  echo '<div class="check_processing"></div><p>변환완료</p>';
else
  echo '<p>총 ' . number_format($total_count) . '건 중 ' . number_format($cnt) . '건 변환완료<br><br>접속로그를 추가로 변환하시려면 아래 업데이트 버튼을 클릭해 주세요.</p><button type="button" id="run_update">업데이트</button>';
