Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- require_once ('include/utils.php');
- $options_filetype = array( "any",
- "text",
- "msword",
- "excel",
- "powerpoint",
- "pdf",
- "jpeg",
- "png",
- "bmp",
- "gif",
- "html",
- "mhtml",
- "swf",
- "msword 2007",
- "excel 2007",
- "powerpoint 2007",
- "hangul"
- );
- sort($options_filetype);
- $options_orderby = array( "id", "filename", "size" );
- $options_orderbyAD = array( "ascending", "descending" );
- $options_outputformat = array( "table", "text", "count" );
- $options_outputlocation = array( "link", "url", "unix");
- $filetype_dirs = array( "any" => "",
- "text" => "text/_/",
- "msword" => "ole/msword/v%/%/_/",
- "excel" => "ole/excel/_/",
- "powerpoint" => "ole/ppt/%/_/",
- "pdf" => "pdf/v%/_/",
- "jpeg" => "jpeg/_/",
- "png" => "png/_/",
- "bmp" => "bmp/_/",
- "gif" => "gif/_/",
- "html" => "html/%/_/",
- "mhtml" => "mhtml/_/",
- "swf" => "flash/swf/v%/_/",
- "msword 2007" => "docx/_/",
- "excel 2007" => "xlsx/_/",
- "powerpoint 2007" => "pptx/_/",
- "hangul" => "hwp/_/"
- );
- $dbServer = "";
- $dbUsername = "";
- $dbPassword = "";
- $dbDatabase = "";
- $results = 0;
- $sql = "";
- $filetype = $options_filetype[0];
- $filename = "";
- $filesize_min = "";
- $filesize_max = "";
- $numresults = "";
- $outputformat = $options_outputformat[0];
- $orderby = $options_orderby[0];
- $orderbyAD = $options_orderbyAD[0];
- $outputLocation = $options_outputlocation[0];
- ########################################################
- FUNCTION buildsql($ftype,
- $fname,
- $fsize_min,
- $fsize_max,
- $num,
- $order,
- $orderAD,
- $outputFormat,
- $dirs)
- {
- $name = "%";
- $fsize_min = $fsize_min*1024;
- $fsize_max = $fsize_max*1024;
- if ($fname != "")
- {
- $name = str_replace("*", "%", $fname);
- }
- if ($ftype == "any")
- {
- $name = "%/".$name;
- }
- $sql = "SELECT id,filename,size FROM document WHERE filename ";
- $sql .= "LIKE '".$dirs[$ftype].$name."' ";
- if ($fsize_min > 0)
- $sql .= "AND size >=".$fsize_min." ";
- if ($fsize_max > 0)
- $sql .= "AND size <=".$fsize_max." ";
- if ($outputFormat <> "count")
- {
- if ($order <> "")
- $sql .= "ORDER BY ".$order." ";
- if ($order <> "" && $orderAD<>"")
- {
- if ($orderAD == "ascending")
- $orderAD = "ASC";
- else
- $orderAD = "DESC";
- $sql .= $orderAD." ";
- }
- if ($num > 0)
- $sql .= "LIMIT ".$num;
- }
- return $sql;
- }
- ########################################################
- FUNCTION getAndDisplayResults($outputformat,
- $outputloc,
- $dbS,
- $dbU,
- $dbP,
- $dbD,
- $sql)
- {
- $numResults = 0;
- echo("\n<div id=\"sql\">$sql</div>\n");
- $conn = mysql_connect($dbS, $dbU, $dbP) or die ("Error connecting to mysql");
- @mysql_select_db($dbD) or die ("Unable to select database");
- $result = mysql_query($sql) or die ("Failed the query bit!");
- if ($outputformat == "count")
- {
- echo("<b>Num Results: ".mysql_num_rows($result)."</b><br>\n");
- $total = 0;
- while ($row = mysql_fetch_array($result))
- $total += $row['size'];
- echo("<b>Total Size: ".number_format($total, 0, ".", ",")." kb</b>\n");
- return;
- }
- else if ($outputformat == "table")
- {
- echo("<div id=wrapper>\n");
- echo("<table cellpadding=0 cellspacing=0 border=0 class=display id=test-docs-table>\n");
- echo("<thead>\n<tr>\n<th>ID</th>\n<th>Filename</th>\n<th>Filesize(kb)</th>\n<th>Thumbnail</th>\n</tr>\n</thead>\n<tbody>\n");
- }
- while($row = mysql_fetch_array($result))
- {
- $numResults++;
- $loc = "";
- if ($outputloc == "url")
- {
- $loc = "http://testdocs.local.picsel.com/testdocs/".$row['filename'];
- }
- else if ($outputloc == "link")
- {
- $shortname = $row['filename'];
- $str = 'someLongString';
- $max = 50;
- // trim the filenames if they are too long
- if(strlen($shortname) > $max)
- {
- $shortname = substr($shortname, 0, $max) . '...';
- }
- $lastslash = strrpos($shortname, '/');
- $shortname = substr($shortname,$lastslash + 1);
- $tmpurl = "http://testdocs.local.picsel.com/testdocs/".$row['filename'];
- $loc = "<a href=\"$tmpurl\">$shortname</a>";
- }
- else
- {
- $loc = "/central/testdocs/".$row['filename'];
- }
- if ($outputformat == "table")
- {
- $row['size'] = ($row['size']) / 1024;
- $row['size'] = round($row['size'], 0);
- echo("<tr><td class=\"center\">".$row['id']."</td>\n<td>".$loc."</td>\n");
- echo("<td class=\"center\">".$row['size']."</td>\n");
- if ($numResults <= 20)
- {
- $shortname = $row['filename'];
- $doc = "/central/testdocs/".$row['filename'];
- $thumb = "include/doc-thumbnail.php?doc=$doc";
- echo("\n<div class=\"thumbnail\">\n<td class=\"center\"><a class=\"lightbox\" title=\"$shortname\" href=\"$thumb&dpi=96\"><img height=50 width=50 src=\"$thumb\"></a></td>\n</div>\n");
- }
- else
- {
- echo("<td> </td>\n");
- }
- echo("</tr>\n");
- }
- else
- {
- echo($loc."<br>\n");
- }
- }
- if ($outputformat == "table")
- echo("</tbody>\n");
- echo("<tfoot>\n<tr>\n<th>ID</th>\n<th>Filename</th>\n<th>Filesize(kb)</th>\n<th>Thumbnail</th>\n</tr>\n</tfoot>\n");
- echo("</table>\n");
- echo("</div>\n");
- echo("\n");
- echo($numResults." results");
- }
- ########################################################
- if (doPost('dosearch', "false") == "true")
- {
- /* do the search */
- $filetype = doPost('filetype', $filetype);
- $filename = doPost('filename', $filename);
- $filesize_min = doPost('filesize_min', $filesize_min);
- $filesize_max = doPost('filesize_max', $filesize_max);
- $numresults = doPost('numresults', $numresults);
- $outputformat = doPost('outputformat', $outputformat);
- $orderby = doPost('orderby', $orderby);
- $orderbyAD = doPost('orderbyad', $orderbyAD);
- $outputLocation = doPost('outputlocation', $outputLocation);
- $sql = buildsql($filetype,
- $filename,
- $filesize_min,
- $filesize_max,
- $numresults,
- $orderby,
- $orderbyAD,
- $outputformat,
- $filetype_dirs);
- }
- ########################################################
- ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
- <title>TestDocs Search</title>
- <link rel="stylesheet" type="text/css" href="default.css" />
- <script type="text/javascript" src="js/jquery.js"></script>
- <script type="text/javascript" src="js/jquery.lightbox-0.5.js"></script>
- <script type="text/javascript" src="js/jquery.dataTables.js"></script>
- <script type="text/javascript" src="js/ColReorder.js"></script>
- <script type="text/javascript" src="js/variables.js"></script>
- <script type="text/javascript" src="js/dropdown.js"></script>
- <script type="text/javascript" src="js/jquery.dd.js"></script>
- <script type="text/javascript" src="js/animatedcollapse.js"></script>
- <script type="text/javascript" src="js/jquery.ui.core.js"></script>
- <script type="text/javascript" src="js/jquery.ui.widget.js"></script>
- <script type="text/javascript" src="js/jquery.ui.position.js"></script>
- <script type="text/javascript" src="js/jquery.ui.autocomplete.js"></script>
- <script type="text/javascript">
- $(document).ready(function()
- {
- $('a.lightbox').lightBox();
- $('select.search').msDropDown();
- $('#test-docs-table').dataTable( {
- "sPaginationType": "full_numbers",
- "sDom": 'Rlfrtip'
- } );
- } );
- $(function () {
- $('.advancedsearch a').click(function () {
- $(this.hash).slideToggle(500);
- return false;
- });
- })
- animatedcollapse.addDiv('advancedsearch', 'fade=10,speed=600,persist=1,hide=1')
- animatedcollapse.ontoggle=function($, divobj, state)
- {
- //fires each time a DIV is expanded/contracted
- }
- animatedcollapse.init()
- </script>
- </head>
- <body id="testdocs" class="example_alt_pagination">
- <div id="container">
- <div id="header">
- <p>TestDocs Search</p>
- </div>
- <br>
- <?php
- echo "POST variables: $filetype, $filename, $filesize_min, $filesize_max, $numresults, $outputformat, $outputLocation, $orderby, $orderbyAD";
- ?>
- <div id ="form">
- <form enctype="multipart/form-data" method="post" action="testdocs-db.php" name="search" id="search" class="search">
- <input type="hidden" name="dosearch" value="true">
- <table border=0>
- <tr>
- <td class="label">File Type:</td>
- <td>
- <?php doSelectMultiple("filetype", $options_filetype, $filetype, ""); ?>
- </td>
- </tr>
- <tr>
- <td class="label">File Name:</td>
- <td>
- <input id="filename" name="filename" class="text" value="<?php echo($filename); ?>">
- </td>
- <td> </td>
- </tr>
- <tr>
- <td class="label">File Size:</td>
- <td>
- <input id="filesize_min" name="filesize_min" class="text" value="<?php echo($filesize_min); ?>"><div id="kb">(kb min)</div>
- </td>
- <td>
- <input id="filesize_max" name="filesize_max" class="text" value="<?php echo($filesize_max); ?>"><div id="kb">(kb max)</div>
- </td>
- </tr>
- <tr>
- <td class="label"># Results:</td>
- <td>
- <input id="numresults" name="numresults" class="text"
- <?php
- if (strlen($numresults) >= 1)
- {
- echo ("value=\"$numresults\"");
- }
- else
- {
- echo ("value=\"10\"");
- }
- ?> >
- </td>
- <td> </td>
- </tr>
- <tr>
- <td class="label">Order By:</td>
- <td>
- <?php doSelect("orderby", 1, $options_orderby, $orderby, ""); ?>
- </td>
- <td>
- <?php doSelect("orderbyad", 1, $options_orderbyAD, $orderbyAD, ""); ?>
- </td>
- </tr>
- <tr>
- <td class="label">Output Format:</td>
- <td>
- <?php doSelect("outputformat", 1, $options_outputformat, $outputformat, ""); ?>
- </td>
- <td>
- <?php doSelect("outputlocation", 1, $options_outputlocation, $outputLocation, ""); ?>
- </td>
- </tr>
- <tr>
- <td> </td>
- <td><input type="submit" class="submit" value="Search"></td>
- <td> </td>
- </tr>
- </table>
- </form>
- <a href="#" rel="toggle[advancedsearch]" data-openimage="images/collapse.png" data-closedimage="images/expand.png">Advanced Search<img id="expand" src="images/collapse.png"/></a>
- <div id="advancedsearch" class="advancedsearch">
- <form enctype="multipart/form-data" class="advancedsearchform" action="testdocs-db.php" method="post">
- <input type="hidden" name="advancedsearchsubmit" value="1"/>
- <input type="hidden" name="hiddenfiletype" id="hiddenfiletype"/>
- <input type="hidden" name="hiddenfilename" id="hiddenfilename"/>
- <input type="hidden" name="hiddenfilesize_min" id="hiddenfilesize_min"/>
- <input type="hidden" name="hiddenfilesize_max" id="hiddenfilesize_max"/>
- <input type="hidden" name="hiddennumresults" id="hiddennumresults"/>
- <input type="hidden" name="hiddenorderby" id="hiddenorderby"/>
- <input type="hidden" name="hiddenorderbyad" id="hiddenorderbyad"/>
- <input type="hidden" name="hiddenoutputformat" id="hiddenoutputformat"/>
- <input type="hidden" name="hiddenoutputlocation" id="hiddenoutputlocation"/>
- <script type="text/javascript">
- $("#filetype").change(copyFiletype);
- $("#filename").change(copyFilename);
- $("#filesize_min").change(copyFileSizeMin);
- $("#filesize_max").change(copyFileSizeMax);
- $("#numresults").change(copyNumResults);
- $("#orderby").change(copyOrderBy);
- $("#orderbyad").change(copyOrderByAD);
- $("#outputformat").change(copyOutputFormat);
- $("#outputlocation").change(copyOutputLocation);
- function copyFiletype()
- {
- var valueToCopy=$("#filetype option:selected").val();
- $("#hiddenfiletype").val(valueToCopy);
- }
- function copyFilename()
- {
- var valueToCopy=$("#filename").val();
- $("#hiddenfilename").val(valueToCopy);
- }
- function copyFileSizeMin()
- {
- var valueToCopy=$("#filesize_min").val();
- $("#hiddenfilesize_min").val(valueToCopy);
- }
- function copyFileSizeMax()
- {
- var valueToCopy=$("#filesize_max").val();
- $("#hiddenfilesize_max").val(valueToCopy);
- }
- function copyNumResults()
- {
- var valueToCopy=$("#numresults").val();
- $("#hiddennumresults").val(valueToCopy);
- }
- function copyOrderBy()
- {
- var valueToCopy=$("#orderby option:selected").val();
- $("#hiddenorderby").val(valueToCopy);
- }
- function copyOrderByAD()
- {
- var valueToCopy=$("#orderbyad option:selected").val();
- $("#hiddenorderbyad").val(valueToCopy);
- }
- function copyOutputFormat()
- {
- var valueToCopy=$("#outputformat option:selected").val();
- $("#hiddenoutputformat").val(valueToCopy);
- }
- function copyOutputLocation()
- {
- var valueToCopy=$("#outputlocation option:selected").val();
- $("#hiddenoutputlocation").val(valueToCopy);
- }
- </script>
- <p>
- <input type="radio" name="andor" value="AND" checked /> match <span class="all">all</span> of these |
- match <span class="any">any</span> of these <input type="radio" name="andor" value="OR" />
- </p>
- <div class="dropdown">
- <select name="tags[]" class="tags">
- <option value="tags" selected="selected">tags</option>
- <option value="agent">agent</option>
- <option value="extension">extension</option>
- <option value="fileversion">fileversion</option>
- <option value="pages">pages</option>
- <option value="object">object</option>
- <option value="path">path</option>
- <option value="variant">variant</option>
- <option value="bad">bad</option>
- <option value="complex">complex</option>
- <option value="encrypted">encrypted</option>
- <option value="escherpropname">escherpropname</option>
- <option value="escherpropnumber">escherpropnumber</option>
- <option value="escherrecordname">escherecordname</option>
- <option value="escherrecordnumber">eshcerrecordnumber</option>
- <option value="eschershapename">eschershapename</option>
- <option value="eschershapenumber">eschershapenumber</option>
- <option value="mswordpicturetype">mswordpicturetype</option>
- <option value="functionuse">functionuse</option>
- <option value="objects">objects</option>
- <option value="heightpixels">heightpixels</option>
- <option value="widthpixels">widthpixels</option>
- <option value="maxrecordsize">maxrecordsize</option>
- <option value="encoding">encoding</option>
- <option value="dpi">dpi</option>
- <option value="depth">depth</option>
- <option value="mask">mask</option>
- <option value="progressive">progressive</option>
- <option value="colour">colour</option>
- </select>
- <select name="operands[]" class="operands">
- <option>please select a tag</option>
- </select>
- <select name="values[]" class="values">
- <option>please select a tag</option>
- </select>
- <img class="addButton" src="images/blank.gif" alt="add" onclick="addNew();"/>
- <img class="deleteButton" alt="delete" src="images/delete1.png" onclick="remove(this)" onmouseover="this.src='images/delete.png'" onmouseout="this.src='images/delete1.png'"/>
- <div class="clear"></div>
- </div>
- <div class="clonecontainer"></div>
- <div class="advancedsearchsubmit"><input type="submit" class="submit" value="Advanced Search"/></div>
- </form>
- </div>
- </div>
- <?php
- // simple search form processing
- if ($sql != "")
- {
- getAndDisplayResults($outputformat,
- $outputLocation,
- $dbServer,
- $dbUsername,
- $dbPassword,
- $dbDatabase,
- $sql);
- }
- else if (doPost('random', "false") == "true")
- {
- foreach ($filetype_dirs as $option)
- {
- if ($option == "")
- continue;
- $sql = "SELECT id,filename,size FROM document WHERE filename ";
- $sql .= "LIKE '$option%' ";
- $sql .= "ORDER BY RAND() LIMIT 10";
- getAndDisplayResults("text",
- "Unix Path",
- $dbServer,
- $dbUsername,
- $dbPassword,
- $dbDatabase,
- $sql);
- }
- }
- // advanced search form processing
- if (isset($_POST['advancedsearchsubmit']))
- {
- $tags = $_POST['tags'];
- $operands = $_POST['operands'];
- $values = $_POST['values'];
- $andor = $_POST['andor'];
- // hidden input values from simple search
- $filetype= doPost('hiddenfiletype', $filetype);
- $filename= doPost('hiddenfilename', $filename);
- $filesize_min= doPost('hiddenfilesize_min', $filesize_min);
- $filesize_max= doPost('hiddenfilesize_max', $filesize_max);
- $numresults= doPost('hiddennumresults', $numresults);
- $orderby= doPost('hiddenorderby', $orderby);
- $orderbyAD= doPost('hiddenorderbyad', $orderbyAD);
- $outputformat= doPost('hiddenoutputformat', $outputformat);
- $outputLocation= doPost('hiddenoutputlocation', $outputLocation);
- // need to convert kb to bytes to query db
- $filesize_min = $filesize_min*1024;
- $filesize_max = $filesize_max*1024;
- // end simple search criteria
- // start building the query
- $query = "SELECT ";
- $totaljoins = count($tags) + 1;
- $query .= "document.id, document.filename, document.size FROM document ";
- for ($joins=1 ; $joins < $totaljoins ; $joins++)
- {
- $query .= "JOIN documenttags dt$joins ON dt$joins.id = document.id ";
- }
- $query .= "WHERE ";
- $joins = 0;
- for ($counter=0 ; $counter < count($tags) ; $counter++)
- {
- $joins ++;
- if ($counter>0)
- {
- $query .= " $andor ";
- }
- $query .= sprintf("(dt$joins.tag %s '%s' AND dt$joins.value %s '%s' )", $operands[$counter], $tags[$counter], $operands[$counter], $values[$counter]) ;
- }
- // tack on simple search criteria:
- $name = "%";
- // need to set defaults in case the simple search fields
- // aren't changed - the JS only copies the values to the hidden
- // inputs when the simple search fields are modified in some way
- if (strlen($numresults) == "")
- {
- $numresults = 10;
- }
- if ($orderby == "")
- {
- $orderby = "id";
- }
- if ($orderbyAD == "")
- {
- $orderbyAD == "ASC";
- }
- if ($outputformat == "")
- {
- $outputformat = "table";
- }
- if ($outputLocation == "")
- {
- $outputLocation = "link";
- }
- // hidden inputs fixed
- if ($filename != "")
- {
- $name = str_replace("*", "%", $filename);
- }
- if ($filetype == "any")
- {
- $name = "%/".$name;
- }
- $query .= " AND document.filename ";
- $query .= "LIKE '".$filetype_dirs[$filetype].$name."' ";
- if ($filesize_min > 0)
- {
- $query .= "AND document.size >=".$filesize_min." ";
- }
- if ($filesize_max > 0)
- {
- $query .= "AND document.size <=".$filesize_max." ";
- }
- if ($outputformat <> "count")
- {
- if ($orderby <> "")
- {
- $query .= "ORDER BY ".$orderby." ";
- }
- if ($orderby <> "" && $orderbyAD<>"")
- {
- if ($orderbyAD == "ascending")
- {
- $orderbyAD = "ASC";
- }
- else
- {
- $orderbyAD = "DESC";
- }
- $query .= $orderbyAD." ";
- }
- }
- if ($numresults > 0)
- {
- $query .= " LIMIT $numresults";
- }
- else
- {
- $query .= " LIMIT $numresults";
- }
- getAndDisplayResults($outputformat,
- $outputLocation,
- $dbServer,
- $dbUsername,
- $dbPassword,
- $dbDatabase,
- $query);
- }
- ?>
- </div>
- </body>
- </html>
- //utils.php
- <?php
- ########################################################
- FUNCTION doGet($st, $default)
- {
- if (isset($_GET[$st]))
- return $_GET[$st];
- else
- return $default;
- }
- ########################################################
- FUNCTION doPost($st, $default)
- {
- if (isset($_POST[$st]))
- return $_POST[$st];
- else
- return $default;
- }
- ########################################################
- FUNCTION doOptions($options, $selected)
- {
- foreach ($options as $option)
- {
- $value=str_replace(" ","",$option);
- $title="images/$value";
- if ($option == $selected)
- echo ("<option title=\"$title\" id=\"$value\" selected>$option</option>\n");
- else
- echo ("<option title=\"$title\" id=\"$value\">$option</option>\n");
- }
- }
- ########################################################
- FUNCTION doSelect($name, $size, $options, $selected, $extra)
- {
- echo("<select class=\"search\" style=\"width:157px\" onchange=\"showValue(this.value)\" id=\"$name\" name=\"$name\" size=\"$size\" $extra>\n");
- doOptions($options, $selected);
- echo("</select>\n");
- }
- ########################################################
- FUNCTION doSelectMultiple($name, $options, $selected, $extra)
- {
- echo("<select class=\"search\" style=\"width:157px;\" onchange=\"showValue(this.value)\" id=\"$name\" name=\"$name\" size=\"$size\" $extra>\n");
- doOptions($options, $selected);
- echo("</select>\n");
- }
- ########################################################
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement