AddOn


Search Index [REX 4] UTF 8 Update

Beschreibung

UTF8 sichers suchen mit dem Addon – siehe http://www.redaxo.org/de/download/addons/?addon_id=275&searchtxt=search&cat_id=-1

Die regexen brauchten ein u am Ende um das ganze UTF safe zu machen

SC siehe Beschreibung.

pls integrate & Delete

<?php

class rex_search_index
{

var $clang = -1; var $path = ‘’; var $status = false; var $searchIds = false; var $surroundchars = 20; var $sourround_start_tag = ““; var $sourround_end_tag = ““; var $striptags = true; var $only_warnings = FALSE;

function rex_indexArticle($id = 0,$clang = 0) { global $REX;

$tmp = $REX[‘GG’]; $REX[‘GG’] = true; $REX_ARTICLE = new rex_article; $REX_ARTICLE->setCLang($clang); $REX_ARTICLE->setArticleId($id); $artcache = $REX_ARTICLE->getArticle();

// HTML Code im Artikel filtern if ($this->striptags) $artcache = preg_replace(‘@<[\/\!]*?[^<>]*?>@si’, ‘’, $artcache);

// speichern $sql = ‘UPDATE ‘.$REX[‘TABLE_PREFIX’].‘article set vt=”’.mysql_escape_string($artcache).’” where id=’.$id.’ and clang=’.$clang.’‘; $db2 = new rex_sql; // $db2->debugsql = 1; $db2->setQuery($sql); $REX[‘GG’] = $tmp;

}

function rex_indexSite() {

global $REX;

if ($this->only_warnings) error_reporting(E_WARNINGS);

$SQL = “SELECT id,clang FROM “.$REX[‘TABLE_PREFIX’].“article “; $WHERE = “”;

$LIMIT = “”; $db2 = new rex_sql; // $db2->debugsql = 1; $stop = false; $oldstart = 0; if (isset($_REQUEST[“oldstart”])) $oldstart = (int) $_REQUEST[“oldstart”];

$start = 0; if (isset($_REQUEST[“start”])) $start = (int) $_REQUEST[“start”];

if ($oldstart == $start && $start != 0) { $stop = true; }

if ($start != 0) { $LIMIT = “LIMIT $start, 10000”; $oldstart = $start; }else { // $db2->setQuery(‘TRUNCATE TABLE rex_12_search_index’); }

if ($stop) {

return “Bei der Indexgenerieung ist ein Fehler unterlaufen. Das kann an eventuell fehlerhaften Artikeln liegen. Bei folgendem Artikel kam ein Fehler. -> Artikel“;

}else {

$i=$start; $articles = $db2->getArray(“$SQL $LIMIT”); $CONTENT = ob_get_contents(); // ob_end_clean();

foreach ($articles as $var) {

ob_end_clean(); ob_start(); echo “<span class="caps">REX</span> <span class="caps">SEARCH</span> Scriptlaufzeit war zu kurz, der Prozess wird sofort weitergeführt. Sollten Sie dennoch abbrechen wollen dann hier.

Sollte das Script sich nicht erneut aufrufen, dann hier klicken um den Prozess weiterzuführen.

Bei diesem Artikel wurde abgebrochen



“;

$this->rex_indexArticle($var[‘id’],$var[‘clang’]);

$i++; }

ob_end_clean(); echo $CONTENT; $REX[‘GG’] = false;

return “Suchindex wurde erneuert!”; } }

function rex_search($keywords) { GLOBAL $REX;

if ($this->only_warnings) error_reporting(E_WARNINGS);

if (trim($keywords) == ‘’) return false;
  1. $keywords = mysql_escape_string((trim($keywords))); $keywords = mysql_escape_string((htmlentities(trim($keywords))));

$suche = new rex_sql; // $suche->debugsql = true;

// ——————————— clang check if ($this->clang > -1) { $clang_set = “AND clang=’”.$this->clang.”’”; } else { $clang_set = ‘’; } // ——————————— status check if ($this->status) { $status_set = “AND status=’”.$this->status.”’”; } else { $status_set = ‘’; } // ——————————— path check if ($this->path) { $path_set = “AND path LIKE (‘|”.$this->path.”|%’)”; } else { $path_set = ‘’; } // ——————————— searchIds check if ($this->searchIds) { $find_set = “(FIND_IN_SET(‘$keywords’,REPLACE) * 100) +”; $like_set = “id = ‘$keywords’ OR”; } $sql = “ SELECT (FIND_IN_SET(‘$keywords’,REPLACE) * 10) + (FIND_IN_SET(‘$keywords’,REPLACE) * 5) + $find_set (FIND_IN_SET(‘$keywords’,REPLACE) * 5) AS COUNTWORD, id , art_keywords, name , vt , clang FROM “.$REX[‘TABLE_PREFIX’].“article WHERE ( name LIKE (‘$keywords’) OR art_keywords LIKE (‘$keywords’) OR $like_set vt LIKE (‘$keywords’) ) $clang_set $path_set $status_set ORDER BY COUNTWORD DESC LIMIT 0,50 “; $suche->setQuery($sql); for ($c = 0; $c < $suche->getRows(); $c ++) { $regex = “/\b.{0,”.$this->surroundchars.”}”.$keywords.”.{0,”.$this->surroundchars.”}\b/imu”; $regexcontent = $suche->getValue(‘name’).$suche->getValue(‘art_keywords’).$suche->getValue(‘vt’); #$regexcontent = utf8_decode($regexcontent); preg_match_all($regex, $regexcontent, $matches); $result[$c][‘id’] = $suche->getValue(‘id’); $result[$c][‘name’] = $suche->getValue(‘name’); $result[$c][‘clang’] = $suche->getValue(‘clang’); #print_R($matches0); if (is_array($matches0)) { $result[$c][‘highlightedtext’] = ‘’; foreach ($matches0 as $var) { $result[$c][‘highlightedtext’] .= “ …”.preg_replace(“/(“.$keywords.”)/imsu”, $this->sourround_start_tag.’\\1’.$this->sourround_end_tag, $var).”… “; } } $suche->next(); } return $result; } } ?>

Umsetzung

gerald urbas

www.crossmediapool.at


Versionen

4.3

Für REDAXO
4.3.x
Veröffentlicht am
21.02.2011