From: <ir...@us...> - 2012-10-17 08:19:35
|
Revision: 10226 http://sourceforge.net/p/xoops/svn/10226 Author: irmtfan Date: 2012-10-17 08:19:31 +0000 (Wed, 17 Oct 2012) Log Message: ----------- improve: add startlag, length, striptag=true/false, strip tages excludes improve: skip empty results improve: default path for themes Modified Paths: -------------- XoopsModules/newbb/branches/irmtfan/newbb/changelog-rev10109.txt XoopsModules/newbb/branches/irmtfan/newbb/class/icon.php XoopsModules/newbb/branches/irmtfan/newbb/class/read.php XoopsModules/newbb/branches/irmtfan/newbb/docs/lang_diff.txt XoopsModules/newbb/branches/irmtfan/newbb/include/functions.text.php XoopsModules/newbb/branches/irmtfan/newbb/language/english/main.php XoopsModules/newbb/branches/irmtfan/newbb/language/persian/main.php XoopsModules/newbb/branches/irmtfan/newbb/search.php XoopsModules/newbb/branches/irmtfan/newbb/templates/newbb_search.html Modified: XoopsModules/newbb/branches/irmtfan/newbb/changelog-rev10109.txt =================================================================== --- XoopsModules/newbb/branches/irmtfan/newbb/changelog-rev10109.txt 2012-10-17 00:12:33 UTC (rev 10225) +++ XoopsModules/newbb/branches/irmtfan/newbb/changelog-rev10109.txt 2012-10-17 08:19:31 UTC (rev 10226) @@ -1,3 +1,20 @@ +date 2012-10-17 +=================================== +1- improve: add startlag, length, striptag=true/false, strip tages excludes in search form. +in newbb/search.php, newbb/include/functions.text.php, newbb/templates/newbb_search.php, newbb/language/LANG/main.php, newbb/docs/lang_diff.txt + +2- improve: in search form: dont show (skip) the result if both (post text) and (post subject) are empty. +in newbb/search.php, newbb/include/functions.text.php + +3- improve: in search fucntion: ability to create criteria for both since and search topic +in newbb/search.php + +4- comment add: the comment in class read about read_expire values was wrong +in newbb/class/read.php + +5- improve: add default path for themes/default and themes/YOUR_THEME (images, css, js) +in newbb/class/icon.php + date 2012-10-15 =================================== 1- bug fix: viewpost.php?status=new AND viewforum.php?forum=FFF&status=unread and list.topic.php?status=unread criteria was wrong when read_mode = 2(important) Modified: XoopsModules/newbb/branches/irmtfan/newbb/class/icon.php =================================================================== --- XoopsModules/newbb/branches/irmtfan/newbb/class/icon.php 2012-10-17 00:12:33 UTC (rev 10225) +++ XoopsModules/newbb/branches/irmtfan/newbb/class/icon.php 2012-10-17 08:19:31 UTC (rev 10226) @@ -102,16 +102,32 @@ $theme_path = $this->template->currentTheme->path; $rel_dir = "modules/{$dirname}/{$end_dir}"; - - $path = is_dir($theme_path."/{$rel_dir}/{$type}/") - ? $theme_path."/{$rel_dir}/{$type}" - : ( is_dir(XOOPS_THEME_PATH."/default/{$rel_dir}/{$type}/") - ? XOOPS_THEME_PATH."/default/{$rel_dir}/{$type}" - : ( empty($default) || is_dir(XOOPS_ROOT_PATH."/modules/{$dirname}/templates/{$end_dir}/{$type}/") - ? XOOPS_ROOT_PATH."/modules/{$dirname}/templates/{$end_dir}/{$type}" - : XOOPS_ROOT_PATH."/modules/{$dirname}/templates/{$end_dir}/{$default}" - ) - ); + // START irmtfan add default for all pathes + if (empty($default)) { + $path = is_dir($theme_path."/{$rel_dir}/{$type}/") + ? $theme_path."/{$rel_dir}/{$type}" + : ( is_dir(XOOPS_THEME_PATH."/default/{$rel_dir}/{$type}/") + ? XOOPS_THEME_PATH."/default/{$rel_dir}/{$type}" + : XOOPS_ROOT_PATH."/modules/{$dirname}/templates/{$end_dir}/{$type}" + ); + } else { + $path = is_dir($theme_path."/{$rel_dir}/{$type}/") + ? $theme_path."/{$rel_dir}/{$type}" + : ( is_dir($theme_path."/{$rel_dir}/{$default}/") + ? $theme_path."/{$rel_dir}/{$default}" + : ( is_dir(XOOPS_THEME_PATH."/default/{$rel_dir}/{$type}/") + ? XOOPS_THEME_PATH."/default/{$rel_dir}/{$type}" + : ( is_dir(XOOPS_THEME_PATH."/default/{$rel_dir}/{$default}/") + ? XOOPS_THEME_PATH."/default/{$rel_dir}/{$default}" + : ( is_dir(XOOPS_ROOT_PATH."/modules/{$dirname}/templates/{$end_dir}/{$type}/") + ? XOOPS_ROOT_PATH."/modules/{$dirname}/templates/{$end_dir}/{$type}" + : XOOPS_ROOT_PATH."/modules/{$dirname}/templates/{$end_dir}/{$default}" + ) // XOOPS_ROOT_PATH + ) // XOOPS_THEME_PATH {$default} + ) // XOOPS_THEME_PATH + ); // $theme_path {$default} + } + // END irmtfan add default for all pathes $paths[$end_dir . '/' . $type] = str_replace(XOOPS_ROOT_PATH, "", $path); return $paths[$end_dir . '/' . $type]; Modified: XoopsModules/newbb/branches/irmtfan/newbb/class/read.php =================================================================== --- XoopsModules/newbb/branches/irmtfan/newbb/class/read.php 2012-10-17 00:12:33 UTC (rev 10225) +++ XoopsModules/newbb/branches/irmtfan/newbb/class/read.php 2012-10-17 08:19:31 UTC (rev 10226) @@ -75,8 +75,9 @@ * seconds records will persist. * assigned from $xoopsModuleConfig["read_expire"] * <ul> - * <li>0 = never records</li> - * <li>-1 = never expires</li> + * <li>positive days = delete all read records exist in the tables before expire time // irmtfan add comment</li> + * <li>0 = never expires // irmtfan change comment</li> + * <li>-1 or any negative days = never records // irmtfan change comment</li> * </ul> * * @var integer Modified: XoopsModules/newbb/branches/irmtfan/newbb/docs/lang_diff.txt =================================================================== --- XoopsModules/newbb/branches/irmtfan/newbb/docs/lang_diff.txt 2012-10-17 00:12:33 UTC (rev 10225) +++ XoopsModules/newbb/branches/irmtfan/newbb/docs/lang_diff.txt 2012-10-17 08:19:31 UTC (rev 10226) @@ -62,6 +62,12 @@ define('_MD_SEARCHTOPIC','Search Topic'); define('_MD_SHOWSEARCH','Show results:'); define('_MD_SEARCHPOSTTEXT','posts text'); +define('_MD_SELECT_STARTLAG','Start lag of selected text'); +define('_MD_SELECT_STARTLAG_DESC','Select text from X characters before the first keyword'); +define('_MD_SELECT_LENGTH','Length of selected text'); +define('_MD_SELECT_HTML','Strip all html from result?'); +define('_MD_SELECT_EXCLUDE','Exclude these tags:'); +define('_MD_SELECT_TAG','Tag'); admin.php --------- Modified: XoopsModules/newbb/branches/irmtfan/newbb/include/functions.text.php =================================================================== --- XoopsModules/newbb/branches/irmtfan/newbb/include/functions.text.php 2012-10-17 00:12:33 UTC (rev 10225) +++ XoopsModules/newbb/branches/irmtfan/newbb/include/functions.text.php 2012-10-17 08:19:31 UTC (rev 10226) @@ -23,13 +23,14 @@ * @return text $select_text */ -function newbb_selectText($text, $queryarray, $selectstartlag = 100, $selectlength = 200, $striptags = true, $excludetags = '<br>') { +function newbb_selectText($text, $queryarray, $selectstartlag = 100, $selectlength = 200, $striptags = true, $excludetags = '<br>', $start_trimmarker = '[...]', $end_trimmarker = '[...]') { $sanitized_text = $striptags ? strip_tags($text, $excludetags) : $text; $queryarray = newbb_str2array($queryarray); $text_i = strtolower($sanitized_text); $queryarray = array_map('strtolower', $queryarray); $lengtharray = array_map('strlen', $queryarray); $maxlengthquery = max($lengtharray); + $lengthend_trimmarker = strlen($end_trimmarker); $select_text = ""; $startpos = 0; $endpos = strlen($sanitized_text); @@ -43,9 +44,12 @@ if ($pos == $endpos) break; $start = max(($pos - $selectstartlag), ($startpos - $maxlengthquery), 0); // $startpos is the last position in the previous select text $length = $maxlengthquery + $selectlength; //xoops_local("strlen", $query) + 200; - $select_text .= "<p>[...] " . xoops_substr($sanitized_text, $start, $length, " [...]") . "</p>"; + $select_text .= "<p>"; + $select_text .= ($start > 0) ? $start_trimmarker . " " : " "; + $select_text .= xoops_substr($sanitized_text, $start, $length + $lengthend_trimmarker + 1, " ". $end_trimmarker) . "</p>"; $startpos = $start + $length + 1; // start searching from next position. } + if ( empty($select_text) ) return ''; // if no text return empty string return '<span class="newbb_select_text">' . $select_text . '</span>'; } Modified: XoopsModules/newbb/branches/irmtfan/newbb/language/english/main.php =================================================================== --- XoopsModules/newbb/branches/irmtfan/newbb/language/english/main.php 2012-10-17 00:12:33 UTC (rev 10225) +++ XoopsModules/newbb/branches/irmtfan/newbb/language/english/main.php 2012-10-17 08:19:31 UTC (rev 10226) @@ -500,4 +500,10 @@ define('_MD_SEARCHTOPIC','Search Topic'); define('_MD_SHOWSEARCH','Show results:'); define('_MD_SEARCHPOSTTEXT','Posts text'); +define('_MD_SELECT_STARTLAG','Start lag of selected text'); +define('_MD_SELECT_STARTLAG_DESC','Select text from X characters before the first keyword'); +define('_MD_SELECT_LENGTH','Length of selected text'); +define('_MD_SELECT_HTML','Strip all html from result?'); +define('_MD_SELECT_EXCLUDE','Exclude these tags:'); +define('_MD_SELECT_TAG','Tag'); ?> \ No newline at end of file Modified: XoopsModules/newbb/branches/irmtfan/newbb/language/persian/main.php =================================================================== --- XoopsModules/newbb/branches/irmtfan/newbb/language/persian/main.php 2012-10-17 00:12:33 UTC (rev 10225) +++ XoopsModules/newbb/branches/irmtfan/newbb/language/persian/main.php 2012-10-17 08:19:31 UTC (rev 10226) @@ -498,4 +498,10 @@ define('_MD_SEARCHTOPIC','جستجو تاپیک'); define('_MD_SHOWSEARCH','نمایش نتایج:'); define('_MD_SEARCHPOSTTEXT','متن پست'); +define('_MD_SELECT_STARTLAG','شروع متن انتخابی'); +define('_MD_SELECT_STARTLAG_DESC','شروع انتخاب متن این مقدار کاراکتر قبل از اولین کلمه کلیدی پیدا شده در متن خواهد بود.'); +define('_MD_SELECT_LENGTH','طول متن انتخابی'); +define('_MD_SELECT_HTML','پاک کردن همه کد های html از متن جستجو شده؟'); +define('_MD_SELECT_EXCLUDE','این تگ های html را پاک نکن'); +define('_MD_SELECT_TAG','تگ'); ?> \ No newline at end of file Modified: XoopsModules/newbb/branches/irmtfan/newbb/search.php =================================================================== --- XoopsModules/newbb/branches/irmtfan/newbb/search.php 2012-10-17 00:12:33 UTC (rev 10225) +++ XoopsModules/newbb/branches/irmtfan/newbb/search.php 2012-10-17 08:19:31 UTC (rev 10226) @@ -56,13 +56,19 @@ $uid = 0; $forum = 0; $sortby = 'p.post_time'; // irmtfan remove DESC -$criteriaExtra = "";// irmtfan change to criteria +$criteriaExtra = new CriteriaCompo(); // irmtfan new criteria $searchin = "both"; $sort = ""; $since = isset($_POST['since']) ? $_POST['since'] : (isset($_GET['since']) ? $_GET['since'] : null); $next_search['since'] = $since; $term = isset($_POST['term']) ? $_POST['term'] : (isset($_GET['term']) ? $_GET['term'] : null); $uname = isset($_POST['uname']) ? $_POST['uname'] : (isset($_GET['uname']) ? $_GET['uname'] : null); +// irmtfan add select parameters +$selectstartlag = !empty($_GET['selectstartlag']) ? intval($_GET['selectstartlag']) : 100; +$selectlength = !empty($_GET['selectlength']) ? intval($_GET['selectlength']) : 200; +$selecthtml = isset($_GET['selecthtml']) ? ( !empty($_GET['selecthtml']) ? true : false ) : true; +$selectexclude = isset($_GET['selectexclude']) ? $_GET['selectexclude']: ''; +$selectexclude = newbb_str2array($selectexclude); if ($xoopsModuleConfig['wol_enabled']) { $online_handler =& xoops_getmodulehandler('online', 'newbb'); @@ -73,6 +79,15 @@ //$xoopsTpl->assign("img_folder", newbb_displayImage($forumImage['topic'])); if ( !empty($_REQUEST['submit']) || !empty($uname) || !empty($term)) { + // irmtfan filter positive numbers + $selectstartlag = !empty($selectstartlag) ? abs($selectstartlag) : 100; + $selectlength = !empty($selectlength) ? abs($selectlength) : 200; + // irmtfan add select parameters for next search + $next_search['selectstartlag'] = $selectstartlag; + $next_search['selectlength'] = $selectlength; + $next_search['selecthtml'] = $selecthtml; + $next_search['selectexclude'] = implode(", ", $selectexclude); + $start = isset($_GET['start']) ? $_GET['start'] : 0; $forum = isset($_POST['forum']) ? $_POST['forum'] : (isset($_GET['forum']) ? $_GET['forum'] : null); if (empty($forum) or $forum == 'all' or (is_array($forum) and in_array('all', $forum))) { @@ -154,15 +169,14 @@ $sortby = (in_array(strtolower($sortby), $allowed)) ? $sortby : 'p.post_time'; $searchin = isset($_POST['searchin']) ? $_POST['searchin'] : (isset($_GET['searchin']) ? $_GET['searchin'] : 'both'); $next_search['searchin'] = $searchin; - // START irmtfan use criteria - add topic search + // START irmtfan use criteria - add since and topic search if (!empty($since)) { - $criteriaExtra = new CriteriaCompo(); $criteriaExtra->add(new Criteria('p.post_time', (time() - newbb_getSinceTime($since)), '>='), 'OR'); - } elseif (is_numeric($topic) && !empty($topic)) { - $criteriaExtra = new CriteriaCompo(); + } + if (is_numeric($topic) && !empty($topic)) { $criteriaExtra->add(new Criteria('p.topic_id', $topic), 'OR'); } - // END irmtfan use criteria - add topic search + // END irmtfan use criteria - add since and topic search if ($uname_required&&(!$uid||count($uid)<1)) $results = array(); // irmtfan bug fix array() else $results = newbb_search($queries, $andor, $limit, $start, $uid, $forum, $sortby, $searchin, $criteriaExtra); // irmtfan $criteriaExtra @@ -175,13 +189,27 @@ $xoopsTpl->assign("lang_nomatch", _SR_NOMATCH); } else { - // START irmtfan add show search post_text + // START irmtfan add show search post_text, skip the result if both (post text) and (post subject) are empty + $skipresults = 0; foreach ($results as $row) { $post_text = ""; + $post_text_select = "have text"; + $post_subject_select = "have text"; if ($show_search == 'post_text') { - $post_text = newbb_selectText($row['post_text'], $queries, 100, 200, false); // strip html tags = false + $post_text = newbb_selectText($row['post_text'], $queries, $selectstartlag, $selectlength, $selecthtml, implode("",$selectexclude)); // strip html tags = $selecthtml + $post_text_select = $post_text; $post_text = newbb_highlightText($post_text, $queries); + } elseif ( "title" != $searchin && !empty($selecthtml) ) { // find if there is any query left after strip html tags + $post_text_select = newbb_selectText($row['post_text'], $queries, 100, 30000, true, implode("",$selectexclude)); // strip html tags = true } + if ("text" != $searchin) { + $post_subject_select = newbb_selectText($row['title'], $queries, 100, 400, true);// strip html tags = true + } + // if no text remained after select text continue + if (empty($post_text_select) && empty($post_subject_select)) { + $skipresults = $skipresults + 1; + continue; + } // add newbb_highlightText function to subject - add post_text $xoopsTpl->append('results', array('forum_name' => $row['forum_name'], 'forum_link' => $row['forum_link'], 'link' => $row['link'], 'title' => newbb_highlightText($row['title'],$queries), 'poster' => $row['poster'], 'post_time' => formatTimestamp($row['time'], "m"), 'post_text' => $post_text)); } @@ -209,16 +237,22 @@ if ($num_results == $limit) { $next = $start + $limit; $queries = implode(',',$queries); - $search_url_next = $search_url."&start={$next}"; // irmtfan add { and } + $search_url_next = $search_url."&direction=next&start={$next}"; // irmtfan add { and } direction=next $search_next = '<a href="'.htmlspecialchars($search_url_next).'">'._SR_NEXT.'</a>'; $xoopsTpl->assign("search_next", $search_next); } if ( $start > 0 ) { $prev = $start - $limit; - $search_url_prev = $search_url."&start={$prev}"; // irmtfan add { and } + $search_url_prev = $search_url."&direction=previous&start={$prev}"; // irmtfan add { and } and direction=previous $search_prev = '<a href="'.htmlspecialchars($search_url_prev).'">'._SR_PREVIOUS.'</a>'; $xoopsTpl->assign("search_prev", $search_prev); } + // irmtfan if all results skipped then redirect to the next/previous page + if ( $num_results == $skipresults ) { + $direction = isset($_POST['direction']) ? $_POST['direction'] : (isset($_GET['direction']) ? $_GET['direction'] : 'next'); + $search_url_redirect = (strtolower($direction) == "next") ? $search_url_next : $search_url_prev; + redirect_header($search_url_redirect, 1, constant(strtoupper("_SR_{$direction}"))); + } } // irmtfan add newbb_highlightText function $search_info = _SR_KEYWORDS.": ".$search_info_keywords; @@ -228,6 +262,10 @@ } // add num_results $search_info .= "<br />" . sprintf(_SR_SHOWING, $start + 1, $start + $num_results); + // if any result skip show the counter + if (!empty($skipresults)) { + $search_info .= " - " . sprintf(_SR_FOUND, $num_results - $skipresults); + } $xoopsTpl->assign("search_info", $search_info); } // START irmtfan - assign template vars for search @@ -291,6 +329,47 @@ $sortby_select .= ">" . _MD_TOPIC . "</option>"; $sortby_select .= "</select>"; $xoopsTpl->assign("sortby_selection_box", $sortby_select); + +/* selectstartlag */ +$xoopsTpl->assign("selectstartlag_select", $selectstartlag); + +/* selectlength */ +$xoopsTpl->assign("selectlength_select", $selectlength); + +/* selecthtml */ +$selecthtml_select = ""; +$selecthtml_select .= "<input type=\"radio\" name=\"selecthtml\" value=\"1\" onclick=\"javascript: {document.Search.selectexcludeset.disabled=false;}\""; +if (!empty($selecthtml)) $selecthtml_select .= " checked"; +$selecthtml_select .= " />" . _YES . " "; +$selecthtml_select .= "<input type=\"radio\" name=\"selecthtml\" value=\"0\" onclick=\"javascript: {document.Search.selectexcludeset.disabled=true;}\""; +if (empty($selecthtml)) $selecthtml_select .= " checked"; +$selecthtml_select .= " />" . _NO . " "; +$xoopsTpl->assign("selecthtml_radio", $selecthtml_select); + +/* selectexclude */ +$selectexclude_select = "<fieldset name=\"selectexcludeset\""; +if (empty($selecthtml)) $selectexclude_select .= " disabled"; +$selectexclude_select .= " />"; +$selectexclude_select .= "<input type=\"checkbox\" name=\"selectexclude[]\" value=\"<p>\""; +if (in_array("<p>", $selectexclude)) $selectexclude_select .= " checked"; +$selectexclude_select .= " /> " . _MD_SELECT_TAG . " p "; +$selectexclude_select .= "<input type=\"checkbox\" name=\"selectexclude[]\" value=\"<br>\""; +if (in_array("<br>", $selectexclude)) $selectexclude_select .= " checked"; +$selectexclude_select .= " /> " . _MD_SELECT_TAG . " br "; +$selectexclude_select .= "<input type=\"checkbox\" name=\"selectexclude[]\" value=\"<a>\""; +if (in_array("<a>", $selectexclude)) $selectexclude_select .= " checked"; +$selectexclude_select .= " /> " . _MD_SELECT_TAG . " a "; +$selectexclude_select .= "<input type=\"checkbox\" name=\"selectexclude[]\" value=\"<div>\""; +if (in_array("<div>", $selectexclude)) $selectexclude_select .= " checked"; +$selectexclude_select .= " /> " . _MD_SELECT_TAG . " div "; +$selectexclude_select .= "<input type=\"checkbox\" name=\"selectexclude[]\" value=\"<img>\""; +if (in_array("<img>", $selectexclude)) $selectexclude_select .= " checked"; +$selectexclude_select .= " /> " . _MD_SELECT_TAG . " img "; +$selectexclude_select .= "<input type=\"checkbox\" name=\"selectexclude[]\" value=\"<span>\""; +if (in_array("<span>", $selectexclude)) $selectexclude_select .= " checked"; +$selectexclude_select .= " /> " . _MD_SELECT_TAG . " span "; +$selectexclude_select .= "</fieldset>"; +$xoopsTpl->assign("selectexclude_check_box", $selectexclude_select); // END irmtfan - assign template vars for search // irmtfan get since from the user for selction box Modified: XoopsModules/newbb/branches/irmtfan/newbb/templates/newbb_search.html =================================================================== --- XoopsModules/newbb/branches/irmtfan/newbb/templates/newbb_search.html 2012-10-17 00:12:33 UTC (rev 10225) +++ XoopsModules/newbb/branches/irmtfan/newbb/templates/newbb_search.html 2012-10-17 08:19:31 UTC (rev 10226) @@ -47,6 +47,24 @@ <td class="head" id="align_right"><strong><{$smarty.const._MD_SINCE}></strong> </td> <td class="even"><{$since_selection_box}></td> </tr> +<!-- START irmtfan add select text options --> + <tr> + <td class="head" id="align_right" title="<{$smarty.const._MD_SELECT_STARTLAG_DESC}>"><strong><{$smarty.const._MD_SELECT_STARTLAG}></strong> </td> + <td class="even" title="<{$smarty.const._MD_SELECT_STARTLAG_DESC}>"><input type="text" name="selectstartlag" value="<{$selectstartlag_select}>" /></td> + </tr> + <tr> + <td class="head" id="align_right"><strong><{$smarty.const._MD_SELECT_LENGTH}></strong> </td> + <td class="even"><input type="text" name="selectlength" value="<{$selectlength_select}>" /></td> + </tr> + <tr> + <td class="head" id="align_right"><strong><{$smarty.const._MD_SELECT_HTML}></strong> </td> + <td class="even"><{$selecthtml_radio}></td> + </tr> + <tr> + <td class="head" id="align_right"><strong><{$smarty.const._MD_SELECT_EXCLUDE}></strong> </td> + <td class="even"><{$selectexclude_check_box}></td> + </tr> +<!-- END irmtfan add select text options --> <!-- START irmtfan add show search --> <tr> <td class="head" id="align_right"><strong><{$smarty.const._MD_SHOWSEARCH}></strong> </td> |