Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: MODUL: Überflüssige Produktbilder löschen

    speedy

    • Viel Schreiber
    • Beiträge: 3.214
    MODUL: Überflüssige Produktbilder löschen
    Antwort #30 am: 06. Januar 2011, 02:49:16
    Brauchst dich nicht entschuldigen, wollte nur darauf hinweisen. :)
    Besten Dank.

    deepblue

    • Schreiberling
    • Beiträge: 291
    • Geschlecht:
    MODUL: Überflüssige Produktbilder löschen
    Antwort #31 am: 06. Januar 2011, 08:38:31
    Habe mirnoch einmal alle Bilddateien angeschaut. Wie mir gerade aufgefallen ist befinden sich auch *.gif und *.png Dateien in dem Ordner. Ist das so in Ordnung?

    Oder dürfen in den Ordner (Original Bilder zum Produkt) nur *.jpg ????

    franky_n

    • Experte
    • Beiträge: 4.950
    MODUL: Überflüssige Produktbilder löschen
    Antwort #32 am: 06. Januar 2011, 09:47:13
    Hallo Zusammen,

    also das geht gerade total in die falsche Richtung...
    Das Skript schaut nach welche Dateien in der DB stehen.
    Alle die nicht drin stehen werden gelöscht, außer das "." und ".." und "index.html" und "noimage.gif".

    Warum Ihr jetzt alle gerade versucht irgendwelche Dateiendungen raus zu filtern ist mir schleierhaft.

    Hier nochmal das Skript so wie es in jedem Fall gehen sollte:

    Code: PHP  [Auswählen]
    <?php
    /* --------------------------------------------------------------
       $Id: removeoldpics.php 001 2011-01-05 12:19:00Z Hetfield $  

       XT-Commerce - community made shopping
       <a target="_blank" href="http://www.%28%28%20Wir%20dulden%20keine%20kommerziellen%20Werbelinks%20-%20Bitte%20Forenregeln%20beachten%21%20%29%29" rel="nofollow">http://www.(( Wir dulden keine kommerziellen Werbelinks - Bitte Forenregeln beachten! ))</a>

       Copyright (c) 2003 XT-Commerce
       --------------------------------------------------------------
       based on:
       (c) 2000-2001 The Exchange Project  (earlier name of osCommerce)
       (c) 2002-2003 osCommerce(imagesliders.php,v 1.52 2003/03/22); <a target="_blank" href="http://www.oscommerce.com" rel="nofollow">http://www.oscommerce.com</a>
       (c) 2003  nextcommerce (imagesliders.php,v 1.9 2003/08/18); <a target="_blank" href="http://www.nextcommerce.org" rel="nofollow">http://www.nextcommerce.org</a>

       Released under the GNU General Public License
       --------------------------------------------------------------*/


      require('includes/application_top.php');
      require(DIR_FS_LANGUAGES . $_SESSION['language'] . '/admin/removeoldpics.php');
      function remove_old_pics ($path='') {
        $pics_array = array();
        $pics_query = xtc_db_query("SELECT image_name FROM ".TABLE_PRODUCTS_IMAGES."");
        while ($pics = xtc_db_fetch_array($pics_query)) {
          $pics_array[] = $pics['image_name'];
        }
        switch ($path) {
          case 'original' :
            $path = DIR_FS_CATALOG_ORIGINAL_IMAGES;
            $path1 = DIR_WS_CATALOG_ORIGINAL_IMAGES;
            break;
          case 'info' :
            $path = DIR_FS_CATALOG_INFO_IMAGES;
            $path1 = DIR_WS_CATALOG_INFO_IMAGES;
            break;
          case 'thumbnail' :
            $path = DIR_FS_CATALOG_THUMBNAIL_IMAGES;
            $path1 = DIR_WS_CATALOG_THUMBNAIL_IMAGES;
            break;
          case 'popup' :
            $path = DIR_FS_CATALOG_POPUP_IMAGES;
            $path1 = DIR_WS_CATALOG_POPUP_IMAGES;
            break;
        }

        if ($path != "") {
          $handle=opendir($path);
          while ($datei = readdir($handle)) {
            if (!in_array($datei,$pics_array) && ($datei!='.') && ($datei != '..') && ($datei != 'index.html') && ($datei != 'noimage.gif')) {
              unlink($path.$datei);
            }
          }
          closedir($handle);
        }
      }

      if (isset($_GET['action'])) {
        if ($_GET['action'] == 'delete') {
          if (isset($_GET['path'])) {
            remove_old_pics ($_GET['path']);
          }
        }
      }
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html <?php echo HTML_PARAMS; ?>>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=<?php echo $_SESSION['language_charset']; ?>" />
        <title><?php echo TITLE; ?></title>
        <link rel="stylesheet" type="text/css" href="includes/stylesheet.css" />
        <script type="text/javascript" src="includes/general.js"></script>
      </head>
      <body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF">
        <!-- header //-->
        <?php require(DIR_WS_INCLUDES . 'header.php'); ?>

        <!-- header_eof //-->

        <!-- body //-->
        <table border="0" width="100%" cellspacing="2" cellpadding="2">
          <tr>
            <td class="columnLeft2" width="<?php echo BOX_WIDTH; ?>" valign="top">
              <table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="1" cellpadding="1" class="columnLeft">
                <!-- left_navigation //-->
                <?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
                <!-- left_navigation_eof //-->
              </table>
            </td>
            <!-- body_text //-->
            <td class="boxCenter" width="100%" valign="top">
              <table border="0" width="100%" cellspacing="0" cellpadding="2">
                <tr>
                  <td width="100%">
                    <table border="0" width="100%" cellspacing="0" cellpadding="0">
                      <tr>
                        <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
                        <td class="pageHeading" align="right"><?php echo xtc_draw_separator('pixel_trans.gif', HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>
                      </tr>
                    </table>
                  </td>
                </tr>
                <tr>
                  <td>
                    <table border="0" width="100%" cellspacing="0" cellpadding="0">
                      <tr>
                        <td>
                          <a href="./removeoldpics.php?action=delete&path=original"><?php echo LINK_ORIGINAL; ?></a> |
                          <a href="./removeoldpics.php?action=delete&path=info"><?php echo LINK_INFO; ?></a> |
                          <a href="./removeoldpics.php?action=delete&path=thumbnail"><?php echo LINK_THUMBNAIL; ?></a> |
                          <a href="./removeoldpics.php?action=delete&path=popup"><?php echo LINK_POPUP; ?></a>
                        </td>
                      </tr>
                    </table>
                    <br />

                  </td>
                </tr>
              </table>
            </td>
            <!-- body_text_eof //-->
          </tr>
        </table>
        <!-- body_eof //-->
        <!-- footer //-->
        <?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
        <!-- footer_eof //-->
        <br />
      </body>
    </html>
    <?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
    Viele Grüße

    Franky

    deepblue

    • Schreiberling
    • Beiträge: 291
    • Geschlecht:
    MODUL: Überflüssige Produktbilder löschen
    Antwort #33 am: 06. Januar 2011, 10:09:53
    Hallo franky_n,
    vielen Dank für dein schnelles Script. :-) Könntest du bitte alle Dateien noch einmal in einer zip-Datei zusammelstellen?

    Gruß

    deepblue

    franky_n

    • Experte
    • Beiträge: 4.950
    MODUL: Überflüssige Produktbilder löschen
    Antwort #34 am: 06. Januar 2011, 10:19:47
    Hallo deepblue,

    hier noch mal das angepasste Skript.
    Es sollten im Menü dann 4 Buttons erscheinen die man drücken kann um die Bilder zu löschen.
    Es erfolgt noch keine Erfolgsmeldung oder ähnliches, das könnte man dann mal irgendwann erweitern.
    Wer Lust hat kann das gerne machen.

    Anbei die aktualisierte Datei.
    Vielen Dank an twe und alle die sich hier einbringen!

    Viele Grüße

    Franky

    [EDIT Tomcraft 06.01.2011: Eine aktualisierte Version gibt es hier.]

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    MODUL: Überflüssige Produktbilder löschen
    Antwort #35 am: 06. Januar 2011, 12:07:01
    Ich habe noch einen Fehler in der Pfaden korrigiert. :whistle:

    "/admin/" hatte gefehlt. ;-)

    Oh... "HEADING_TITLE" fehlte noch... habe ich auch noch ergänzt.

    Grüße

    Torsten

    deepblue

    • Schreiberling
    • Beiträge: 291
    • Geschlecht:
    MODUL: Überflüssige Produktbilder löschen
    Antwort #36 am: 06. Januar 2011, 12:20:54
    Nach dem die Scripte ausgeführt wurden, waren alle Bilder komplett weg.  :?

    Nur das noimage.gif ist bei allen Produkten noch zu sehen!

    franky_n

    • Experte
    • Beiträge: 4.950
    MODUL: Überflüssige Produktbilder löschen
    Antwort #37 am: 06. Januar 2011, 13:57:41
    Hallo deepblue,

    kann nur sein das er die Bilder in der DB nicht korrekt eingelesen hat und auch nicht im array gespeichert hat.
    Warum ist mir derzeit jedoch noch schleierhaft...

    Viele Grüße

    Franky

    franky_n

    • Experte
    • Beiträge: 4.950
    MODUL: Überflüssige Produktbilder löschen
    Antwort #38 am: 06. Januar 2011, 14:08:44
    Hallo deepblue,

    ergänze mal den Teil

    Code: PHP  [Auswählen]
        if ($path != "") {
          $handle=opendir($path);
          while ($datei = readdir($handle)) {
            if (!in_array($datei,$pics_array) && ($datei!='.') && ($datei != '..') && ($datei != 'index.html') && ($datei != 'noimage.gif')) {
              unlink($path.$datei);
            }
          }
          closedir($handle);
        }
     
    durch:

    Code: PHP  [Auswählen]
        if ($path != "") {
          if (count($pics_array)> 1) {
            $handle=opendir($path);
            while ($datei = readdir($handle)) {
              if (!in_array($datei,$pics_array) && ($datei!='.') && ($datei != '..') && ($datei != 'index.html') && ($datei != 'noimage.gif')) {
                unlink($path.$datei);
              }
            }
            closedir($handle);
          } else {
            exit('Keine Dateien aus DB ausgelesen!');
          }
        }
     
    Dann zeigt er zumindest an wenn er keine Images aus der DB gelesen hat.

    Viele Grüße

    Franky

    MW

    • Fördermitglied
    • Beiträge: 418
    • Geschlecht:
    MODUL: Überflüssige Produktbilder löschen
    Antwort #39 am: 06. Januar 2011, 17:59:25
    Hallo zusammen und vielen Dank für diese nützliche Funktion,

    habe allerdings in meinem Testshop das gleiche Problem wie deepblue, alle Bilder weg. Werde es jetzt nochmal mit der letzten Ergänzung von franky_n versuchen und Bescheid geben.

    Gruß
    Michael

    MW

    • Fördermitglied
    • Beiträge: 418
    • Geschlecht:
    MODUL: Überflüssige Produktbilder löschen
    Antwort #40 am: 06. Januar 2011, 19:03:25
    Leider kein Erfolg mit der Ergänzung.
    Parse error: syntax error, unexpected $end in .../admin/removeoldpics.php on line 130Das ist die letzte Zeile der Datei

    Code: PHP  [Auswählen]
    <?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
     

    franky_n

    • Experte
    • Beiträge: 4.950
    MODUL: Überflüssige Produktbilder löschen
    Antwort #41 am: 06. Januar 2011, 20:21:24
    Hallo Zusammen,

    so ich habe den Fehler gefunden und verbessert.
    Jetzt sollte es funktionieren.
    Bitte trotzdem, auch wenn ich es bereits getestet habe, erst an einem Testsystem ausprobieren.

    PS: Am liebsten wäre mir mwiesener probierts noch mal aus, denn bei deepblue war es wohl am offenen Herzen, bzw. an einem Produktivsystem. Bitte nicht da ausprobieren...

    Viele Grüße

    Franky

    MW

    • Fördermitglied
    • Beiträge: 418
    • Geschlecht:
    MODUL: Überflüssige Produktbilder löschen
    Antwort #42 am: 07. Januar 2011, 07:49:42
    Hallo franky_n,

    es funktioniert jetzt einwandfrei  :B

    Super Arbeit, ich bedanke mich  :thx:

    deepblue

    • Schreiberling
    • Beiträge: 291
    • Geschlecht:
    MODUL: Überflüssige Produktbilder löschen
    Antwort #43 am: 07. Januar 2011, 08:13:55
    @ mwiesener

    Welche Shopversion verwendest du? Mit wievielen Artikel hast du das mal getestet?

    h-h-h

    • modified Team
    • Beiträge: 4.562
    MODUL: Überflüssige Produktbilder löschen
    Antwort #44 am: 07. Januar 2011, 08:18:52
    Egal wie viele Bilder wenn die Scriptlaufzeit serverseitig in Ordnung ist wirst Du kein Problem bekommen.

    Sonst einfach mehrfach ausführen.

    Ein Backup der Bilder-Ordner ist bei einem produktivem System empfohlen!

    Gruß h-h-h

    Marktplatz - Eine große Auswahl an neuen und hilfreichen Modulen sowie modernen Templates für die modified eCommerce Shopsoftware
               
    anything