Subversion-Projekte lars-tiefland.php_share

Revision

Blame | Letzte Änderung | Log anzeigen | RSS feed

#!/usr/bin/php
<?php

    /**
     * @package   Mediaran.de
     * @author    Lars Tiefland <tiefland@weban.de>
     * @copyright 2009 Webagentur Niewerth
     * @license   propietary
     * @version   $Rev: 402 $
     * @filesource
     * 
     */

    /**
     * 
     * @package   Mediaran.de
     * @author    Lars Tiefland <tiefland@weban.de>
     * @copyright 2009 Webagentur Niewerth
     */

    // SVN: $Id: clear_cache.php 402 2011-02-03 15:33:21Z tiefland $

    /*
    * übergebene Parameter auswerten
    */

    foreach ( $_SERVER["argv"] as $param_id => $param )
    {
        list( $param_name, $param_value ) = explode( "=", $param );
        switch ( strtolower( $param_name ) )
        {
            case "base":
                $base = filter_var( $param_value, FILTER_SANITIZE_STRING );
                break;
            case "site":
                // Abfrage limitieren um beim Entwickel Zeit zu sparen
                $site = filter_var( $param_value, FILTER_SANITIZE_STRING );
                break;
            case "shop":
                $shop = filter_var( $param_value, FILTER_SANITIZE_STRING );
                break;
        }
    }

    if ( !$site )
    {
        echo "Keine Site angegeben! ==> Kann Cache nicht löschen!\n";
        exit( 255 );
    }
    if ( !$shop )
    {
        echo "Kein Shop angegeben! ==> Kann Cache nicht löschen!\n";
        exit( 255 );
    }
    if ( !$base )
    {
        $base = "/var/www/vhosts/$shop";
    }

    if ( !file_exists( $base ) )
    {
        echo "Basisverzeichnis \"$base\" existiert nicht! ==> Kann Cache nicht löschen!\n";
        exit( 255 );
    }

    $cache_dir = $base . "/httpdocs/cache/";

    if ( !file_exists( $cache_dir ) )
    {
        echo "Cacheverzeichnis \"$cache_dir\" existiert nicht! ==> Kann Cache nicht löschen!\n";
        echo "Verwendet der Shop überhaupt einen Cache?\n";
        exit( 255 );
    }

    /**
     * Konstanten
     */

    /**
     * Definition für die INI-Datei
     */

    define( "__SITE__", $site );
    define( "__SHOP__", $shop );
    define( "__USE_MDB2__", true );

    require_once ( "module/functions.common.php" );
    require_once ( "PEAR.php" );
    require_once ( "File/Find.php" );

    PEAR::setErrorHandling( PEAR_ERROR_CALLBACK, 'errorHandler' );

    init_shop();

    $files = File_Find::glob( "/navigation_|subdir_[0-9]*\.html/i", $cache_dir,
        'perl' );
    if ( is_array( $files ) )
    {
        foreach ( $files as $file )
        {
            $mtime = filemtime( $cache_dir . "/" . $file );
            if ( strtotime( "1 day", $mtime ) < time() )
            {
                unlink( $cache_dir . "/" . $file );
            }
        }
    }

    $sql = "
        SELECT
            UNIX_TIMESTAMP(erstellt_am) AS mtime,
            father,
            id
        FROM
            directory
        WHERE
            Language='" . $GLOBALS["INI"]["language"] . "'
    ";
    $res = $GLOBALS["db"]->query( $sql );
    if ( !PEAR::isError( $res ) )
    {
        if ( $res->NumRows() )
        {
            $rows = $res->fetchAll();
            foreach ( $rows as $row )
            {
                $file = $cache_dir . "/navigation_" . $row["father"] .
                    ".html";
                if ( file_exists( $file ) )
                {
                    $mtime = filemtime( $file );
                    if ( $mtime < $row["mtime"] )
                    {
                        unlink( $file );
                    }
                }
                $file = $cache_dir . "/subdir_" . $row["father"] . ".html";
                if ( file_exists( $file ) )
                {
                    $mtime = filemtime( $file );
                    if ( $mtime < $row["mtime"] )
                    {
                        unlink( $file );
                    }
                }
            }
        }
    }

    function errorHandler( $error )
    {
        $message = $error->getUserInfo();
        if ( !empty( $error->backtrace[1]['file'] ) )
        {
            $message .= ' (' . $error->backtrace[1]['file'];
            if ( !empty( $error->backtrace[1]['line'] ) )
            {
                $message .= ' in Zeile ' . $error->backtrace[1]['line'];
            }
            $message .= ')';
        }
        mail_admin( $message );
        exit;
    }

    function mail_admin( $message )
    {
        $subject = "Fehler beim Löschen des Cache auf www." . __SHOP__;
        $from = "info@" . __SHOP__;
        mail( "tiefland@weban.de", $subject, $message, "From: $form" );
        mail( "niewerth@weban.de", $subject, $message, "From: $from" );
    }
?>