', $data['mailBody']); } fclose($fp); return $data; } else { return 0; } } function saveMailDataFile($path, $kouzaCode, $mailId, $sendDate, $mailTitle, $mailBody){ // ロック取得 $lockFile = fopen($path.LOCKFILE, 'r'); flock($lockFile, 2); $data = ""; $data .= "$sendDate\n"; $data .= "$mailTitle\n"; $data .= "$mailBody"; $data = i18n_convert($data, 'SJIS', 'EUC'); if (ereg('^[0-9]+$', $kouzaCode) && ereg('^[0-9]+$', $mailId)){ $fp = fopen("$path/data/$kouzaCode/$mailId.dat", 'w'); if ($fp){ fputs($fp,$data); fclose($fp); // パーミッション変更 (0666) chmod("$path/data/$kouzaCode/$mailId.dat", 0666); } } // ロック解除 flock($lockFile, 3); fclose($lockFile); } function createIndex($path){ // ロック取得 $lockFile = fopen($path.LOCKFILE, 'r'); flock($lockFile, 2); // テンプレートファイル読み込み $template = ""; $fp = fopen("$path/admin/template.html", 'r'); if ($fp){ while (!feof($fp)){ $template .= fgets($fp, MAX_LENGTH); } fclose($fp); } $template = i18n_convert($template, 'EUC', 'SJIS'); $errorFiles = ""; // ディレクトリループ if ($dir = opendir("$path/data")){ while ($file = readdir($dir)){ if (ereg('^[0-9]+$', $file)){ $errorFile = createKouzaIndex($path, $file, $template); if ($errorFile != ''){ $errorFiles .= "$errorFile\n"; } } } closedir($dir); } // ロック解除 flock($lockFile, 3); fclose($lockFile); return $errorFiles; } function createKouzaIndex($path, $kouzaCode, $template){ $mailList = array(); $count = 0; if (ereg('^[0-9]+$', $kouzaCode)){ if ($dir = opendir("$path/data/$kouzaCode")){ while ($file = readdir($dir)){ if (ereg('^([0-9]+).dat$', $file, $regs)){ $mailId = $regs[1]; $mailData = readMailDataFile($path, $kouzaCode, $mailId, 0); if (is_array($mailData)){ $mailList[$mailData['sendDate'].'_'.$count] = $mailData; } } $count++; } closedir($dir); } krsort($mailList); ereg('^(.*)__START_IF__(.*)__LOOP_START__(.*)__LOOP_END__(.*)__ELSE__(.*)__END_IF__(.*)$', $template, $parts); /* $parts[1] 共通部分 $parts[2] 過去記事がある場合 $parts[3] ループ $parts[4] 過去記事がある場合 $parts[5] 過去記事が無い場合 $parts[6] 共通部分 */ $loopTemplate = $parts[3]; $parts[3] = ''; for ($i=1; $i<=6; $i++){ while (ereg('\$\{([a-zA-z0-9]+)\}', $parts[$i], $regs)){ $parts[$i] = ereg_replace("\\$\{${regs[1]}\}", $$regs[1], $parts[$i]); } } $html = ''; if (count($mailList) > 0){ $html .= $parts[1]; $html .= $parts[2]; while (list($key, $mailData) = each($mailList)){ $loopParts = $loopTemplate; while (ereg('\$\{([a-zA-z0-9]+)\}', $loopParts, $regs)){ $loopParts = ereg_replace("\\$\{${regs[1]}\}", $mailData[$regs[1]], $loopParts); } $html .= $loopParts; } $html .= $parts[4]; $html .= $parts[6]; } else { $html .= $parts[1]; $html .= $parts[5]; $html .= $parts[6]; } $html = i18n_convert($html, 'SJIS', 'EUC'); $fp = fopen("$path/list/$kouzaCode.html", 'w'); if ($fp){ fputs($fp,$html); fclose($fp); return ""; } else { return "$kouzaCode.html"; } } } ?>