Viewing file: index.php (13.3 KB) -rwxrwxrwx 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, $award) { /*if ($award == 3) $content = file_get_contents("template2016_red.htm"); else*/ $content = file_get_contents("template2016_normal.htm"); $page_pos_beg = strpos($content,'<body lang=RU>')+1 + strlen('<body lang=RU>'); $page_pos_end = strpos($content,'</body>')-1; $header = substr($content,0,$page_pos_beg - 1); $page = substr($content,$page_pos_beg, $page_pos_end - $page_pos_beg-1); $footer = substr($content,$page_pos_end + 1); //$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 str_replace('{margins}', file_get_contents("params.dat"), $header); $arr = array(); foreach($data as $row) { $keys = array_keys($row); $values = array_values($row);
$arr [] = str_replace($keys, $values, $page);
} echo implode("<div class=WordSection2></div>", $arr); echo $footer; $html = ob_get_contents(); ob_end_clean(); $path = 'files/'.$name; file_put_contents(iconv('cp1251','utf-8',$path), $html); return $path; } function download_template($name, $data) { $header = file_get_contents("header.xml"); $footer = file_get_contents("footer.xml"); $page = file_get_contents("page.xml");
ob_start(); echo $header; echo $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 = "<p style='margin-bottom:6pt; margin-top: 0;text-align:center'>"; if ($ukr['gender'] == 1) $str.= "закінчив"; else $str .= 'закінчила'; $str .= " у {$ukr['year']} "; $str .= "<br/><span style='font-weight: bold'>".$ukr['universityname']."</span></p>"; return $str; } function get_text_eng($eng) { $str = "<p style='margin-bottom:6pt; margin-top: 0;text-align:center'>"; $str .= "in {$eng['year']} completed the full course of <br/><span style='font-weight: bold'>Zhytomyr State Technological<br/>University</span> </p>"; return $str; }
function get_date_ukr($ukr) { $date = explode("/", $ukr); $arr = array("", "січня", "лютого", "березня", "квітня", "травня", "червня", "липня", "серпня", "вересня", "жовтня", "листопада", "грудня"); //return "{$date[0]} {$arr[(int)$date[1]]} {$date[2]} р."; return "{$date[0]} {$arr[(int)$date[1]]} "; } 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]}"; return " {$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 qualification:<br /> "; switch($eng['specdirprofcode'][0]) { case '6' : $str .= 'bachelor\'s'; break; case '7' : $str .= 'specialist\'s'; break; case '8' : $str .= '<b>Master</b> Degree'; break; } $str .= "<br/> Program Subject Area "; $str .= "{$eng['specdirprofcode']} «".mb_ucfirst($eng['specdirprofname'])."»<br/>"; if ($_POST['qualif']) $str .= "Professional qualification ". ucfirst($eng['qualification']) ."<br/>"; return $str; }*/ function get_qualif_eng($eng) { /*$str = "in {$eng['year']} completed the full course of {$eng['universityname']} <br/>";*/ $str = "<p style='margin-bottom:6pt; margin-top:0;'>obtained qualification:</p> "; //$str = ""; switch($eng['specdirprofcode'][0]) { case '6' : $str .= 'bachelor\'s'; break; case '7' : $str .= 'specialist\'s'; break; case '8' : $str .= '<p style="margin-bottom:6pt; margin-top:0;"><b>Master</b> Degree</p>'; break; } $str .= "<p style='margin-bottom:6pt; margin-top:0;'><span style=\"font-size:12pt;\">Program Subject Area</span> "; $str .= "{$eng['specdirprofcode']} «".mb_ucfirst($eng['specdirprofname'])."»</p>"; if ($_POST['qualif']) $str .= "<p style='margin-bottom:6pt; margin-top:0;'><p style='margin-bottom:6pt; margin-top:0;'><span style=\"font-size:12pt;\">Professional Qualification</span> ". ucfirst($eng['qualification']) ."</p>"; return $str; }
function get_qualif_ukr($ukr) { $str = "<p style='margin-bottom:6pt; margin-top:0;'>"; if ($ukr['gender'] == 1) $str .= "здобув"; else $str .='здобула'; $str .= " кваліфікацію:</p>"; switch($ukr['specdirprofcode'][0]) { case '6' : $str .= '<p style="margin-bottom:6pt; margin-top:0;"><span style="font-size:12pt;">ступінь вищої освіти</span> <b>бакалавр</b></p>'; break; case '7' : $str .= '<p style="margin-bottom:6pt; margin-top:0;"><span style="font-size:12pt;">ступінь вищої освіти</span> <b>спеціаліст</b></p>'; break; case '8' : $str .= '<p style="margin-bottom:6pt; margin-top:0;"><span style="font-size:12pt;">ступінь вищої освіти</span> <b>магістр</b></p>'; break; } //$str .= "<br/>"; switch($ukr['specdirprofcode'][0]) { case '6' : $str .= "<p style='margin-bottom:6pt; margin-top:0;'><span style=\"font-size:12pt;\">спеціальність</span> "; break; case '7' : $str .= "<p style='margin-bottom:6pt; margin-top:0;'><span style=\"font-size:12pt;\">спеціальність</span> "; break; case '8' : $str .= "<p style='margin-bottom:6pt; margin-top:0;'><span style=\"font-size:12pt;\">спеціальність</span> "; break; } $str .= "{$ukr['specdirprofcode']} «".mb_ucfirst($ukr['specdirprofname'])."»</p>"; if ($_POST['qualif']) $str .= "<p style='margin-bottom:6pt; margin-top:0;'><span style=\"font-size:12pt;\">професійна кваліфікація</span> ". $ukr['qualification']."</p>"; return $str; } function get_degree($code, $lang) { switch($code) { case '6' : if ($lang == 'ukr') return 'ДИПЛОМ БАКАЛАВРА'; else return 'BACHELOR\'S DIPLOMA'; break; case '7' : if ($lang == 'ukr') return 'ДИПЛОМ СПЕЦІАЛІСТА'; else return 'SPECIALIST\'S DIPLOMA'; break; case '8' : if ($lang == 'ukr') return 'ДИПЛОМ МАГІСТРА'; else return 'MASTER\'S DIPLOMA'; break; } } 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), '{QualifUkr}' => get_qualif_ukr($ukr), '{Year}' => "{$ukr['year']}", '{QualifEng}' => get_qualif_eng($eng), '{TextEng}' => get_text_eng($eng), '{DateUkr}' => get_date_ukr($ukr['dategive']), '{DateEng}' => get_date_eng($ukr['dategive']), '{DegreeUkr}' => get_degree($eng['specdirprofcode'][0], 'ukr'), '{DegreeEng}' => get_degree($eng['specdirprofcode'][0], 'eng'), ); } 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; $studs_male = array(); $studs_female = array(); foreach($xml->document as $document) { $count++; $data = $document->documentdata; if ($data['award'] == 3) $add = '<br />'; else $add = ''; if ($data['idtypesex'] == 1) $studs_male[] = iconv('utf-8','cp1251',strval($data['firstname'])).' ('.iconv('utf-8','cp1251',$data['fio']).')'; if ($data['idtypesex'] == 2) $studs_female[] = iconv('utf-8','cp1251',strval($data['firstname'])).' ('.iconv('utf-8','cp1251',$data['fio']).')'; $date = $data['dateendeducation']; $a = explode("/", $date); $year = $a[2]; $ukr = array('fio' => strval($data['fio']), 'gender' => intval($data['idtypesex']), 'year' => $year.' році', 'universityname' => iconv('utf-8','cp1251',strval($data['universityname'])), 'qualificationname' => iconv('utf-8','cp1251',strval($data['educationqualificationname'])), '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' => $add.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['educationqualificationname'])), 'specdirprofcode' => strval($data['specdirprofcode']), 'boss' => 'Євдокимов В.В.', ); $eng = array('fio' => strval($data['fioen']), 'year' => $year, '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' => $add.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' => 'Yevdokymov V.V.', ); if (isset($_POST['qualifdelete'])) { $p1 = strpos($ukr['qualification'], ','); $p2 = strpos($ukr['qualification'], ';'); // var_dump($p1); // var_dump($p2); $p = 0; if ($p1 > 0 && $p2 > 0) $p = min($p1, $p2); if ($p1 > 0 && $p2 == 0) $p = $p1; if ($p2 > 0 && $p1 == 0) $p = $p2; if ($p > 0) $ukr['qualification'] = substr($ukr['qualification'], $p+1);
$p1 = strpos($eng['qualification'], ','); $p2 = strpos($eng['qualification'], ';'); $p = 0; if ($p1 > 0 && $p2 > 0) $p = min($p1, $p2); if ($p1 > 0 && $p2 == 0) $p = $p1; if ($p2 > 0 && $p1 == 0) $p = $p2; if ($p > 0) $eng['qualification'] = substr($eng['qualification'], $p+1); } 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,3); 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 "<strong>Для перевірки:</strong><br/>Студенти чоловічої статі (".count($studs_male)."):"; echo "<ul>"; for($i = 0; $i < count($studs_male); $i++) echo "<li>{$studs_male[$i]}</li>"; echo "</ul>"; echo "Студенти жіночої статі (".count($studs_female)."):"; echo "<ul>"; for($i = 0; $i < count($studs_female); $i++) echo "<li>{$studs_female[$i]}</li>"; echo "</ul>"; 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:30px;"> <label> <input type="checkbox" name="qualif" value="true" checked /> Вказувати кваліфікацію у дипломі </label> </div> <div style="margin-top:30px;"> <label> <input type="checkbox" name="qualifdelete" value="true" /> Залишити лише професійну кваліфікацію (будуть залишені лише кваліфікації з шифрами) </label> </div> <div style="margin-top:20px;"><button type="submit" style="font-size:20px; padding:10px;">Сформувати Word-файли</button></div> </form> </body> </html>
|