changeset 896:52737f6192bb

More work on preview handling.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 26 Nov 2014 21:02:36 +0200
parents 878e3bd6f385
children d8fa2aecadcc
files admajax.php msite.inc.php msitegen.inc.php
diffstat 3 files changed, 44 insertions(+), 34 deletions(-) [+]
line wrap: on
line diff
--- a/admajax.php	Wed Nov 26 20:33:07 2014 +0200
+++ b/admajax.php	Wed Nov 26 21:02:36 2014 +0200
@@ -18,6 +18,8 @@
 
 function stValidateRequestCompoData($full, $ctype)
 {
+  global $previewTypeList;
+
   $res = TRUE;
 
   stChkRequestItemFail("name", $fake, $res,
@@ -44,7 +46,7 @@
 
       stChkRequestItemFail("preview_type", $fake, $res,
         array(CHK_TYPE, VT_INT, "Invalid data."),
-        array(CHK_RANGE, VT_INT, array(EPREV_NONE, EPREV_AUDIO), "Invalid preview type value."));
+        array(CHK_ARRAY, $previewTypeList, "Invalid preview type value."));
 
       stChkRequestItemFail("cpath", $fake, $res,
         array(CHK_LTEQ, VT_STR, SET_LEN_COMPO_PATH, "Compo file path too long (%1 chars, must be less than %2)."));
--- a/msite.inc.php	Wed Nov 26 20:33:07 2014 +0200
+++ b/msite.inc.php	Wed Nov 26 21:02:36 2014 +0200
@@ -43,29 +43,28 @@
 
 
 //
-// Entry preview type (value)
-//
-define("EPREV_NONE",  0);           // No preview
-define("EPREV_IMAGE", 1);           // Preview is image (PNG, JPEG)
-define("EPREV_AUDIO", 2);           // Preview is audio (Vorbis, MP3)
-
-$previewTypeList = array(
-  EPREV_NONE         => array("No previews" , "Default"),
-  EPREV_IMAGE        => array("Image file"  , "Image"),
-  EPREV_AUDIO        => array("Audio file"  , "Audio"),
-);
-
-//
 // File format classes
 //
-define("EFILE_UNKNOWN", 0);
+define("EFILE_NONE", 0);
 define("EFILE_IMAGE", 1);
-define("EFILE_AUDIO", 2);
+define("EFILE_AUDIO", 2); // Also preview types
+
 define("EFILE_VIDEO", 3);
 define("EFILE_TEXT", 4);
 define("EFILE_BINARY", 5);
 define("EFILE_ARCHIVE", 6);
 
+
+//
+// Entry preview type (value)
+//
+$previewTypeList = array(
+  EFILE_NONE         => array("No previews" , "Default"),
+  EFILE_IMAGE        => array("Image file"  , "Image"),
+  EFILE_AUDIO        => array("Audio file"  , "Audio"),
+);
+
+
 //
 // Entry flags (bitfield)
 //
@@ -139,21 +138,21 @@
 $fileTypeData = array(
   "PNG"  => array(
     "class" => EFILE_IMAGE,
-    "type" => EPREV_IMAGE,
+    "type" => EFILE_IMAGE,
     "mime" => "image/png",
     "fext" => "png",
     "test" => "^PNG image data",
   ),
   "JPEG" => array(
     "class" => EFILE_IMAGE,
-    "type" => EPREV_IMAGE,
+    "type" => EFILE_IMAGE,
     "mime" => "image/jpeg",
     "fext" => "jpg",
     "test" => "^JPEG image data",
   ),
   "GIF"  => array(
     "class" => EFILE_IMAGE,
-    "type" => EPREV_IMAGE,
+    "type" => EFILE_IMAGE,
     "mime" => "image/gif",
     "fext" => "gif",
     "test" => "^GIF image data",
@@ -161,27 +160,27 @@
 
   "MP3" => array(
     "class" => EFILE_AUDIO,
-    "type" => EPREV_AUDIO,
+    "type" => EFILE_AUDIO,
     "mime" => "audio/mpeg",
     "fext" => "mp3",
     "test" => "MPEG ADTS, layer III",
   ),
   "OggVorbis" => array(
     "class" => EFILE_AUDIO,
-    "type" => EPREV_AUDIO,
+    "type" => EFILE_AUDIO,
     "mime" => "audio/ogg; codecs=vorbis",
     "fext" => "ogg",
     "test" => "Ogg data, Vorbis audio",
   ),
   "FLAC" => array(
     "class" => EFILE_AUDIO,
-    "type" => EPREV_AUDIO,
+    "type" => EFILE_AUDIO,
     "mime" => "audio/x-flac",
     "fext" => "flac",
   ),
   "WAV" => array(
     "class" => EFILE_AUDIO,
-    "type" => EPREV_AUDIO,
+    "type" => EFILE_AUDIO,
     "mime" => "audio/x-wav",
     "fext" => "wav",
   ),
@@ -910,7 +909,7 @@
 {
   global $fileTypeData;
   if (!isset($fileTypeData[$type]))
-    return stLogError("Invalid file type: ".$type);
+    die("Invalid file type: ".$type);
 
   $fileBase = sprintf("%03d.%s", $entry["id"], $fileTypeData[$type]["fext"]);
   $fileName = stMakePath(FALSE, TRUE, array($previewPath, $compo["cpath"], $addPath, $fileBase));
@@ -928,6 +927,8 @@
 
 function stGetPreviewFileData($compo, $entry, &$pdata)
 {
+  global $fileTypeData;
+
   if ($compo === false || $entry === false)
     return FALSE;
 
@@ -936,12 +937,21 @@
   $pdata = array(
     "type" => $compo["preview_type"],
     "valid" => TRUE,
+    "exists" => 0,
     "files" => array(),
   );
 
+  if (($efile = stFetchSQL("SELECT * FROM files WHERE deleted=0 AND id=".$entry["preview_id"])) !== false)
+  {
+    if (isset($fileTypeData[$efile["filetype"]]["type"]))
+      $pdata["type"] = $fileTypeData[$efile["filetype"]]["type"];
+  }
+  else
+    $pdata["valid"] = false;
+
   switch ($pdata["type"])
   {
-    case EPREV_IMAGE:
+    case EFILE_IMAGE:
       $pdata["files"]["image"] = stGetEntryPreviewFile(
         $entry, $compo, $previewPath, $previewURL,
         stGetSetting("previewImageType"), "");
@@ -952,7 +962,7 @@
         stGetSetting("thumbnailSubDir"));
       break;
     
-    case EPREV_AUDIO:
+    case EFILE_AUDIO:
       foreach (stGetSetting("sampleTypes") as $type => $fdata)
       {
         $pdata["files"][$type] = stGetEntryPreviewFile(
@@ -965,9 +975,7 @@
       return FALSE;
   }
 
-  if (($efile = stFetchSQL("SELECT * FROM files WHERE deleted=0 AND id=".$entry["preview_id"])) === false)
-    $pdata["valid"] = FALSE;
-  else
+  if ($efile !== false)
   {
     foreach ($pdata["files"] as $pkey => $pfile)
     {
@@ -990,7 +998,7 @@
 
   switch ($pdata["type"])
   {
-    case EPREV_IMAGE:
+    case EFILE_IMAGE:
       if ($pdata["valid"] && $pdata["exists"] >= 2)
       {
         echo
@@ -1006,7 +1014,7 @@
       }
       break;
 
-    case EPREV_AUDIO:
+    case EFILE_AUDIO:
       if ($pdata["valid"] && $pdata["exists"] > 0)
       {
         echo "<audio controls preload=\"none\" class=\"audioPreview\">";
@@ -1131,7 +1139,7 @@
   // Check basics
   if (!stChkRequestItem("type", $uploadType,
         array(CHK_TYPE, VT_STR, "Invalid upload type."),
-        array(CHK_ARRAY, VT_STR, array("entry", "preview"), "Invalid upload type."))
+        array(CHK_ARRAY, array("entry", "preview"), "Invalid upload type."))
       ||
       !stChkRequestItem("entry_id", $entryID,
         array(CHK_TYPE, VT_INT, "Invalid entry ID.")))
--- a/msitegen.inc.php	Wed Nov 26 20:33:07 2014 +0200
+++ b/msitegen.inc.php	Wed Nov 26 21:02:36 2014 +0200
@@ -476,8 +476,8 @@
         break;
 
       case CHK_ARRAY:
-        if (!in_array($data, $check[2], TRUE))
-          return stErrorStrF($check[3], $data);
+        if (!isset($check[1][$data]))
+          return stErrorStrF($check[2], $data);
         break;
 
       case CHK_CUSTOM: