/** * 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; }
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"'); }
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);