Viewing file: old_index.php (8.9 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?
//error_reporting(E_ALL);
if (!function_exists('mb_str_replace')) {
function mb_str_replace($search, $replace, $subject, &$count = 0) {
if (!is_array($subject)) {
// Normalize $search and $replace so they are both arrays of the same length
$searches = is_array($search) ? array_values($search) : array($search);
$replacements = is_array($replace) ? array_values($replace) : array($replace);
$replacements = array_pad($replacements, count($searches), '');
foreach ($searches as $key => $search) {
$parts = mb_split(preg_quote($search), $subject);
$count += count($parts) - 1;
$subject = implode($replacements[$key], $parts);
}
} else {
// Call mb_str_replace for each subject in array, recursively
foreach ($subject as $key => $value) {
$subject[$key] = mb_str_replace($search, $replace, $value, $count);
}
}
return $subject;
}
}
function generate($name, $data)
{
$header = file_get_contents("header.xml");
$footer = file_get_contents("footer.xml");
$page = file_get_contents("page.xml");
/*header("Cache-Control: public");
header("Content-Description: File Transfer");
$fileName = $name.".doc";
header("Content-Disposition: attachment; filename=$fileName");
header("Content-Type: application/msword");
header("Content-Transfer-Encoding: binary");*/
ob_start();
echo $header;
foreach($data as $row)
{
$keys = array_keys($row);
$values = array_values($row);
echo str_replace($keys, $values, $page);
}
echo $footer;
$html = ob_get_contents();
ob_end_clean();
$path = 'files/'.$name;
file_put_contents(iconv('cp1251','utf-8',$path), $html);
return $path;
}
function get_text_ukr($ukr)
{
$str = "";
if ($ukr['gender'] == 1) $str.= "закінчив"; else $str .= 'закінчила';
$str .= " у {$ukr['year']} ";
$str .= $ukr['universityname']."<br />";
if ($ukr['gender'] == 1) $str .= "здобув"; else $str .='здобула';
$str .= " ступінь ";
switch($ukr['specdirprofcode'][0])
{
case '6' : $str .= 'бакалавра '; break;
case '7' : $str .= 'спеціаліста '; break;
case '8' : $str .= 'магістра '; break;
}
$str .= "<br/>";
switch($ukr['specdirprofcode'][0])
{
case '6' : $str .= 'за напрямом підготовки '; break;
case '7' : $str .= '';
if ($ukr['gender'] == 1) $str .= "отримав "; else $str .= 'отримала ';
$str .= 'повну вищу освіту <br />за спеціальністю '; break;
case '8' : $str .= '';
if ($ukr['gender'] == 1) $str .= "отримав "; else $str .= 'отримала ';
$str .= 'повну вищу освіту <br />за спеціальністю '; break;
}
$str .= "{$ukr['specdirprofcode']} «".mb_ucfirst($ukr['specdirprofname'])."»<br/>";
if ($ukr['gender'] == 1) $str.= "здобув "; else $str.='здобула ';
$str .= "кваліфікацію ". $ukr['qualification']."<br/><br/>";
return $str;
}
function get_date_ukr($ukr)
{
$date = explode("/", $ukr);
$arr = array("", "січня", "лютого", "березня", "квітня", "травня", "червня", "липня", "серпня", "вересня", "жовтня", "листопада", "грудня");
return "{$date[0]} {$arr[(int)$date[1]]} {$date[2]} р.";
}
function get_date_eng($ukr)
{
$date = explode("/", $ukr);
$arr = array("", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
return "{$date[0]} {$arr[(int)$date[1]]} {$date[2]}";
}
function get_text_eng($eng)
{
$str = "in {$eng['year']} completed the full course of {$eng['universityname']} <br/>";
$str .= "obtained ";
switch($eng['specdirprofcode'][0])
{
case '6' : $str .= 'bachelor\'s'; break;
case '7' : $str .= 'specialist\'s'; break;
case '8' : $str .= 'master\'s'; break;
}
$str .= " degree in the<br/>";
$str .= "field of study {$eng['specdirprofcode']} «".mb_ucfirst($eng['specdirprofname'])."»<br/>";
$str .= "obtained qualification of ". ucfirst($eng['qualification']) ."<br/>";
return $str;
}
function generate_array($ukr, $eng)
{
return array(
'{Number}' => "{$ukr['series']} №{$ukr['number']}",
'{SurnameUkr}' => "{$ukr['lastname']}",
'{NameUkr}' => "{$ukr['firstname']}",
'{FatherNameUkr}' => "{$ukr['middlename']}",
'{SurnameEng}' => "{$eng['lastname']}",
'{NameEng}' => "{$eng['firstname']}",
'{FatherNameEng}' => "{$eng['middlename']}",
'{TextUkr}' => get_text_ukr($ukr),
'{TextEng}' => get_text_eng($eng),
'{DateUkr}' => get_date_ukr($ukr['dategive']),
'{DateEng}' => get_date_eng($ukr['dategive']),
);
}
mb_internal_encoding("cp1251");
function mb_ucfirst($text) {
return mb_strtoupper(mb_substr($text, 0, 1)) . mb_substr($text, 1);
}
$file_in_server = $_FILES['xmlfile']['tmp_name'];
if (is_file($file_in_server))
{
$xml = simplexml_load_file($file_in_server);
$year = 2015;
$arr1 = array();
$arr2 = array();
$count = 0;
foreach($xml->document as $document)
{
$count++;
$data = $document->documentdata;
$ukr = array('fio' => strval($data['fio']),
'gender' => intval($data['idtypesex']),
'year' => '2016 році',
'universityname' => iconv('utf-8','cp1251',strval($data['universityname'])),
'qualificationname' => iconv('utf-8','cp1251',strval($data['qualificationname'])),
'specdirprofcode' => iconv('utf-8','cp1251',strval($data['specdirprofcode'])),
'specdirprofname' => iconv('utf-8','cp1251',strval($data['specdirprofname'])),
'bossworkpost' => iconv('utf-8','cp1251',strval($data['bossworkpost'])),
'series' => iconv('utf-8','cp1251',strval($data['series'])),
'dategive' => iconv('utf-8','cp1251',strval($data['dategive'])),
'number' => iconv('utf-8','cp1251',strval($data['number'])),
'lastname' => iconv('utf-8','cp1251',strval($data['lastname'])),
'firstname' => iconv('utf-8','cp1251',strval($data['firstname'])),
'middlename' => iconv('utf-8','cp1251',strval($data['middlename'])),
'qualification' => iconv('utf-8','cp1251',strval($data['educationqualificationnamerod'])),
'specdirprofcode' => strval($data['specdirprofcode']),
'boss' => 'Мельничук П.П.',
);
$eng = array('fio' => strval($data['fioen']),
'year' => 2016,
'universityname' => strval($data['universitynameen']),
'qualificationname' => strval($data['qualificationnameen']),
'specdirprofcode' => strval($data['specdirprofcode']),
'specdirprofname' => strval($data['specdirprofnameen']),
'bossworkposten' => strval($data['bossworkposten']),
'dategive' => iconv('utf-8','cp1251',strval($data['dategive'])),
'series' => strval($data['series']),
'number' => strval($data['number']),
'lastname' => strval($data['lastnameen']),
'firstname' => strval($data['firstnameen']),
'middlename' => strval($data['middlenameEn']),
'qualification' => strval($data['educationqualificationnameen']),
'specdirprofcode' => strval($data['specdirprofcode']),
'boss' => 'Melnychuk P.P.',
);
if ($data['award'] == 3)
$arr2[] = generate_array($ukr, $eng);
else
$arr1[] = generate_array($ukr, $eng);
/*echo '<pre>';
print_r($document);
echo '</pre>';
var_dump($ukr);*/
}
$id = uniqid();
$path1 = generate($_FILES['xmlfile']['name'].'_звичайні_'.$id.'.doc',$arr1);
$path2 = generate($_FILES['xmlfile']['name'].'_червоні_'.$id.'.doc',$arr2);
echo "Всього: {$count} шт.</div>";
echo "<div style=\"margin-top:5px;\"><a href=\"/diplom/{$path1}\">Звичайні дипломи (".count($arr1)." шт.)</a></div>";
echo "<div style=\"margin-top:5px;\"><a href=\"/diplom/{$path2}\">Дипл оми з відзнакою (".count($arr2)." шт.)</a></div>";
echo "<br/><br/>";
echo "<div><a href=\"/diplom/\">Повернутися на головну</a></div>";
die;
}
?>
<!doctype html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta charset="windows-1251">
</head>
<body>
<h1>Система генерації Word-документів за XML-файлами з інформацією про дипломи</h1>
<form name="" method="post" enctype="multipart/form-data">
<div><input type="file" name="xmlfile" /></div>
<div style="margin-top:20px;"><button type="submit" style="font-size:20px; padding:10px;">Сформувати Word-файли</button></div>
</form>
</body>
</html>
|