PageRenderTime 58ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 1ms

/sondage/admin/import_resources_zip.php

https://bitbucket.org/bontiv/insomnia
PHP | 618 lines | 506 code | 68 blank | 44 comment | 62 complexity | b086af5752f42a0ff1c8466178bc5f55 MD5 | raw file
Possible License(s): Apache-2.0, LGPL-3.0, LGPL-2.1, GPL-3.0, BSD-3-Clause, GPL-2.0
  1. <?php
  2. /*
  3. * LimeSurvey
  4. * Copyright (C) 2007 The LimeSurvey Project Team / Carsten Schmitz
  5. * All rights reserved.
  6. * License: GNU/GPL License v2 or later, see LICENSE.php
  7. * LimeSurvey is free software. This version may have been modified pursuant
  8. * to the GNU General Public License, and as distributed it includes or
  9. * is derivative of works licensed under the GNU General Public License or
  10. * other free or open source software licenses.
  11. * See COPYRIGHT.php for copyright notices and details.
  12. *
  13. * $Id: import_resources_zip.php 10925 2011-09-02 14:12:02Z c_schmitz $
  14. */
  15. include_once("login_check.php");
  16. if (!isset($surveyid))
  17. {
  18. returnglobal('sid');
  19. }
  20. if (!isset($lid))
  21. {
  22. returnglobal('lid');
  23. }
  24. if ($action == "importsurveyresources" && $surveyid) {
  25. $importsurveyresourcesoutput = "<div class='header ui-widget-header'>".$clang->gT("Import survey resources")."</div>\n";
  26. $importsurveyresourcesoutput .= "<div class='messagebox ui-corner-all'>";
  27. if ($demoModeOnly === true)
  28. {
  29. $importsurveyresourcesoutput .= "<div class=\"warningheader\">".$clang->gT("Error")."</div><br />\n";
  30. $importsurveyresourcesoutput .= $clang->gT("Demo Mode Only: Uploading file is disabled in this system.")."<br /><br />\n";
  31. $importsurveyresourcesoutput .= "<input type='submit' value='".$clang->gT("Back")."' onclick=\"window.open('$scriptname?action=editsurvey&amp;sid=$surveyid', '_top')\" />\n";
  32. $importsurveyresourcesoutput .= "</div>\n";
  33. return;
  34. }
  35. require("classes/phpzip/phpzip.inc.php");
  36. $zipfile=$_FILES['the_file']['tmp_name'];
  37. $z = new PHPZip();
  38. // Create temporary directory
  39. // If dangerous content is unzipped
  40. // then no one will know the path
  41. $extractdir=tempdir($tempdir);
  42. $basedestdir = $uploaddir."/surveys";
  43. $destdir=$basedestdir."/$surveyid/";
  44. if (!is_writeable($basedestdir))
  45. {
  46. $importsurveyresourcesoutput .= "<div class=\"warningheader\">".$clang->gT("Error")."</div><br />\n";
  47. $importsurveyresourcesoutput .= sprintf ($clang->gT("Incorrect permissions in your %s folder."),$basedestdir)."<br /><br />\n";
  48. $importsurveyresourcesoutput .= "<input type='submit' value='".$clang->gT("Back")."' onclick=\"window.open('$scriptname?action=editsurvey&sid=$surveyid', '_top')\" />\n";
  49. $importsurveyresourcesoutput .= "</div>\n";
  50. return;
  51. }
  52. if (!is_dir($destdir))
  53. {
  54. mkdir($destdir);
  55. }
  56. $aImportedFilesInfo=null;
  57. $aErrorFilesInfo=null;
  58. if (is_file($zipfile))
  59. {
  60. $importsurveyresourcesoutput .= "<div class=\"successheader\">".$clang->gT("Success")."</div><br />\n";
  61. $importsurveyresourcesoutput .= $clang->gT("File upload succeeded.")."<br /><br />\n";
  62. $importsurveyresourcesoutput .= $clang->gT("Reading file..")."<br /><br />\n";
  63. if ($z->extract($extractdir,$zipfile) != 'OK')
  64. {
  65. $importsurveyresourcesoutput .= "<div class=\"warningheader\">".$clang->gT("Error")."</div><br />\n";
  66. $importsurveyresourcesoutput .= $clang->gT("This file is not a valid ZIP file archive. Import failed.")."<br /><br />\n";
  67. $importsurveyresourcesoutput .= "<input type='submit' value='".$clang->gT("Back")."' onclick=\"window.open('$scriptname?action=editsurvey&sid=$surveyid', '_top')\" />\n";
  68. $importsurveyresourcesoutput .= "</div>\n";
  69. return;
  70. }
  71. // now read tempdir and copy authorized files only
  72. $dh = opendir($extractdir);
  73. while($direntry = readdir($dh))
  74. {
  75. if (($direntry!=".")&&($direntry!=".."))
  76. {
  77. if (is_file($extractdir."/".$direntry))
  78. { // is a file
  79. $extfile = substr(strrchr($direntry, '.'),1);
  80. if (!(stripos(','.$allowedresourcesuploads.',',','.$extfile.',') === false))
  81. { //Extension allowed
  82. if (!copy($extractdir."/".$direntry, $destdir.$direntry))
  83. {
  84. $aErrorFilesInfo[]=Array(
  85. "filename" => $direntry,
  86. "status" => $clang->gT("Copy failed")
  87. );
  88. unlink($extractdir."/".$direntry);
  89. }
  90. else
  91. {
  92. $aImportedFilesInfo[]=Array(
  93. "filename" => $direntry,
  94. "status" => $clang->gT("OK")
  95. );
  96. unlink($extractdir."/".$direntry);
  97. }
  98. }
  99. else
  100. { // Extension forbidden
  101. $aErrorFilesInfo[]=Array(
  102. "filename" => $direntry,
  103. "status" => $clang->gT("Error")." (".$clang->gT("Forbidden Extension").")"
  104. );
  105. unlink($extractdir."/".$direntry);
  106. }
  107. } // end if is_file
  108. } // end if ! . or ..
  109. } // end while read dir
  110. //Delete the temporary file
  111. unlink($zipfile);
  112. //Delete temporary folder
  113. rmdir($extractdir);
  114. // display summary
  115. $okfiles = 0;
  116. $errfiles= 0;
  117. $ErrorListHeader = "";
  118. $ImportListHeader = "";
  119. if (is_null($aErrorFilesInfo) && !is_null($aImportedFilesInfo))
  120. {
  121. $status=$clang->gT("Success");
  122. $statusClass='successheader';
  123. $okfiles = count($aImportedFilesInfo);
  124. $ImportListHeader .= "<br /><strong><u>".$clang->gT("Imported Files List").":</u></strong><br />\n";
  125. }
  126. elseif (is_null($aErrorFilesInfo) && is_null($aImportedFilesInfo))
  127. {
  128. $importsurveyresourcesoutput .= "<div class=\"warningheader\">".$clang->gT("Error")."</div><br />\n";
  129. $importsurveyresourcesoutput .= $clang->gT("This ZIP archive contains no valid Resources files. Import failed.")."<br /><br />\n";
  130. $importsurveyresourcesoutput .= $clang->gT("Remember that we do not support subdirectories in ZIP archives.")."<br /><br />\n";
  131. $importsurveyresourcesoutput .= "<input type='submit' value='".$clang->gT("Back")."' onclick=\"window.open('$scriptname?action=editsurvey&sid=$surveyid', '_top')\" />\n";
  132. $importsurveyresourcesoutput .= "</div>\n";
  133. return;
  134. }
  135. elseif (!is_null($aErrorFilesInfo) && !is_null($aImportedFilesInfo))
  136. {
  137. $status=$clang->gT("Partial");
  138. $statusClass='partialheader';
  139. $okfiles = count($aImportedFilesInfo);
  140. $errfiles = count($aErrorFilesInfo);
  141. $ErrorListHeader .= "<br /><strong><u>".$clang->gT("Error Files List").":</u></strong><br />\n";
  142. $ImportListHeader .= "<br /><strong><u>".$clang->gT("Imported Files List").":</u></strong><br />\n";
  143. }
  144. else
  145. {
  146. $status=$clang->gT("Error");
  147. $statusClass='warningheader';
  148. $errfiles = count($aErrorFilesInfo);
  149. $ErrorListHeader .= "<br /><strong><u>".$clang->gT("Error Files List").":</u></strong><br />\n";
  150. }
  151. $importsurveyresourcesoutput .= "<strong>".$clang->gT("Imported Resources for")." SID:</strong> $surveyid<br /><br />\n";
  152. $importsurveyresourcesoutput .= "<div class=\"".$statusClass."\">".$status."</div><br />\n";
  153. $importsurveyresourcesoutput .= "<strong><u>".$clang->gT("Resources Import Summary")."</u></strong><br />\n";
  154. $importsurveyresourcesoutput .= "".$clang->gT("Total Imported files").": $okfiles<br />\n";
  155. $importsurveyresourcesoutput .= "".$clang->gT("Total Errors").": $errfiles<br />\n";
  156. $importsurveyresourcesoutput .= $ImportListHeader;
  157. foreach ($aImportedFilesInfo as $entry)
  158. {
  159. $importsurveyresourcesoutput .= "\t<li>".$clang->gT("File").": ".$entry["filename"]."</li>\n";
  160. }
  161. if (!is_null($aImportedFilesInfo))
  162. {
  163. $importsurveyresourcesoutput .= "\t</ul><br />\n";
  164. }
  165. $importsurveyresourcesoutput .= $ErrorListHeader;
  166. foreach ($aErrorFilesInfo as $entry)
  167. {
  168. $importsurveyresourcesoutput .= "\t<li>".$clang->gT("File").": ".$entry['filename']." (".$entry['status'].")</li>\n";
  169. }
  170. if (!is_null($aErrorFilesInfo))
  171. {
  172. $importsurveyresourcesoutput .= "\t</ul><br />\n";
  173. }
  174. }
  175. else
  176. {
  177. $importsurveyresourcesoutput .= "<div class=\"warningheader\">".$clang->gT("Error")."</div><br />\n";
  178. $importsurveyresourcesoutput .= sprintf ($clang->gT("An error occurred uploading your file. This may be caused by incorrect permissions in your %s folder."),$basedestdir)."<br /><br />\n";
  179. $importsurveyresourcesoutput .= "<input type='submit' value='".$clang->gT("Back")."' onclick=\"window.open('$scriptname?action=editsurvey&sid=$surveyid', '_top')\" />\n";
  180. $importsurveyresourcesoutput .= "</div>\n";
  181. return;
  182. }
  183. $importsurveyresourcesoutput .= "<input type='submit' value='".$clang->gT("Back")."' onclick=\"window.open('$scriptname?action=editsurvey&sid=$surveyid', '_top')\" />\n";
  184. $importsurveyresourcesoutput .= "</div>\n";
  185. }
  186. if ($action == "importlabelresources" && $lid)
  187. {
  188. $importlabelresourcesoutput = "<div class='header ui-widget-header'>".$clang->gT("Import Label Set")."</div>\n";
  189. $importlabelresourcesoutput .= "<div class='messagebox ui-corner-all'>";
  190. if ($demoModeOnly === true)
  191. {
  192. $importlabelresourcesoutput .= "<div class=\"warningheader\">".$clang->gT("Error")."</div><br />\n";
  193. $importlabelresourcesoutput .= sprintf ($clang->gT("Demo mode only: Uploading files is disabled in this system."),$basedestdir)."<br /><br />\n";
  194. $importlabelresourcesoutput .= "<input type='submit' value='".$clang->gT("Main Admin Screen")."' onclick=\"window.open('$scriptname?action=labels&lid=$lid', '_top')\" />\n";
  195. $importlabelresourcesoutput .= "</div>\n";
  196. return;
  197. }
  198. require("classes/phpzip/phpzip.inc.php");
  199. //$the_full_file_path = $tempdir . "/" . $_FILES['the_file']['name'];
  200. $zipfile=$_FILES['the_file']['tmp_name'];
  201. $z = new PHPZip();
  202. // Create temporary directory
  203. // If dangerous content is unzipped
  204. // then no one will know the path
  205. $extractdir=tempdir($tempdir);
  206. $basedestdir = $publicdir."/upload/labels";
  207. $destdir=$basedestdir."/$lid/";
  208. if (!is_writeable($basedestdir))
  209. {
  210. $importlabelresourcesoutput .= "<div class=\"warningheader\">".$clang->gT("Error")."</div><br />\n";
  211. $importlabelresourcesoutput .= sprintf ($clang->gT("Incorrect permissions in your %s folder."),$basedestdir)."<br /><br />\n";
  212. $importlabelresourcesoutput .= "<input type='submit' value='".$clang->gT("Main Admin Screen")."' onclick=\"window.open('$scriptname?action=labels&lid=$lid', '_top')\" />\n";
  213. $importlabelresourcesoutput .= "</div>\n";
  214. return;
  215. }
  216. if (!is_dir($destdir))
  217. {
  218. mkdir($destdir);
  219. }
  220. $aImportedFilesInfo=null;
  221. $aErrorFilesInfo=null;
  222. if (is_file($zipfile))
  223. {
  224. $importlabelresourcesoutput .= "<div class=\"successheader\">".$clang->gT("Success")."</div><br />\n";
  225. $importlabelresourcesoutput .= $clang->gT("File upload succeeded.")."<br /><br />\n";
  226. $importlabelresourcesoutput .= $clang->gT("Reading file..")."<br /><br />\n";
  227. if ($z->extract($extractdir,$zipfile) != 'OK')
  228. {
  229. $importlabelresourcesoutput .= "<div class=\"warningheader\">".$clang->gT("Error")."</div><br />\n";
  230. $importlabelresourcesoutput .= $clang->gT("This file is not a valid ZIP file archive. Import failed.")."<br /><br />\n";
  231. $importlabelresourcesoutput .= "<input type='submit' value='".$clang->gT("Main Admin Screen")."' onclick=\"window.open('$scriptname?action=labels&lid=$lid', '_top')\" />\n";
  232. $importlabelresourcesoutput .= "</div>\n";
  233. return;
  234. }
  235. // now read tempdir and copy authorized files only
  236. $dh = opendir($extractdir);
  237. while($direntry = readdir($dh))
  238. {
  239. if (($direntry!=".")&&($direntry!=".."))
  240. {
  241. if (is_file($extractdir."/".$direntry))
  242. { // is a file
  243. $extfile = substr(strrchr($direntry, '.'),1);
  244. if (!(stripos(','.$allowedresourcesuploads.',',','.$extfile.',') === false))
  245. { //Extension allowed
  246. if (!copy($extractdir."/".$direntry, $destdir.$direntry))
  247. {
  248. $aErrorFilesInfo[]=Array(
  249. "filename" => $direntry,
  250. "status" => $clang->gT("Copy failed")
  251. );
  252. unlink($extractdir."/".$direntry);
  253. }
  254. else
  255. {
  256. $aImportedFilesInfo[]=Array(
  257. "filename" => $direntry,
  258. "status" => $clang->gT("OK")
  259. );
  260. unlink($extractdir."/".$direntry);
  261. }
  262. }
  263. else
  264. { // Extension forbidden
  265. $aErrorFilesInfo[]=Array(
  266. "filename" => $direntry,
  267. "status" => $clang->gT("Error")." (".$clang->gT("Forbidden Extension").")"
  268. );
  269. unlink($extractdir."/".$direntry);
  270. }
  271. } // end if is_file
  272. } // end if ! . or ..
  273. } // end while read dir
  274. //Delete the temporary file
  275. unlink($zipfile);
  276. //Delete temporary folder
  277. rmdir($extractdir);
  278. // display summary
  279. $okfiles = 0;
  280. $errfiles= 0;
  281. $ErrorListHeader .= "";
  282. $ImportListHeader .= "";
  283. if (is_null($aErrorFilesInfo) && !is_null($aImportedFilesInfo))
  284. {
  285. $status=$clang->gT("Success");
  286. $statusClass='successheader';
  287. $okfiles = count($aImportedFilesInfo);
  288. $ImportListHeader .= "<br /><strong><u>".$clang->gT("Imported Files List").":</u></strong><br />\n";
  289. }
  290. elseif (is_null($aErrorFilesInfo) && is_null($aImportedFilesInfo))
  291. {
  292. $importlabelresourcesoutput .= "<div class=\"warningheader\">".$clang->gT("Error")."</div><br />\n";
  293. $importlabelresourcesoutput .= $clang->gT("This ZIP archive contains no valid Resources files. Import failed.")."<br /><br />\n";
  294. $importlabelresourcesoutput .= $clang->gT("Remember that we do not support subdirectories in ZIP archives.")."<br /><br />\n";
  295. $importlabelresourcesoutput .= "<input type='submit' value='".$clang->gT("Main Admin Screen")."' onclick=\"window.open('$scriptname?action=labels&lid=$lid', '_top')\" />\n";
  296. $importlabelresourcesoutput .= "</div>\n";
  297. return;
  298. }
  299. elseif (!is_null($aErrorFilesInfo) && !is_null($aImportedFilesInfo))
  300. {
  301. $status=$clang->gT("Partial");
  302. $statusClass='partialheader';
  303. $okfiles = count($aImportedFilesInfo);
  304. $errfiles = count($aErrorFilesInfo);
  305. $ErrorListHeader .= "<br /><strong><u>".$clang->gT("Error Files List").":</u></strong><br />\n";
  306. $ImportListHeader .= "<br /><strong><u>".$clang->gT("Imported Files List").":</u></strong><br />\n";
  307. }
  308. else
  309. {
  310. $status=$clang->gT("Error");
  311. $statusClass='warningheader';
  312. $errfiles = count($aErrorFilesInfo);
  313. $ErrorListHeader .= "<br /><strong><u>".$clang->gT("Error Files List").":</u></strong><br />\n";
  314. }
  315. $importlabelresourcesoutput .= "<strong>".$clang->gT("Imported Resources for")." LID:</strong> $lid<br /><br />\n";
  316. $importlabelresourcesoutput .= "<div class=\"".$statusClass."\">".$status."</div><br />\n";
  317. $importlabelresourcesoutput .= "<strong><u>".$clang->gT("Resources Import Summary")."</u></strong><br />\n";
  318. $importlabelresourcesoutput .= "".$clang->gT("Total Imported files").": $okfiles<br />\n";
  319. $importlabelresourcesoutput .= "".$clang->gT("Total Errors").": $errfiles<br />\n";
  320. $importlabelresourcesoutput .= $ImportListHeader;
  321. foreach ($aImportedFilesInfo as $entry)
  322. {
  323. $importlabelresourcesoutput .= "\t<li>".$clang->gT("File").": ".$entry["filename"]."</li>\n";
  324. }
  325. if (!is_null($aImportedFilesInfo))
  326. {
  327. $importlabelresourcesoutput .= "\t</ul><br />\n";
  328. }
  329. $importlabelresourcesoutput .= $ErrorListHeader;
  330. foreach ($aErrorFilesInfo as $entry)
  331. {
  332. $importlabelresourcesoutput .= "\t<li>".$clang->gT("File").": ".$entry['filename']." (".$entry['status'].")</li>\n";
  333. }
  334. if (!is_null($aErrorFilesInfo))
  335. {
  336. $importlabelresourcesoutput .= "\t</ul><br />\n";
  337. }
  338. }
  339. else
  340. {
  341. $importlabelresourcesoutput .= "<div class=\"warningheader\">".$clang->gT("Error")."</div><br />\n";
  342. $importlabelresourcesoutput .= sprintf ($clang->gT("An error occurred uploading your file. This may be caused by incorrect permissions in your %s folder."),$basedestdir)."<br /><br />\n";
  343. $importlabelresourcesoutput .= "<input type='submit' value='".$clang->gT("Main Admin Screen")."' onclick=\"window.open('$scriptname?action=labels&lid=$lid', '_top')\" />\n";
  344. $importlabelresourcesoutput .= "</div>\n";
  345. return;
  346. }
  347. $importlabelresourcesoutput .= "<input type='submit' value='".$clang->gT("Back")."' onclick=\"window.open('$scriptname?action=labels&lid=$lid', '_top')\">\n";
  348. $importlabelresourcesoutput .= "</div>\n";
  349. }
  350. if ($action == "templateupload")
  351. {
  352. $importtemplateoutput = "<div class='header ui-widget-header'>".$clang->gT("Import template")."</div>\n";
  353. $importtemplateoutput .= "<div class='messagebox ui-corner-all'>";
  354. if ($demoModeOnly === true)
  355. {
  356. $importtemplateoutput .= "<div class=\"warningheader\">".$clang->gT("Error")."</div><br />\n";
  357. $importtemplateoutput .= sprintf ($clang->gT("Demo mode: Uploading templates is disabled."),$basedestdir)."<br/><br/>\n";
  358. $importtemplateoutput .= "<br/><input type=\"submit\" onclick=\"window.open('$scriptname?action=templates', '_top')\" value=\"".$clang->gT("Template Editor")."\"/>\n";
  359. $importtemplateoutput .= "</div>\n";
  360. return;
  361. }
  362. require("classes/phpzip/phpzip.inc.php");
  363. //$the_full_file_path = $tempdir . "/" . $_FILES['the_file']['name'];
  364. $zipfile=$_FILES['the_file']['tmp_name'];
  365. $z = new PHPZip();
  366. // Create temporary directory
  367. // If dangerous content is unzipped
  368. // then no one will know the path
  369. $extractdir=tempdir($tempdir);
  370. $basedestdir = $usertemplaterootdir;
  371. $newdir=str_replace('.','',strip_ext(sanitize_paranoid_string($_FILES['the_file']['name'])));
  372. $destdir=$basedestdir.'/'.$newdir.'/';
  373. if (!is_writeable($basedestdir))
  374. {
  375. $importtemplateoutput .= "<div class=\"warningheader\">".$clang->gT("Error")."</div><br />\n";
  376. $importtemplateoutput .= sprintf ($clang->gT("Incorrect permissions in your %s folder."),$basedestdir)."<br/><br/>\n";
  377. $importtemplateoutput .= "<br/><input type=\"submit\" onclick=\"window.open('$scriptname?action=templates', '_top')\" value=\"".$clang->gT("Template Editor")."\"/>\n";
  378. $importtemplateoutput .= "</div>\n";
  379. return;
  380. }
  381. if (!is_dir($destdir))
  382. {
  383. mkdir($destdir);
  384. }
  385. else
  386. {
  387. $importtemplateoutput .= "<div class=\"warningheader\">".$clang->gT("Error")."</div><br />\n";
  388. $importtemplateoutput .= sprintf ($clang->gT("Template '%s' does already exist."),$newdir)."<br/><br/>\n";
  389. $importtemplateoutput .= "<br/><input type=\"submit\" onclick=\"window.open('$scriptname?action=templates', '_top')\" value=\"".$clang->gT("Template Editor")."\"/>\n";
  390. $importtemplateoutput .= "</div>\n";
  391. return;
  392. }
  393. $aImportedFilesInfo=array();
  394. $aErrorFilesInfo=array();
  395. if (is_file($zipfile))
  396. {
  397. $importtemplateoutput .= "<div class=\"successheader\">".$clang->gT("Success")."</div><br />\n";
  398. $importtemplateoutput .= $clang->gT("File upload succeeded.")."<br /><br />\n";
  399. $importtemplateoutput .= $clang->gT("Reading file..")."<br /><br />\n";
  400. if ($z->extract($extractdir,$zipfile) != 'OK')
  401. {
  402. $importtemplateoutput .= "<div class=\"warningheader\">".$clang->gT("Error")."</div><br />\n";
  403. $importtemplateoutput .= $clang->gT("This file is not a valid ZIP file archive. Import failed.")."<br/><br/>\n";
  404. $importtemplateoutput .= "<br/><input type=\"submit\" onclick=\"window.open('$scriptname?action=templates', '_top')\" value=\"".$clang->gT("Template Editor")."\"/>\n";
  405. $importtemplateoutput .= "</div>\n";
  406. return;
  407. }
  408. $ErrorListHeader = "";
  409. $ImportListHeader = "";
  410. // now read tempdir and copy authorized files only
  411. $dh = opendir($extractdir);
  412. while($direntry = readdir($dh))
  413. {
  414. if (($direntry!=".")&&($direntry!=".."))
  415. {
  416. if (is_file($extractdir."/".$direntry))
  417. { // is a file
  418. $extfile = substr(strrchr($direntry, '.'),1);
  419. if (!(stripos(','.$allowedresourcesuploads.',',','.$extfile.',') === false))
  420. { //Extension allowed
  421. if (!copy($extractdir."/".$direntry, $destdir.$direntry))
  422. {
  423. $aErrorFilesInfo[]=Array(
  424. "filename" => $direntry,
  425. "status" => $clang->gT("Copy failed")
  426. );
  427. unlink($extractdir."/".$direntry);
  428. }
  429. else
  430. {
  431. $aImportedFilesInfo[]=Array(
  432. "filename" => $direntry,
  433. "status" => $clang->gT("OK")
  434. );
  435. unlink($extractdir."/".$direntry);
  436. }
  437. }
  438. else
  439. { // Extension forbidden
  440. $aErrorFilesInfo[]=Array(
  441. "filename" => $direntry,
  442. "status" => $clang->gT("Error")." (".$clang->gT("Forbidden Extension").")"
  443. );
  444. unlink($extractdir."/".$direntry);
  445. }
  446. } // end if is_file
  447. } // end if ! . or ..
  448. } // end while read dir
  449. //Delete the temporary file
  450. unlink($zipfile);
  451. closedir($dh);
  452. //Delete temporary folder
  453. rmdir($extractdir);
  454. // display summary
  455. $okfiles = 0;
  456. $errfiles= 0;
  457. if (count($aErrorFilesInfo)==0 && count($aImportedFilesInfo)>0)
  458. {
  459. $status=$clang->gT("Success");
  460. $statusClass='successheader';
  461. $okfiles = count($aImportedFilesInfo);
  462. $ImportListHeader .= "<br /><strong><u>".$clang->gT("Imported Files List").":</u></strong><br />\n";
  463. }
  464. elseif (count($aErrorFilesInfo)==0 && count($aImportedFilesInfo)==0)
  465. {
  466. $importtemplateoutput .= "<div class=\"warningheader\">".$clang->gT("Error")."</div><br />\n";
  467. $importtemplateoutput .= $clang->gT("This ZIP archive contains no valid template files. Import failed.")."<br /><br />\n";
  468. $importtemplateoutput .= $clang->gT("Remember that we do not support subdirectories in ZIP archives.")."<br/><br/>\n";
  469. $importtemplateoutput .= "<br/><input type=\"submit\" onclick=\"window.open('$scriptname?action=templates', '_top')\" value=\"".$clang->gT("Template Editor")."\"/>\n";
  470. $importtemplateoutput .= "</div>\n";
  471. return;
  472. }
  473. elseif (count($aErrorFilesInfo)>0 && count($aImportedFilesInfo)>0)
  474. {
  475. $status=$clang->gT("Partial");
  476. $statusClass='partialheader';
  477. $okfiles = count($aImportedFilesInfo);
  478. $errfiles = count($aErrorFilesInfo);
  479. $ErrorListHeader .= "<br /><strong><u>".$clang->gT("Error Files List").":</u></strong><br />\n";
  480. $ImportListHeader .= "<br /><strong><u>".$clang->gT("Imported Files List").":</u></strong><br />\n";
  481. }
  482. else
  483. {
  484. $status=$clang->gT("Error");
  485. $statusClass='warningheader';
  486. $errfiles = count($aErrorFilesInfo);
  487. $ErrorListHeader .= "<br /><strong><u>".$clang->gT("Error Files List").":</u></strong><br />\n";
  488. }
  489. $importtemplateoutput .= "<strong>".$clang->gT("Imported template files for")."</strong> $lid<br /><br />\n";
  490. $importtemplateoutput .= "<div class=\"".$statusClass."\">".$status."</div><br />\n";
  491. $importtemplateoutput .= "<strong><u>".$clang->gT("Resources Import Summary")."</u></strong><br />\n";
  492. $importtemplateoutput .= "".$clang->gT("Total Imported files").": $okfiles<br />\n";
  493. $importtemplateoutput .= "".$clang->gT("Total Errors").": $errfiles<br />\n";
  494. $importtemplateoutput .= $ImportListHeader;
  495. foreach ($aImportedFilesInfo as $entry)
  496. {
  497. $importtemplateoutput .= "\t<li>".$clang->gT("File").": ".$entry["filename"]."</li>\n";
  498. }
  499. if (!is_null($aImportedFilesInfo))
  500. {
  501. $importtemplateoutput .= "\t</ul><br />\n";
  502. }
  503. $importtemplateoutput .= $ErrorListHeader;
  504. foreach ($aErrorFilesInfo as $entry)
  505. {
  506. $importtemplateoutput .= "\t<li>".$clang->gT("File").": ".$entry['filename']." (".$entry['status'].")</li>\n";
  507. }
  508. if (!is_null($aErrorFilesInfo))
  509. {
  510. $importtemplateoutput .= "\t</ul><br />\n";
  511. }
  512. }
  513. else
  514. {
  515. $importtemplateoutput .= "<div class=\"warningheader\">".$clang->gT("Error")."</div><br />\n";
  516. $importtemplateoutput .= sprintf ($clang->gT("An error occurred uploading your file. This may be caused by incorrect permissions in your %s folder."),$basedestdir)."<br/><br/>\n";
  517. $importtemplateoutput .= "<br/><input type=\"submit\" onclick=\"window.open('$scriptname?action=templates', '_top')\" value=\"".$clang->gT("Template Editor")."\"/>\n";
  518. $importtemplateoutput .= "</div>\n";
  519. return;
  520. }
  521. $importtemplateoutput .= "<input type='submit' value='".$clang->gT("Open imported template")."' onclick=\"window.open('$scriptname?action=templates&templatename=$newdir', '_top')\"/>\n";
  522. $importtemplateoutput .= "</div>\n";
  523. }
  524. //---------------------
  525. // Comes from http://fr2.php.net/tempnam
  526. function tempdir($dir, $prefix='', $mode=0700)
  527. {
  528. if (substr($dir, -1) != '/') $dir .= '/';
  529. do
  530. {
  531. $path = $dir.$prefix.mt_rand(0, 9999999);
  532. } while (!mkdir($path, $mode));
  533. return $path;
  534. }
  535. /**
  536. * Strips file extension
  537. *
  538. * @param string $name
  539. * @return string
  540. */
  541. function strip_ext($name)
  542. {
  543. $ext = strrchr($name, '.');
  544. if($ext !== false)
  545. {
  546. $name = substr($name, 0, -strlen($ext));
  547. }
  548. return $name;
  549. }
  550. ?>