pingus-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Pingus-CVS] rev 2274 - trunk/contrib/level_comment_tool


From: address@hidden
Subject: [Pingus-CVS] rev 2274 - trunk/contrib/level_comment_tool
Date: Thu, 15 Apr 2004 22:51:34 +0200

Author: torangan
Date: 2004-04-15 22:51:34 +0200 (Thu, 15 Apr 2004)
New Revision: 2274

Modified:
   trunk/contrib/level_comment_tool/index.php
   trunk/contrib/level_comment_tool/level-cache.inc
Log:
update


Modified: trunk/contrib/level_comment_tool/index.php
===================================================================
--- trunk/contrib/level_comment_tool/index.php  2004-04-15 20:50:08 UTC (rev 
2273)
+++ trunk/contrib/level_comment_tool/index.php  2004-04-15 20:51:34 UTC (rev 
2274)
@@ -278,7 +278,8 @@
         $jpg = htmlentities($c) . "/" . htmlentities($l) . ".jpg";
         print ("<td rowspan='5' valign='top' align='center'>\n".
           "  <img src='http://pingus.seul.org/levels/thumb/$jpg' 
border='1'><br/>\n".
-          "  see <a href='http://pingus.seul.org/levels/50/$jpg' 
target='levelview'>half</a> / \n".
+          "  see <a href='http://pingus.seul.org/levels/33/$jpg' 
target='levelview'>third</a> /".
+          " <a href='http://pingus.seul.org/levels/50/$jpg' 
target='levelview'>half</a> / \n".
           "  <a href='http://pingus.seul.org/levels/100/$jpg' 
target='levelview'>full</a> size\n<br>".
           "<a href='data/levels/" . htmlentities($c) . "/" . htmlentities($l) 
. ".pingus'>play</a>\n" .
           "</td>\n" );
@@ -299,8 +300,12 @@
           $ac = "<strong>?</strong>";
         else
           $ac = htmlentities($ac);
-        print ("<img alt='$a' title='$a' src='gfx/actions/$a.png'> x ".
-          $ac . " ");
+          print ("<img id='Pic$a' name='$a' alt='$a' title='$a' " .
+                 "style='cursor: pointer' src='gfx/actions/$a.png' " .
+                 
"onclick='document.getElementById(\"CommentForm\").comment.value = " .
+                 "document.getElementById(\"CommentForm\").comment.value + " .
+                 "document.getElementById(\"Pic$a\").name'></a> x " .
+                 $ac . " ");
       }
     }
 
@@ -338,6 +343,7 @@
         "  <level>" . xmlentities("$c/$l") . "</level>\n" .
         "  <levelmd5>" . xmlentities(stripslashes($_POST["levelmd5"])) . 
"</levelmd5>\n" .
         "  <date>" . xmlentities(date("Y-m-d")) . "</date>\n" .
+        "  <time>" . xmlentities(date("H:i:s")) . "</time>\n" .        
         "  <difficulty>" . xmlentities(stripslashes($_POST["difficulty"])) . 
"</difficulty>\n" .
         "  <rating>" . xmlentities(stripslashes($_POST["rating"])) . 
"</rating>\n" .
         "  <comment>" . 
xmlentities(decode_html(stripslashes($_POST["comment"]))) . "</comment>\n" .
@@ -404,12 +410,89 @@
       print "<p><strong>Deleted '" . htmlentities($_GET["delcomment"]) . 
"'</strong></p>";
     }
 
+       // ==================================================================
+    // Save uploaded Demofile
     // ==================================================================
-    // List user comments
+    if ( isset($_POST["adddemo"]))
+    {
+      //create directory if necessary
+      if ( !is_dir("comments/$c/$l/demos") &&
+           (@mkdir("comments/$c", 0775) || True) &&
+           (@mkdir("comments/$c/$l", 0775) || True) &&
+           !(@mkdir("comments/$c/$l/demos", 0775)))
+      {
+        print ("<strong>ERROR: 'comments/$c/$l/demos' does not exist and ".
+               "could not be created.</strong>\n");
+        exit;
+      }
+      
+      $uploaddir = sandbox_check( "comments/$c/$l/demos", "comments/" );
+      
+      if(!strpos( strtolower( $_FILES["demofile"]["name"] ), ".xml" ))
+        print("<strong> Please upload only .xml files </strong><hr/>");
+      else
+      {
+        if (move_uploaded_file($_FILES['demofile']['tmp_name'], $uploaddir. 
'/' . $_FILES['demofile']['name']))
+        {
+          print("<strong>File uploaded successfully</strong><hr/>");
+          $str = '<' . '?xml version="1.0"  encoding="ISO-8859-1"?' . ">\n" .
+                "<pingus-demo-metafile>\n".
+                "  <username>" . 
xmlentities(decode_html(stripslashes($_POST["username"]))) . "</username>\n" .
+                "  <email>" . 
xmlentities(decode_html(stripslashes($_POST["email"]))) . "</email>\n" .
+                "  <level>" . xmlentities("$c/$l") . "</level>\n" .
+                "  <levelmd5>" . xmlentities(stripslashes($_POST["levelmd5"])) 
. "</levelmd5>\n" .
+                "  <date>" . xmlentities(date("Y-m-d")) . "</date>\n" .
+                "  <time>" . xmlentities(date("H:i:s")) . "</time>\n" .        
+                "  <demofile>" . xmlentities( $_FILES['demofile']['name'] ) . 
"</demofile>\n" .
+                "</pingus-demo-metafile>\n";
+            
+          $filename = "comments/$c/$l/demos/" . substr(md5($str),0,8) . 
".demo";
+          if ( !file_exists($filename) || is_writable($filename))
+          {
+            if (!$fp = fopen($filename, 'w'))
+            {
+              print "<strong>ERROR: Cannot open file ($filename)</strong>\n";
+              exit;
+            }
+            if (!fwrite($fp, $str))
+            {
+              print "<strong>ERROR: Cannot write to file 
($filename)</strong>\n";
+              exit;
+            }
+            fclose($fp);
+            chmod($filename, 0775);
+         }
+       }  
+        else
+        {
+          print("<strong>error:");
+          print_r($_FILES);
+          print("</strong><hr/>");
+        }  
+      }
+    }
+    
     // ==================================================================
-    $comments = parse_level_comments($c, $l);
+    // List user comments and demo files
+    // ==================================================================
+    if (isset( $_GET["o"] )) //determine order of comments
+    {
+      $comments = parse_level_comments($c, $l, $_GET["o"]);
+      if ($_GET["o"] == "ASC")
+        $OrderLink = " (<a href='$PHP_SELF?c=$c&l=$l&o=DESC'>revert 
order</a>)";
+      else
+        $OrderLink = " (<a href='$PHP_SELF?c=$c&l=$l&o=ASC'>revert 
order</a>)"; 
+    }    
+    else  
+    {
+      $comments = parse_level_comments($c, $l, "ASC");
+      $OrderLink = " (<a href='$PHP_SELF?c=$c&l=$l&o=DESC'>revert order</a>)";
+    }  
+    $showComments = False;
+    $showDemos = False; 
     if ( count($comments) > 0 )
     {
+      $showComments = True;
       while( list(,$cmt) = each($comments))
       {
         $leveldata["totalcomments"]++;
@@ -424,7 +507,8 @@
           "<p class='message'><strong>From:</strong> " . 
htmlentities($cmt["author"]) .
           " &lt;" . str_replace("@", "<b><small>PingusNoSpam</small></b>@",
             htmlentities($cmt["email"])) .
-            "&gt;, <strong>Date: </strong> " . htmlentities($cmt["date"]) . 
"<br/>\n" .
+            "&gt;, <strong>Date: </strong> " . htmlentities($cmt["date"]) . 
+          ", <strong>Time: </strong> " . htmlentities($cmt["time"]) . 
"<br/>\n" .
           "<b>Difficulty: </b>" . htmlentities($cmt["difficulty"]) . "\n" .
           ", <b>Rating: </b>" . str_repeat( "*", intval($rating)) . $del_link 
. "<br/>\n" .
           "<cite>\n" .
@@ -436,11 +520,50 @@
         else
           $old_comments_text .= $str;
       }
-      print("<h2>Comments</h2>\n" . $new_comments_text );
-      print("<h3>Comments for older version(s)</h3>\n" . $old_comments_text);
-    }
-    else print "<em>No comments for this level yet!</em>";
+    }  
+     
+    $demos = parse_level_demos( $c, $l );
+    if ( count($demos) > 0 )
+    {
+      $showDemos = True;
 
+      while( list(,$cmt) = each($demos))
+      {
+        $leveldata["totaldemos"]++;
+        
+        $str =
+          "<p class='message'><strong>From:</strong> " . 
htmlentities($cmt["username"]) .
+          " &lt;" . str_replace("@", "<b><small>PingusNoSpam</small></b>@", 
htmlentities($cmt["email"])) .
+          "&gt;<br><strong>Date: </strong> " . htmlentities($cmt["date"]) . 
+          ", <strong>Time: </strong> " . htmlentities($cmt["time"]) . 
"<br/>\n" .
+          "<b>Demofile: </b><a href='comments/$c/$l/demos/" . $cmt["demofile"] 
. "'>" .
+          $cmt["demofile"] . "</a><br/>\n" .
+          "</p>\n";
+                 
+        if (strtolower($cmt["levelmd5"]) == strtolower($curlevelmd5))
+          $new_demos_text .= $str;
+        else
+          $old_demos_text .= $str;
+      }
+    } 
+    
+    print("<table width='100%' cellpadding='10'><tr><td width='60%' 
valign='top'>");
+    if ($showComments)
+      print ("<table cellpadding='5'><tr><td 
valign='bottom'><h2>Comments</h2></td>" .
+             "<td 
valign='bottom'><strong>$OrderLink</strong></td></tr></table>\n" . 
$new_comments_text .
+             "<h3>Comments for older version(s)</h3>\n" . $old_comments_text);
+    else
+     print ("<em>No comments for this level yet!</em>");
+     
+    print("</td><td valign='top'>");    
+    if ($showDemos)           
+      print ("<table cellpadding='5'><tr><td valign='bottom'><h2>Demo 
Files</h2></td></tr></table>\n" .
+             $new_demos_text . "<h3>Demos for older version(s)</h3>\n" . 
$old_demos_text);
+       else
+      print ("<em>No Demos for this level yet!</em>");
+    
+    print ("</td></tr></table>");
+
     // Calc avg rating
     if ( $leveldata["totalcomments"] > 0 )
       $leveldata["avgrating"] = round($leveldata["avgrating"] / 
$leveldata["totalcomments"]);
@@ -454,55 +577,92 @@
       $levelmd5 = $_GET["levelmd5"];
 ?>
     <hr/>
-    <p><em><strong>Add a comment:</strong></em></p>
-    <form action="<? echo $PHP_SELF . "?c=" . urlencode($c) . "&l=" . 
urlencode($l); ?>" method="POST">
-      <input type="hidden" name="addcomment" value="1">
-      <input type="hidden" name="c" value="<? echo urlencode("$c"); ?>">
-      <input type="hidden" name="l" value="<? echo urlencode("$l"); ?>">
-      <input type="hidden" name="levelmd5" value="<? echo 
urlencode($levelmd5); ?>">
-      <table>
-        <tr>
-          <td>Your name</td>
-          <td><input type="text" name="author"></td>
-        </tr>
-        <tr>
-          <td>Your email</td>
-          <td><input type="text" name="email"></td>
-        </tr>
-        <tr>
-          <td>Difficulty</td>
-          <td>
-            <select name="difficulty">
-              <option value="easy">easy</option>
-              <option value="normal">normal</option>
-              <option value="hard">hard</option>
-              <option value="very hard">very hard</option>
-              <option value="unplayable">unplayable</option>
-              <option value="unfinished" selected>unfinished</option>
-            </select>
-          </td>
-        </tr>
-        <tr>
-          <td>Rating</td>
-          <td>
-            <select name="rating">
-              <option value="1">1 bad</option>
-              <option value="2">2 well...</option>
-              <option value="3" selected>3 ok</option>
-              <option value="4">4 good</option>
-              <option value="5">5 very good</option>
-            </select>
-          </td>
-        </tr>
-        <tr>
-          <td>Comments</td>
-          <td><textarea rows="8" cols="40" name="comment"></textarea></td>
-        </tr>
-        <tr>
-          <td colspan="2"><input type="submit"/></td>
-        </tr>
-      </table>
-    </form>
+    <table width="100%">
+      <tr>
+        <td width="60%" valign="top">
+          <p><em><strong>Add a comment:</strong></em></p>
+          <form id="CommentForm" action="<? echo $PHP_SELF . "?c=" . 
urlencode($c) . "&l=" . urlencode($l); ?>" method="POST">
+            <input type="hidden" name="addcomment" value="1">
+            <input type="hidden" name="c" value="<? echo urlencode("$c"); ?>">
+            <input type="hidden" name="l" value="<? echo urlencode("$l"); ?>">
+            <input type="hidden" name="levelmd5" value="<? echo 
urlencode($levelmd5); ?>">
+            <table>
+              <tr>
+                <td>Your name</td>
+                <td><input type="text" name="author"></td>
+              </tr>
+              <tr>
+                <td>Your email</td>
+                <td><input type="text" name="email"></td>
+              </tr>
+              <tr>
+                <td>Difficulty</td>
+                <td>
+                  <select name="difficulty">
+                    <option value="easy">easy</option>
+                    <option value="normal">normal</option>
+                    <option value="hard">hard</option>
+                    <option value="very hard">very hard</option>
+                    <option value="unplayable">unplayable</option>
+                    <option value="unfinished" selected>unfinished</option>
+                  </select>
+                </td>
+              </tr>
+              <tr>
+                <td>Rating</td>
+                <td>
+                  <select name="rating">
+                    <option value="1">1 bad</option>
+                    <option value="2">2 well...</option>
+                    <option value="3" selected>3 ok</option>
+                    <option value="4">4 good</option>
+                    <option value="5">5 very good</option>
+                  </select>
+                </td>
+              </tr>
+              <tr>
+                <td>Comments</td>
+                <td><textarea rows="8" cols="40" 
name="comment"></textarea></td>
+              </tr>
+              <tr>
+                <td colspan="2"><input type="submit"/></td>
+              </tr>
+            </table>
+          </form>
+        </td>
+        <td width="50%" valign="top">
+          <p><em><strong>Upload a demofile:</strong></em></p>
+          <form enctype="multipart/form-data"  name="UploadDemo" action="<? 
echo $PHP_SELF . "?c=" . urlencode($c) . "&l=" . urlencode($l); ?>" 
method="POST">
+            <input type="hidden" name="adddemo" value="1">
+            <input type="hidden" name="c" value="<? echo urlencode("$c"); ?>">
+            <input type="hidden" name="l" value="<? echo urlencode("$l"); ?>">
+            <input type="hidden" name="levelmd5" value="<? echo 
urlencode($levelmd5); ?>">
+            <table>
+              <tr>
+                <td>Your name</td>
+                <td><input type="text" name="username"></td>
+              </tr>
+              <tr>
+                <td>Your email</td>
+                <td><input type="text" name="email"></td>
+              </tr>
+              <tr>
+                <td>Demofile</td>
+                <td>
+                  <input type="file" name="demofile">
+                </td>
+              </tr>
+              <tr>
+                <td colspan="2">
+                  <input type="submit" value="Upload file">
+               </td>
+              </tr>
+            </table>
+          </form>
+        </td>
+      </tr>
+    </table>      
+          
 <?
     print "<p><a href='$PHP_SELF?c=" . urlencode($c) . "'>Back to level 
list</a></p>";
     if ( !$is_admin )

Modified: trunk/contrib/level_comment_tool/level-cache.inc
===================================================================
--- trunk/contrib/level_comment_tool/level-cache.inc    2004-04-15 20:50:08 UTC 
(rev 2273)
+++ trunk/contrib/level_comment_tool/level-cache.inc    2004-04-15 20:51:34 UTC 
(rev 2274)
@@ -56,12 +56,12 @@
 
   if (!$table_exists)
   {
-    $SQL = "CREATE TABLE `$tablename` (`Key` VARCHAR( 255 ) NOT NULL ,`Value` 
TEXT NOT NULL , PRIMARY KEY ( `Key` ) );";    
-    $res = mysql_query( $SQL, $db_handle );       
+    $SQL = "CREATE TABLE `$tablename` (`Key` VARCHAR( 255 ) NOT NULL ,`Value` 
TEXT NOT NULL , PRIMARY KEY ( `Key` ) );";
+    $res = mysql_query( $SQL, $db_handle );
        if (!$res)
          return False;
        else
-         return $tablename;  
+         return $tablename;
   }
   else
     return $tablename;
@@ -175,11 +175,11 @@
       $res = mysql_query( $SQL, $db_handle );
       if (mysql_num_rows($res) != 1)
        $data = False;
-      else     
-        list(,$data) = mysql_fetch_row( $res );  
+      else
+        list(,$data) = mysql_fetch_row( $res );
       break;
   }
-  
+
   if ( !$data )
     return False;
   else
@@ -209,7 +209,7 @@
     $leveldata = parse_level( $levelfile );
     $leveldata["md5sum"] = md5(implode("", file($levelfile)));
 
-    $comments = parse_level_comments($cathegory, $level);
+    $comments = parse_level_comments($cathegory, $level, "ASC");
     $avgrating = 0;
     if (count($comments) > 0 )
     {
@@ -266,10 +266,10 @@
   $data = "";
   $key = make_db_key( $cathegory, $level );
   reset( $arr );
-  
+
   while (list($k,$v) = each($arr))
     $data .= $k . "=" . $v . "\255";
-        
+
   switch ($DBMS)
   {
     case "DBA":
@@ -282,7 +282,7 @@
       if (mysql_num_rows( $ret ) == 1)
         $SQL = "UPDATE `$db_tablename` SET `Value`='" . str_replace( "'", 
"\'", $data ) . "' WHERE `Key`='$key'";
       else
-        $SQL = "INSERT INTO $db_tablename (`Key`,`Value`) VALUES ('$key','" . 
str_replace( "'", "\'", $data ) . "')";          
+        $SQL = "INSERT INTO $db_tablename (`Key`,`Value`) VALUES ('$key','" . 
str_replace( "'", "\'", $data ) . "')";
       $ret = mysql_query( $SQL, $db_handle );
       break;
   }
@@ -329,7 +329,7 @@
   return $arr;
 }
 
-function parse_level_comments( $cathegory, $level )
+function parse_level_comments( $cathegory, $level, $order )
 {
   $res = Array();
   $comment_dir = "comments/$cathegory/$level";
@@ -340,7 +340,7 @@
   $dir = dir($comment_dir);
   $comments = Array();
   while ($file = $dir->read())
-    if ($file != "." && $file != ".." && file_exists("$comment_dir/$file"))
+    if ($file != "." && $file != ".." && file_exists("$comment_dir/$file") && 
!is_dir("$comment_dir/$file"))
       $comments[] = "$comment_dir/$file";
   $dir->close();
 
@@ -350,6 +350,7 @@
       "author" => "pingus-level-comment/author",
       "email" => "pingus-level-comment/email",
       "date" => "pingus-level-comment/date",
+         "time" => "pingus-level-comment/time",
       "difficulty" => "pingus-level-comment/difficulty",
       "rating" => "pingus-level-comment/rating",
       "comment" => "pingus-level-comment/comment",
@@ -361,11 +362,61 @@
       $cmt[$k] = $v["v"];
 
     $cmt["filename"] = $filename;
-    $res[] = $cmt;
+
+    // is the time set? (it is not in old comment files)
+       if (isset($cmt["time"]))
+         $res[$cmt["date"] . '-' . $cmt["time"]] = $cmt;
+    else
+      $res[$cmt["date"] . '-' . substr(md5(implode("", file($filename))),0,8)] 
= $cmt;
   }
+  if ($order == "DESC")
+    arsort($res);
+  else
+    asort($res);
+
   return $res;
 }
 
+function parse_level_demos( $cathegory, $level )
+{
+  $res = Array();
+  $demo_dir = "comments/$cathegory/$level/demos";
+  if ( !is_dir( $demo_dir ))
+    return $res;
+  sandbox_check($demo_dir, "comments/");
+
+  $dir = dir($demo_dir);
+  $demos = Array();
+  while ($file = $dir->read())
+    if ($file != "." && $file != ".." && file_exists("$demo_dir/$file")
+        && !is_dir("$demo_dir/$file") && strpos( $file, ".demo" ))
+      $demos[] = "$demo_dir/$file";
+  $dir->close();
+
+  while( list($key, $filename) = each($demos))
+  {
+    $cmt = xml_search( $filename, Array(
+      "username" => "pingus-demo-metafile/username",
+      "email" => "pingus-demo-metafile/email",
+      "date" => "pingus-demo-metafile/date",
+         "time" => "pingus-demo-metafile/time",
+         "demofile" => "pingus-demo-metafile/demofile",
+      "levelmd5" => "pingus-demo-metafile/levelmd5"
+    ));
+
+    // We don't need tag names and attributes, strip them off:
+    while( list($k,$v) = each($cmt))
+      $cmt[$k] = $v["v"];
+
+    $cmt["filename"] = $filename;
+
+    $res[$cmt["date"] . '-' . $cmt["time"]] = $cmt;
+  }
+  asort($res);
+
+  return $res;
+}
+
 function sandbox_check($filename, $sandbox)
 {
   $file = realpath( $filename );





reply via email to

[Prev in Thread] Current Thread [Next in Thread]