-
Notifications
You must be signed in to change notification settings - Fork 0
/
export-sublime.php
77 lines (66 loc) · 2.27 KB
/
export-sublime.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
session_start();
include 'database/connect.php';
include 'functions.php';
include 'langCheck.php';
protect();
$query = $con->prepare("SELECT user_id FROM users WHERE username = ?");
$query->bind_param("s", $_SESSION['user']);
$query->execute();
$query->bind_result($user_id);
$query->fetch();
$query->close();
$data = array();
$query = $con->prepare("SELECT title, snippet FROM snippets WHERE user_id = ?");
$query->bind_param("s", $user_id);
$query->execute();
$query->bind_result($title, $snippet);
while($query->fetch()){
$data['title'][] = $title;
$data['snippet'][] = $snippet;
}
$query->close();
$string = "";
if (!file_exists($_SESSION['user'])) {
mkdir($_SESSION['user'], 0755, true);
}
$files = array();
for($i = 0; $i < count($data['title']); $i++){
$code = $data['snippet'];
$title = $data['title'];
$string = "<snippet>
<content><![CDATA[".
str_replace('$', '\\$', html_entity_decode($code[$i]))."
]]></content>
</snippet>
";
file_put_contents($_SESSION['user'] ."/". $title[$i] . ".sublime-snippet", $string);
$files[] = $title[$i] . ".sublime-snippet";
}
$inst = $lang['installationInst'];
file_put_contents($_SESSION['user'] ."/". $lang['instructions']. ".txt", $inst);
$zip = new ZipArchive();
$fileName = uniqid() . ".zip";
$zip->open($fileName, ZipArchive::CREATE);
foreach($files as $file){
$zip->addFile($_SESSION['user'] ."/". $file, "snippets/$file");
}
$zip->addFile($_SESSION['user'] ."/".$lang['instructions'].".txt", $lang['instructions'].".txt");
$zip->close();
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$fileName."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($fileName));
ob_end_flush();
@readfile($fileName);
foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($_SESSION['user'], FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST) as $path) {
$path->isFile() ? unlink( $path->getPathname() ) : rmdir($path->getPathname());
}
rmdir($_SESSION['user']);
unlink($fileName);
?>