Exemplo n.º 1
0
/**
 * Syncronisiert eine gesamte Bildergalerie, löscht alte Einträge oder erstellt neu in der DB
 * Dabei wird das Dateisystem als Grundlage genommen. 
 * @return bool true = sucsess
 * @param array	$galerie  Einstellungen dieser Galerie
 * @param string $categorie ab welchem ordner gescannt werden soll, relativ zum Stammordner
 * @param integer $modus[optional] 0,1,2 Modus
 * @param bool $rekursiv[optional] soll rekursiv gesucht werden
 *
 * @see scanDirectories()
 * @see deleteFolder()
 */
function syncDB($galerie, $searchCategorie = '', $modus = 1, $rekursiv = true)
{
    // Auf diese Variablen muss zugegriffen werden
    global $database;
    global $invisibleFileNames;
    global $url;
    global $path;
    global $thumbdir;
    // Daten Vorbereiten
    $rootDir = $path . $galerie['root_dir'];
    $searchFolder = $rootDir . $searchCategorie;
    $extensions = explode(',', $galerie['extensions']);
    $invisible = array_merge($invisibleFileNames, explode(',', $galerie['invisible']));
    //Alle Angaben aus dem Filesystem holen
    $allData = getFolderData($searchFolder, $extensions, $invisible);
    //natsort($allData); # ! Bringt es das?
    //Angaben auswerten
    $categories = array();
    $files = array();
    foreach ($allData as $data) {
        $einzelteile = explode('/', $data);
        $letztesElement = count($einzelteile) - 1;
        if (substr_count($einzelteile[$letztesElement], '.') == 0) {
            //Hier werden alle Kategorien angelegt
            $catName = $einzelteile[$letztesElement];
            unset($einzelteile[$letztesElement]);
            $catParents = implode('/', $einzelteile);
            $catParents = $searchCategorie . $catParents;
            $categories[] = array('categorie' => $catName, 'parent' => $catParents, 'is_empty' => 1);
        } else {
            //Hier gehts um die Files
            $fileName = $einzelteile[$letztesElement];
            //if ($fileName == 'folderpreview.jpg') continue;
            unset($einzelteile[$letztesElement]);
            $parent = implode('/', $einzelteile);
            $parent = $searchCategorie . $parent;
            $fileLink = $url . $galerie['root_dir'] . $parent . "/" . $fileName;
            $fileLink = str_replace(WB_URL, '', $fileLink);
            $files[] = array('file_name' => $fileName, 'file_link' => $fileLink, 'parent' => $parent);
        }
    }
    // Kategorien mit Bildern finden
    foreach ($categories as &$nameCat) {
        $catString = $nameCat['parent'] . "/" . $nameCat['categorie'];
        foreach ($files as $file) {
            if ($file['parent'] == $catString) {
                $nameCat['is_empty'] = 0;
                break;
            }
        }
    }
    // Falls Parents, diese finden
    foreach ($categories as &$nameCat) {
        $catName = $nameCat['categorie'];
        foreach ($categories as $searchCat) {
            if (strpos($searchCat['parent'], $catName) !== false and !$searchCat['is_empty']) {
                $nameCat['is_empty'] = 0;
                break;
            }
        }
    }
    // Kategorien mit DB synchronisieren
    // Neuer SQL vorbereiten
    $notDeleteArray = array();
    $insertSQL = "INSERT INTO " . TABLE_PREFIX . "mod_foldergallery_categories (section_id, categorie, parent, cat_name, is_empty) VALUES";
    $deleteSQL = "DELETE FROM " . TABLE_PREFIX . "mod_foldergallery_categories WHERE parent_id > '0' AND section_id=" . $galerie['section_id'];
    $deleteLaenge = strlen($deleteSQL);
    $insertLaenge = strlen($insertSQL);
    foreach ($categories as $cat) {
        $sql = 'SELECT * FROM ' . TABLE_PREFIX . 'mod_foldergallery_categories' . ' WHERE section_id=' . $galerie['section_id'] . ' AND' . ' categorie="' . $cat['categorie'] . '" AND' . ' parent="' . $cat['parent'] . '"' . ' LIMIT 1;';
        $query = $database->query($sql);
        if ($result = $query->fetchRow(MYSQLI_ASSOC)) {
            if ($result['is_empty'] == $cat['is_empty']) {
                $notDeleteArray[] = $result['id'];
            } else {
                // Falls die Kategorie schon existierte nehmen wir für die neuen Einträge diejenigen von der DB
                $insertSQL .= " (" . $result['section_id'] . ", '" . $result['categorie'] . "', '" . $result['parent'] . "', '" . $result['cat_name'] . "', " . $cat['is_empty'] . "),";
                // Diese Datensätze müssen aber zuerst gelöscht werden, da sie sonst doppelt vorkommen würden!
            }
        } else {
            // Sonst erstellen wir einfach einen neuen Standarddatensatz
            $cat_name = str_replace('_', ' ', $cat['categorie']);
            $cat_name = str_replace('-', ' ', $cat_name);
            $insertSQL .= " (" . $galerie['section_id'] . ", '" . $cat['categorie'] . "', '" . $cat['parent'] . "', '" . $cat_name . "', " . $cat['is_empty'] . "),";
        }
    }
    // SQL zum löschen der alten Einträge
    if (!empty($notDeleteArray)) {
        $deleteSQL .= ' AND (id NOT IN( ' . implode(',', $notDeleteArray) . '))';
    }
    if ($searchCategorie != '') {
        $deleteSQL .= ' AND (parent REGEXP("' . $searchCategorie . '"))';
    }
    if (strlen($deleteSQL) != $deleteLaenge) {
        $deleteSQL .= ';';
        $database->query($deleteSQL);
    }
    if (strlen($insertSQL) != $insertLaenge) {
        // Jetzt fügen wir die neuen Einträge hinzu
        $insertSQL = substr($insertSQL, 0, -1) . ";";
        $database->query($insertSQL);
    }
    // So, dass waren die Kategorien, nun sind die Bilder an der Reihe
    //Die Felder "file_link" und "thumb_link" sind obsolet
    //Jetzt noch die Parents zu Ziffern umwandeln:
    //Wieder aus der Datenbank laden:
    $catpathArray = array();
    $sql = 'SELECT id, categorie, parent FROM ' . TABLE_PREFIX . 'mod_foldergallery_categories WHERE section_id=' . $galerie['section_id'];
    $query = $database->query($sql);
    while ($result = $query->fetchRow()) {
        $p = $result['parent'] . '/' . $result['categorie'];
        if ($result['parent'] == -1) {
            $p = '';
        }
        $catpathArray[$p] = $result['id'];
    }
    $notDeleteArray = array();
    $insertSQL = "INSERT INTO " . TABLE_PREFIX . "mod_foldergallery_files (file_name, parent_id, caption) VALUES";
    //-------------------------------------------------------------------------------------------------------
    //Das Macht ein Problem, sobald es mehrere Seiten mit FG gibt.
    //Das es keine Section_id mehr gibt, werden alle Einträge von anderen Sections ebenfalls gelöscht.
    //Das muss anders gelöst werden, ich weiß aber nicht wie.
    $deleteSQL = "DELETE FROM " . TABLE_PREFIX . "mod_foldergallery_files WHERE (id NOT IN";
    //Siehe unten, wird derzeit nicht ausgeführt
    //-------------------------------------------------------------------------------------------------------
    $laenge = strlen($insertSQL);
    $count = 0;
    foreach ($files as $file) {
        if (!isset($catpathArray[$file['parent']])) {
            $parent_id = 0;
        } else {
            $parent_id = $catpathArray[$file['parent']];
            //echo '|'.$file['parent'].'|';
            //var_dump($file);
            //die();
        }
        $sql = 'SELECT * FROM ' . TABLE_PREFIX . 'mod_foldergallery_files WHERE parent_id ="' . $parent_id . '" AND file_name="' . $file['file_name'] . '" LIMIT 1;';
        $query = $database->query($sql);
        if ($result = $query->fetchRow()) {
            //$notDeleteArray[] = $result['id'];
        } else {
            $count++;
            $insertSQL .= " ('" . $file['file_name'] . "', '" . $parent_id . "', ''),";
            //if ($count == 2) echo $insertSQL;
        }
    }
    // SQL für neue Einträge
    $insertSQL = substr($insertSQL, 0, -1) . ";";
    if ($laenge != strlen($insertSQL)) {
        echo "added " . $count . " files";
        $database->query($insertSQL);
    }
    delete_files_with_no_cat();
    return true;
}
Exemplo n.º 2
0
            if ($lb == $settings['lightbox']) {
                $lightbox_select .= ' selected="selected"';
            }
            $lightbox_select .= '> jQueryAdmin: ' . $lb . '</option>';
        }
    }
}
// ----- end jQueryAdmin / LibraryAdmin Integration -----
$lightbox_select .= '</select>';
if (!empty($settings['invisible'])) {
    $invisibleFileNames = array_merge($invisibleFileNames, explode(',', $settings['invisible']));
}
// WB Systemordner sollen nicht angezeigt werden
$invisibleFileNames = array_merge($invisibleFileNames, $wbCoreFolders);
// Ordnerauswahl für den Root Folder erstellen
$ordnerliste = getFolderData($path, array(), $invisibleFileNames, 2);
$advanced_settings = FG_getAdvancedThumbSettings($settings['tbSettings']);
// Text einsetzten
$t->set_var(array('SECTION_ID_VALUE' => $section_id, 'PAGE_ID_VALUE' => $page_id, 'SETTINGS_STRING' => $MOD_FOLDERGALLERY['SETTINGS'], 'ROOT_FOLDER_STRING' => $MOD_FOLDERGALLERY['ROOT_DIR'], 'EXTENSIONS_STRING' => $MOD_FOLDERGALLERY['EXTENSIONS'], 'EXTENSIONS_VALUE' => $settings['extensions'], 'INVISIBLE_STRING' => $MOD_FOLDERGALLERY['INVISIBLE'], 'INVISIBLE_VALUE' => $settings['invisible'], 'SAVE_STRING' => $TEXT['SAVE'], 'CANCEL_STRING' => $TEXT['CANCEL'], 'PICS_PP_STRING' => $MOD_FOLDERGALLERY['PICS_PP'], 'PICS_PP_VALUE' => $settings['pics_pp'], 'CAT_OVERVIEW_PIC_STRING' => $MOD_FOLDERGALLERY['CAT_OVERVIEW_PIC'], 'THUMBNAIL_SETTINGS_STRING' => $MOD_FOLDERGALLERY['THUMBNAIL_SETTINGS'], 'LOAD_PRESET_STRING' => $MOD_FOLDERGALLERY['LOAD_PRESET'], 'LOAD_PRESET_INFO_STRING' => $MOD_FOLDERGALLERY['LOAD_PRESET_INFO'], 'IMAGE_CROP_STRING' => $MOD_FOLDERGALLERY['IMAGE_CROP'], 'IMAGE_DONT_CROP_STRING' => $MOD_FOLDERGALLERY['IMAGE_DONT_CROP'], 'RATIO_STRING' => $MOD_FOLDERGALLERY['RATIO'], 'CALCULATE_RATIO_STRING' => $MOD_FOLDERGALLERY['CALCULATE_RATIO'], 'BACKGROUND_COLOR_STRING' => $MOD_FOLDERGALLERY['BACKGROUND_COLOR'], 'BACKGROUND_COLOR' => $settings['tbSettings']['image_background_color'], 'MAX_WIDTH_STRING' => $MOD_FOLDERGALLERY['MAX_WIDTH'], 'MAX_HEIGHT_STRING' => $MOD_FOLDERGALLERY['MAX_HEIGHT'], 'THUMBSIZE_X' => $settings['tbSettings']['image_x'], 'THUMBSIZE_Y' => $settings['tbSettings']['image_y'], 'ADVANCED_SETTINGS_STRING' => $MOD_FOLDERGALLERY['ADVANCED_SETTINGS'], 'ADVANCED_SETTINGS' => $advanced_settings, 'IMAGE_DO_CROP_STRING' => $MOD_FOLDERGALLERY['IMAGE_DO_CROP'], 'THUMBSIZE' => $settings['tbSettings']['image_x'], 'THUMB_SIZE_STRING' => $MOD_FOLDERGALLERY['THUMB_SIZE'], 'THUMB_RATIO_STRING' => $MOD_FOLDERGALLERY['THUMB_RATIO'], 'THUMB_NOT_NEW_STRING' => $MOD_FOLDERGALLERY['THUMB_NOT_NEW'], 'CHANGING_INFO_STRING' => $MOD_FOLDERGALLERY['CHANGING_INFO'], 'LIGHTBOX_STRING' => $MOD_FOLDERGALLERY['LIGHTBOX'], 'LIGHTBOX_VALUE' => $lightbox_select));
// Links einsetzen
$t->set_var(array('CANCEL_ONCLICK' => 'javascript: window.location = \'' . ADMIN_URL . '/pages/modify.php?page_id=' . $page_id . '\';', 'MODIFY_SETTINGS_LINK' => WB_URL . '/modules/foldergallery/admin/save_settings.php'));
//Tooltips einsetzen
$t->set_var(array('ROOT_FOLDER_STRING_TT' => $MOD_FOLDERGALLERY['ROOT_FOLDER_STRING_TT'], 'EXTENSIONS_STRING_TT' => $MOD_FOLDERGALLERY['EXTENSIONS_STRING_TT'], 'INVISIBLE_STRING_TT' => $MOD_FOLDERGALLERY['INVISIBLE_STRING_TT']));
// Rootfolder Select
foreach ($ordnerliste as $ordner) {
    $t->set_var('ORDNER', $ordner);
    if ($ordner != $settings['root_dir']) {
        $t->set_var('ORDNER_SELECTED', '');
    } else {
        $t->set_var('ORDNER_SELECTED', 'selected="selected"');
    }
Exemplo n.º 3
0
require_once '../../../config.php';
require_once WB_PATH . '/modules/admin.php';
require_once WB_PATH . '/modules/foldergallery/info.php';
require_once WB_PATH . '/modules/foldergallery/scripts/functions.php';
require_once WB_PATH . '/modules/foldergallery/admin/scripts/backend.functions.php';
// include the default language
require_once WB_PATH . '/modules/foldergallery/languages/EN.php';
// check if module language file exists for the language set by the user (e.g. DE, EN)
if (file_exists(WB_PATH . '/modules/foldergallery/languages/' . LANGUAGE . '.php')) {
    require_once WB_PATH . '/modules/foldergallery/languages/' . LANGUAGE . '.php';
}
// Get all Folders in this gallery
$settings = getSettings($section_id);
$invisibleFileNames = array_merge($invisibleFileNames, $wbCoreFolders);
$folders = getFolderData($path . $settings['root_dir'], array(), $invisibleFileNames, 2);
// Template
$t = new Template(dirname(__FILE__) . '/templates', 'remove');
$t->halt_on_error = 'no';
$t->set_file('new_cat', 'new_cat.htt');
// clear the comment-block, if present
$t->set_block('new_cat', 'CommentDoc');
$t->clear_var('CommentDoc');
$t->set_block('new_cat', 'ordner_select', 'ORDNER_SELECT');
// set language strings
$t->set_var(array('NEW_CAT_TITLE' => $MOD_FOLDERGALLERY['NEW_CAT'], 'CAT_PARENT_STRING' => $MOD_FOLDERGALLERY['CAT_PARENT'], 'FOLDER_NAME_STRING' => $MOD_FOLDERGALLERY['FOLDER_NAME'], 'CAT_TITLE_STRING' => $MOD_FOLDERGALLERY['CAT_TITLE'], 'CAT_DESC_STRING' => $MOD_FOLDERGALLERY['CAT_DESC'], 'SAVE_STRING' => $TEXT['SAVE'], 'CANCEL_STRING' => $TEXT['CANCEL']));
// parent folder Select
$t->set_var('ORDNER', '/');
$t->parse('ORDNER_SELECT', 'ordner_select', true);
foreach ($folders as $folder) {
    $t->set_var('ORDNER', $folder);