<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_Jis">
<title>データの更新</title>
<LINK rel="stylesheet" href="hpbsite.css" type="text/css">
</head>

<BODY bgcolor="#004800" text="#ffffff">
<P>

<?php

/*
-----------------------------------------------

      main

-----------------------------------------------
*/
   
   $flag = 0 ;
   $photo_sum = 0  ;//-- 写真の掲載枚数
   $thumb_num = 0  ;//-- 作成されたサムネイル数
   
   make_data($photo_sum , $flag) ;
   
   if($flag == 1){
      make_thumbnail($thumb_num) ;
   
      //-------------------- 確認コメント表示 ---------------------

      print "<CENTER>";
      print "<BR><BR>";
      print "<H4>最新のデータに更新しました</H4>";
      print "<H4>掲載写真は " . $photo_sum . " 枚です</H4>";
      //print "<BR>";

      if($thumb_num > 0){
         print $thumb_num . " 個のサムネイルを作成しました";
         print "<BR>";
      }

      print "</CENTER>";

   }else{
      print "<CENTER>";
      print "<BR><BR>";
      print "<H4>最新のデータに更新されています</H4>" ;
      //print "<BR>";
      print "</CENTER>";
   }

/*
-----------------------------------------------

      data.js の確認と作成

-----------------------------------------------
*/

function make_data (&$photo_sum , &$flag) {

   //-- 変数の初期化
   $file_log  = "../joyful.log" ; 
   $file_data = "data.js" ; 
   $file_temp = "temp.js" ; 
   $dummy_dat = "//-- " ;

   //-- joyfu.log の1行目を読み込む   
   $f_log = fopen($file_log , "r") ;
   $dat_log = $dummy_dat . fgets($f_log);   
   fclose($f_log);
   
   //-- $file_temp を新規作成 $file_temp を $file_dataへリネームするため
   $f_temp  = fopen($file_temp  , "w") ;
   fwrite($f_temp , $dat_log);
   fclose($f_temp);   


   //-- $file_data ファイルの有無のチェック $chack == 1 有り
   $chack = file_exists($file_data);

   if($chack == 0){

      //-- $file_data がないので新規作成する
      $f_js  = fopen($file_data  , "w") ;
      fwrite($f_js , $dat_log);
      fclose($f_js);   

   }else{

      //-- $file_data の1行目を読み込む   
      $f_js  = fopen($file_data  , "r") ;
      $dat_js = fgets($f_js);
      fclose($f_js);
   }


   //-- 確認用
   //print "Dat_log = " . $dat_log . "<br>" ; 
   //print "Dat__js = " . $dat_js  . "<br>";


   //-- ここで仮のファイル $file_temp を作成 後で $file_data にファイル名を変更する
   if($dat_log != $dat_js){

      //-- 各種文字列の設定
      $q = '"'  ;//-- ["]
      $e = '",' ;//-- [",]
      $n = "\n" ;//-- 改行
      $s = "'"  ;//-- [']
      $m = "<>" ;//-- 配列区切りマーク

      
      $fp = fopen($file_log  , "r") ;//-- joyfulyy_diary のデータファイル
      $fw = fopen($file_temp , "a") ;//-- 作成するデータファイル

      //-- ファイルのロック
      flock($fw,LOCK_EX);

      //-- 先頭部分の書き込み
      $head = $n . "var f_data = new Array(" . $n ;
      fwrite($fw ,$head);

      //-- joyful.logのデータ読み込み配列
      $dat = array();

      while (($line = fgets($fp)))
      {

         //-- 画像の含まれているデータのみを data.js に作成する
         $jpg_pos =  strpos($line , ".jpg"); //-- .jpg の位置を求める
         if($jpg_pos > 0){

            $dat = explode("<>" , $line)         ;//-- 配列変数に取り込む

            $no    = $dat[0]                     ;//-- 番号
            $date  = substr($dat[2] , 0 , 10)    ;//-- 年月日
            $name  = $dat[3]                     ;//-- 投稿者氏名
            $title = $dat[5]                     ;//-- タイトル

            $dd = $no . $m . $date . $m . $name . $m . $title ;//-- タイトルまでの配列データの作成

            $jpg = "" ;
            $p_num = 0 ;
            $size  = array();//-- 画像サイズの取り込み配列
         
            for($ii=15 ; $ii<100 ; $ii = $ii + 3){
               if($dat[$ii] == null){
                  break ; 
               }
            
               $p_num++ ;
               $f_name = $no . "_" . $p_num . $dat[$ii] ;
            
               $j_pos =  strpos($f_name , ".jpg"); //-- .jpg の位置を求める
               if($j_pos > 0){
                  //-- 写真の縦横サイズを取得する
                  $ff = "../img/" . $f_name ;
                  $size = getimagesize($ff)  ;//-- 画像データを配列に取り込む
                  $p_width  = $size[0]       ;//-- 写真の幅
                  $p_height = $size[1]       ;//-- 写真の高さ
               
                  //-- データの作成
                  $jpg = $jpg . $m . $f_name . $m . $p_width . $m . $p_height ;

                  $photo_sum++ ; //-- 掲載写真の総数
               }
            }

            $write_dat = $q . $dd . $jpg . $m . $e . $n ;

            //-- データの書き込み
            fwrite($fw ,"$write_dat");

            //-- 確認用
            //print $photo_sum . " --> " . $write_dat . "<br>" ;
         
         }
      }

      //-- 最終データの書き込み
      $d = $q . "<><><><><>" . $q . $n ;
      fwrite($fw ,"$d");

      $d = ")" . $n ;
      fwrite($fw ,"$d");

      //-- ファイルのロック解除
      flock($fw,LOCK_UN);

      //-- ファイルを閉じる
      fclose($fp);
      fclose($fw);

      $flag = 1 ;
      
      //-- $file_temp ファイルが作成されたら、data.js を一端削除し
      //-- $file_data にファイル名を変更する
      
      unlink($file_data);
      rename($file_temp , $file_data);

   }else{
      
      $flag = 0 ;
      
      unlink($file_temp); //-- 一時ファイルの削除
   }

}

/*
-----------------------------------------------

      サムネイルの確認と作成
      参考としたページ  http://noongoro.main.jp/note/note0052.html

-----------------------------------------------
*/
function make_thumbnail (&$thumb_num) {

   set_time_limit(0);

   $img_path       = "../img/"     ;//-- サムネイルを作る元画像のあるディレクトリ(必ず末尾は"/"で閉じる)
   $thumbnail_path = "img_thumb/"  ;//-- サムネイルを保存するディレクトリ
   $thumbnail_h    = 80            ;//-- サムネイルの高さ

   //-- サムネイル・ディレクトリーの有無を確認
   $dir_chack = is_dir($thumbnail_path);
   if($dir_chack == 0){
      mkdir($thumbnail_path);
   }

   $dir = opendir($img_path);

   while(($img_name = readdir()) !== FALSE)
   {
   
      //-- ,jpg 画像のみを data.js に作成する
      $jpg_pos =  strpos($img_name , ".jpg"); //-- .jpg の位置を求める
      if($jpg_pos > 0){

         //-- サムネイルの有無のチェック 無ければ作成する chack == 1 有り
         $thumbnail = $thumbnail_path . $img_name ; 
         $chack = file_exists($thumbnail);

         //-- サムネイルの作成する
         if($chack == 0){

            $thumb_num++ ; 

            //-- 写真の縦横サイズを取得する。
            $ff = $img_path . $img_name ;
            $size = getimagesize($ff)  ;//-- 画像データを配列に取り込む
            $img_w = $size[0]       ;//-- 写真の幅
            $img_h = $size[1]       ;//-- 写真の高さ
            $img_r = $img_w / $img_h ; 

            // $thumbnail_w = 90; //サムネイルの横幅
            // $thumbnail_h = 80; //サムネイルの縦幅
            $thumbnail_w = $thumbnail_h * $img_r ;

            create_thumbnail ( $img_name, $img_path, $thumbnail_path, $img_w, $img_h, $thumbnail_w, $thumbnail_h );
         }
      }
   }
   
   closedir($dir) ; 

}

/*
-----------------------------------------------

      サムネイル作成関数

-----------------------------------------------
*/

function create_thumbnail ( $img_name, $img_path, $thumbnail_path, $img_w, $img_h, $thumbnail_w, $thumbnail_h ) {

  $src_img = @imagecreatefromjpeg ( $img_path.$img_name ); //サムネイル元 ※1
  if ( $src_img ) {
    //サムネイル作成 ※2
    $dst_img = imagecreatetruecolor ( $thumbnail_w, $thumbnail_h );

    $result = imagecopyresampled ( //$result = imagecopyresized (
            $dst_img, //貼り付けするイメージID
            $src_img, //コピーする元になるイメージID
            0,        //int dstX (貼り付けを開始するX座標)
            0,        //int dstY (貼り付けを開始するY座標)
            0,        //int srcX (コピーを開始するX座標)
            0,        //int srcY (コピーを開始するY座標)
            $thumbnail_w, //int dstW (貼り付けする幅)
            $thumbnail_h, //int dstH (貼り付けする高さ)
            $img_w,   //int srcW (コピーする幅)
            $img_h    //int srcH (コピーする高さ)
        );

    //サムネイルをJPEG形式で保存
    imagejpeg ( $dst_img, $thumbnail_path.$img_name );
    imagedestroy ( $dst_img ); //サムネイル用イメージIDの破棄 ※3
    imagedestroy ( $src_img ); //サムネイル元イメージIDの破棄 ※4

    //html_p ( "サムネイルが作成されました。" );
   //echo "<img src=\"$thumbnail_path$img_name\">";

  } else {
    html_p ( "error:サムネイル元になる画像が読み込めませんでした。" );//error
    exit ();
  }
}

function html_p ( $str ) {
  echo ( "<p>$str</>\n" );
}

?>

<SCRIPT lauguage="javascript">
<!--

   //-- CLOSE
   var cc =""
   cc +="<CENTER>"
   cc +="<A href='javascript:close()' onfocus='this.blur()'>"
   cc +="<H4>閉じる</H4>"
   cc +="</A>"
   cc +="</CENTER>"
   
   document.write(cc)

//-->
</SCRIPT>

</P>
</body>
</html>