<?
// ÀÌ ½æ³×ÀÏ¼Ò½º´Â À¯Ã¢È­´ÔÀÚ·á.
// Ã·ºÎ±×¸²È­ÀÏÀº ¹°·Ð, ¸µÅ©µÈ ±×¸²ÀÇ ¼¶³×ÀÏµµ °¡´ÉÇÏ°Ô ÇÔ
// pos 5 °¡ ÀÖÀ¸¸é ¸ðµÎ°¡ pos 5·Î ÀÛµ¿, µû¶ó¼­ pos 5 ¸¦ »ý·«,
// $copy_rule='width', $copy_pos='2' Ä¡È¯ÀÌ ÀÛµ¿ÇÏÁö ¾ÊÀ½.
// http://sir.co.kr/bbs/board.php?bo_table=tip_php&wr_id=985

// ÃÖ½Å±Û,¸®½ºÆ®¿¡ ÇÊ¿äÇÑ ¼Ò½º
function extract_img($src) {
  $re = '/src[ =]+[\'"]([^\'"]+\.(?:gif|jpg|png|bmp))[\'"]/i';
  preg_match_all($re, $src, &$match, PREG_PATTERN_ORDER);
  return $match[1];
}

function get_smallimg_in_list($bo_table, $file, $num, $w, $h, $error_img, $style='', $copy_rule='width', $copy_pos='2'){

  global $g4;

  $temp_origine_img = "$g4[path]/data/file/$bo_table/" . urlencode($file[$num]['file']);

  if (empty($bo_table) || empty($file[$num]) || !is_file($temp_origine_img) || $w < 10 || $h < 10) {

    $temp_small = false;
  }
  else {

    if (empty($file[$num]['image_width']) || empty($file[$num]['image_height']) || empty($file[$num]['image_type'])) {

      $temp = getimagesize($temp_origine_img);
      $temp_origine_img_w = $temp[0];
      $temp_origine_img_h = $temp[1];
      $temp_origine_img_t = $temp[2];
    }
    else {

      $temp_origine_img_w = $file[$num]['image_width'];
      $temp_origine_img_h = $file[$num]['image_height'];
      $temp_origine_img_t = $file[$num]['image_type'];
    }

    $temp_small_img_w = $w;
    $temp_small_img_h = $h;
    $temp_small_dir = "$g4[path]/data/file/$bo_table/thumb";

    if (!is_dir($temp_small_dir)){

      mkdir($temp_small_dir) or die('½æ³×ÀÏÀ» ÀúÀåÇÒ µð·ºÅä¸®¸¦ »ý¼ºÇÒ¼ö ¾ø½À´Ï´Ù.');
    }

    $temp_small_img = "$temp_small_dir/s_{$temp_small_img_w}_{$temp_small_img_h}_" . urlencode($file[$num][file]);

    if (is_file($temp_origine_img) && !is_file($temp_small_img)) {

      $temp_small = make_smallimg ($temp_origine_img, $temp_origine_img_w, $temp_origine_img_h, $temp_origine_img_t, $temp_small_img, $temp_small_img_w, $temp_small_img_h, $copy_rule, $copy_pos);
    }
    else if (is_file($temp_origine_img) && is_file($temp_small_img)){

      $temp_small = true;
    }
    else {

      $temp_small = false;
    }
  }

  if ($temp_small) {

    //return "<img src='$temp_small_img' width='$temp_small_img_w' height='$temp_small_img_h' border=0 $style onError=\"this.src='$error_img';\">";
    return $temp_small_img;
  }
  else {

    return "<img src='$error_img' width='$w' height='$h' border=0 $style>";
  }
}


//º¯¼ö°¡ Á¤ÀÇ µÇ¾úÀ¸¸é ÇØ´ç °ªÀ» ¹ÝÈ¯ÇÏ°í Á¤ÀÇ µÇ¾îÀÖÁö ¾ÊÀ¸¸é ÁöÁ¤µÈ ±âº»°ªÀ» ¹ÝÈ¯ÇÕ´Ï´Ù.
function Yvar_check(&$var, $return=''){

  return (isset($var)) ? $var : $return;
}

//º¯¼ö°¡ Á¤ÀÇµÇÁö ¾Ê¾Ò°Å³ª °ªÀÌ NULL°ª ÀÌ°Å³ª, °ªÀÌ 0, false ÀÏ°æ¿ì ÁöÁ¤µÈ ±âº»°ªÀ» ¹ÝÈ¯ÇÕ´Ï´Ù.
function Yvar_empty_check(&$var, $return=''){

  return (!empty($var)) ? $var : $return;
}

//http, GET ¹æ½ÄÀÇ ¼ÒÄÏ¿¬°á
function Ysockopen($url, $referer='', $accept='*/*', $contenttype='application/x-www-form-urlencoded', $cachecontrol='private', $pragma='no-cache', $connection='close'){

  if (!empty($url) && preg_match("`^http://.+`i", $url)) {

    $array = parse_url($url);
    $url_scheme = Yvar_check($array['scheme']);
    $url_server = Yvar_check($array['host']);
    $url_path = Yvar_check($array['path']);
    $url_query= Yvar_check($array['query']);
    $url_port = Yvar_empty_check($array['port'], 80);

    $fp = fsockopen($url_server, $url_port);

    if (empty($fp)) {

      return false;
    }

    fputs($fp, "GET " . $url_path . "?" . $url_query . " HTTP/1.0\n");
    if (!empty($accept)) fputs($fp, "Accept: " . $accept . "\n");
    if (!empty($contenttype)) fputs($fp, "Content-Type: " . $contenttype . "\n");
    fputs($fp, "Host: $url_server:$url_port\n");
    if (!empty($referer)) fputs($fp, "Referer: " . $referer . "\n");
    if (!empty($cachecontrol)) fputs($fp, "Cache-control: " . $cachecontrol . "\n");
    if (!empty($pragma)) fputs($fp, "Pragma: " . $pragma . "\n");
    if (!empty($connection)) fputs($fp, "Connection: " . $connection . "\n\n");

    return $fp;
  }
  else {

    return false;
  }
}

function Ysockclose(&$fp){

  if (!empty($fp)) fclose($fp);

  return true;
}


//¼ÒÄÏÀ¸·Î ¿ÜºÎÆÄÀÏ ÅëÂ°·Î ÅØ½ºÆ®·Î ÀÐ¾î¿È
function Yreadfile($url, $referer='', $accept='*/*', $contenttype='application/x-www-form-urlencoded', $cachecontrol='private', $pragma='no-cache', $connection='close') {

  $fp = Ysockopen($url, $referer, $accept, $contenttype, $cachecontrol, $pragma, $connection);
  if (!empty($fp)) {

    $text = '';
    $check_header = false;
    while (!feof($fp)){

      $temp = fgets($fp, 1024);

      if ($check_header == false){

        //½ÇÁ¦ ÆÄÀÏÀÌ ¾Æ´Ñ Çì´õ Á¤º¸ÀÎÁö Ã¼Å© ÇÏ¿© Ãß°¡ÇÏÁö ¾Ê´Â´Ù.
        if (preg_match("'^(\r)?\n$'", $temp)) {

          $check_header = true;
          continue;
        }
      }
      else{

        //Çì´õ Á¤º¸°¡ ¾Æ´Ñ °æ¿ì¿¡¸¸ Ãß°¡ÇÑ´Ù.
        $text .= $temp;
      }
    }

    Ysockclose($fp);

    return $text;
  }
  else {

    return '';
  }
}


//¿øº»ÀÌ¹ÌÁöÀÇ °æ·Î, Å©±â, ³ôÀÌ, Å¸ÀÔÀ» ¾Ë °æ¿ì¿¡ »ç¿ë°¡´É
function make_smallimg ($src, $src_w, $src_h, $src_t, $copy, $copy_w, $copy_h, $copy_rule='width', $copy_pos='2', $force='0'){

  $src = trim($src);
  $copy = trim($copy);
  $copy_rule = trim($copy_rule);
  if (empty($copy_rule) || ($copy_rule != 'width' && $copy_rule != 'height' && $copy_rule != 'both+' && $copy_rule != 'both-')) $copy_rule = 'width';
  $copy_pos = trim($copy_pos);
  if (empty($copy_pos) || ($copy_pos != '1' && $copy_pos != '2' && $copy_pos != '3' && $copy_pos != '4' && $copy_pos != '5')) $copy_rule = '2';



  if (is_file($copy) && $force != '1') return true;//½æ³×ÀÏÀÌ ÀÌ¹Ì »ý¼ºµÈ »óÅÂ¶ó¸é »õ·Î ¸¸µéÁö ¾ÊÀ½



  if ($src_t == 1)
    $src = @imagecreatefromgif($src);
  else if ($src_t == 2)
    $src = @imagecreatefromjpeg($src);
  else if ($src_t == 3)
    $src = @imagecreatefrompng($src);
  else
    return false; // gif, jpg, png ÀÌ¹ÌÁö°¡ ¾Æ´Ô

  if (empty($src)) return false;//ÀÌ¹ÌÁö¸¦ ÀÐ¾î¿Ã¼ö ¾øÀ½

  if (empty($copy) || $copy_w < 10 || $copy_h < 10) return false; //½æ³×ÀÏ °æ·Î°¡ ¾ø°Å³ª ³Êºñ³ª ³ôÀÌ°¡ 10º¸´Ù ÀÛÀ½

  $src_x = 0;
  $src_y = 0;
  $copy_x = 0;
  $copy_y = 0;

  if ($copy_pos == '5'){//Å©·Ó¾øÀÌ °­Á¦·Î Å©±â ¸ÂÃã

    $new_w =  $copy_w;
    $new_h = $copy_h;
  }
  else {

    if ($copy_rule == 'both+') {//±äÂÊÀ» ±âÁØ

      if ($src_w >= $src_h) $copy_rule = 'width';
      else $copy_rule = 'height';
    }
    else if ($copy_rule == 'both-') {//ÂªÀºÂÊÀ» ±âÁØ

      if ($src_w <= $src_h) $copy_rule = 'width';
      else $copy_rule = 'height';
    }

    if ($copy_rule == 'width') {//³Êºñ¿¡ ¸ÂÃã

      $rate = $src_h / $src_w;
      $new_w = $copy_w;
      $new_h = (int) ($rate * $copy_w);
    }
    else {//³ôÀÌ¿¡ ¸ÂÃã

      $rate = $src_w / $src_h;
      $new_h = $copy_h;
      $new_w = (int) ($rate * $copy_h);
    }

    if ($copy_rule == 'width') {//³Êºñ¿¡ ¸ÂÃã

      if ($copy_pos == '4') {//ºñÀ²´ë·Î

        $copy_h = $new_h;
      }
      else {

        if ($new_h < $copy_h){//¸¸µé¾îÁú ½æ³×ÀÏ ³ôÀÌ°¡ ºñÀ²´ë·Î ÁÙ¿©Áø ³ôÀÌº¸´Ù Å¬°æ¿ì °¡¿îµ¥ À§Ä¡½ÃÅ´

          $copy_y = (int) (($copy_h - $new_h) / 2);
        }
        else {

          if ($copy_pos == '1' || empty($copy_pos)) {//¿øº»¿¡¼­ »ó´ÜÀ» ±âÁØÀ¸·Î °¡Á®¿È

            //±âº»°ª ±×´ë·Î
          }
          else if ($copy_pos == '2') {//¿øº»¿¡¼­ Áß¾ÓÀ» ±âÁØÀ¸·Î °¡Á®¿È

            $temp_h = (int) ($copy_h / $copy_w * $src_w);
            $src_y = (int) (($src_h - $temp_h) / 2);
          }
          else if ($copy_pos == '3') {//¿øº»¿¡¼­ ÇÏ´ÜÀ» ±âÁØÀ¸·Î °¡Á®¿È

            $temp_h = (int) ($copy_h / $copy_w * $src_w);
            $src_y = $src_h - $temp_h;
          }
        }
      }
    }
    else {//³ôÀÌ¿¡ ¸ÂÃã

      if ($copy_pos == '4') {//ºñÀ²´ë·Î

        $copy_w = $new_w;
      }
      else {

        if ($new_w < $copy_w){//¸¸µé¾îÁú ½æ³×ÀÏ ³Êºñ°¡ ºñÀ²´ë·Î ÁÙ¿©Áø ³Êºñº¸´Ù Å¬°æ¿ì °¡¿îµ¥ À§Ä¡½ÃÅ´

          $copy_x = (int) (($copy_w - $new_w) / 2);
        }
        else {

          if ($copy_pos == '1' || empty($copy_pos)) {//¿øº»¿¡¼­ ¿ÞÂÊÀ» ±âÁØÀ¸·Î °¡Á®¿È

            //±âº»°ª ±×´ë·Î
          }
          else if ($copy_pos == '2') {//¿øº»¿¡¼­ Áß¾ÓÀ» ±âÁØÀ¸·Î °¡Á®¿È

            $temp_w = (int) ($copy_w / $copy_h * $src_h);
            $src_x = (int) (($src_w - $temp_w) / 2);
          }
          else if ($copy_pos == '3') {//¿øº»¿¡¼­ ¿À¸¥ÂÊÀ» ±âÁØÀ¸·Î °¡Á®¿È

            $temp_w = (int) ($copy_w / $copy_h * $src_h);
            $src_x = $src_w - $temp_w;
          }
        }
      }
    }
  }

  $dst = @imagecreatetruecolor($copy_w, $copy_h);
  if (empty($dst)) return false;

  $background_color = @imagecolorallocate($dst, 255, 255, 255);
  if (empty($background_color)) return false;

  imagefilledrectangle($dst, 0, 0, $copy_w, $copy_h, $background_color);
  imagecopyresampled($dst, $src, $copy_x, $copy_y, $src_x, $src_y, $new_w, $new_h, $src_w, $src_h);

  imagepng($dst, $copy);
  chmod($copy, 0777);
  return true;
}



//·ÎÄÃÀÇ ÀÌ¹ÌÁöÀÇ ¼¶³×ÀÏÀ» ÀúÀå, ¹ÝÈ¯°ª ¼º°ø ½ÇÆÐ ¿©ºÎ
function make_small($src, $copy, $copy_w, $copy_h, $copy_rule='width', $copy_pos='2', $force='0'){

  $src = trim($src);
  $copy = trim($copy);
  $copy_rule = trim($copy_rule);
  if (empty($copy_rule) || ($copy_rule != 'width' && $copy_rule != 'height' && $copy_rule != 'both+' && $copy_rule != 'both-')) $copy_rule = 'width';
  $copy_pos = trim($copy_pos);
  if (empty($copy_pos) || ($copy_pos != '1' && $copy_pos != '2' && $copy_pos != '3' && $copy_pos != '4' && $copy_pos != '5')) $copy_rule = '2';



  if (is_file($copy) && $force != '1') return true;//½æ³×ÀÏÀÌ ÀÌ¹Ì »ý¼ºµÈ »óÅÂ¶ó¸é »õ·Î ¸¸µéÁö ¾ÊÀ½



  if (empty($src) || !is_file($src)) return false;//¿øº» ÀÌ¹ÌÁö ¾øÀ½

  $temp = @getimagesize($src);
  $src_w = $temp[0];
  $src_h = $temp[1];
  $src_t = $temp[2];

  if ($src_t != 1 && $src_t != 2 && $src_t != 3) return false;//ÀÐ¾î¿Â ÆÄÀÏ Å¸ÀÔÀÌ gif, jpg, png ¾Æ´Ô

  //½æ³×ÀÏ ±ÔÄ¢¿¡ µû¶ó ½æ³×ÀÏ »ý¼º
  $return = make_smallimg ($src, $src_w, $src_h, $src_t, $copy, $copy_w, $copy_h, $copy_rule, $copy_pos, $force);

  return $return;
}



//¿ø°ÝÀÇ ÀÌ¹ÌÁöÀÇ ¼¶³×ÀÏÀ» ÀúÀå, ¹ÝÈ¯°ª ¼º°ø ½ÇÆÐ ¿©ºÎ
function make_small_remoteimage($image_url, $referer, $save_path, $copy, $copy_w, $copy_h, $copy_rule='width', $copy_pos='2', $force='0'){

  $image_url = trim($image_url);
  $referer = trim($referer);
  $save_path = preg_replace("`/+$`", '', trim($save_path));
  $copy = trim($copy);
  $copy_rule = trim($copy_rule);
  if (empty($copy_rule) || ($copy_rule != 'width' && $copy_rule != 'height' && $copy_rule != 'both+' && $copy_rule != 'both-')) $copy_rule = 'width';
  $copy_pos = trim($copy_pos);
  if (empty($copy_pos) || ($copy_pos != '1' && $copy_pos != '2' && $copy_pos != '3' && $copy_pos != '4' && $copy_pos != '5')) $copy_rule = '2';



  if (is_file($copy) && $force != '1') return true;//½æ³×ÀÏÀÌ ÀÌ¹Ì »ý¼ºµÈ »óÅÂ¶ó¸é »õ·Î ¸¸µéÁö ¾ÊÀ½



  if (empty($image_url) || !preg_match("`^http`i", $image_url)) return false;//¿ø°ÝÀÌ¹ÌÁö ÁÖ¼Ò ¾øÀ½

  //¿ø°ÝÀÌ¹ÌÁö ÁÖ¼Ò¿¡¼­ ÀÌ¹ÌÁö ÀÌ¸§ »Ì¾Æ³¿
  preg_match("`/([^/]+)$`i", $image_url, $m);
  $image_name = trim($m[1]);

  if (empty($save_path)) return false;//ÀÓ½ÃÀúÀå µð·ºÅä¸® °ª ¾øÀ½

  if (!is_dir($save_path)) {

    @mkdir($save_path);
    @chmod($save_path, 0777);

    if (!is_dir($save_path)) return false;//ÀÓ½ÃÀúÀå µð·ºÅä¸® »ý¼ºÇÒ¼ö ¾øÀ½
  }

  if (empty($referer) || !preg_match("`^http`i", $referer)) {//¸®ÆÛ·¯°¡ ¾øÀ» °æ¿ì¿¡´Â ÀÌ¹ÌÁö ±âº» °æ·Î¸¦ ¸®ÆÛ·¯·Î ÀâÀ½

    preg_match("`(https?://[^/]+)/`i", $image_url, $m);
    $referer = $m[1];
  }

  //¿ø°ÝÀÌ¹ÌÁö °¡Á®¿Í¼­ ÀÓ½ÃÀúÀå µð·ºÅä¸®¿¡ ÀúÀå
  $text = Yreadfile($image_url, $referer);
  if (empty($text)) return false;//ÀÌ¹ÌÁö ÀÐ¾î¿À±â ½ÇÆÐ

  $temp_file = $save_path . '/' . uniqid('') . '_' . $image_name;//Áßº¹µÇÁö ¾Ê´Â ÀÓ½ÃÆÄÀÏ °æ·Î »ý¼º

  $fp = @fopen ($temp_file, "w");
  @fwrite($fp, $text);
  @fclose($fp);
  @chmod ($temp_file, 0777);

  if (!is_file($temp_file)) return false;//ÆÄÀÏ »ý¼º ½ÇÆÐ

  $temp = @getimagesize($temp_file);
  $src_w = $temp[0];
  $src_h = $temp[1];
  $src_t = $temp[2];

  if ($src_t != 1 && $src_t != 2 && $src_t != 3) return false;//ÀÐ¾î¿Â ÆÄÀÏ Å¸ÀÔÀÌ gif, jpg, png ¾Æ´Ô

  //½æ³×ÀÏ ±ÔÄ¢¿¡ µû¶ó ½æ³×ÀÏ »ý¼º
  $return = make_smallimg ($temp_file, $src_w, $src_h, $src_t, $copy, $copy_w, $copy_h, $copy_rule, $copy_pos, $force);

  @unlink($temp_file);//¼¶³×ÀÏ »ý¼ºÈÄ ÀÓ½Ã ÆÄÀÏ »èÁ¦

  return $return;
}


//»ç¿ë¹ýÀº
//make_small_remoteimage($image_url, $referer, $save_path, $copy, $copy_w, $copy_h, $copy_rule='width', $copy_pos='1', $force='0');
//¼ø¼­´ë·Î
//ÀÌ¹ÌÁöurl
//¸®ÆÛ·¯
//ÀÓ½ÃÀúÀå°æ·Î(./temp)
//½æ³×ÀÏ ÀúÀå°æ·Î(./temp/abc.png)
//½æ³×ÀÏ ³Êºñ
//½æ³×ÀÏ ³ôÀÌ
//½æ³×ÀÏ »ý¼º±âÁØ width ³ª height ³ª both+(³Êºñ³ª ³ôÀÌÁß ±äÂÊ±âÁØ) ³ª both-(³Êºñ³ª ³ôÀÌÁß ÂªÀºÂÊ±âÁØ)
//½æ³×ÀÏ »ý¼º ¹æ¹ý 1¿¡¼­ 5±îÁö, 1Àº »ó´ÜÀÌ³ª ¿ÞÂÊ, 2´Â °¡¿îµ¥, 3Àº ÇÏ´ÜÀÌ³ª ¿À¸¥ÂÊ, 4´Â ºñÀ²´ë·Î, 5´Â °­Á¦·Î
//±âÁ¸ ½æ³×ÀÏ ÀÖ°Å³ª ¾ø°Å³ª °­Á¦·Î »ý¼ºÇÒ °æ¿ì 1

?>