r2391 added ability to replace file contents
authorAaron Dummer <aaron@dummer.info>
Tue, 3 Feb 2009 18:15:01 +0000 (18:15 +0000)
committerAaron Dummer <aaron@dummer.info>
Tue, 3 Feb 2009 18:15:01 +0000 (18:15 +0000)
inc/database.php
inc/interface.php
inc/navigation.php
inc/ophandlers.php

index e049c5d..8bf7a04 100644 (file)
@@ -3713,6 +3713,31 @@ function commitLinkFile ($file_id, $entity_type, $entity_id)
                return 'commitLinkFile: SQL query failed';
 }
 
+function commitReplaceFile ($file_id = 0, $size, $contents)
+{
+       if ($file_id == 0)
+       {
+               showError ('Not all required args are present.', __FUNCTION__);
+               return FALSE;
+       }
+       $now = date('YmdHis');
+
+       global $dbxlink;
+       $query = $dbxlink->prepare('UPDATE File SET size= ?, mtime = ?, contents = ? WHERE id = ?');
+       $query->bindParam(1, $size);
+       $query->bindParam(2, $now);
+       $query->bindParam(3, $contents, PDO::PARAM_LOB);
+       $query->bindParam(4, $file_id);
+
+       $result = $query->execute();
+       if (!$result)
+       {
+               showError ('commitReplaceFile: SQL query failed', __FUNCTION__);
+               return FALSE;
+       }
+       return '';
+}
+
 function commitUpdateFile ($file_id = 0, $new_comment = '')
 {
        if ($file_id == 0)
index 5dbc4b8..b4cb308 100644 (file)
@@ -5509,6 +5509,18 @@ function renderFile ($file_id = 0)
        printf("<td class=tdleft>%s</td></tr>", formatTimestamp($file['mtime']));
        echo "<tr><th width='50%' class=tdright>Accessed:</th>";
        printf("<td class=tdleft>%s</td></tr>", formatTimestamp($file['atime']));
+
+       echo "<tr><th width='50%' class=tdright>Download file:</th>";
+       echo "<td class=tdleft><a href='${root}download.php?file_id=${file_id}'>";
+       printImageHREF ('download', 'Download file');
+       echo "</a></td></tr>\n";
+
+       echo "<tr><th width='50%' class=tdright>Upload replacement:</th>";
+       printOpFormIntro ('replaceFile', array ('MAX_FILE_SIZE' => convertToBytes(get_cfg_var('upload_max_filesize'))), TRUE);
+       echo "<td class=tdleft><input type='file' size='10' name='file' tabindex=100>&nbsp;\n";
+       printImageHREF ('save', 'Save changes', TRUE, 101);
+       echo "</form></td></tr>\n";
+
        printTagTRs ("${root}?page=files&tab=default&");
        echo "</table><br>\n";
        finishPortlet();
@@ -5727,7 +5739,7 @@ function renderFilesForEntity ($entity_id = 0)
        
        startPortlet ('Upload new');
        echo "<table border=0 cellspacing=0 cellpadding='5' align='center' class='widetable'>\n";
-       echo "<tr><th>File</th><th>Comment</th></tr>\n";
+       echo "<tr><th>File</th><th>Comment</th><th></th></tr>\n";
        printOpFormIntro ('addFile', array ('entity_type' => $entity_type, 'entity_id' => $entity_id, 'MAX_FILE_SIZE' => convertToBytes(get_cfg_var('upload_max_filesize'))), TRUE);
        echo "<tr>";
        echo "<td class=tdleft><input type='file' size='10' name='file' tabindex=100></td>\n";
index e243860..db7ef92 100644 (file)
@@ -623,6 +623,7 @@ $tab['file']['tags'] = 'Tags';
 $trigger['file']['tags'] = 'trigger_tags';
 $tabhandler['file']['tags'] = 'renderEntityTags';
 $tabhandler['file']['default'] = 'renderFile';
+$ophandler['file']['default']['replaceFile'] = 'replaceFile';
 $ophandler['file']['tags']['saveTags'] = 'saveEntityTags';
 
 // This function returns array if page numbers leading to the target page
index 2c1a6b8..e7388f6 100644 (file)
@@ -1477,6 +1477,22 @@ function linkFileToEntity ()
        return buildRedirectURL (__FUNCTION__, 'OK', array ($fi['name']));
 }
 
+function replaceFile ()
+{
+       assertUIntArg ('file_id', __FUNCTION__);
+
+       // Make sure the file can be uploaded
+       if (get_cfg_var('file_uploads') != 1)
+               return buildRedirectURL (__FUNCTION__, 'ERR', array ("file uploads not allowed, change 'file_uploads' parameter in php.ini"));
+
+       $fp = fopen($_FILES['file']['tmp_name'], 'rb');
+       $error = commitReplaceFile ($_REQUEST['file_id'], $_FILES['file']['size'], $fp);
+       if ($error != '')
+               return buildRedirectURL (__FUNCTION__, 'ERR', array ($error));
+
+       return buildRedirectURL (__FUNCTION__, 'OK', array ($_REQUEST['name']));
+}
+
 function updateFile ()
 {
        assertUIntArg ('file_id', __FUNCTION__);