Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.13 KB | None | 0 0
  1. <?php
  2. class SearchEngine
  3. {
  4.  
  5.     private $Connection;
  6.  
  7.     function __construct($Connection)
  8.     {
  9.         $this->Connection = $Connection;
  10.     }
  11.     function search(
  12.         $searchTable,
  13.         $searchSimilarValues_OR,
  14.         $searchSimilarColumns_OR,
  15.         $searchSimilarValues_AND,
  16.         $searchSimilarColumns_AND,
  17.         $searchExactValues_OR,
  18.         $searchExactColumns_OR,
  19.         $searchExactValues_AND,
  20.         $searchExactColumns_AND,
  21.         $searchNotSimilarValues_OR,
  22.         $searchNotSimilarColumns_OR,
  23.         $searchNotSimilarValues_AND,
  24.         $searchNotSimilarColumns_AND,
  25.         $searchNotExactValues_OR,
  26.         $searchNotExactColumns_OR,
  27.         $searchNotExactValues_AND,
  28.         $searchNotExactColumns_AND,
  29.         $orderByColumn,
  30.         $orderASC,
  31.         $min,
  32.         $max
  33.     ) {
  34.         /*
  35.             Create a join to get data from SocialData and from lib3d_content and put it into the page.
  36.         */
  37.         $skipCounter = 0;
  38.         $limitString = "";
  39.         if ($min >= $max) {
  40.             $min = 0;
  41.             $max = 0;
  42.         }
  43.         $limitString = "LIMIT " . $max;
  44.  
  45.         $orderByValue = "";
  46.         if ($orderByColumn != "") {
  47.             $orderByValue = "ORDER BY " . $orderByColumn . ($orderASC ? " ASC" : " DESC");
  48.         }
  49.  
  50.         $similarValue_OR = "";
  51.         foreach ($searchSimilarColumns_OR as $col) {
  52.             foreach ($searchSimilarValues_OR as $val) {
  53.                 if (!empty($similarValue_OR)) {
  54.                     $similarValue_OR .= " OR";
  55.                 } else {
  56.                     $similarValue_OR = "AND (";
  57.                 }
  58.                 $similarValue_OR .= $col . " LIKE '" . $val . "'";
  59.             }
  60.         }
  61.         $similarValue_OR .= ")";
  62.  
  63.         $similarValue_AND = "";
  64.         foreach ($searchSimilarColumns_AND as $col) {
  65.             foreach ($searchSimilarValues_AND as $val) {
  66.                 if (!empty($similarValue_AND)) {
  67.                     $similarValue_AND .= " AND";
  68.                 } else {
  69.                     $similarValue_AND = "AND (";
  70.                 }
  71.                 $similarValue_AND .= $col . " LIKE '" . $val . "'";
  72.             }
  73.         }
  74.         $similarValue_AND .= ")";
  75.  
  76.         $exactValue_OR = "";
  77.         foreach ($searchExactColumns_OR as $col) {
  78.             foreach ($searchExactValues_OR as $val) {
  79.                 if (!empty($exactValue_OR)) {
  80.                     $exactValue_OR .= " OR";
  81.                 } else {
  82.                     $exactValue_OR = "AND (";
  83.                 }
  84.                 $exactValue_OR .= $col . " = '" . $val . "'";
  85.             }
  86.         }
  87.         $exactValue_OR .= ")";
  88.  
  89.         $exactValue_AND = "";
  90.         foreach ($searchExactColumns_AND as $col) {
  91.             foreach ($searchExactValues_AND as $val) {
  92.                 if (!empty($exactValue_AND)) {
  93.                     $exactValue_AND .= " AND";
  94.                 } else {
  95.                     $exactValue_AND = "AND (";
  96.                 }
  97.                 $exactValue_AND .= $col . " = '" . $val . "'";
  98.             }
  99.         }
  100.         $exactValue_AND .= ")";
  101.  
  102.         $notSimilarValue_OR = "";
  103.         foreach ($searchNotSimilarColumns_OR as $col) {
  104.             foreach ($searchNotSimilarValues_OR as $val) {
  105.                 if (!empty($notSimilarValue_OR)) {
  106.                     $notSimilarValue_OR .= " OR";
  107.                 } else {
  108.                     $notSimilarValue_OR = "AND (";
  109.                 }
  110.                 $notSimilarValue_OR .= $col . " NOT LIKE '" . $val . "'";
  111.             }
  112.         }
  113.         $notSimilarValue_OR .= ")";
  114.  
  115.         $notSimilarValue_AND = "";
  116.         foreach ($searchNotSimilarColumns_AND as $col) {
  117.             foreach ($searchNotSimilarValues_AND as $val) {
  118.                 if (!empty($notSimilarValue_AND)) {
  119.                     $notSimilarValue_AND .= " AND";
  120.                 } else {
  121.                     $notSimilarValue_AND = "AND (";
  122.                 }
  123.                 $notSimilarValue_AND .= $col . " NOT LIKE '" . $val . "'";
  124.             }
  125.         }
  126.         $notSimilarValue_AND .= ")";
  127.  
  128.         $notExactValue_OR = "";
  129.         foreach ($searchNotExactColumns_OR as $col) {
  130.             foreach ($searchNotExactValues_OR as $val) {
  131.                 if (!empty($notExactValue_OR)) {
  132.                     $notExactValue_OR .= " OR";
  133.                 } else {
  134.                     $notExactValue_OR = "AND (";
  135.                 }
  136.                 $notExactValue_OR .= $col . " <> '" . $val . "'";
  137.             }
  138.         }
  139.         $notExactValue_OR .= ")";
  140.  
  141.         $notExactValue_AND = "";
  142.         foreach ($searchNotExactColumns_AND as $col) {
  143.             foreach ($searchNotExactValues_AND as $val) {
  144.                 if (!empty($notExactValue_AND)) {
  145.                     $notExactValue_AND .= " AND";
  146.                 } else {
  147.                     $notExactValue_AND = "AND (";
  148.                 }
  149.                 $notExactValue_AND .= $col . " <> '" . $val . "'";
  150.             }
  151.         }
  152.         $notExactValue_AND .= ")";
  153.  
  154.         $query = "SELECT *
  155.        FROM $searchTable
  156.        RIGHT JOIN Social_Summary
  157.        ON Lib3D_Content.ObjectType = Social_Summary.RelatedObjectType
  158.        WHERE Lib3D_Content.ObjectID = Social_Summary.RelatedObjectID
  159.        $similarValue_OR $similarValue_AND $exactValue_OR $exactValue_AND
  160.        $notSimilarValue_OR $notSimilarValue_AND $notExactValue_OR $notExactValue_AND
  161.        UNION
  162.        SELECT *
  163.        FROM $searchTable
  164.        LEFT JOIN Social_Summary
  165.        ON $searchTable.ObjectType = Social_Summary.RelatedObjectType
  166.        WHERE $searchTable.ObjectID = Social_Summary.RelatedObjectID
  167.        $similarValue_OR $similarValue_AND $exactValue_OR $exactValue_AND
  168.        $notSimilarValue_OR $notSimilarValue_AND $notExactValue_OR $notExactValue_AND
  169.        $orderByValue $limitString;";
  170.  
  171.         $result = array();
  172.         $resultRow = mysqli_query($this->Connectoin, $query);
  173.         while ($row = mysqli_fetch_assoc($resultRow)) {
  174.             if ($skipCounter >= $min) {
  175.                 array_push($result, $row);
  176.             }
  177.             $skipCounter++;
  178.         }
  179.         return $result;
  180.     }
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement