[ Index ]
 

Code source de eGroupWare 1.2.106-2

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/mydms/op/ -> op.Search.php (source)

   1  <?php
   2  include ("../inc/inc.Settings.php");
   3  include ("../inc/inc.AccessUtils.php");
   4  include ("../inc/inc.ClassAccess.php");
   5  include ("../inc/inc.ClassDocument.php");
   6  include ("../inc/inc.ClassFolder.php");
   7  include ("../inc/inc.ClassGroup.php");
   8  include ("../inc/inc.ClassUser.php");
   9  include ("../inc/inc.DBAccess.php");
  10  include ("../inc/inc.Language.php");
  11  include ("../inc/inc.OutUtils.php");
  12  include ("../inc/inc.Authentication.php");
  13  
  14  $query            = $_GET['query'];
  15  $mode            = $_GET['mode'];
  16  $searchin        = $_GET['searchin'];
  17  $ownerid        = $_GET['ownerid'];
  18  $creationdate        = $_GET['creationdate'];
  19  $lastupdate        = $_GET['lastupdate'];
  20  $createstartmonth    = $_GET['createstartmonth'];
  21  $createstartday        = $_GET['createstartday'];
  22  $createstartyear    = $_GET['createstartyear'];
  23  $createendmonth        = $_GET['createendmonth'];
  24  $createendday        = $_GET['createendday'];
  25  $createendyear        = $_GET['createendyear'];
  26  $updatestartmonth    = $_GET['updatestartmonth'];
  27  $updatestartday        = $_GET['updatestartday'];
  28  $updatestartyear    = $_GET['updatestartyear'];
  29  $updateendmonth        = $_GET['updateendmonth'];
  30  $updateendday        = $_GET['updateendday'];
  31  $updateendyear        = $_GET['updateendyear'];
  32  
  33  $query = sanitizeString($query);
  34  $mode  = sanitizeString($mode);
  35  
  36  $targetid = isset($targetid) ? $targetid : $settings->_rootFolderID;
  37  $startFolder = getFolder($targetid);
  38  
  39  
  40  function getTime() {
  41      if (function_exists('microtime')) {
  42          $tm = microtime();
  43          $tm = explode(' ', $tm);
  44          return (float) sprintf('%f', $tm[1] + $tm[0]);
  45      }
  46      return time();
  47  }
  48  
  49  function markQuery($str, $tag = "b") {
  50      GLOBAL $query;
  51      
  52      $querywords = split(" ", $query);
  53      
  54      foreach ($querywords as $queryword)
  55          $str = eregi_replace("($queryword)", "<" . $tag . ">\\1</" . $tag . ">", $str);
  56      
  57      return $str;
  58  }
  59  
  60  function matches($document) {
  61      GLOBAL $query, $mode, $searchin, $ownerid,  $creationdate, $lastupdate;
  62      GLOBAL $createstartmonth, $createstartday, $createstartyear;
  63      GLOBAL $createendmonth, $createendday, $createendyear;
  64      GLOBAL $updatestartmonth, $updatestartday, $updatestartyear;
  65      GLOBAL $updateendmonth, $updateendday, $updateendyear;
  66      
  67      if ($ownerid != -1) {
  68          if ($ownerid != $document->_ownerID)
  69              return false;
  70      }
  71      
  72      if ($creationdate == "true") {
  73          $startdate = mktime(0,0,0, $createstartmonth, $createstartday, $createstartyear);
  74          $stopdate  = mktime(23,59,59, $createendmonth, $createendday, $createendyear);
  75          $date      = $document->getDate();
  76          
  77          if (($date < $startdate ) || ($date > $stopdate))
  78              return false;
  79      }
  80      
  81      if ($lastupdate == "true") {
  82          $startdate = mktime(0,0,0, $updatestartmonth, $updatestartday, $updatestartyear);
  83          $stopdate  = mktime(23,59,59, $updateendmonth, $updateendday, $updateendyear);
  84          $latestContent = $document->getLatestContent();
  85          $date = $latestContent->getDate();
  86          
  87          if (($date < $startdate) || ($date > $stopdate))
  88              return false;
  89      }
  90      
  91      $str = "";
  92      if (in_array("keywords", $searchin))
  93          $str .= $document->getKeywords() . " ";
  94      if (in_array("name", $searchin))
  95          $str .= $document->getName() . " ";
  96      if (in_array("comment", $searchin))
  97          $str .= $document->getComment();
  98      
  99      $querywords = split(" ", strtolower($query));
 100      $keywords = split(" ", strtolower($str));
 101      
 102      $hitsCount = 0;
 103      foreach ($querywords as $queryword) {
 104          $found = false;
 105          
 106          foreach ($keywords as $keyword) {
 107              if ((substr_count($keyword, $queryword) > 0) || ($queryword == "%")) {
 108                  $found = true;
 109                  if ($mode == "or")
 110                      return true;
 111              }
 112          }
 113          if ($mode == "and" && !$found)
 114              return false;
 115      }
 116      if ($mode == "and")
 117          return true;
 118      else
 119          return false;
 120  }
 121  
 122  
 123  function searchInFolder($folder) {
 124      GLOBAl $results, $user;
 125      
 126      $documents = $folder->getDocuments();
 127      $documents = filterAccess($documents, $user, M_READ);
 128      $subFolders = $folder->getSubFolders();
 129      $subFolders = filterAccess($subFolders, $user, M_READ);
 130      
 131      foreach ($documents as $document) {
 132          if (matches($document))
 133              array_push($results, $document);
 134      }
 135      foreach ($subFolders as $subFolder)
 136          searchInFolder($subFolder);
 137  }
 138  
 139  // ------------------------------------- Suche starten --------------------------------------------
 140  
 141  $startTime = getTime();
 142  $results = array();
 143  searchInFolder($startFolder);
 144  $searchTime = getTime() - $startTime;
 145  $searchTime = round($searchTime, 2);
 146  
 147  // ---------------------------------- Ausgabe der Ergebnisse --------------------------------------
 148  
 149  printHTMLHead( getMLText("search") );
 150  printTitleBar($startFolder);
 151  printCenterStart();
 152  
 153  printStartBox(getMLText("search_results"));
 154  
 155  ?>
 156  
 157  <table width="100%">
 158      <tr>
 159          <td align="left" class="standardText">
 160              <?php
 161                  if (count($results) == 0)
 162                      printMLText("search_no_results", array("query" => $query));
 163                  else
 164                      printMLText("search_report", array("query" => $query, "count" => count($results)));
 165              ?>
 166          </td>
 167          <td align="right" class="standardText"><?php printMLText("search_time", array("time" => $searchTime));?></td>
 168      </tr>
 169  </table>
 170  
 171  <?php
 172  if (count($results) == 0)
 173  {
 174      printEndBox();
 175      printCenterEnd();
 176      printHTMLFoot();
 177      exit;
 178  }
 179  
 180  print "<p><ol>";
 181  
 182  foreach ($results as $document) {
 183      print "<li class=\"standardText\"><b>" . getMLText("name") . ": " . "<a class=\"standardText\" href=\"../out/out.ViewDocument.php?documentid=".$document->getID()."\">" . markQuery($document->getName(), "i") . "</a></b><br>";
 184      $folder = $document->getFolder();
 185      $path = $folder->getPath();
 186      print getMLText("folder_path") . ": ";
 187      for ($i = 0; $i  < count($path); $i++)
 188      {
 189          print $path[$i]->getName();
 190          if ($i +1 < count($path))
 191              print " / ";
 192      }
 193      print "<br>";
 194      print markQuery($document->getComment());
 195      print "<br>&nbsp;</li>";
 196  }
 197  
 198  print "</ol>";
 199  
 200  printEndBox();
 201  printCenterEnd();
 202  printHTMLFoot();
 203  ?>


Généré le : Sun Feb 25 17:20:01 2007 par Balluche grâce à PHPXref 0.7