Completed
Push — develop ( 4a4b5c...62a102 )
by Maxim
16s
created
install/sqlParser.class.php 1 patch
Indentation   +122 added lines, -122 removed lines patch added patch discarded remove patch
@@ -4,141 +4,141 @@
 block discarded – undo
4 4
 // SNUFFKIN/ Alex 2004
5 5
 
6 6
 class SqlParser {
7
-	public $host;
8
-	public $dbname;
9
-	public $prefix;
10
-	public $user;
11
-	public $password;
12
-	public $mysqlErrors;
13
-	public $conn;
14
-	public $installFailed;
15
-	public $sitename;
16
-	public $adminname;
17
-	public $adminemail;
18
-	public $adminpass;
19
-	public $managerlanguage;
20
-	public $mode;
21
-	public $fileManagerPath;
22
-	public $imgPath;
23
-	public $imgUrl;
24
-	public $dbMODx;
25
-	public $dbVersion;
7
+    public $host;
8
+    public $dbname;
9
+    public $prefix;
10
+    public $user;
11
+    public $password;
12
+    public $mysqlErrors;
13
+    public $conn;
14
+    public $installFailed;
15
+    public $sitename;
16
+    public $adminname;
17
+    public $adminemail;
18
+    public $adminpass;
19
+    public $managerlanguage;
20
+    public $mode;
21
+    public $fileManagerPath;
22
+    public $imgPath;
23
+    public $imgUrl;
24
+    public $dbMODx;
25
+    public $dbVersion;
26 26
     public $connection_charset;
27 27
     public $connection_method;
28 28
     public $ignoreDuplicateErrors;
29 29
     public $autoTemplateLogic;
30 30
 
31
-	public function __construct($host, $user, $password, $db, $prefix='modx_', $adminname, $adminemail, $adminpass, $connection_charset= 'utf8', $managerlanguage='english', $connection_method = 'SET CHARACTER SET', $auto_template_logic = 'parent') {
32
-		$this->host = $host;
33
-		$this->dbname = $db;
34
-		$this->prefix = $prefix;
35
-		$this->user = $user;
36
-		$this->password = $password;
37
-		$this->adminpass = $adminpass;
38
-		$this->adminname = $adminname;
39
-		$this->adminemail = $adminemail;
40
-		$this->connection_charset = $connection_charset;
41
-		$this->connection_method = $connection_method;
42
-		$this->ignoreDuplicateErrors = false;
43
-		$this->managerlanguage = $managerlanguage;
31
+    public function __construct($host, $user, $password, $db, $prefix='modx_', $adminname, $adminemail, $adminpass, $connection_charset= 'utf8', $managerlanguage='english', $connection_method = 'SET CHARACTER SET', $auto_template_logic = 'parent') {
32
+        $this->host = $host;
33
+        $this->dbname = $db;
34
+        $this->prefix = $prefix;
35
+        $this->user = $user;
36
+        $this->password = $password;
37
+        $this->adminpass = $adminpass;
38
+        $this->adminname = $adminname;
39
+        $this->adminemail = $adminemail;
40
+        $this->connection_charset = $connection_charset;
41
+        $this->connection_method = $connection_method;
42
+        $this->ignoreDuplicateErrors = false;
43
+        $this->managerlanguage = $managerlanguage;
44 44
         $this->autoTemplateLogic = $auto_template_logic;
45
-	}
45
+    }
46 46
 
47
-	public function connect() {
48
-		$this->conn = mysqli_connect($this->host, $this->user, $this->password);
49
-		mysqli_select_db($this->conn, $this->dbname);
50
-		if (function_exists('mysqli_set_charset')) mysqli_set_charset($this->conn, $this->connection_charset);
47
+    public function connect() {
48
+        $this->conn = mysqli_connect($this->host, $this->user, $this->password);
49
+        mysqli_select_db($this->conn, $this->dbname);
50
+        if (function_exists('mysqli_set_charset')) mysqli_set_charset($this->conn, $this->connection_charset);
51 51
 
52
-		$this->dbVersion = 3.23; // assume version 3.23
53
-		if(function_exists("mysqli_get_server_info")) {
54
-			$ver = mysqli_get_server_info($this->conn);
55
-			$this->dbMODx 	 = version_compare($ver,"4.0.2");
56
-			$this->dbVersion = (float) $ver; // Typecasting (float) instead of floatval() [PHP < 4.2]
57
-		}
52
+        $this->dbVersion = 3.23; // assume version 3.23
53
+        if(function_exists("mysqli_get_server_info")) {
54
+            $ver = mysqli_get_server_info($this->conn);
55
+            $this->dbMODx 	 = version_compare($ver,"4.0.2");
56
+            $this->dbVersion = (float) $ver; // Typecasting (float) instead of floatval() [PHP < 4.2]
57
+        }
58 58
 
59 59
         mysqli_query($this->conn,"{$this->connection_method} {$this->connection_charset}");
60
-	}
60
+    }
61 61
 
62 62
     public function process($filename) {
63
-	    global $custom_placeholders;
64
-
65
-		// check to make sure file exists
66
-		if (!file_exists($filename)) {
67
-			$this->mysqlErrors[] = array("error" => "File '$filename' not found");
68
-			$this->installFailed = true ;
69
-			return false;
70
-		}
71
-
72
-		$fh = fopen($filename, 'r');
73
-		$idata = '';
74
-
75
-		while (!feof($fh)) {
76
-			$idata .= fread($fh, 1024);
77
-		}
78
-
79
-		fclose($fh);
80
-		$idata = str_replace("\r", '', $idata);
81
-
82
-		// check if in upgrade mode
83
-		if ($this->mode === 'upd') {
84
-			// remove non-upgradeable parts
85
-			$s = strpos($idata,'non-upgrade-able[[');
86
-			$e = strpos($idata,']]non-upgrade-able') + 17;
87
-			if($s && $e) {
88
-			    $idata = str_replace(substr($idata, $s,$e-$s),' Removed non upgradeable items', $idata);
63
+        global $custom_placeholders;
64
+
65
+        // check to make sure file exists
66
+        if (!file_exists($filename)) {
67
+            $this->mysqlErrors[] = array("error" => "File '$filename' not found");
68
+            $this->installFailed = true ;
69
+            return false;
70
+        }
71
+
72
+        $fh = fopen($filename, 'r');
73
+        $idata = '';
74
+
75
+        while (!feof($fh)) {
76
+            $idata .= fread($fh, 1024);
77
+        }
78
+
79
+        fclose($fh);
80
+        $idata = str_replace("\r", '', $idata);
81
+
82
+        // check if in upgrade mode
83
+        if ($this->mode === 'upd') {
84
+            // remove non-upgradeable parts
85
+            $s = strpos($idata,'non-upgrade-able[[');
86
+            $e = strpos($idata,']]non-upgrade-able') + 17;
87
+            if($s && $e) {
88
+                $idata = str_replace(substr($idata, $s,$e-$s),' Removed non upgradeable items', $idata);
89 89
             }
90
-		}
91
-
92
-		// replace {} tags
93
-		$idata = str_replace('{PREFIX}', $this->prefix, $idata);
94
-		$idata = str_replace('{ADMIN}', $this->adminname, $idata);
95
-		$idata = str_replace('{ADMINEMAIL}', $this->adminemail, $idata);
96
-		$idata = str_replace('{ADMINPASS}', $this->adminpass, $idata);
97
-		$idata = str_replace('{IMAGEPATH}', $this->imgPath, $idata);
98
-		$idata = str_replace('{IMAGEURL}', $this->imgUrl, $idata);
99
-		$idata = str_replace('{FILEMANAGERPATH}', $this->fileManagerPath, $idata);
100
-		$idata = str_replace('{MANAGERLANGUAGE}', $this->managerlanguage, $idata);
101
-		$idata = str_replace('{AUTOTEMPLATELOGIC}', $this->autoTemplateLogic, $idata);
102
-		/*$idata = str_replace('{VERSION}', $modx_version, $idata);*/
103
-
104
-		// Replace custom placeholders
105
-		foreach($custom_placeholders as $key=>$val) {
106
-			if (strpos($idata, '{'.$key.'}') !== false) {
107
-				$idata = str_replace('{'.$key.'}', $val, $idata);
108
-			}
109
-		}
110
-
111
-		$sql_array = explode("\n\n", $idata);
112
-
113
-		$num = 0;
114
-		foreach($sql_array as $sql_entry) {
115
-			$sql_do = trim($sql_entry, "\r\n; ");
116
-
117
-			if (preg_match('/^\#/', $sql_do)) continue;
118
-
119
-			// strip out comments and \n for mysql 3.x
120
-			if ($this->dbVersion <4.0) {
121
-				$sql_do = preg_replace("~COMMENT.*[^']?'.*[^']?'~","",$sql_do);
122
-				$sql_do = str_replace('\r', "", $sql_do);
123
-				$sql_do = str_replace('\n', "", $sql_do);
124
-			}
125
-
126
-
127
-			$num = $num + 1;
128
-			if ($sql_do) mysqli_query($this->conn, $sql_do);
129
-			if(mysqli_error($this->conn)) {
130
-				// Ignore duplicate and drop errors - Raymond
131
-				if ($this->ignoreDuplicateErrors){
132
-					if (mysqli_errno($this->conn) == 1060 || mysqli_errno($this->conn) == 1061 || mysqli_errno($this->conn) == 1062 ||mysqli_errno($this->conn) == 1091) continue;
133
-				}
134
-				// End Ignore duplicate
135
-				$this->mysqlErrors[] = array("error" => mysqli_error($this->conn), "sql" => $sql_do);
136
-				$this->installFailed = true;
137
-			}
138
-		}
139
-	}
90
+        }
91
+
92
+        // replace {} tags
93
+        $idata = str_replace('{PREFIX}', $this->prefix, $idata);
94
+        $idata = str_replace('{ADMIN}', $this->adminname, $idata);
95
+        $idata = str_replace('{ADMINEMAIL}', $this->adminemail, $idata);
96
+        $idata = str_replace('{ADMINPASS}', $this->adminpass, $idata);
97
+        $idata = str_replace('{IMAGEPATH}', $this->imgPath, $idata);
98
+        $idata = str_replace('{IMAGEURL}', $this->imgUrl, $idata);
99
+        $idata = str_replace('{FILEMANAGERPATH}', $this->fileManagerPath, $idata);
100
+        $idata = str_replace('{MANAGERLANGUAGE}', $this->managerlanguage, $idata);
101
+        $idata = str_replace('{AUTOTEMPLATELOGIC}', $this->autoTemplateLogic, $idata);
102
+        /*$idata = str_replace('{VERSION}', $modx_version, $idata);*/
103
+
104
+        // Replace custom placeholders
105
+        foreach($custom_placeholders as $key=>$val) {
106
+            if (strpos($idata, '{'.$key.'}') !== false) {
107
+                $idata = str_replace('{'.$key.'}', $val, $idata);
108
+            }
109
+        }
110
+
111
+        $sql_array = explode("\n\n", $idata);
112
+
113
+        $num = 0;
114
+        foreach($sql_array as $sql_entry) {
115
+            $sql_do = trim($sql_entry, "\r\n; ");
116
+
117
+            if (preg_match('/^\#/', $sql_do)) continue;
118
+
119
+            // strip out comments and \n for mysql 3.x
120
+            if ($this->dbVersion <4.0) {
121
+                $sql_do = preg_replace("~COMMENT.*[^']?'.*[^']?'~","",$sql_do);
122
+                $sql_do = str_replace('\r', "", $sql_do);
123
+                $sql_do = str_replace('\n', "", $sql_do);
124
+            }
125
+
126
+
127
+            $num = $num + 1;
128
+            if ($sql_do) mysqli_query($this->conn, $sql_do);
129
+            if(mysqli_error($this->conn)) {
130
+                // Ignore duplicate and drop errors - Raymond
131
+                if ($this->ignoreDuplicateErrors){
132
+                    if (mysqli_errno($this->conn) == 1060 || mysqli_errno($this->conn) == 1061 || mysqli_errno($this->conn) == 1062 ||mysqli_errno($this->conn) == 1091) continue;
133
+                }
134
+                // End Ignore duplicate
135
+                $this->mysqlErrors[] = array("error" => mysqli_error($this->conn), "sql" => $sql_do);
136
+                $this->installFailed = true;
137
+            }
138
+        }
139
+    }
140 140
 
141 141
     public function close() {
142
-		mysqli_close($this->conn);
143
-	}
142
+        mysqli_close($this->conn);
143
+    }
144 144
 }
Please login to merge, or discard this patch.
manager/actions/import_site.static.php 1 patch
Indentation   +333 added lines, -333 removed lines patch added patch discarded remove patch
@@ -1,17 +1,17 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 if( ! defined('IN_MANAGER_MODE') || IN_MANAGER_MODE !== true) {
3
-	die("<b>INCLUDE_ORDERING_ERROR</b><br /><br />Please use the EVO Content Manager instead of accessing this file directly.");
3
+    die("<b>INCLUDE_ORDERING_ERROR</b><br /><br />Please use the EVO Content Manager instead of accessing this file directly.");
4 4
 }
5 5
 if(!$modx->hasPermission('import_static')) {
6
-	$modx->webAlertAndQuit($_lang["error_no_privileges"]);
6
+    $modx->webAlertAndQuit($_lang["error_no_privileges"]);
7 7
 }
8 8
 
9 9
 // Files to upload
10 10
 $allowedfiles = array(
11
-	'html',
12
-	'htm',
13
-	'shtml',
14
-	'xml'
11
+    'html',
12
+    'htm',
13
+    'shtml',
14
+    'xml'
15 15
 );
16 16
 ?>
17 17
 	<script language="javascript">
@@ -43,9 +43,9 @@  discard block
 block discarded – undo
43 43
 	<div class="tab-page">
44 44
 		<div class="container container-body">
45 45
 			<?php
46
-			if(!isset($_POST['import'])) {
47
-				echo "<div class=\"element-edit-message\">" . $_lang['import_site_message'] . "</div>";
48
-				?>
46
+            if(!isset($_POST['import'])) {
47
+                echo "<div class=\"element-edit-message\">" . $_lang['import_site_message'] . "</div>";
48
+                ?>
49 49
 				<form action="index.php" method="post" name="importFrm">
50 50
 					<input type="hidden" name="import" value="import" />
51 51
 					<input type="hidden" name="a" value="95" />
@@ -85,375 +85,375 @@  discard block
 block discarded – undo
85 85
 					<a href="javascript:;" class="btn btn-primary" onclick="window.importFrm.submit();"><i class="<?= $_style["actions_save"] ?>"></i> <?= $_lang["import_site_start"] ?></a>
86 86
 				</form>
87 87
 			<?php
88
-			} else {
89
-			run();
90
-			$modx->clearCache('full');
91
-			?>
88
+            } else {
89
+            run();
90
+            $modx->clearCache('full');
91
+            ?>
92 92
 				<a href="javascript:;" class="btn btn-primary" onclick="window.location.href='index.php?a=2';"><i class="<?= $_style["actions_close"] ?>"></i> <?= $_lang["close"] ?></a>
93 93
 				<script type="text/javascript">
94 94
 					top.mainMenu.reloadtree();
95 95
 					parent.tree.ca = 'open';
96 96
 				</script>
97 97
 				<?php
98
-			}
99
-			?>
98
+            }
99
+            ?>
100 100
 		</div>
101 101
 	</div>
102 102
 
103 103
 <?php
104 104
 function run() {
105
-	global $modx, $_lang;
105
+    global $modx, $_lang;
106 106
 
107
-	$tbl_site_content = $modx->getFullTableName('site_content');
108
-	$output = '';
109
-	$maxtime = $_POST['maxtime'];
107
+    $tbl_site_content = $modx->getFullTableName('site_content');
108
+    $output = '';
109
+    $maxtime = $_POST['maxtime'];
110 110
 
111
-	if(!is_numeric($maxtime)) {
112
-		$maxtime = 30;
113
-	}
111
+    if(!is_numeric($maxtime)) {
112
+        $maxtime = 30;
113
+    }
114 114
 
115
-	@set_time_limit($maxtime);
115
+    @set_time_limit($maxtime);
116 116
 
117
-	$mtime = microtime();
118
-	$mtime = explode(' ', $mtime);
119
-	$mtime = $mtime[1] + $mtime[0];
120
-	$importstart = $mtime;
117
+    $mtime = microtime();
118
+    $mtime = explode(' ', $mtime);
119
+    $mtime = $mtime[1] + $mtime[0];
120
+    $importstart = $mtime;
121 121
 
122
-	if($_POST['reset'] == 'on') {
123
-		$modx->db->truncate($tbl_site_content);
124
-		$modx->db->query("ALTER TABLE {$tbl_site_content} AUTO_INCREMENT = 1");
125
-	}
122
+    if($_POST['reset'] == 'on') {
123
+        $modx->db->truncate($tbl_site_content);
124
+        $modx->db->query("ALTER TABLE {$tbl_site_content} AUTO_INCREMENT = 1");
125
+    }
126 126
 
127
-	$parent = intval($_POST['parent']);
127
+    $parent = intval($_POST['parent']);
128 128
 
129
-	if(is_dir(MODX_BASE_PATH . 'temp/import')) {
130
-		$filedir = MODX_BASE_PATH . 'temp/import/';
131
-	} elseif(is_dir(MODX_BASE_PATH . 'assets/import')) {
132
-		$filedir = MODX_BASE_PATH . 'assets/import/';
133
-	} else {
129
+    if(is_dir(MODX_BASE_PATH . 'temp/import')) {
130
+        $filedir = MODX_BASE_PATH . 'temp/import/';
131
+    } elseif(is_dir(MODX_BASE_PATH . 'assets/import')) {
132
+        $filedir = MODX_BASE_PATH . 'assets/import/';
133
+    } else {
134 134
         $filedir = '';
135 135
     }
136 136
 
137
-	$filesfound = 0;
137
+    $filesfound = 0;
138 138
 
139
-	$files = getFiles($filedir);
140
-	$files = pop_index($files);
139
+    $files = getFiles($filedir);
140
+    $files = pop_index($files);
141 141
 
142
-	// no. of files to import
143
-	$output .= sprintf('<p>' . $_lang['import_files_found'] . '</p>', $filesfound);
142
+    // no. of files to import
143
+    $output .= sprintf('<p>' . $_lang['import_files_found'] . '</p>', $filesfound);
144 144
 
145
-	// import files
146
-	if(0 < count($files)) {
147
-		$modx->db->update(array('isfolder' => 1), $tbl_site_content, "id='{$parent}'");
148
-		importFiles($parent, $filedir, $files, 'root');
149
-	}
145
+    // import files
146
+    if(0 < count($files)) {
147
+        $modx->db->update(array('isfolder' => 1), $tbl_site_content, "id='{$parent}'");
148
+        importFiles($parent, $filedir, $files, 'root');
149
+    }
150 150
 
151
-	$mtime = microtime();
152
-	$mtime = explode(' ', $mtime);
153
-	$mtime = $mtime[1] + $mtime[0];
154
-	$importend = $mtime;
155
-	$totaltime = ($importend - $importstart);
156
-	$output .= sprintf('<p>' . $_lang['import_site_time'] . '</p>', round($totaltime, 3));
151
+    $mtime = microtime();
152
+    $mtime = explode(' ', $mtime);
153
+    $mtime = $mtime[1] + $mtime[0];
154
+    $importend = $mtime;
155
+    $totaltime = ($importend - $importstart);
156
+    $output .= sprintf('<p>' . $_lang['import_site_time'] . '</p>', round($totaltime, 3));
157 157
 
158
-	if($_POST['convert_link'] == 'on') {
159
-		convertLink();
160
-	}
158
+    if($_POST['convert_link'] == 'on') {
159
+        convertLink();
160
+    }
161 161
 
162
-	return $output;
162
+    return $output;
163 163
 }
164 164
 
165 165
 function importFiles($parent, $filedir, $files, $mode) {
166
-	global $modx;
167
-	global $_lang, $allowedfiles;
168
-	global $search_default, $cache_default, $publish_default;
169
-
170
-	$tbl_site_content = $modx->getFullTableName('site_content');
171
-	$tbl_system_settings = $modx->getFullTableName('system_settings');
172
-
173
-	$createdby = $modx->getLoginUserID();
174
-	if(!is_array($files)) {
175
-		return;
176
-	}
177
-	if($_POST['object'] == 'all') {
178
-		$modx->config['default_template'] = '0';
179
-		$richtext = '0';
180
-	} else {
181
-		$richtext = '1';
182
-	}
183
-
184
-	foreach($files as $id => $value) {
185
-		if(is_array($value)) {
186
-			// create folder
187
-			$alias = $id;
188
-			printf('<span>' . $_lang['import_site_importing_document'] . '</span>', $alias);
189
-			$field = array();
190
-			$field['type'] = 'document';
191
-			$field['contentType'] = 'text/html';
192
-			$field['published'] = $publish_default;
193
-			$field['parent'] = $parent;
194
-			$field['alias'] = $modx->stripAlias($alias);
195
-			$field['richtext'] = $richtext;
196
-			$field['template'] = $modx->config['default_template'];
197
-			$field['searchable'] = $search_default;
198
-			$field['cacheable'] = $cache_default;
199
-			$field['createdby'] = $createdby;
200
-			$field['isfolder'] = 1;
201
-			$field['menuindex'] = 1;
202
-			$find = false;
203
-			foreach(array(
204
-						'index.html',
205
-						'index.htm'
206
-					) as $filename) {
207
-				$filepath = $filedir . $alias . '/' . $filename;
208
-				if($find === false && file_exists($filepath)) {
209
-					$file = getFileContent($filepath);
210
-					list($pagetitle, $content, $description) = treatContent($file, $filename, $alias);
211
-
212
-					$date = filemtime($filepath);
213
-					$field['pagetitle'] = $pagetitle;
214
-					$field['longtitle'] = $pagetitle;
215
-					$field['description'] = $description;
216
-					$field['content'] = $modx->db->escape($content);
217
-					$field['createdon'] = $date;
218
-					$field['editedon'] = $date;
219
-					$newid = $modx->db->insert($field, $tbl_site_content);
220
-					if($newid) {
221
-						$find = true;
222
-						echo ' - <span class="success">' . $_lang['import_site_success'] . '</span><br />' . "\n";
223
-						importFiles($newid, $filedir . $alias . '/', $value, 'sub');
224
-					} else {
225
-						echo '<span class="fail">' . $_lang["import_site_failed"] . "</span> " . $_lang["import_site_failed_db_error"] . $modx->db->getLastError();
226
-						exit;
227
-					}
228
-				}
229
-			}
230
-			if($find === false) {
231
-				$date = time();
232
-				$field['pagetitle'] = '---';
233
-				$field['content'] = '';
234
-				$field['createdon'] = $date;
235
-				$field['editedon'] = $date;
236
-				$field['hidemenu'] = '1';
237
-				$newid = $modx->db->insert($field, $tbl_site_content);
238
-				if($newid) {
239
-					$find = true;
240
-					echo ' - <span class="success">' . $_lang['import_site_success'] . '</span><br />' . "\n";
241
-					importFiles($newid, $filedir . $alias . '/', $value, 'sub');
242
-				} else {
243
-					echo '<span class="fail">' . $_lang["import_site_failed"] . "</span> " . $_lang["import_site_failed_db_error"] . $modx->db->getLastError();
244
-					exit;
245
-				}
246
-			}
247
-		} else {
248
-			// create document
249
-			if($mode == 'sub' && $value == 'index.html') {
250
-				continue;
251
-			}
252
-			$filename = $value;
253
-			$fparts = explode('.', $value);
254
-			$alias = $fparts[0];
255
-			$ext = (count($fparts) > 1) ? $fparts[count($fparts) - 1] : "";
256
-			printf("<span>" . $_lang['import_site_importing_document'] . "</span>", $filename);
257
-
258
-			if(!in_array($ext, $allowedfiles)) {
259
-				echo ' - <span class="fail">' . $_lang["import_site_skip"] . '</span><br />' . "\n";
260
-			} else {
261
-				$filepath = $filedir . $filename;
262
-				$file = getFileContent($filepath);
263
-				list($pagetitle, $content, $description) = treatContent($file, $filename, $alias);
264
-
265
-				$date = filemtime($filepath);
266
-				$field = array();
267
-				$field['type'] = 'document';
268
-				$field['contentType'] = 'text/html';
269
-				$field['pagetitle'] = $pagetitle;
270
-				$field['longtitle'] = $pagetitle;
271
-				$field['description'] = $description;
272
-				$field['alias'] = $modx->stripAlias($alias);
273
-				$field['published'] = $publish_default;
274
-				$field['parent'] = $parent;
275
-				$field['content'] = $modx->db->escape($content);
276
-				$field['richtext'] = $richtext;
277
-				$field['template'] = $modx->config['default_template'];
278
-				$field['searchable'] = $search_default;
279
-				$field['cacheable'] = $cache_default;
280
-				$field['createdby'] = $createdby;
281
-				$field['createdon'] = $date;
282
-				$field['editedon'] = $date;
283
-				$field['isfolder'] = 0;
284
-				$field['menuindex'] = ($alias == 'index') ? 0 : 2;
285
-				$newid = $modx->db->insert($field, $tbl_site_content);
286
-				if($newid) {
287
-					echo ' - <span class="success">' . $_lang['import_site_success'] . '</span><br />' . "\n";
288
-				} else {
289
-					echo '<span class="fail">' . $_lang["import_site_failed"] . "</span> " . $_lang["import_site_failed_db_error"] . $modx->db->getLastError();
290
-					exit;
291
-				}
292
-
293
-				$is_site_start = false;
294
-				if($filename == 'index.html') {
295
-					$is_site_start = true;
296
-				}
297
-				if($is_site_start == true && $_POST['reset'] == 'on') {
298
-					$modx->db->update(array('setting_value' => $newid), $tbl_system_settings, "setting_name='site_start'");
299
-					$modx->db->update(array('menuindex' => 0), $tbl_site_content, "id='{$newid}'");
300
-				}
301
-			}
302
-		}
303
-	}
166
+    global $modx;
167
+    global $_lang, $allowedfiles;
168
+    global $search_default, $cache_default, $publish_default;
169
+
170
+    $tbl_site_content = $modx->getFullTableName('site_content');
171
+    $tbl_system_settings = $modx->getFullTableName('system_settings');
172
+
173
+    $createdby = $modx->getLoginUserID();
174
+    if(!is_array($files)) {
175
+        return;
176
+    }
177
+    if($_POST['object'] == 'all') {
178
+        $modx->config['default_template'] = '0';
179
+        $richtext = '0';
180
+    } else {
181
+        $richtext = '1';
182
+    }
183
+
184
+    foreach($files as $id => $value) {
185
+        if(is_array($value)) {
186
+            // create folder
187
+            $alias = $id;
188
+            printf('<span>' . $_lang['import_site_importing_document'] . '</span>', $alias);
189
+            $field = array();
190
+            $field['type'] = 'document';
191
+            $field['contentType'] = 'text/html';
192
+            $field['published'] = $publish_default;
193
+            $field['parent'] = $parent;
194
+            $field['alias'] = $modx->stripAlias($alias);
195
+            $field['richtext'] = $richtext;
196
+            $field['template'] = $modx->config['default_template'];
197
+            $field['searchable'] = $search_default;
198
+            $field['cacheable'] = $cache_default;
199
+            $field['createdby'] = $createdby;
200
+            $field['isfolder'] = 1;
201
+            $field['menuindex'] = 1;
202
+            $find = false;
203
+            foreach(array(
204
+                        'index.html',
205
+                        'index.htm'
206
+                    ) as $filename) {
207
+                $filepath = $filedir . $alias . '/' . $filename;
208
+                if($find === false && file_exists($filepath)) {
209
+                    $file = getFileContent($filepath);
210
+                    list($pagetitle, $content, $description) = treatContent($file, $filename, $alias);
211
+
212
+                    $date = filemtime($filepath);
213
+                    $field['pagetitle'] = $pagetitle;
214
+                    $field['longtitle'] = $pagetitle;
215
+                    $field['description'] = $description;
216
+                    $field['content'] = $modx->db->escape($content);
217
+                    $field['createdon'] = $date;
218
+                    $field['editedon'] = $date;
219
+                    $newid = $modx->db->insert($field, $tbl_site_content);
220
+                    if($newid) {
221
+                        $find = true;
222
+                        echo ' - <span class="success">' . $_lang['import_site_success'] . '</span><br />' . "\n";
223
+                        importFiles($newid, $filedir . $alias . '/', $value, 'sub');
224
+                    } else {
225
+                        echo '<span class="fail">' . $_lang["import_site_failed"] . "</span> " . $_lang["import_site_failed_db_error"] . $modx->db->getLastError();
226
+                        exit;
227
+                    }
228
+                }
229
+            }
230
+            if($find === false) {
231
+                $date = time();
232
+                $field['pagetitle'] = '---';
233
+                $field['content'] = '';
234
+                $field['createdon'] = $date;
235
+                $field['editedon'] = $date;
236
+                $field['hidemenu'] = '1';
237
+                $newid = $modx->db->insert($field, $tbl_site_content);
238
+                if($newid) {
239
+                    $find = true;
240
+                    echo ' - <span class="success">' . $_lang['import_site_success'] . '</span><br />' . "\n";
241
+                    importFiles($newid, $filedir . $alias . '/', $value, 'sub');
242
+                } else {
243
+                    echo '<span class="fail">' . $_lang["import_site_failed"] . "</span> " . $_lang["import_site_failed_db_error"] . $modx->db->getLastError();
244
+                    exit;
245
+                }
246
+            }
247
+        } else {
248
+            // create document
249
+            if($mode == 'sub' && $value == 'index.html') {
250
+                continue;
251
+            }
252
+            $filename = $value;
253
+            $fparts = explode('.', $value);
254
+            $alias = $fparts[0];
255
+            $ext = (count($fparts) > 1) ? $fparts[count($fparts) - 1] : "";
256
+            printf("<span>" . $_lang['import_site_importing_document'] . "</span>", $filename);
257
+
258
+            if(!in_array($ext, $allowedfiles)) {
259
+                echo ' - <span class="fail">' . $_lang["import_site_skip"] . '</span><br />' . "\n";
260
+            } else {
261
+                $filepath = $filedir . $filename;
262
+                $file = getFileContent($filepath);
263
+                list($pagetitle, $content, $description) = treatContent($file, $filename, $alias);
264
+
265
+                $date = filemtime($filepath);
266
+                $field = array();
267
+                $field['type'] = 'document';
268
+                $field['contentType'] = 'text/html';
269
+                $field['pagetitle'] = $pagetitle;
270
+                $field['longtitle'] = $pagetitle;
271
+                $field['description'] = $description;
272
+                $field['alias'] = $modx->stripAlias($alias);
273
+                $field['published'] = $publish_default;
274
+                $field['parent'] = $parent;
275
+                $field['content'] = $modx->db->escape($content);
276
+                $field['richtext'] = $richtext;
277
+                $field['template'] = $modx->config['default_template'];
278
+                $field['searchable'] = $search_default;
279
+                $field['cacheable'] = $cache_default;
280
+                $field['createdby'] = $createdby;
281
+                $field['createdon'] = $date;
282
+                $field['editedon'] = $date;
283
+                $field['isfolder'] = 0;
284
+                $field['menuindex'] = ($alias == 'index') ? 0 : 2;
285
+                $newid = $modx->db->insert($field, $tbl_site_content);
286
+                if($newid) {
287
+                    echo ' - <span class="success">' . $_lang['import_site_success'] . '</span><br />' . "\n";
288
+                } else {
289
+                    echo '<span class="fail">' . $_lang["import_site_failed"] . "</span> " . $_lang["import_site_failed_db_error"] . $modx->db->getLastError();
290
+                    exit;
291
+                }
292
+
293
+                $is_site_start = false;
294
+                if($filename == 'index.html') {
295
+                    $is_site_start = true;
296
+                }
297
+                if($is_site_start == true && $_POST['reset'] == 'on') {
298
+                    $modx->db->update(array('setting_value' => $newid), $tbl_system_settings, "setting_name='site_start'");
299
+                    $modx->db->update(array('menuindex' => 0), $tbl_site_content, "id='{$newid}'");
300
+                }
301
+            }
302
+        }
303
+    }
304 304
 }
305 305
 
306 306
 function getFiles($directory, $listing = array(), $count = 0) {
307
-	global $_lang;
308
-	global $filesfound;
309
-	$dummy = $count;
310
-	if( ! empty($directory) && $files = scandir($directory)) {
311
-		foreach($files as $file) {
312
-			if($file == '.' || $file == '..') {
313
-				continue;
314
-			} elseif($h = @opendir($directory . $file . "/")) {
315
-				closedir($h);
316
-				$count = -1;
317
-				$listing[$file] = getFiles($directory . $file . "/", array(), $count + 1);
318
-			} elseif(strpos($file, '.htm') !== false) {
319
-				$listing[$dummy] = $file;
320
-				$dummy = $dummy + 1;
321
-				$filesfound++;
322
-			}
323
-		}
324
-	} else {
325
-		echo '<p><span class="fail">' . $_lang["import_site_failed"] . "</span> " . $_lang["import_site_failed_no_open_dir"] . $directory . ".</p>";
326
-	}
327
-	return ($listing);
307
+    global $_lang;
308
+    global $filesfound;
309
+    $dummy = $count;
310
+    if( ! empty($directory) && $files = scandir($directory)) {
311
+        foreach($files as $file) {
312
+            if($file == '.' || $file == '..') {
313
+                continue;
314
+            } elseif($h = @opendir($directory . $file . "/")) {
315
+                closedir($h);
316
+                $count = -1;
317
+                $listing[$file] = getFiles($directory . $file . "/", array(), $count + 1);
318
+            } elseif(strpos($file, '.htm') !== false) {
319
+                $listing[$dummy] = $file;
320
+                $dummy = $dummy + 1;
321
+                $filesfound++;
322
+            }
323
+        }
324
+    } else {
325
+        echo '<p><span class="fail">' . $_lang["import_site_failed"] . "</span> " . $_lang["import_site_failed_no_open_dir"] . $directory . ".</p>";
326
+    }
327
+    return ($listing);
328 328
 }
329 329
 
330 330
 function getFileContent($filepath) {
331
-	global $_lang;
332
-	// get the file
333
-	if(!$buffer = file_get_contents($filepath)) {
334
-		echo '<p><span class="fail">' . $_lang['import_site_failed'] . "</span> " . $_lang["import_site_failed_no_retrieve_file"] . $filepath . ".</p>";
335
-	} else {
336
-		return $buffer;
337
-	}
331
+    global $_lang;
332
+    // get the file
333
+    if(!$buffer = file_get_contents($filepath)) {
334
+        echo '<p><span class="fail">' . $_lang['import_site_failed'] . "</span> " . $_lang["import_site_failed_no_retrieve_file"] . $filepath . ".</p>";
335
+    } else {
336
+        return $buffer;
337
+    }
338 338
 }
339 339
 
340 340
 function pop_index($array) {
341
-	$new_array = array();
342
-	foreach($array as $k => $v) {
343
-		if($v !== 'index.html' && $v !== 'index.htm') {
344
-			$new_array[$k] = $v;
345
-		} else {
346
-			array_unshift($new_array, $v);
347
-		}
348
-	}
349
-	foreach($array as $k => $v) {
350
-		if(is_array($v)) {
351
-			$new_array[$k] = $v;
352
-		}
353
-	}
354
-	return $new_array;
341
+    $new_array = array();
342
+    foreach($array as $k => $v) {
343
+        if($v !== 'index.html' && $v !== 'index.htm') {
344
+            $new_array[$k] = $v;
345
+        } else {
346
+            array_unshift($new_array, $v);
347
+        }
348
+    }
349
+    foreach($array as $k => $v) {
350
+        if(is_array($v)) {
351
+            $new_array[$k] = $v;
352
+        }
353
+    }
354
+    return $new_array;
355 355
 }
356 356
 
357 357
 function treatContent($src, $filename, $alias) {
358
-	global $modx;
359
-
360
-	$src = mb_convert_encoding($src, $modx->config['modx_charset'], 'UTF-8,SJIS-win,eucJP-win,SJIS,EUC-JP,ASCII');
361
-
362
-	if(preg_match("@<title>(.*)</title>@i", $src, $matches)) {
363
-		$pagetitle = ($matches[1] !== '') ? $matches[1] : $filename;
364
-		$pagetitle = str_replace('[*pagetitle*]', '', $pagetitle);
365
-	} else {
366
-		$pagetitle = $alias;
367
-	}
368
-	if(!$pagetitle) {
369
-		$pagetitle = $alias;
370
-	}
371
-
372
-	if(preg_match('@<meta[^>]+"description"[^>]+content=[\'"](.*)[\'"].+>@i', $src, $matches)) {
373
-		$description = ($matches[1] !== '') ? $matches[1] : $filename;
374
-		$description = str_replace('[*description*]', '', $description);
375
-	} else {
376
-		$description = '';
377
-	}
378
-
379
-	if((preg_match("@<body[^>]*>(.*)[^<]+</body>@is", $src, $matches)) && $_POST['object'] == 'body') {
380
-		$content = $matches[1];
381
-	} else {
382
-		$content = $src;
383
-		$s = '/(<meta[^>]+charset\s*=)[^>"\'=]+(.+>)/i';
384
-		$r = '$1' . $modx->config['modx_charset'] . '$2';
385
-		$content = preg_replace($s, $r, $content);
386
-		$content = preg_replace('@<title>.*</title>@i', "<title>[*pagetitle*]</title>", $content);
387
-	}
388
-	$content = str_replace('[*content*]', '[ *content* ]', $content);
389
-	$content = trim($content);
390
-	$pagetitle = $modx->db->escape($pagetitle);
391
-	return array(
392
-		$pagetitle,
393
-		$content,
394
-		$description
395
-	);
358
+    global $modx;
359
+
360
+    $src = mb_convert_encoding($src, $modx->config['modx_charset'], 'UTF-8,SJIS-win,eucJP-win,SJIS,EUC-JP,ASCII');
361
+
362
+    if(preg_match("@<title>(.*)</title>@i", $src, $matches)) {
363
+        $pagetitle = ($matches[1] !== '') ? $matches[1] : $filename;
364
+        $pagetitle = str_replace('[*pagetitle*]', '', $pagetitle);
365
+    } else {
366
+        $pagetitle = $alias;
367
+    }
368
+    if(!$pagetitle) {
369
+        $pagetitle = $alias;
370
+    }
371
+
372
+    if(preg_match('@<meta[^>]+"description"[^>]+content=[\'"](.*)[\'"].+>@i', $src, $matches)) {
373
+        $description = ($matches[1] !== '') ? $matches[1] : $filename;
374
+        $description = str_replace('[*description*]', '', $description);
375
+    } else {
376
+        $description = '';
377
+    }
378
+
379
+    if((preg_match("@<body[^>]*>(.*)[^<]+</body>@is", $src, $matches)) && $_POST['object'] == 'body') {
380
+        $content = $matches[1];
381
+    } else {
382
+        $content = $src;
383
+        $s = '/(<meta[^>]+charset\s*=)[^>"\'=]+(.+>)/i';
384
+        $r = '$1' . $modx->config['modx_charset'] . '$2';
385
+        $content = preg_replace($s, $r, $content);
386
+        $content = preg_replace('@<title>.*</title>@i', "<title>[*pagetitle*]</title>", $content);
387
+    }
388
+    $content = str_replace('[*content*]', '[ *content* ]', $content);
389
+    $content = trim($content);
390
+    $pagetitle = $modx->db->escape($pagetitle);
391
+    return array(
392
+        $pagetitle,
393
+        $content,
394
+        $description
395
+    );
396 396
 }
397 397
 
398 398
 function convertLink() {
399
-	global $modx;
400
-	$tbl_site_content = $modx->getFullTableName('site_content');
399
+    global $modx;
400
+    $tbl_site_content = $modx->getFullTableName('site_content');
401 401
 
402
-	$rs = $modx->db->select('id,content', $tbl_site_content);
403
-	$p = array();
402
+    $rs = $modx->db->select('id,content', $tbl_site_content);
403
+    $p = array();
404 404
     $target = array();
405
-	$dir = '';
406
-	while($row = $modx->db->getRow($rs)) {
407
-		$id = $row['id'];
408
-		$array = explode('<a href=', $row['content']);
409
-		$c = 0;
410
-		foreach($array as $v) {
411
-			if($v[0] === '"') {
412
-				$v = substr($v, 1);
413
-				list($href, $v) = explode('"', $v, 2);
414
-				$_ = $href;
415
-				if(strpos($_, $modx->config['site_url']) !== false) {
416
-					$_ = $modx->config['base_url'] . str_replace($modx->config['site_url'], '', $_);
417
-				}
418
-				if($_[0] === '/') {
419
-					$_ = substr($_, 1);
420
-				}
421
-				$_ = str_replace('/index.html', '.html', $_);
422
-				$level = substr_count($_, '../');
423
-				if(1 < $level) {
424
-					if(!isset($p[$id])) {
425
-						$p[$id] = $modx->getParentIds($id);
426
-					}
427
-					$k = array_keys($p[$id]);
428
-					while(0 < $level) {
429
-						$dir = array_shift($k);
430
-						$level--;
431
-					}
432
-					if($dir != '') {
433
-						$dir .= '/';
434
-					}
435
-				} else {
436
-					$dir = '';
437
-				}
438
-
439
-				$_ = trim($_, './');
440
-				if(strpos($_, '/') !== false) {
441
-					$_ = substr($_, strrpos($_, '/'));
442
-				}
443
-				$_ = $dir . str_replace('.html', '', $_);
444
-				if(!isset($target[$_])) {
445
-					$target[$_] = $modx->getIdFromAlias($_);
446
-				}
447
-				$target[$_] = trim($target[$_]);
448
-				if(!empty($target[$_])) {
449
-					$href = '[~' . $target[$_] . '~]';
450
-				}
451
-				$array[$c] = '<a href="' . $href . '"' . $v;
452
-			}
453
-			$c++;
454
-		}
455
-		$content = implode('', $array);
456
-		$f['content'] = $modx->db->escape($content);
457
-		$modx->db->update($f, $tbl_site_content, "id='{$id}'");
458
-	}
405
+    $dir = '';
406
+    while($row = $modx->db->getRow($rs)) {
407
+        $id = $row['id'];
408
+        $array = explode('<a href=', $row['content']);
409
+        $c = 0;
410
+        foreach($array as $v) {
411
+            if($v[0] === '"') {
412
+                $v = substr($v, 1);
413
+                list($href, $v) = explode('"', $v, 2);
414
+                $_ = $href;
415
+                if(strpos($_, $modx->config['site_url']) !== false) {
416
+                    $_ = $modx->config['base_url'] . str_replace($modx->config['site_url'], '', $_);
417
+                }
418
+                if($_[0] === '/') {
419
+                    $_ = substr($_, 1);
420
+                }
421
+                $_ = str_replace('/index.html', '.html', $_);
422
+                $level = substr_count($_, '../');
423
+                if(1 < $level) {
424
+                    if(!isset($p[$id])) {
425
+                        $p[$id] = $modx->getParentIds($id);
426
+                    }
427
+                    $k = array_keys($p[$id]);
428
+                    while(0 < $level) {
429
+                        $dir = array_shift($k);
430
+                        $level--;
431
+                    }
432
+                    if($dir != '') {
433
+                        $dir .= '/';
434
+                    }
435
+                } else {
436
+                    $dir = '';
437
+                }
438
+
439
+                $_ = trim($_, './');
440
+                if(strpos($_, '/') !== false) {
441
+                    $_ = substr($_, strrpos($_, '/'));
442
+                }
443
+                $_ = $dir . str_replace('.html', '', $_);
444
+                if(!isset($target[$_])) {
445
+                    $target[$_] = $modx->getIdFromAlias($_);
446
+                }
447
+                $target[$_] = trim($target[$_]);
448
+                if(!empty($target[$_])) {
449
+                    $href = '[~' . $target[$_] . '~]';
450
+                }
451
+                $array[$c] = '<a href="' . $href . '"' . $v;
452
+            }
453
+            $c++;
454
+        }
455
+        $content = implode('', $array);
456
+        $f['content'] = $modx->db->escape($content);
457
+        $modx->db->update($f, $tbl_site_content, "id='{$id}'");
458
+    }
459 459
 }
Please login to merge, or discard this patch.