הורדת רשימת תפוצה בקובץ אקסל או csv - גירסה מעודכנת
נשלח: 09:07 15/04/2018
מצו"ב הקוד
עיצובים ושיפורים באדיבות "מאזין נלהב"
ניתן לבחור את סוג הקובץ שירד אקסל או csv
(גם הcsv נפתח חלק באקסל ללא תקלות)
הקובץ שנוצר יורד מיד למחשב ללא צורך בפתיחת דף נוסף
להלן הקובץ: וזה תוכנו
בהצלחה
עיצובים ושיפורים באדיבות "מאזין נלהב"
ניתן לבחור את סוג הקובץ שירד אקסל או csv
(גם הcsv נפתח חלק באקסל ללא תקלות)
הקובץ שנוצר יורד מיד למחשב ללא צורך בפתיחת דף נוסף
להלן הקובץ: וזה תוכנו
קוד: בחירת הכל
<?php
mb_internal_encoding("UTF-8");
if (isset($_REQUEST['token'])) { // אם יש טוקן
$token = $_REQUEST['token'];
} elseif (isset($_REQUEST['DID']) && isset($_REQUEST['PASS'])) { // אם אין טוקן, אבל יש שם משתמש וסיסמא
$token = token_yemot($_REQUEST['DID'], $_REQUEST['PASS']);
if(isset($token['responseStatus'])) { // אם יש שגיאה
$massage = $token['message'];
login($massage);
}
} else {
login();
}
if (!isset($_REQUEST['templateId'])) { // אם קיים הערך מספר תבנית
get_templates_form($token);
}
else {
$templateId = $_REQUEST['templateId'];
if($_REQUEST['FileType'] == 'csv' )
{ create_file_csv($token, $templateId);
}
if($_REQUEST['FileType'] == 'xls' )
{ create_file_xls($token, $templateId);
}
}
//=====================================================================================
//============= פונקציות =============================================================
//פונקציה להתחברות לימות שמחזירה את הטוקן
//הארגומנטים הנדרשים: מספר מערכת, סיסמא.
function token_yemot($DID = '' , $password = '')
{
//בדיקה האם התקבלו הארגומנטים
if ($DID == '' || $password == '') {
echo $DID;
echo $password;
echo "לא הוזן מספר מערכת או סיסמא" ;
}else{
//הכרזה על משתנה
$url_yemot="https://www.call2all.co.il/ym/api";
//הצבת הכתובת להתחברות במשתנה $url
$url= "$url_yemot/Login?username=$DID&password=$password";
//פונקציית ההתחברות, התשובה (מחרוזת json) מוחזרת למשתנה $token
$token = file_get_contents($url);
//פענוח הjson של תשובת ימות והצבתו לתוך מערך
$token = json_decode($token,TRUE);
//בדיקה האם אכן יש אישור להתחברות,
if ($token['responseStatus'] != "OK")
//אם לא
{
return $token;
//ואם כן…
}else{
//הצבת הטוקן לתוך המשתנה והחזרתו
$token = $token['token'];
return $token ;
}
}
}
//פונקצייה לקבלת כל התבניות הפונקציה מחזירה מערך של כל הרשימה
//הארגומנטים הנדרשים: טוקן
function yemot_GetTemplates($token=0)
{
//בדיקה האם התקבלו הארגומנטים
if ($token===0 )
{
echo "id_list_message=t-לא הוזן טוקן& ";
//אם התקבלו הארגומנטים ,ממשיך…
}else{
//הכרזה על משתנה
$url_yemot="https://www.call2all.co.il/ym/api";
//הצבת הכתובת להתחברות במשתנה $url
$url= "$url_yemot/GetTemplates?token=$token";
//print $url;
//פונקציית ההתחברות, התשובה (מחרוזת json) מוחזרת למשתנה $templates
$templates = file_get_contents($url);
//פענוח הjson של תשובת ימות והצבתו לתוך מערך
$templates = json_decode($templates,TRUE);
//בדיקה האם אכן יש אישור להתחברות,
if ($templates['responseStatus'] != "OK")
//אם לא
{
echo "שגיאה בקבלת רשימת התבניות מהמערכת ";
print_r($templates);
//ואם כן…
}else{
//הצבת הרשימה לתוך המשתנה והחזרתה כמערך
$templates = $templates['templates'];
return $templates ;
}
}
}
//פונקצייה לקבלת רשימת תפוצה מסוימת הפונקציה מחזירה מערך של כל הרשימה
//הארגומנטים הנדרשים: טוקן, מספר תבנית בימות.
function yemot_GetTemplateEntries($token=0,$templateId=0)
{
//בדיקה האם התקבלו הארגומנטים
if ($token===0 or $templateId<10000)
{
echo "לא הוזן מספר תבנית תקני בימות המשיח, ,שימו לב שמספר התבנית אינו המספר הסידורי שלו במערכת שלכם , אלא מספר מזהה פנימי בימות המשיח";
//אם התקבלו הארגומנטים ,ממשיך…
}else{
//הכרזה על משתנה
$url_yemot="https://www.call2all.co.il/ym/api";
//הצבת הכתובת להתחברות במשתנה $url
$url= "$url_yemot/GetTemplateEntries?token=$token&templateId=$templateId";
//פונקציית ההתחברות, התשובה (מחרוזת json) מוחזרת למשתנה $Entries
$Entries = file_get_contents($url);
//פענוח הjson של תשובת ימות והצבתו לתוך מערך
$Entries = json_decode($Entries,TRUE);
//בדיקה האם אכן יש אישור להתחברות,
if ($Entries['responseStatus'] != "OK")
//אם לא
{
echo "שגיאה בקבלת הרשימה מהמערכת , וודאו כי הזנתם מספר תבנית תקני, ,שימו לב שמספר התבנית אינו המספר הסידורי שלו במערכת שלכם , אלא מספר מזהה פנימי בימות המשיח";
//ואם כן…
}else{
//הצבת הרשימה לתוך המשתנה והחזרתה כמערך
//$Entries = $Entries['entries'];
return $Entries ;
}
}
}
// מחזירה את שורת הכותרת
function my_header() {
?>
<!DOCTYPE html>
<html>
<head>
<title>קבלת רשימת תפוצה בקובץ אקסל</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta http-equiv="content-language" content="he" />
<!--<link href="style.css" rel="stylesheet" />-->
<style>
@font-face {
font-family: 'Varela Round';
font-style: normal;
font-weight: 400;
src: local('Varela Round Regular'), local('VarelaRound-Regular'), url(https://fonts.gstatic.com/s/varelaround/v9/w8gdH283Tvk__Lua32TysjIfpcuPP9g.woff2) format('woff2');
unicode-range: U+0590-05FF, U+20AA, U+25CC, U+FB1D-FB4F;
}
* {
box-sizing: border-box;
}
body, html {
height: 100%;
margin: 0;
}
header {
text-align: center;
margin: 0;
background-color: #ab3b3b;
border-bottom: 4px solid #f15f5f;
color: #fff;
font-family: 'Varela Round', sans-serif;
padding: 10px;
box-shadow: 0 0 18px 5px #f15f5fbf;
position: fixed;
width: 100%;
}
a {
color: #deac8e;
}
a:hover {
color: #ead4c7;
}
a:active {
color: #f15f5f;
}
header h2 {
margin: 0;
padding: 10px;
color: wheat;
}
header p {
margin: 5px;
}
img {
top: 50px;
position: fixed;
object-fit: cover;
z-index: -1;
max-height: 100%;
min-width: 100%;
}
img.blur {
filter: blur(5px);
}
.form {
margin: auto;
width: 320px;
height: 280px;
border: 3px solid #f15f5f;
position: fixed;
text-align: center;
padding: 60px 10px;
background-color: #ffffffd1;
box-shadow: 0 0 40px 11px #f15f5fbf;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
.form input {
width: 200px;
border: 1px solid #f15f5f;
border-radius: 5px;
margin: 10px;
padding: 10px;
}
.form #submit {
background-color: #ef8282;
padding: 5px;
}
.form #submit:hover {
background-color: #d85252;
}
.form #submit:active {
background-color: #a52323;
}
.form #message {
background-color: #e67e7e;
border: 2px solid #bb2121;
border-radius: 5px;
color: #7d0303;
}
.form #message p {
margin: 7px;
}
.form select {
width: 200px;
border: 1px solid #f15f5f;
border-radius: 5px;
margin: 10px;
padding: 10px;
}
footer {
font-family: 'Varela Round', sans-serif;
position: absolute;
bottom: 0;
background-color: #ab3b3b;
border-top: 4px solid #f15f5f;
width: 100%;
box-shadow: 0 0 18px 5px #f15f5fbf;
position: fixed;
}
footer p {
margin: 5px;
font-size: 12px;
color: #d48383;
padding-right: 10px;
}
</style>
</head>
<body dir="rtl">
<header>
<h2>בסייעתא דשמיא</h2>
<p>טופס להורדת קובץ אקסל של רשימת תפוצה</p>
<p>פותח על ידי "סל שרותים מתקדמים" , אימייל <a href="mailto:support@salsm.com">support@salsm.com</a></p>
</header>
<?php
}
// פונקציה שמחזירה את טופס הכניסה
// (עם הודעת שגיאה - כשצריך)
function login($message = '') {
my_header();
?>
<img class="blur" src="http://salsm.000webhostapp.com/xlsimg/img.jpg" />
<div id="login" class="form">
<?php
if($message != '') {
?><div id="message"><p><?=$message?></p></div>
<?php
}
?>
<form action="" method="POST" ENCTYPE="multipart/form-data">
<div class="row">
<input type="text" name="DID" id="user" value="" placeholder="שם משתמש"/>
</div>
<div class="row">
<input type="password" name="PASS" id="user" value="" placeholder="סיסמא"/>
</div>
<div class="row">
<input id="submit" class="button" type="submit" name="submit" value="התחבר" /><div class="clear"></div>
</div>
</form>
</div>
<?php
footer();
die();
}
// מחזירה את טופס בחירת רשימות התפוצה
function get_templates_form($token,$message = '') {
$templates = yemot_GetTemplates($token);
my_header();
?>
<img src="https://011371php.000webhostapp.com/xlsimg/img.jpg" />
<div id="login" class="form">
<?php
if($message != '') {
?><div id="message"><p><?=$message?></p></div>
<?php
}
?>
<form action="" method="POST" ENCTYPE="multipart/form-data">
<div class="row">
<input type="hidden" name="token" value="<?=$token?>" />
</div>
<div class="row">
<select id="templateId" name="templateId">
<option value="" >בחר תבנית מהרשימה</option>
<?php
foreach($templates as $template) {
?>
<option value="<?=$template['templateId']?>"><?='תבנית מספר: '. $template['templateId'].' '.$template['description']?></option>
<?php
}
?>
</select>
</div>
<div class="row">
<select id="FileType" name="FileType">
<option value="xls" >סוג הקובץ: אקסל (.xls) </option>
<option value="csv" >סוג הקובץ : csv</option>
</select>
</div>
<div class="row">
<input type="submit" id="submit" value="צור קובץ" />
</div>
<h3><a href="<?=$_SERVER['REQUEST_URI']?>">יציאה</a></h3>
</form>
</div>
<?php
footer();
die();
}
// מחזירה את הכותרת התחתונה
function footer() {
?>
<footer>
<p>עיצוב: מאזין נלהב - <a href="mailto:MaazinNilhav@gmail.com">MaazinNilhav@gmail.com</a></p>
</footer>
</body>
</html><?php
die();
}
function create_file_csv($token, $templateId) {
if ($templateId == '') {
$massage = "לא נבחרה רשימת תפוצה";
get_templates_form($token, $massage);
}
$templates = yemot_GetTemplates($token);
foreach($templates as $template) {
if ($templateId == $template['templateId']) {
$template_name = $template['description'];
break;
}
}
$Entries = yemot_GetTemplateEntries($token ,$templateId);
$template_name = str_replace(
array("?" , "|" , '"' , "%" , '&' , "'" , '*' , ',' , ':' , '<' , '>' , '/' , '\\' , '{' , '}' , '~' , " "),
"_" ,$template_name);
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename='.'תבנית_'.$templateId. "_".$template_name.".csv");
$handle = fopen( "php://output" , "w");//יצירת הקובץ
fputs($handle , $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) ));
fputcsv($handle, array ("מזהה רשומה" , "מספר סידורי" , "מספר טלפון" , "מצב" , "שם" , "מידע נוסף" )); //כתיבת שורת הכותרת
$Entries = $Entries['entries'];
foreach( $Entries as $Entri ) {
$Entri['blocked']==1? $Entri['blocked']='חסום' : $Entri['blocked']='פעיל' ;
fputcsv($handle, $Entri );//כתיבת הרשומה לקובץ
}
fclose($handle);//סגירת הקובץ
}
// יוצרת קובץ
function create_file_xls($token, $templateId) {
if ($templateId == '') {
$massage = "לא נבחרה רשימת תפוצה";
get_templates_form($token, $massage);
}
$templates = yemot_GetTemplates($token);
foreach($templates as $template) {
if ($templateId == $template['templateId']) {
$template_name = $template['description'];
break;
}
}
$Entries = yemot_GetTemplateEntries($token ,$templateId);
$template_name = str_replace(
array("?" , "|" , '"' , "%" , '&' , "'" , '*' , ',' , ':' , '<' , '>' , '/' , '\\' , '{' , '}' , '~' , " "),
"_" ,$template_name);
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename='.'תבנית_'.$templateId. "_".$template_name.".xls");
$handle = fopen("php://output", "w");//יצירת הקובץ
$file = '
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>קובץ רשימת תפוצה, נוצר בעזרת פיתוח של "סל שרותים מתקדמים"</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body dir="rtl">
<table border="1" >
<thead>
<tr>
<th>מזהה רשומה</th>
<th>מספר סידורי</th>
<th>מספר טלפון</th>
<th>מצב</th>
<th>שם</th>
<th>מידע נוסף</th>
</tr>
</thead>
<tbody>';
fwrite($handle, $file);
$Entries = $Entries['entries'];
foreach( $Entries as $Entri ) {
$Entri['blocked']==1? $Entri['blocked']='חסום' : $Entri['blocked']='פעיל' ;
$Entri = implode( "</td><td>" , $Entri );
fwrite($handle, '<tr><td>' . $Entri . '</td></tr>'."\r\n");
}
$file =
'
</tbody>
</table>
</body>
</html>
';
fwrite($handle, $file);//סגירת הטבלה
fclose($handle);//סגירת הקובץ
}
?>