Dateien löschen

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Ein kurzes Script zum löschen von Dateien innerhalb der Plugininstallation.

    Erklärung


    Leider bietet das wsc keine Möglichkeit an, um Templates oder PHP Dateien während des Updatevorgangs zu löschen. Aus diesem Grunde muss hier selbst über einen kleinen Umweg das ganze bewerkstelligt werden

    package.xml


    Als Meta Information zum Update muss das Script-PiP benutzt werden., welches wie folgt eingebunden werden kann. Es ist wichtig, das Files-PiP zuerst zu notieren, damit das Script-PiP auf die entsprechende Datei zugreifen kann.

    XML Source Code: package.xml

    1. <instruction type="file" />
    2. <instruction type="script">acp/update_example.php</instruction>

    update_example.php


    Innerhalb eines Arrays werden die Dateien notiert, die gelöscht werden sollen. Für PHP Dateien, Templates und ACP Templates gibt es je ein separates Array. Weitere Anpassung sind i.d.R nicht erforderlich.

    PHP Source Code

    1. <?php
    2. use wcf\data\package\Package;
    3. use wcf\system\WCF;
    4. /**
    5. * @author Marcel Beckers
    6. * @license Beerware <https://de.wikipedia.org/wiki/Beerware>
    7. * @package de.yourecom.guestbook
    8. */
    9. $files = [
    10. 'data\product\LikeableProduct.class.php',
    11. 'data\product\LikeableProductProvider.class.php'
    12. ];
    13. $templates = [
    14. ];
    15. $acpTemplates = [
    16. ];
    17. // Ab hier nichts mehr ändern
    18. $package = $this->installation->getPackage();
    19. $application = Package::getAbbreviation($package);
    20. $applicationDir = constant(strtoupper($application).'_DIR');
    21. // delete files
    22. foreach($files as $file) {
    23. if (file_exists($applicationDir.$file)) {
    24. unlink($applicationDir.$file);
    25. }
    26. $sql = "DELETE FROM wcf".WCF_N."_package_installation_file_log
    27. WHERE filename = ?
    28. AND application = ?
    29. AND packageID = ?";
    30. $statement = WCF::getDB()->prepareStatement($sql);
    31. $statement->execute(array(
    32. $file,
    33. $application,
    34. $package->packageID
    35. ));
    36. }
    37. // delete templates
    38. foreach($templates as $template) {
    39. if (file_exists($applicationDir.$template)) {
    40. unlink($applicationDir.$template);
    41. }
    42. $sql = "DELETE FROM wcf".WCF_N."_template
    43. WHERE templateName = ?
    44. AND application = ?
    45. AND packageID = ?";
    46. $statement = WCF::getDB()->prepareStatement($sql);
    47. $statement->execute(array(
    48. substr(basename($template), 0, -4),
    49. $application,
    50. $package->packageID
    51. ));
    52. }
    53. // delete acp templates
    54. foreach($acpTemplates as $acpTemplate) {
    55. if (file_exists($applicationDir.'acp/template'.$acpTemplate)) {
    56. unlink($applicationDir.'acp/template'.$acpTemplate);
    57. }
    58. $sql = "DELETE FROM wcf".WCF_N."_acp_template
    59. WHERE templateName = ?
    60. AND application = ?
    61. AND packageID = ?";
    62. $statement = WCF::getDB()->prepareStatement($sql);
    63. $statement->execute(array(
    64. substr(basename($acpTemplate), 0, -4),
    65. $application,
    66. $package->packageID
    67. ));
    68. }
    Display All
    Ihr habt Fragen oder Anregungen? Lob oder Kritik? Lasst es mich doch durch einen Kommentar von euch wissen!

    18,481 times viewed