public static function insert_countries()
 {
     $count = \Model_Url_Stats_Country::query()->count();
     if ($count == 0) {
         ini_set('memory_limit', '-1');
         $file = fopen(DOCROOT . 'public/assets/url_stats_countries.csv', 'r');
         while (feof($file) === false) {
             $line = fgets($file);
             $data_array = explode(',', trim($line));
             // start long ip
             // end long ip
             // country
             $country = \Model_Url_Stats_Country::forge(array('start_ip' => $data_array[0], 'end_ip' => $data_array[1], 'country' => $data_array[2]));
             $country->save();
         }
         fclose($f);
     }
 }
 public static function action_view($short_url)
 {
     if (is_object($short_url) === false) {
         $short_url = Model_Url::query()->where('short_url', $short_url)->get_one();
     }
     $short_url->hits = $short_url->hits + 1;
     $short_url->save();
     if (empty($short_url) === false) {
         $results = Controller_Url::check_loop($short_url);
         $data['url'] = $results['url'];
         $data['iframe'] = $results['iframe'];
         if (isset($results['image']) === true) {
             $data['image'] = $results['image'];
         }
         if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
             $ip = $_SERVER["HTTP_CF_CONNECTING_IP"];
         } else {
             $ip = Input::real_ip();
         }
         $country = Model_Url_Stats_Country::query()->where('start_ip', '<=', ip2long($ip))->where('end_ip', '>=', ip2long($ip))->get_one();
         if (empty($country) === false) {
             $country = $country->country;
         } else {
             $country = 'N/A';
         }
         $lang = Agent::languages();
         // Insert Some Stats
         $stats = Model_Url_Stat::forge(array('url_id' => $short_url->id, 'ip' => $ip, 'country' => $country, 'referer' => Input::referrer(), 'language' => serialize($lang)));
         $stats->save();
         return new Response(View::Forge('url/redirect', $data));
     } else {
         Session::set('error', 'We couldn\'t');
         Response::Redirect(Uri::Base());
     }
 }