/** * Returns the path to the preview-thumbnail of an album * @param $intAlbumId * @return array */ public function getAlbumPreviewThumb($intAlbumId) { $thumbSRC = $this->defaultThumb; // Check for an alternate thumbnail if (\Config::get('gc_error404_thumb') !== '') { $objFile = \FilesModel::findByUuid(\Config::get('gc_error404_thumb')); if ($objFile !== null) { if (\Validator::isUuid(\Config::get('gc_error404_thumb'))) { if (is_file(TL_ROOT . '/' . $objFile->path)) { $thumbSRC = $objFile->path; } } } } // Predefine thumb $arrThumb = array('name' => basename($thumbSRC), 'path' => $thumbSRC); $objAlb = \GalleryCreatorAlbumsModel::findByPk($intAlbumId); if ($objAlb->thumb !== null) { $objPreviewThumb = \GalleryCreatorPicturesModel::findByPk($objAlb->thumb); } else { $objPreviewThumb = \GalleryCreatorPicturesModel::findOneByPid($intAlbumId); } if ($objPreviewThumb !== null) { $oFile = \FilesModel::findByUuid($objPreviewThumb->uuid); if ($oFile !== null) { if (is_file(TL_ROOT . '/' . $oFile->path)) { $arrThumb = array('name' => basename($oFile->path), 'path' => $oFile->path); } } } return $arrThumb; }
/** * sortBy - save_callback * @param $varValue * @param \Contao\DataContainer $dc * @return string */ public function saveCbSortAlbum($varValue, \Contao\DataContainer $dc) { if ($varValue == 'custom') { return $varValue; } $objPictures = GalleryCreatorPicturesModel::findByPid($dc->id); if ($objPictures === null) { return 'custom'; } $files = array(); $auxDate = array(); while ($objPictures->next()) { $oFile = FilesModel::findByUuid($objPictures->uuid); $objFile = new \File($oFile->path, true); $files[$oFile->path] = array('id' => $objPictures->id); $auxDate[] = $objFile->mtime; } switch ($varValue) { case 'custom': break; case 'name_asc': uksort($files, 'basename_natcasecmp'); break; case 'name_desc': uksort($files, 'basename_natcasercmp'); break; case 'date_asc': array_multisort($files, SORT_NUMERIC, $auxDate, SORT_ASC); break; case 'date_desc': array_multisort($files, SORT_NUMERIC, $auxDate, SORT_DESC); break; } $sorting = 0; foreach ($files as $arrFile) { $sorting += 10; $objPicture = GalleryCreatorPicturesModel::findByPk($arrFile['id']); $objPicture->sorting = $sorting; $objPicture->save(); } // return default value return 'custom'; }
/** * revise tables * @param $albumId * @param bool $blnCleanDb */ public static function reviseTables($albumId, $blnCleanDb = false) { $_SESSION['GC_ERROR'] = array(); //Upload-Verzeichnis erstellen, falls nicht mehr vorhanden new \Folder(GALLERY_CREATOR_UPLOAD_PATH); // Get album model $objAlbum = \MCupic\GalleryCreatorAlbumsModel::findByPk($albumId); if ($objAlbum === null) { return; } // Check for valid album owner $objUser = \UserModel::findByPk($objAlbum->owner); if ($objUser !== null) { $owner = $objUser->name; } else { $owner = "no-name"; } $objAlbum->owners_name = $owner; $objAlbum->save(); // Check for valid pid if ($objAlbum->pid > 0) { $objParentAlb = $objAlbum->getRelated('pid'); if ($objParentAlb === null) { $objAlbum->pid = null; $objAlbum->save(); } } if (\Database::getInstance()->fieldExists('path', 'tl_gallery_creator_pictures')) { // Datensaetzen ohne gültige uuid über den Feldinhalt path versuchen zu "retten" $objPictures = \GalleryCreatorPicturesModel::findByPid($albumId); if ($objPictures !== null) { while ($objPictures->next()) { // Get parent album $objFile = \FilesModel::findByUuid($objPictures->uuid); if ($objFile === null) { if ($objPictures->path != '') { if (is_file(TL_ROOT . '/' . $objPictures->path)) { $objModel = \Dbafs::addResource($objPictures->path); if (\Validator::isUuid($objModel->uuid)) { $objPictures->uuid = $objModel->uuid; $objPictures->save(); continue; } } } if ($blnCleanDb !== false) { $msg = ' Deleted Datarecord with ID ' . $objPictures->id . '.'; $_SESSION['GC_ERROR'][] = $msg; $objPictures->delete(); } else { //show the error-message $path = $objPictures->path != '' ? $objPictures->path : 'unknown path'; $_SESSION['GC_ERROR'][] = sprintf($GLOBALS['TL_LANG']['ERR']['link_to_not_existing_file_1'], $objPictures->id, $path, $objAlbum->alias); } } elseif (!is_file(TL_ROOT . '/' . $objFile->path)) { // If file has an entry in Dbafs, but doesn't exist on the server anymore if ($blnCleanDb !== false) { $msg = 'Deleted Datarecord with ID ' . $objPictures->id . '.'; $_SESSION['GC_ERROR'][] = $msg; $objPictures->delete(); } else { $_SESSION['GC_ERROR'][] = sprintf($GLOBALS['TL_LANG']['ERR']['link_to_not_existing_file_1'], $objPictures->id, $objFile->path, $objAlbum->alias); } } else { // Pfadangaben mit tl_files.path abgleichen (Redundanz) if ($objPictures->path != $objFile->path) { $objPictures->path = $objFile->path; $objPictures->save(); } } } } } /** * Sorgt dafuer, dass in tl_content im Feld gc_publish_albums keine verwaisten AlbumId's vorhanden sind * Prueft, ob die im Inhaltselement definiertern Alben auch noch existieren. * Wenn nein, werden diese aus dem Array entfernt. */ $objCont = \Database::getInstance()->prepare('SELECT id, gc_publish_albums FROM tl_content WHERE type=?')->execute('gallery_creator'); while ($objCont->next()) { $newArr = array(); $arrAlbums = unserialize($objCont->gc_publish_albums); if (is_array($arrAlbums)) { foreach ($arrAlbums as $AlbumID) { $objAlb = \Database::getInstance()->prepare('SELECT id FROM tl_gallery_creator_albums WHERE id=?')->limit('1')->execute($AlbumID); if ($objAlb->next()) { $newArr[] = $AlbumID; } } } \Database::getInstance()->prepare('UPDATE tl_content SET gc_publish_albums=? WHERE id=?')->execute(serialize($newArr), $objCont->id); } }
/** * toggle visibility of a certain image * * @param integer * @param boolean */ public function toggleVisibility($intId, $blnVisible) { $objPicture = GalleryCreatorPicturesModel::findByPk($intId); // Check permissions to publish if (!$this->User->isAdmin && $objPicture->owner != $this->User->id && !$GLOBALS['TL_CONFIG']['gc_disable_backend_edit_protection']) { $this->log('Not enough permissions to publish/unpublish tl_gallery_creator_albums ID "' . $intId . '"', __METHOD__, TL_ERROR); $this->redirect('contao/main.php?act=error'); } $objVersions = new Versions('tl_gallery_creator_pictures', $intId); $objVersions->initialize(); // Trigger the save_callback if (is_array($GLOBALS['TL_DCA']['tl_gallery_creator_pictures']['fields']['published']['save_callback'])) { foreach ($GLOBALS['TL_DCA']['tl_gallery_creator_pictures']['fields']['published']['save_callback'] as $callback) { if (is_array($callback)) { $this->import($callback[0]); $blnVisible = $this->{$callback}[0]->{$callback}[1]($blnVisible, $this); } elseif (is_callable($callback)) { $blnVisible = $callback($blnVisible, $this); } } } // Update the database $this->Database->prepare("UPDATE tl_gallery_creator_pictures SET tstamp=" . time() . ", published='" . ($blnVisible ? 1 : '') . "' WHERE id=?")->execute($intId); $objVersions->create(); $this->log('A new version of record "tl_gallery_creator_pictures.id=' . $intId . '" has been created.', __METHOD__, TL_GENERAL); }