$attributes = rex_setAttributes('ctype', $ctypes, $attributes); $attributes = rex_setAttributes('modules', $modules, $attributes); $attributes = rex_setAttributes('categories', $categories, $attributes); $TPL->setWhere("id='{$template_id}'"); $TPL->setValue('attributes', addslashes($attributes)); $TPL->addGlobalUpdateFields(); if ($TPL->update()) { $info = $I18N->msg('template_updated'); } else { $warning = $TPL->getError(); } } // werte werden direkt wieder ausgegeben $templatename = stripslashes($templatename); $content = stripslashes($content); rex_deleteDir($REX['GENERATED_PATH'] . '/templates', 0); if ($goon != '') { $function = 'edit'; $save = 'nein'; } else { $function = ''; } } if (!isset($save) or $save != 'ja') { echo '<a name="edit"></a>'; // Ctype Handling $ctypes = rex_getAttributes('ctype', $attributes); $modules = rex_getAttributes('modules', $attributes); $categories = rex_getAttributes('categories', $attributes); if (!is_array($modules)) { $modules = array();
function delete($addonName) { // zuerst deinstallieren // bei erfolg, komplett löschen $state = TRUE; $state = $state && $this->uninstall($addonName); $state = $state && rex_deleteDir($this->baseFolder($addonName), TRUE); $state = $state && $this->generateConfig(); return $state; }
<?php /** * TinyMCE Addon * * @author staab[at]public-4u[dot]de Markus Staab * @author <a href="http://www.public-4u.de">www.public-4u.de</a> * * @author Dave Holloway * @author <a href="http://www.GN2-Netwerk.de">www.GN2-Netwerk.de</a>s * * @package redaxo4 * @version $Id: uninstall.inc.php,v 1.5 2007/10/13 13:52:01 kills Exp $ */ rex_deleteDir('../files/tmp_/tinymce', true); $REX['ADDON']['install']['tinymce'] = 0;
/** * Importiert das Tar-Archiv $filename in den Ordner /files * * @param string Pfad + Dateinamen zum Tar-Archiv * * @return array Gibt ein Assoc. Array zurück. * 'state' => boolean (Status ob fehler aufgetreten sind) * 'message' => Evtl. Status/Fehlermeldung */ function rex_a1_import_files($filename) { global $REX, $I18N_IM_EXPORT; $return = array(); $return['state'] = false; if ($filename == '' || substr($filename, -7, 7) != ".tar.gz") { $return['message'] = $I18N_IM_EXPORT->msg("no_import_file_chosen") . "<br>"; return $return; } // Ordner /files komplett leeren rex_deleteDir($REX['INCLUDE_PATH'] . "/../../files"); $tar = new rex_tar(); // ----- EXTENSION POINT $tar = rex_register_extension_point('A1_BEFORE_FILE_IMPORT', $tar); $tar->openTAR($filename); if (!$tar->extractTar()) { $msg = $I18N_IM_EXPORT->msg('problem_when_extracting') . '<br />'; if (count($tar->message) > 0) { $msg .= $I18N_IM_EXPORT->msg('create_dirs_manually') . '<br />'; foreach ($tar->message as $_message) { $msg .= rex_absPath($_message) . '<br />'; } } } else { $msg = $I18N_IM_EXPORT->msg('file_imported') . '<br />'; } // ----- EXTENSION POINT $tar = rex_register_extension_point('A1_AFTER_FILE_IMPORT', $tar); $return['state'] = true; $return['message'] = $msg; return $return; }
/** * Löscht einen Ordner/Datei mit Unterordnern * * @param $file Zu löschender Ordner/Datei * @param $delete_folders Ordner auch löschen? false => nein, true => ja */ function rex_deleteDir($file, $delete_folders = false) { $state = true; if (file_exists($file)) { // Fehler unterdrücken, falls keine Berechtigung if (@is_dir($file)) { $handle = opendir($file); if (!$handle) { return false; } while ($filename = readdir($handle)) { if ($filename == '.' || $filename == '..') { continue; } if (!rex_deleteDir($file . '/' . $filename, $delete_folders) && $state === true) { $state = false; } } closedir($handle); if ($state !== true) { return false; } // Ordner auch löschen? if ($delete_folders) { // Fehler unterdrücken, falls keine Berechtigung if (!@rmdir($file)) { return false; } } } else { // Datei löschen // Fehler unterdrücken, falls keine Berechtigung if (!@unlink($file)) { return false; } } } else { // Datei/Ordner existiert nicht return false; } return true; }
/** * Löscht einen Ordner/Datei mit Unterordnern * * @param $file Zu löschender Ordner/Datei * @param $delete_folders Ordner auch löschen? false => nein, true => ja */ function rex_deleteDir($file, $delete_folders = false) { $state = true; if (file_exists($file)) { // Fehler unterdrücken, falls keine Berechtigung if (@is_dir($file)) { $handle = opendir($file); if (!$handle) { return false; } while ($filename = readdir($handle)) { if ($filename == '.' || $filename == '..') { continue; } if (($state = rex_deleteDir($file . "/" . $filename, $delete_folders)) !== true) { // Schleife abbrechen, dir_hanlde schließen und danach erst false zurückgeben break; } } closedir($handle); if ($state !== true) { return false; } // Ordner auch löschen? if ($delete_folders) { // Fehler unterdrücken, falls keine Berechtigung if (!@rmdir($file)) { return false; } } } else { // Datei löschen // Fehler unterdrücken, falls keine Berechtigung if (!@unlink($file)) { return false; } } } else { // Datei/Ordner existiert nicht return false; } return true; }
<?php /** * markitup Addon * * @author markus[dot]staab[at]redaxo[dot]de Markus Staab * * @package redaxo4 * @version $Id: uninstall.inc.php,v 1.2 2008/03/12 14:54:12 kills Exp $ */ rex_deleteDir('../files/tmp_/markitup', true); $REX['ADDON']['install']['markitup'] = 0;
<?php /** * Redaxo Addon: REX_Ajax * Version: 1.0, 20.07.2010 * * Autor: Andreas Eberhard, andreas.eberhard@gmail.com * http://rex.andreaseberhard.de */ // Name des Addons //$myself = '_rex_ajax_'; include dirname(__FILE__) . '/config.inc.php'; if ($rxa[$myself]['rexversion'] < 32) { return; } // REDAXO 3.2.3, 4.0.x, 4.1.x - Dateien in Ordner files/addons/ kopieren if ($rxa[$myself]['rexversion'] == '32' or $rxa[$myself]['rexversion'] == '40' or $rxa[$myself]['rexversion'] == '41') { $addon_filesdir = $REX['MEDIAFOLDER'] . '/addons/' . $myself; if (is_dir($addon_filesdir)) { if (!rex_deleteDir($addon_filesdir, true)) { $REX['ADDON']['installmsg'][$myself] = 'Verzeichnis ' . $addon_filesdir . ' konnte nicht gel�scht werden!'; $REX['ADDON']['install'][$myself] = 1; } } } $REX['ADDON']['install'][$myself] = 0;
title($I18N->msg("title_templates"), ""); $OUT = TRUE; if (isset($function) and $function == "delete") { $del = new sql(); $del->setQuery("SELECT rex_article.id,rex_template.name FROM rex_article \r\n LEFT JOIN rex_template ON rex_article.template_id=rex_template.id \r\n WHERE rex_article.template_id='{$template_id}' LIMIT 0,10"); if ($template_id == 1) { $message = $I18N->msg("cant_delete_default_template"); } else { if ($del->getRows() > 0) { $message = $I18N->msg("cant_delete_template_because_its_in_use", htmlspecialchars($del->getValue("rex_template.name"))); } else { $del->query("DELETE FROM rex_template WHERE id = '{$template_id}' LIMIT 1"); // max. ein Datensatz darf loeschbar sein $message = $I18N->msg("template_deleted"); rex_deleteDir($REX['INCLUDE_PATH'] . "/generated/templates/" . $template_id . ".template", 0); } } } if (isset($function) and ($function == "add" or $function == "edit")) { if (isset($save) and $save == "ja") { if ($function == "add") { $ITPL = new sql(); $ITPL->setTable("rex_template"); $ITPL->setValue("name", $templatename); $ITPL->setValue("active", $active); $ITPL->setValue("content", $content); $ITPL->insert(); $template_id = $ITPL->last_insert_id; $message = $I18N->msg("template_added"); } else {
$attributes = rex_setAttributes("ctype", $ctypes, $attributes); $attributes = rex_setAttributes("modules", $modules, $attributes); $attributes = rex_setAttributes("categories", $categories, $attributes); $TPL->setWhere("id='{$template_id}'"); $TPL->setValue("attributes", addslashes($attributes)); $TPL->addGlobalUpdateFields(); if ($TPL->update()) { $info = $I18N->msg("template_updated"); } else { $warning = $TPL->getError(); } } // werte werden direkt wieder ausgegeben $templatename = stripslashes($templatename); $content = stripslashes($content); rex_deleteDir($REX['INCLUDE_PATH'] . "/generated/templates", 0); if ($goon != "") { $function = "edit"; $save = "nein"; } else { $function = ""; } } if (!isset($save) or $save != "ja") { echo '<a name="edit"></a>'; // Ctype Handling $ctypes = rex_getAttributes("ctype", $attributes); $modules = rex_getAttributes("modules", $attributes); $categories = rex_getAttributes("categories", $attributes); if (!is_array($modules)) { $modules = array();
function Installer_clean_addon_setup($includeDir, $file = false) { if ($file) { // Temporäre ZIP-Datei nach dem Entpacken wieder löschen! unlink($includeDir . "/" . $file); } // Prüft, ob Versteckte Verzeichnisse von MACOSX im ZIP abgelegt worden sind // TODO: Windows thumbs.db ebenfalls löschen // TODO: SVN Dateien löschen // Dafür muss eine rekrusive Funktion geschrieben werden if (is_dir($includeDir . '/addons/__MACOSX')) { // Wenn Mac-Ordner existieren, werden diese gelöscht. // Rufe Redaxos deleteDir Funktion auf rex_deleteDir($includeDir . '/addons/__MACOSX', true); } else { // return return false; } }
<?php $image_dir = $REX['MEDIAFOLDER'] . '/quixexplorer'; if (rex_deleteDir($image_dir)) { $REX['ADDON']['install']['quixexplorer'] = 0; } else { $REX['ADDON']['installmsg']['quixexplorer'] = 'Der Ordner "' . $image_dir . '" konnte nicht gel�scht werden'; }
/** * Importiert das Tar-Archiv $filename in den Ordner /files * * @param string Pfad + Dateinamen zum Tar-Archiv * * @return array Gibt ein Assoc. Array zurück. * 'state' => boolean (Status ob fehler aufgetreten sind) * 'message' => Evtl. Status/Fehlermeldung */ function rex_a1_import_files($filename) { global $REX, $I18N_IM_EXPORT; $return = array(); $return['state'] = false; if ($filename == '') { $return['message'] = $I18N_IM_EXPORT->msg("no_import_file_chosen") . "<br>"; return $return; } // Ordner /files komplett leeren rex_deleteDir($REX['INCLUDE_PATH'] . "/../../files"); $tar = new tar(); $tar->openTAR($filename); if (!$tar->extractTar()) { $msg = $I18N_IM_EXPORT->msg("problem_when_extracting") . "<br>"; if (count($tar->message) > 0) { $msg .= $I18N_IM_EXPORT->msg("create_dirs_manually") . "<br>"; reset($tar->message); for ($fol = 0; $fol < count($tar->message); $fol++) { $msg .= rex_absPath(str_replace("'", "", key($tar->message))) . "<br>"; next($tar->message); } } } else { $msg = $I18N_IM_EXPORT->msg("file_imported") . "<br>"; } $return['state'] = true; $return['message'] = $msg; return $return; }
function rex_deleteDir($file, $what = 0) { if (file_exists($file)) { // @chmod($file,0775); if (is_dir($file)) { $handle = opendir($file); while ($filename = readdir($handle)) { if ($filename == '_readme.txt' || $filename == '.cvsignore') { return; } if ($filename != "." && $filename != "..") { rex_deleteDir($file . "/" . $filename); } } closedir($handle); if ($what == 1) { rmdir($file); } else { echo ""; } // do nothing; } else { unlink($file); } } }
<?php /** * Addon Framework Classes * @author staab[at]public-4u[dot]de Markus Staab * @author <a href="http://www.public-4u.de">www.public-4u.de</a> * @package redaxo3 * @version $Id: uninstall.inc.php,v 1.4 2007/09/09 10:23:29 kills Exp $ */ rex_deleteDir('../files/addon_framework', true); $REX['ADDON']['install']['addon_framework'] = 0; // ERRMSG IN CASE: $REX['ADDON']['installmsg']['addon_framework'] = "Deinstallation fehlgeschlagen weil...";
function rex_delete_addon($addons, $addonname) { global $REX, $I18N; $state = true; // zuerst deinstallieren $state = rex_uninstall_addon($addons, $addonname, false); if ($state === true) { // bei erfolg, komplett löschen rex_deleteDir($REX['INCLUDE_PATH'] . "/addons/{$addonname}", true); // regenerate Addons file $state = rex_generateAddons($addons); } return $state; }
function rex_delete_addon($addons, $addonname) { global $REX, $I18N; // System AddOns dürfen nicht gelöscht werden! if (in_array($addonname, $REX['SYSTEM_ADDONS'])) { return $I18N->msg('addon_systemaddon_delete_not_allowed'); } // zuerst deinstallieren $state = rex_uninstall_addon($addons, $addonname, false); if ($state === true) { // bei erfolg, komplett löschen rex_deleteDir($REX['INCLUDE_PATH'] . "/addons/{$addonname}", true); // regenerate Addons file $state = rex_generateAddons($addons); } return $state; }
function rex_deleteDir($file, $what = 0) { if (file_exists($file)) { // @chmod($file,0775); if (is_dir($file)) { $handle = opendir($file); while ($filename = readdir($handle)) { if ($filename != "." && $filename != "..") { rex_deleteDir($file . "/" . $filename); } } closedir($handle); if ($what == 1) { rmdir($file); } else { echo ""; } // do nothing; } else { unlink($file); } } // recache all $Cache = new Cache(); $Cache->removeAllCacheFiles(); }
function rex_deleteDir($file, $delete_folders = FALSE) { $debug = FALSE; $state = TRUE; $file = rtrim($file, DIRECTORY_SEPARATOR); if (file_exists($file)) { // Fehler unterdrücken, falls keine Berechtigung if (@is_dir($file)) { $handle = opendir($file); if (!$handle) { if ($debug) { echo "Unable to open dir '{$file}'<br />\n"; } return FALSE; } while ($filename = readdir($handle)) { if ($filename == '.' || $filename == '..') { continue; } if (!rex_deleteDir($file . DIRECTORY_SEPARATOR . $filename, $delete_folders)) { $state = FALSE; } } closedir($handle); if ($state !== TRUE) { return FALSE; } // Ordner auch löschen? if ($delete_folders) { // Fehler unterdrücken, falls keine Berechtigung if (!@rmdir($file)) { if ($debug) { echo "Unable to delete folder '{$file}'<br />\n"; } return FALSE; } } } else { // Datei löschen // Fehler unterdrücken, falls keine Berechtigung if (!@unlink($file)) { if ($debug) { echo "Unable to delete file '{$file}'<br />\n"; } return FALSE; } } } else { if ($debug) { echo "file '{$file}'not found!<br />\n"; } // Datei/Ordner existiert nicht return FALSE; } return TRUE; }
protected function createTemplate($params) { global $REX, $I18N; $function = 'add'; $active = Watson::arrayCastVar($params, 'active', 'int', 0); $templatename = Watson::arrayCastVar($params, 'templatename', 'string', ''); $content = Watson::arrayCastVar($params, 'content', 'string', ''); $ctypes = Watson::arrayCastVar($params, 'ctype', 'array', array()); $categories = Watson::arrayCastVar($params, 'categories', 'array', array()); $modules = Watson::arrayCastVar($params, 'modules', 'array', array()); /* * following Code is from REDAXO * include/pages/template.inc.php * * change rex_sql > \rex_sql */ $num_ctypes = count($ctypes); if ($ctypes[$num_ctypes] == "") { unset($ctypes[$num_ctypes]); if (isset($ctypes[$num_ctypes - 1]) && $ctypes[$num_ctypes - 1] == '') { unset($ctypes[$num_ctypes - 1]); } } // Daten wieder in den Rohzustand versetzen, da für serialize()/unserialize() // keine Zeichen escaped werden dürfen for ($i = 1; $i < count($ctypes) + 1; $i++) { $ctypes[$i] = stripslashes($ctypes[$i]); } // leerer eintrag = 0 if (count($categories) == 0 || !isset($categories["all"]) || $categories["all"] != 1) { $categories["all"] = 0; } // leerer eintrag = 0 if (count($modules) == 0) { $modules[1]["all"] = 0; } foreach ($modules as $k => $module) { if (!isset($module["all"]) || $module["all"] != 1) { $modules[$k]["all"] = 0; } } $TPL = \rex_sql::factory(); $TPL->setTable($REX['TABLE_PREFIX'] . "template"); $TPL->setValue("name", $templatename); $TPL->setValue("active", $active); $TPL->setValue("content", $content); $attributes = rex_setAttributes("ctype", $ctypes, ""); $attributes = rex_setAttributes("modules", $modules, ""); $attributes = rex_setAttributes("categories", $categories, ""); $TPL->setValue("attributes", addslashes($attributes)); $TPL->addGlobalCreateFields(); if ($function == "add") { $attributes = rex_setAttributes("ctype", $ctypes, ""); $attributes = rex_setAttributes("modules", $modules, $attributes); $attributes = rex_setAttributes("categories", $categories, $attributes); $TPL->setValue("attributes", addslashes($attributes)); $TPL->addGlobalCreateFields(); if ($TPL->insert()) { $template_id = $TPL->getLastId(); $info = $I18N->msg("template_added"); } else { $warning = $TPL->getError(); } } else { $attributes = rex_setAttributes("ctype", $ctypes, $attributes); $attributes = rex_setAttributes("modules", $modules, $attributes); $attributes = rex_setAttributes("categories", $categories, $attributes); $TPL->setWhere("id='{$template_id}'"); $TPL->setValue("attributes", addslashes($attributes)); $TPL->addGlobalUpdateFields(); if ($TPL->update()) { $info = $I18N->msg("template_updated"); } else { $warning = $TPL->getError(); } } // werte werden direkt wieder ausgegeben $templatename = stripslashes($templatename); $content = stripslashes($content); rex_deleteDir($REX['GENERATED_PATH'] . "/templates", 0); if ($goon != "") { $function = "edit"; $save = "nein"; } else { $function = ""; } return array('success' => $info, 'error' => $warning); }