$mod_dir = basename(dirname(__FILE__));
require WB_PATH . '/modules/' . $mod_dir . '/info.php';
// include module.functions.php
include_once WB_PATH . '/framework/module.functions.php';
// load outputfilter-functions
require_once dirname(__FILE__) . "/functions.php";
opf_io_mkdir(__OPF_UPLOAD_DIRNAME);
opf_io_mkdir(WB_PATH . MEDIA_DIRECTORY . '/opf_plugins');
opf_io_unlink($mod_dir . '/debug_config.php');
opf_io_unlink($mod_dir . '/config_init.php');
opf_io_unlink($mod_dir . '/precheck.php');
if (file_exists(WB_PATH . '/modules/practical_module_functions/pmf.php')) {
    // load Practical Module Functions
    include_once WB_PATH . '/modules/practical_module_functions/pmf.php';
    $opf = pmf_init(0, basename(dirname(__FILE__)));
    // unregister this module since we do not use pmf anymore
    pmf_mod_unregister($opf, basename(dirname(__FILE__)));
}
opf_db_run_query("DROP TABLE IF EXISTS `" . TABLE_PREFIX . "mod_outputfilter_dashboard_settings`");
opf_io_rmdir(dirname(__FILE__) . '/naturaldocs_txt');
// install or upgrade example plugins
$install_file = '/plugin_install.php';
$info_file = 'plugin_info.php';
$install_dir = dirname(__FILE__) . '/plugins/';
$plugins = array('cachecontrol', 'correct_date_format');
foreach ($plugins as $plugin_dir) {
    // run install-script
    if (file_exists($install_dir . $plugin_dir . $install_file)) {
        require $install_dir . $plugin_dir . $install_file;
    }
}
    @unlink($temp_dir . $temp_file);
    return;
}
// Check version
if (file_exists($install_dir . $plugin_directory)) {
    $old_version = opf_plugin_info_read($install_dir . $plugin_directory . '/' . $info_file, 'plugin_version');
    $new_version = opf_plugin_info_read($temp_unzip . $info_file, 'plugin_version');
    if (version_compare($old_version, $new_version, '>')) {
        $upload_message = sprintf($text_failed, $LANG['MOD_OPF']['TXT_ALREADY_INSTALLED']);
        opf_io_rmdir($temp_unzip);
        @unlink($temp_dir . $temp_file);
        return;
    }
}
// Cleanup temp
opf_io_rmdir($temp_unzip);
$plugin_dir = $install_dir . $plugin_directory . '/';
opf_io_mkdir($plugin_dir);
// unzip plugin directly to $plugin_dir
$list = $archive->extract(PCLZIP_OPT_PATH, $plugin_dir);
if (!$list) {
    $upload_message = sprintf($text_failed, $LANG['MOD_OPF']['TXT_UNZIP_FAILED']);
    @unlink($temp_dir . $temp_file);
    return;
}
// delete archive
@unlink($temp_dir . $temp_file);
// chmod new files
foreach (opf_io_filelist($plugin_dir) as $file) {
    opf_io_chmod($file);
}
function opf_unregister_filter($name)
{
    if (!function_exists('opf_unregister_call_uninstall')) {
        function opf_unregister_call_uninstall($file)
        {
            include $file;
        }
    }
    static $old_name = FALSE;
    $now = time();
    $name = opf_check_name($name);
    if (!$name) {
        return FALSE;
    }
    if ($old_name == $name) {
        return FALSE;
    }
    // prevent usage of opf_unregister_filter() in plugin_uninstall.php
    $old_name = $name;
    // check whether $name is in DB
    if (opf_is_registered($name)) {
        $pos = opf_get_position($name);
        $type = opf_get_type($name);
        // delete plugin-dir if present
        if ($plugin_dir = opf_db_query_vars("SELECT `plugin` FROM `" . TABLE_PREFIX . "mod_outputfilter_dashboard` WHERE `name`='%s'", $name)) {
            if ($plugin_dir && file_exists(WB_PATH . '/modules/outputfilter_dashboard/plugins/' . $plugin_dir)) {
                // uninstall.php present? include it
                if (file_exists(WB_PATH . '/modules/outputfilter_dashboard/plugins/' . $plugin_dir . '/plugin_uninstall.php')) {
                    opf_unregister_call_uninstall(WB_PATH . '/modules/outputfilter_dashboard/plugins/' . $plugin_dir . '/plugin_uninstall.php');
                }
                opf_io_rmdir(WB_PATH . '/modules/outputfilter_dashboard/plugins/' . $plugin_dir);
            }
        }
        $res = opf_db_run_query("DELETE FROM `" . TABLE_PREFIX . "mod_outputfilter_dashboard` WHERE `name`='%s'", $name);
        if ($res) {
            if (opf_db_run_query("UPDATE `" . TABLE_PREFIX . "mod_outputfilter_dashboard` SET `position`=`position`-1\n                      WHERE `type`='%s' AND `position`>%d", $type, $pos)) {
                return TRUE;
            }
        }
    }
    return FALSE;
}
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * OutputFilter-Dashboard is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with OutputFilter-Dashboard. If not, see <http://www.gnu.org/licenses/>.
 * 
 **/
// prevent this file from being accessed directly
if (!defined('WB_PATH')) {
    die(header('Location: ../index.php'));
}
// obtain module directory
$mod_dir = basename(dirname(__FILE__));
require WB_PATH . '/modules/' . $mod_dir . '/info.php';
// include module.functions.php
include_once WB_PATH . '/framework/module.functions.php';
// include the module language file depending on the backend language of the current user
if (!(include get_module_language_file($mod_dir))) {
    return;
}
// load outputfilter-functions
require_once dirname(__FILE__) . '/functions.php';
// delete media-dir
opf_io_rmdir(WB_PATH . MEDIA_DIRECTORY . '/opf_plugins');
opf_db_run_query("DROP TABLE IF EXISTS `" . TABLE_PREFIX . "mod_outputfilter_dashboard`");
opf_db_run_query("DROP TABLE IF EXISTS `" . TABLE_PREFIX . "mod_outputfilter_dashboard_settings`");
function opf_io_rmdir($dir)
{
    $res = TRUE;
    if (!file_exists($dir)) {
        return FALSE;
    }
    if (is_file($dir) || is_link($dir)) {
        return unlink($dir);
    }
    $dh = opendir($dir);
    while ($file = readdir($dh)) {
        if ($file == '.' || $file == '..') {
            continue;
        }
        is_dir($dir . '/' . $file) ? $res = opf_io_rmdir($dir . '/' . $file) : ($res = unlink($dir . '/' . $file));
        if ($res == FALSE) {
            break;
        }
    }
    closedir($dh);
    if ($res == TRUE) {
        $res = rmdir($dir);
    }
    return $res;
}