Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class SearchEngine
- {
- private $Connection;
- function __construct($Connection)
- {
- $this->Connection = $Connection;
- }
- function search(
- $searchTable,
- $searchSimilarValues_OR,
- $searchSimilarColumns_OR,
- $searchSimilarValues_AND,
- $searchSimilarColumns_AND,
- $searchExactValues_OR,
- $searchExactColumns_OR,
- $searchExactValues_AND,
- $searchExactColumns_AND,
- $searchNotSimilarValues_OR,
- $searchNotSimilarColumns_OR,
- $searchNotSimilarValues_AND,
- $searchNotSimilarColumns_AND,
- $searchNotExactValues_OR,
- $searchNotExactColumns_OR,
- $searchNotExactValues_AND,
- $searchNotExactColumns_AND,
- $orderByColumn,
- $orderASC,
- $min,
- $max
- ) {
- /*
- Create a join to get data from SocialData and from lib3d_content and put it into the page.
- */
- $skipCounter = 0;
- $limitString = "";
- if ($min >= $max) {
- $min = 0;
- $max = 0;
- }
- $limitString = "LIMIT " . $max;
- $orderByValue = "";
- if ($orderByColumn != "") {
- $orderByValue = "ORDER BY " . $orderByColumn . ($orderASC ? " ASC" : " DESC");
- }
- $similarValue_OR = "";
- foreach ($searchSimilarColumns_OR as $col) {
- foreach ($searchSimilarValues_OR as $val) {
- if (!empty($similarValue_OR)) {
- $similarValue_OR .= " OR";
- } else {
- $similarValue_OR = "AND (";
- }
- $similarValue_OR .= $col . " LIKE '" . $val . "'";
- }
- }
- $similarValue_OR .= ")";
- $similarValue_AND = "";
- foreach ($searchSimilarColumns_AND as $col) {
- foreach ($searchSimilarValues_AND as $val) {
- if (!empty($similarValue_AND)) {
- $similarValue_AND .= " AND";
- } else {
- $similarValue_AND = "AND (";
- }
- $similarValue_AND .= $col . " LIKE '" . $val . "'";
- }
- }
- $similarValue_AND .= ")";
- $exactValue_OR = "";
- foreach ($searchExactColumns_OR as $col) {
- foreach ($searchExactValues_OR as $val) {
- if (!empty($exactValue_OR)) {
- $exactValue_OR .= " OR";
- } else {
- $exactValue_OR = "AND (";
- }
- $exactValue_OR .= $col . " = '" . $val . "'";
- }
- }
- $exactValue_OR .= ")";
- $exactValue_AND = "";
- foreach ($searchExactColumns_AND as $col) {
- foreach ($searchExactValues_AND as $val) {
- if (!empty($exactValue_AND)) {
- $exactValue_AND .= " AND";
- } else {
- $exactValue_AND = "AND (";
- }
- $exactValue_AND .= $col . " = '" . $val . "'";
- }
- }
- $exactValue_AND .= ")";
- $notSimilarValue_OR = "";
- foreach ($searchNotSimilarColumns_OR as $col) {
- foreach ($searchNotSimilarValues_OR as $val) {
- if (!empty($notSimilarValue_OR)) {
- $notSimilarValue_OR .= " OR";
- } else {
- $notSimilarValue_OR = "AND (";
- }
- $notSimilarValue_OR .= $col . " NOT LIKE '" . $val . "'";
- }
- }
- $notSimilarValue_OR .= ")";
- $notSimilarValue_AND = "";
- foreach ($searchNotSimilarColumns_AND as $col) {
- foreach ($searchNotSimilarValues_AND as $val) {
- if (!empty($notSimilarValue_AND)) {
- $notSimilarValue_AND .= " AND";
- } else {
- $notSimilarValue_AND = "AND (";
- }
- $notSimilarValue_AND .= $col . " NOT LIKE '" . $val . "'";
- }
- }
- $notSimilarValue_AND .= ")";
- $notExactValue_OR = "";
- foreach ($searchNotExactColumns_OR as $col) {
- foreach ($searchNotExactValues_OR as $val) {
- if (!empty($notExactValue_OR)) {
- $notExactValue_OR .= " OR";
- } else {
- $notExactValue_OR = "AND (";
- }
- $notExactValue_OR .= $col . " <> '" . $val . "'";
- }
- }
- $notExactValue_OR .= ")";
- $notExactValue_AND = "";
- foreach ($searchNotExactColumns_AND as $col) {
- foreach ($searchNotExactValues_AND as $val) {
- if (!empty($notExactValue_AND)) {
- $notExactValue_AND .= " AND";
- } else {
- $notExactValue_AND = "AND (";
- }
- $notExactValue_AND .= $col . " <> '" . $val . "'";
- }
- }
- $notExactValue_AND .= ")";
- $query = "SELECT *
- FROM $searchTable
- RIGHT JOIN Social_Summary
- ON Lib3D_Content.ObjectType = Social_Summary.RelatedObjectType
- WHERE Lib3D_Content.ObjectID = Social_Summary.RelatedObjectID
- $similarValue_OR $similarValue_AND $exactValue_OR $exactValue_AND
- $notSimilarValue_OR $notSimilarValue_AND $notExactValue_OR $notExactValue_AND
- UNION
- SELECT *
- FROM $searchTable
- LEFT JOIN Social_Summary
- ON $searchTable.ObjectType = Social_Summary.RelatedObjectType
- WHERE $searchTable.ObjectID = Social_Summary.RelatedObjectID
- $similarValue_OR $similarValue_AND $exactValue_OR $exactValue_AND
- $notSimilarValue_OR $notSimilarValue_AND $notExactValue_OR $notExactValue_AND
- $orderByValue $limitString;";
- $result = array();
- $resultRow = mysqli_query($this->Connectoin, $query);
- while ($row = mysqli_fetch_assoc($resultRow)) {
- if ($skipCounter >= $min) {
- array_push($result, $row);
- }
- $skipCounter++;
- }
- return $result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement