Beispiel #1
0
function a587_handle_extensionpoint($_params)
{
    global $REX, $I18N;
    $rexsearch = new rexsearch();
    switch ($_params['extension_point']) {
        // delete article from index
        case 'ART_DELETED':
            $rexsearch->excludeArticle($_params['id']);
            break;
            // update meta-infos for article
        // update meta-infos for article
        case 'ART_META_UPDATED':
            foreach ($rexsearch->includeColumns as $table => $columnArray) {
                if ($table == $REX['TABLE_PREFIX'] . 'article') {
                    foreach ($columnArray as $column) {
                        $rexsearch->indexColumn($table, $column, 'id', $_params['id']);
                    }
                }
            }
            break;
            // exclude (if offline) or index (if online) article
        // exclude (if offline) or index (if online) article
        case 'ART_STATUS':
            if ($_params['status'] or !empty($REX['ADDON']['settings']['rexsearch']['indexoffline'])) {
                $rexsearch->indexArticle($_params['id'], $_params['clang']);
            } else {
                $rexsearch->excludeArticle($_params['id'], $_params['clang']);
            }
            foreach ($rexsearch->includeColumns as $table => $columnArray) {
                if ($table == $REX['TABLE_PREFIX'] . 'article') {
                    foreach ($columnArray as $column) {
                        $rexsearch->indexColumn($table, $column, 'id', $_params['id']);
                    }
                }
            }
            break;
        case 'ART_ADDED':
            foreach ($rexsearch->includeColumns as $table => $columnArray) {
                if ($table == $REX['TABLE_PREFIX'] . 'article') {
                    foreach ($columnArray as $column) {
                        $rexsearch->indexColumn($table, $column, 'id', $_params['id']);
                    }
                }
            }
            break;
        case 'ART_UPDATED':
            foreach ($rexsearch->includeColumns as $table => $columnArray) {
                if ($table == $REX['TABLE_PREFIX'] . 'article') {
                    foreach ($columnArray as $column) {
                        $rexsearch->indexColumn($table, $column, 'id', $_params['id']);
                    }
                }
            }
            break;
        case 'CAT_DELETED':
            echo rex_warning($I18N->Msg('a587_cat_deleted'));
            break;
        case 'CAT_STATUS':
            if ($_params['status'] or !empty($REX['ADDON']['settings']['rexsearch']['indexoffline'])) {
                foreach (a587_getArticles(array($_params['id'])) as $art_id => $art_name) {
                    $rexsearch->indexArticle($art_id, $_params['clang']);
                }
            } else {
                foreach (a587_getArticles(array($_params['id'])) as $art_id => $art_name) {
                    $rexsearch->excludeArticle($art_id, $_params['clang']);
                }
            }
            foreach ($rexsearch->includeColumns as $table => $columnArray) {
                if ($table == $REX['TABLE_PREFIX'] . 'article') {
                    foreach ($columnArray as $column) {
                        $rexsearch->indexColumn($table, $column, 'id', $_params['id']);
                    }
                }
            }
            break;
        case 'CAT_ADDED':
            foreach ($rexsearch->includeColumns as $table => $columnArray) {
                if ($table == $REX['TABLE_PREFIX'] . 'article') {
                    foreach ($columnArray as $column) {
                        $rexsearch->indexColumn($table, $column, 'id', $_params['id']);
                    }
                }
            }
            break;
        case 'CAT_UPDATED':
            foreach ($rexsearch->includeColumns as $table => $columnArray) {
                if ($table == $REX['TABLE_PREFIX'] . 'article') {
                    foreach ($columnArray as $column) {
                        $rexsearch->indexColumn($table, $column, 'id', $_params['id']);
                    }
                }
            }
            break;
        case 'MEDIA_ADDED':
            //var_dump($_params);
            $rexsearch->indexFile(str_replace('\\', '/', substr($rexsearch->mediaFolder, strlen($rexsearch->documentRoot))) . '/' . $_params['filename']);
            foreach ($rexsearch->includeColumns as $table => $columnArray) {
                if ($table == $REX['TABLE_PREFIX'] . 'file') {
                    foreach ($columnArray as $column) {
                        $rexsearch->indexColumn($table, $column);
                    }
                }
            }
            break;
        case 'MEDIA_UPDATED':
            $rexsearch->indexFile(str_replace('\\', '/', substr($rexsearch->mediaFolder, strlen($rexsearch->documentRoot))) . '/' . $_params['filename']);
            foreach ($rexsearch->includeColumns as $table => $columnArray) {
                if ($table == $REX['TABLE_PREFIX'] . 'file') {
                    foreach ($columnArray as $column) {
                        $rexsearch->indexColumn($table, $column, 'id', $_params['file_id']);
                    }
                }
            }
            break;
        case 'MEDIA_DELETED':
            //var_dump($_params);exit;
            $rexsearch->indexFile(str_replace('\\', '/', substr($rexsearch->mediaFolder, strlen($rexsearch->documentRoot))) . '/' . $_params['filename']);
            foreach ($rexsearch->includeColumns as $table => $columnArray) {
                if ($table == $REX['TABLE_PREFIX'] . 'file') {
                    foreach ($columnArray as $column) {
                        $rexsearch->indexColumn($table, $column, 'id', $_params['file_id']);
                    }
                }
            }
            break;
        case 'SLICE_UPDATED':
            $rexsearch->indexArticle($_params['article_id'], $_params['clang']);
            break;
        case 'SLICE_SHOW':
            if (strpos($_params['subject'], '<div class="rex-message"><div class="rex-info">') and (!empty($_params['function']) or !empty($_REQUEST['slice_id']) and $_REQUEST['slice_id'] == $_params['slice_id'])) {
                $rexsearch->indexArticle($_params['article_id'], $_params['clang']);
            }
            break;
    }
    // Cache leeren
    $rexsearch->deleteCache();
}
 function RexSearch($_clang = false, $_loadSettings = true, $_useStopwords = true)
 {
     global $REX, $I18N;
     if ($_loadSettings) {
         foreach ($REX['ADDON']['settings']['rexsearch'] as $key => $value) {
             switch ($key) {
                 case 'logicalmode':
                     $this->setLogicalMode($value);
                     break;
                 case 'textmode':
                     $this->setTextMode($value);
                     break;
                 case 'searchmode':
                     $this->setSearchMode($value);
                     break;
                 case 'surroundtags':
                     $this->setSurroundTags($value);
                     break;
                 case 'limit':
                     $this->setLimit($value);
                     break;
                 case 'ci':
                     $this->setCI($value);
                     break;
                 case 'blacklist':
                     $this->setBlacklist(is_array($value) ? $value : array());
                     break;
                 case 'exclude_article_ids':
                     $this->setExcludeIDs($value);
                     break;
                 case 'exclude_category_ids':
                     if (is_array($value)) {
                         $ids = array();
                         foreach ($value as $catID) {
                             foreach (a587_getArticles(array($catID)) as $id => $name) {
                                 $ids[] = $id;
                             }
                             $this->setExcludeIDs($ids);
                         }
                     }
                     break;
                 case 'include':
                     $this->setIncludeColumns($value);
                     break;
                 case 'maxteaserchars':
                     $this->setMaxTeaserChars($value);
                     break;
                 case 'maxhighlightchars':
                     $this->setMaxHighlightedTextChars($value);
                     break;
                 case 'highlight':
                     $this->setHighlightType($value);
                     break;
                 case 'indexmode':
                     $this->indexViaHTTP = intval($value) == 0;
                     $this->indexWithTemplate = intval($value) == 2;
                     break;
                 case 'indexoffline':
                     $this->indexOffline = $value == '1';
                     break;
                 case 'similarwordsmode':
                     $this->similarwordsMode = intval($value);
                     $this->similarwords = !!intval($value);
                     break;
                 case 'similarwords_permanent':
                     $this->similarwordsPermanent = !!intval($value);
                     break;
                 case 'fileextensions':
                     $this->fileExtensions = $value;
                     break;
                 case 'indexfolders':
                     $this->includeDirectories = $value;
                     break;
                 case 'indexmediapool':
                     $this->indexMediapool = !!intval($value);
                     break;
                 case 'ep_outputfilter':
                     $this->ep_outputfilter = !!intval($value);
                     break;
             }
         }
     }
     $this->setClang($_clang);
     $this->languages = $REX['CLANG'];
     $this->tablePrefix = $REX['TABLE_PREFIX'];
     $this->includePath = $REX['INCLUDE_PATH'];
     $this->generatedPath = $REX['GENERATED_PATH'];
     $this->documentRoot = realpath($_SERVER['DOCUMENT_ROOT']);
     $this->mediaFolder = $REX['MEDIAFOLDER'];
     $locale = 'de_de';
     $langfile = new i18n($locale, $REX['INCLUDE_PATH'] . '/addons/rexsearch/lang/');
     $this->ellipsis = $langfile->Msg('a587_ellipsis');
     // german stopwords
     if ($_useStopwords) {
         include $this->includePath . '/addons/rexsearch/lang/stopwords.inc.php';
         $this->stopwords = $german_stopwords;
     }
 }
Beispiel #3
0
$rexsearch->parseSearchString('"velit esse" accusam');
if ($rexsearch->highlightType == 'array') {
    $sampleoutput .= '<pre style="font-size:1.2em;">';
    $sampleoutput .= print_r($rexsearch->getHighlightedText($sample), true);
    $sampleoutput .= '</pre>';
} else {
    $sampleoutput .= $rexsearch->getHighlightedText($sample);
}
$sampleoutput .= '</div></div>';
echo a587_getSettingsFormSection('a587_highlight', $I18N->Msg('a587_settings_highlight_header'), array(array('type' => 'string', 'id' => 'a587_rexsearch_surroundtags_start', 'name' => 'a587_rexsearch[surroundtags][0]', 'label' => $I18N->Msg('a587_settings_surroundtags_start'), 'value' => isset($REX['ADDON']['settings']['rexsearch']['surroundtags'][0]) ? htmlspecialchars($REX['ADDON']['settings']['rexsearch']['surroundtags'][0]) : ''), array('type' => 'string', 'id' => 'a587_rexsearch_surroundtags_end', 'name' => 'a587_rexsearch[surroundtags][1]', 'label' => $I18N->Msg('a587_settings_surroundtags_end'), 'value' => isset($REX['ADDON']['settings']['rexsearch']['surroundtags'][1]) ? htmlspecialchars($REX['ADDON']['settings']['rexsearch']['surroundtags'][1]) : ''), array('type' => 'hidden', 'name' => 'a587_rexsearch[limit][0]', 'value' => '0'), array('type' => 'string', 'id' => 'a587_rexsearch_limit', 'name' => 'a587_rexsearch[limit][1]', 'label' => $I18N->Msg('a587_settings_limit'), 'value' => isset($REX['ADDON']['settings']['rexsearch']['limit'][1]) ? intval($REX['ADDON']['settings']['rexsearch']['limit'][1]) : ''), array('type' => 'string', 'id' => 'a587_rexsearch_maxteaserchars', 'name' => 'a587_rexsearch[maxteaserchars]', 'label' => $I18N->Msg('a587_settings_maxteaserchars'), 'value' => isset($REX['ADDON']['settings']['rexsearch']['maxteaserchars']) ? intval($REX['ADDON']['settings']['rexsearch']['maxteaserchars']) : ''), array('type' => 'string', 'id' => 'a587_rexsearch_maxhighlightchars', 'name' => 'a587_rexsearch[maxhighlightchars]', 'label' => $I18N->Msg('a587_settings_maxhighlightchars'), 'value' => isset($REX['ADDON']['settings']['rexsearch']['maxhighlightchars']) ? intval($REX['ADDON']['settings']['rexsearch']['maxhighlightchars']) : ''), array('type' => 'select', 'id' => 'a587_rexsearch_highlight', 'name' => 'a587_rexsearch[highlight]', 'label' => $I18N->Msg('a587_settings_highlight_label'), 'options' => array(array('value' => 'sentence', 'selected' => $REX['ADDON']['settings']['rexsearch']['highlight'] == 'sentence', 'name' => $I18N->Msg('a587_settings_highlight_sentence')), array('value' => 'paragraph', 'selected' => $REX['ADDON']['settings']['rexsearch']['highlight'] == 'paragraph', 'name' => $I18N->Msg('a587_settings_highlight_paragraph')), array('value' => 'surroundtext', 'selected' => $REX['ADDON']['settings']['rexsearch']['highlight'] == 'surroundtext', 'name' => $I18N->Msg('a587_settings_highlight_surroundtext')), array('value' => 'surroundtextsingle', 'selected' => $REX['ADDON']['settings']['rexsearch']['highlight'] == 'surroundtextsingle', 'name' => $I18N->Msg('a587_settings_highlight_surroundtextsingle')), array('value' => 'teaser', 'selected' => $REX['ADDON']['settings']['rexsearch']['highlight'] == 'teaser', 'name' => $I18N->Msg('a587_settings_highlight_teaser')), array('value' => 'array', 'selected' => $REX['ADDON']['settings']['rexsearch']['highlight'] == 'array', 'name' => $I18N->Msg('a587_settings_highlight_array')))), array('type' => 'directoutput', 'output' => '<div class="rex-form-row">' . $sampleoutput . '</div>')));
$categories = array();
foreach (a587_getCategories() as $id => $name) {
    $categories[] = array('value' => $id, 'selected' => !empty($REX['ADDON']['settings']['rexsearch']['exclude_category_ids']) and is_array($REX['ADDON']['settings']['rexsearch']['exclude_category_ids']) and in_array($id, $REX['ADDON']['settings']['rexsearch']['exclude_category_ids']), 'name' => $name . ' (' . $id . ')');
}
$articles = array();
foreach (a587_getArticles() as $id => $name) {
    $articles[] = array('value' => $id, 'selected' => !empty($REX['ADDON']['settings']['rexsearch']['exclude_article_ids']) and is_array($REX['ADDON']['settings']['rexsearch']['exclude_article_ids']) and in_array($id, $REX['ADDON']['settings']['rexsearch']['exclude_article_ids']), 'name' => $name . ' (' . $id . ')');
}
echo a587_getSettingsFormSection('a587_exclude', $I18N->Msg('a587_settings_exclude'), array(array('type' => 'string', 'id' => 'a587_settings_exclude_blacklist', 'name' => 'a587_rexsearch[blacklist]', 'label' => $I18N->Msg('a587_settings_exclude_blacklist'), 'value' => isset($REX['ADDON']['settings']['rexsearch']['blacklist']) ? htmlspecialchars(implode(',', $REX['ADDON']['settings']['rexsearch']['blacklist'])) : ''), array('type' => 'multipleselect', 'id' => 'a587_rexsearch_exclude_article_ids', 'name' => 'a587_rexsearch[exclude_article_ids][]', 'label' => $I18N->Msg('a587_settings_exclude_articles'), 'size' => 15, 'options' => $articles), array('type' => 'multipleselect', 'id' => 'a587_rexsearch_exclude_category_ids', 'name' => 'a587_rexsearch[exclude_category_ids][]', 'label' => $I18N->Msg('a587_settings_exclude_categories'), 'size' => 15, 'options' => $categories)));
$options = array();
$sql_tables = new rex_sql();
foreach ($sql_tables->showTables() as $table) {
    if (false === strpos($table, '587_search') and false === strpos($table, '587_keywords')) {
        $sql_columns = new rex_sql();
        foreach ($sql_tables->showColumns($table) as $column) {
            /*switch(strtolower(substr($column['type'],0,4)))
              {
                case 'text':
                case 'char':
                case 'varc':*/
            $options[] = array('value' => htmlspecialchars($table . '`.`' . $column['name']), 'checked' => in_array($column['name'], (!empty($REX['ADDON']['settings']['rexsearch']['include'][$table]) and is_array($REX['ADDON']['settings']['rexsearch']['include'][$table])) ? $REX['ADDON']['settings']['rexsearch']['include'][$table] : array()), 'name' => $table . '  .  ' . $column['name'], 'id' => $table . '  .  ' . $column['name']);