Mercurial > hg > fapweb
changeset 889:0fbf63bbb8f4
More work.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Wed, 26 Nov 2014 19:14:09 +0200 |
parents | e0903d0c3954 |
children | d6548ad68134 |
files | msite.inc.php |
diffstat | 1 files changed, 74 insertions(+), 84 deletions(-) [+] |
line wrap: on
line diff
--- a/msite.inc.php Wed Nov 26 18:06:08 2014 +0200 +++ b/msite.inc.php Wed Nov 26 19:14:09 2014 +0200 @@ -906,92 +906,82 @@ } -function stGetEntryPreviewData($compo, $entry, $probePreview, $fullData) +function stGetEntryPreviewFile($entry, $previewPath, $previewURL, $type, $addPath) { - $res = array(); - $entryPath = stGetSetting("entryPath"); - $previewPath = stGetSetting("previewPath"); - $previewURL = stGetSetting("previewURL"); - $thumbDir = stGetSetting("thumbnailSubDir"); + global $fileTypeData; + if (!isset($fileTypeData[$type])) + return stLogError("Invalid file type: ".$type); - $filename = $entry["filename"]; - - // Data for the actual entry file - $res["previewType"] = ($entry["preview_type"] != EPREV_NONE) ? $entry["preview_type"] : $compo["preview_type"]; - $res["entryFile"] = stMakePath(FALSE, FALSE, array($entryPath, $compo["cpath"], $filename)); - if ($fullData) - { - $res["entrySize"] = @filesize($res["entryFile"]); - } + $fileBase = sprintf("%03d.%s", $entry["id"], $fileTypeData[$type]["fext"]); + $fileName = stMakePath(FALSE, TRUE, array($previewPath, $addPath, $fileBase)); - // Based on preview type, set some basics - switch ($res["previewType"]) - { - case EPREV_IMAGE: - $res["fileBase"] = stMakePath(FALSE, "_sshot", array($filename)); - $res["preferType"] = "PNG"; - $fileTypeList = array( - "PNG" => array(".png", ".PNG"), - "GIF" => array(".gif", ".GIF"), - "JPEG" => array(".jpg", ".JPG"), - ); - break; - - case EPREV_AUDIO: - $res["fileBase"] = stMakePath(FALSE, "_sample", array($filename)); - $res["preferType"] = "PNG"; - $fileTypeList = array( - "audio/mpeg" => array(".mp3", ".MP3"), - "audio/ogg; codecs=vorbis" => array(".ogg", ".OGG", ".oga", ".OGA"), - ); - break; - - default: - return FALSE; - } - - // Find the preview file(s) - foreach ($fileTypeList as $fileType => $fileExts) - { - foreach ($fileExts as $fext) - { - $filename = stMakePath(FALSE, $fext, array($previewPath, $compo["cpath"], $res["fileBase"])); - if ($probePreview == FALSE || file_exists($filename)) - { - $res["previewFileType"] = $fileType; - $res["previewPath"] = $filename; - $res["previewURL"] = stMakePath(TRUE, $fext, array($previewURL, $compo["cpath"], $res["fileBase"])); - - if ($res["previewType"] == EPREV_IMAGE) - { - $res["thumbPath"] = stMakePath(FALSE, $fext, array($previewPath, $compo["cpath"], $thumbDir, $res["fileBase"])); - $res["thumbURL"] = stMakePath(TRUE, $fext, array($previewURL, $compo["cpath"], $thumbDir, $res["fileBase"])); - } - - if ($fullData) - { - $res["previewSize"] = @filesize($res["previewPath"]); - $res["thumbSize"] = @filesize($res["thumbPath"]); - } - - return $res; - } - } - } - - return FALSE; + return array( + "type" => $type, + "mime" => $fileTypeData[$type]["mime"], + "file" => $fileName, + "exists" => @file_exists($fileName), + "mtime" => @filemtime($fileName), + "url" => stMakePath(TRUE, TRUE, array($previewURL, $addPath, $fileBase)), + ); } function stPrintPreviewElements($compo, $entry) { - if (($pdata = stGetEntryPreviewData($compo, $entry, FALSE, TRUE)) === FALSE) + if (($efile = stFetchSQL("SELECT * FROM files WHERE deleted=0 AND id=".$entry["preview_id"])) === false) return FALSE; - switch ($pdata["previewType"]) + $previewPath = stGetSetting("previewPath"); + $previewURL = stGetSetting("previewURL"); + $previewType = $compo["preview_type"]; + $previewOK = TRUE; + + switch ($previewType) { case EPREV_IMAGE: - if ($pdata["previewSize"] === FALSE || $pdata["thumbSize"] === FALSE) + $sprev = stGetEntryPreviewFile( + $entry, $previewPath, $previewURL, + stGetSetting("previewImageType"), ""); + + $sthumb = stGetEntryPreviewFile( + $entry, $previewPath, $previewURL, + stGetSetting("previewThumbType"), + stGetSetting("thumbnailSubDir")); + + if ($sprev["exists"] === false || + $sthumb["exists"] === false || + $sprev["mtime"] < $efile["utime"] || + $sthumb["mtime"] < $efile["utime"]) + $previewOK = FALSE; + break; + + case EPREV_AUDIO: + $sprev = array(); + foreach (stGetSetting("sampleType") as $type) + { + $sres = stGetEntryPreviewFile( + $entry, $previewPath, $previewURL, + $type, ""); + + if ($sres["exists"] === false || + $sres["mtime"] < $efile["utime"]) + { + $previewOK = FALSE; + break; + } + + $sprev[] = $sres; + } + break; + + default: + return FALSE; + } + + switch ($previewType) + { + case EPREV_IMAGE: + if (!$previewOK) { echo "<img class=\"imagePreview\" src=\"img/nopreview_tn.png\" alt=\"Preview\" />"; @@ -999,25 +989,25 @@ else { echo - "<a href=\"".ihentities($pdata["previewURL"]). - "\" onClick=\"return jsShowPreviewImage('".ihentities($pdata["previewURL"])."');\">". - "<img class=\"imagePreview\" src=\"".ihentities($pdata["thumbURL"]). + "<a href=\"".ihentities($sprev["url"]). + "\" onClick=\"return jsShowPreviewImage('".ihentities($sprev["url"])."');\">". + "<img class=\"imagePreview\" src=\"".ihentities($sthumb["url"]). "\" alt=\"Preview\" /></a>"; } break; case EPREV_AUDIO: - if ($pdata["previewSize"] !== FALSE) + if ($previewOK && count($sprev) > 0) { - echo - "<audio controls preload=\"none\" class=\"audioPreview\">". - "<source src=\"".ihentities($pdata["previewURL"])."\" type=\"".$pdata["previewFileType"]."\">". - "</audio>"; + echo "<audio controls preload=\"none\" class=\"audioPreview\">"; + foreach ($sprev as $pfile) + { + echo "<source src=\"".ihentities($pfile["url"])."\" type=\"".$pfile["mime"]."\">"; + } + echo "</audio>"; } break; } - - return TRUE; }