当前位置: 首页>>代码示例>>PHP>>正文


PHP search_generate_text_SQL函数代码示例

本文整理汇总了PHP中search_generate_text_SQL函数的典型用法代码示例。如果您正苦于以下问题:PHP search_generate_text_SQL函数的具体用法?PHP search_generate_text_SQL怎么用?PHP search_generate_text_SQL使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了search_generate_text_SQL函数的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: forum_search_posts


//.........这里部分代码省略.........
        if ($forum->type == 'qanda'
            && !has_capability('mod/forum:viewqandawithoutposting', $context)) {
            if (!empty($forum->onlydiscussions)) {
                list($discussionid_sql, $discussionid_params) = $DB->get_in_or_equal($forum->onlydiscussions, SQL_PARAMS_NAMED, 'qanda'.$forumid.'_');
                $params = array_merge($params, $discussionid_params);
                $select[] = "(d.id $discussionid_sql OR p.parent = 0)";
            } else {
                $select[] = "p.parent = 0";
            }
        }

        if (!empty($forum->onlygroups)) {
            list($groupid_sql, $groupid_params) = $DB->get_in_or_equal($forum->onlygroups, SQL_PARAMS_NAMED, 'grps'.$forumid.'_');
            $params = array_merge($params, $groupid_params);
            $select[] = "d.groupid $groupid_sql";
        }

        if ($select) {
            $selects = implode(" AND ", $select);
            $where[] = "(d.forum = :forum{$forumid} AND $selects)";
            $params['forum'.$forumid] = $forumid;
        } else {
            $fullaccess[] = $forumid;
        }
    }

    if ($fullaccess) {
        list($fullid_sql, $fullid_params) = $DB->get_in_or_equal($fullaccess, SQL_PARAMS_NAMED, 'fula');
        $params = array_merge($params, $fullid_params);
        $where[] = "(d.forum $fullid_sql)";
    }

    $selectdiscussion = "(".implode(" OR ", $where).")";

    $messagesearch = '';
    $searchstring = '';

    // Need to concat these back together for parser to work.
    foreach($searchterms as $searchterm){
        if ($searchstring != '') {
            $searchstring .= ' ';
        }
        $searchstring .= $searchterm;
    }

    // We need to allow quoted strings for the search. The quotes *should* be stripped
    // by the parser, but this should be examined carefully for security implications.
    $searchstring = str_replace("\\\"","\"",$searchstring);
    $parser = new search_parser();
    $lexer = new search_lexer($parser);

    if ($lexer->parse($searchstring)) {
        $parsearray = $parser->get_parsed_array();
    // Experimental feature under 1.8! MDL-8830
    // Use alternative text searches if defined
    // This feature only works under mysql until properly implemented for other DBs
    // Requires manual creation of text index for forum_posts before enabling it:
    // CREATE FULLTEXT INDEX foru_post_tix ON [prefix]forum_posts (subject, message)
    // Experimental feature under 1.8! MDL-8830
        if (!empty($CFG->forum_usetextsearches)) {
            list($messagesearch, $msparams) = search_generate_text_SQL($parsearray, 'p.message', 'p.subject',
                                                 'p.userid', 'u.id', 'u.firstname',
                                                 'u.lastname', 'p.modified', 'd.forum');
        } else {
            list($messagesearch, $msparams) = search_generate_SQL($parsearray, 'p.message', 'p.subject',
                                                 'p.userid', 'u.id', 'u.firstname',
                                                 'u.lastname', 'p.modified', 'd.forum');
        }
        $params = array_merge($params, $msparams);
    }

    $fromsql = "{forum_posts} p,
                  {forum_discussions} d,
                  {user} u";

    $selectsql = " $messagesearch
               AND p.discussion = d.id
               AND p.userid = u.id
               AND $selectdiscussion
                   $extrasql";

    $countsql = "SELECT COUNT(*)
                   FROM $fromsql
                  WHERE $selectsql";

    $searchsql = "SELECT p.*,
                         d.forum,
                         u.firstname,
                         u.lastname,
                         u.email,
                         u.picture,
                         u.imagealt
                    FROM $fromsql
                   WHERE $selectsql
                ORDER BY p.modified DESC";

    $totalcount = $DB->count_records_sql($countsql, $params);

    return $DB->get_records_sql($searchsql, $params, $limitfrom, $limitnum);
}
开发者ID:Jtgadbois,项目名称:Pedadida,代码行数:101,代码来源:lib.php

示例2: forum_search_posts

/**
 * Returns a list of posts found using an array of search terms.
 * @param $searchterms - array of search terms, e.g. word +word -word
 * @param $courseid - if 0, we search through the whole site
 * @param $page
 * @param $recordsperpage=50
 * @param &$totalcount
 * @param $extrasql
 * @return array of posts found
 */
function forum_search_posts($searchterms, $courseid = 0, $limitfrom = 0, $limitnum = 50, &$totalcount, $extrasql = '')
{
    global $CFG, $USER;
    require_once $CFG->libdir . '/searchlib.php';
    $forums = forum_get_readable_forums($USER->id, $courseid);
    if (count($forums) == 0) {
        $totalcount = 0;
        return false;
    }
    $now = round(time(), -2);
    // db friendly
    $fullaccess = array();
    $where = array();
    foreach ($forums as $forumid => $forum) {
        $select = array();
        if (!$forum->viewhiddentimedposts) {
            $select[] = "(d.userid = {$USER->id} OR (d.timestart < {$now} AND (d.timeend = 0 OR d.timeend > {$now})))";
        }
        if ($forum->type == 'qanda') {
            if (!empty($forum->onlydiscussions)) {
                $discussionsids = implode(',', $forum->onlydiscussions);
                $select[] = "(d.id IN ({$discussionsids}) OR p.parent = 0)";
            } else {
                $select[] = "p.parent = 0";
            }
        }
        if (!empty($forum->onlygroups)) {
            $groupids = implode(',', $forum->onlygroups);
            $select[] = "d.groupid IN ({$groupids})";
        }
        if ($select) {
            $selects = implode(" AND ", $select);
            $where[] = "(d.forum = {$forumid} AND {$selects})";
        } else {
            $fullaccess[] = $forumid;
        }
    }
    if ($fullaccess) {
        $fullids = implode(',', $fullaccess);
        $where[] = "(d.forum IN ({$fullids}))";
    }
    $selectdiscussion = "(" . implode(" OR ", $where) . ")";
    // Some differences SQL
    $LIKE = sql_ilike();
    $NOTLIKE = 'NOT ' . $LIKE;
    if ($CFG->dbfamily == 'postgres') {
        $REGEXP = '~*';
        $NOTREGEXP = '!~*';
    } else {
        $REGEXP = 'REGEXP';
        $NOTREGEXP = 'NOT REGEXP';
    }
    $messagesearch = '';
    $searchstring = '';
    // Need to concat these back together for parser to work.
    foreach ($searchterms as $searchterm) {
        if ($searchstring != '') {
            $searchstring .= ' ';
        }
        $searchstring .= $searchterm;
    }
    // We need to allow quoted strings for the search. The quotes *should* be stripped
    // by the parser, but this should be examined carefully for security implications.
    $searchstring = str_replace("\\\"", "\"", $searchstring);
    $parser = new search_parser();
    $lexer = new search_lexer($parser);
    if ($lexer->parse($searchstring)) {
        $parsearray = $parser->get_parsed_array();
        // Experimental feature under 1.8! MDL-8830
        // Use alternative text searches if defined
        // This feature only works under mysql until properly implemented for other DBs
        // Requires manual creation of text index for forum_posts before enabling it:
        // CREATE FULLTEXT INDEX foru_post_tix ON [prefix]forum_posts (subject, message)
        // Experimental feature under 1.8! MDL-8830
        if (!empty($CFG->forum_usetextsearches)) {
            $messagesearch = search_generate_text_SQL($parsearray, 'p.message', 'p.subject', 'p.userid', 'u.id', 'u.firstname', 'u.lastname', 'p.modified', 'd.forum');
        } else {
            $messagesearch = search_generate_SQL($parsearray, 'p.message', 'p.subject', 'p.userid', 'u.id', 'u.firstname', 'u.lastname', 'p.modified', 'd.forum');
        }
    }
    $fromsql = "{$CFG->prefix}forum_posts p,\n                  {$CFG->prefix}forum_discussions d,\n                  {$CFG->prefix}user u";
    $selectsql = " {$messagesearch}\n               AND p.discussion = d.id\n               AND p.userid = u.id\n               AND {$selectdiscussion}\n                   {$extrasql}";
    $countsql = "SELECT COUNT(*)\n                   FROM {$fromsql}\n                  WHERE {$selectsql}";
    $searchsql = "SELECT p.*,\n                         d.forum,\n                         u.firstname,\n                         u.lastname,\n                         u.email,\n                         u.picture,\n                         u.imagealt\n                    FROM {$fromsql}\n                   WHERE {$selectsql}\n                ORDER BY p.modified DESC";
    $totalcount = count_records_sql($countsql);
    return get_records_sql($searchsql, $limitfrom, $limitnum);
}
开发者ID:r007,项目名称:PMoodle,代码行数:97,代码来源:lib.php

示例3: search_parser

     $parser = new search_parser();
     $lexer = new search_lexer($parser);
     if ($lexer->parse($searchstring)) {
         $parsearray = $parser->get_parsed_array();
         $sqlsubject = search_generate_text_SQL($parsearray, 'm.subject', '', 'm.userid', 'u.id', 'u.firstname', 'u.lastname', 'm.timecreated', '');
     }
 }
 // BODY
 $sqlbody = '';
 if (!empty($search)) {
     $searchstring = str_replace("\\\"", "\"", $search);
     $parser = new search_parser();
     $lexer = new search_lexer($parser);
     if ($lexer->parse($searchstring)) {
         $parsearray = $parser->get_parsed_array();
         $sqlbody = search_generate_text_SQL($parsearray, 'm.body', '', 'm.userid', 'u.id', 'u.firstname', 'u.lastname', 'm.timecreated', '');
         $sqlsubjectbody = !empty($sqlsubject) ? " AND ( {$sqlsubject} OR {$sqlbody} " : ' AND ' . $sqlbody;
     }
 } else {
     if (!empty($sqlsubject)) {
         $sqlsubjectbody = ' AND ' . $sqlsubject;
     } else {
         $sqlsubjectbody = '';
     }
 }
 $sqlcourse = " AND s.course = m.course AND m.course = {$courseid} AND s.course = {$courseid} ";
 // README: If you can search by to, this simple search mode don't get this results, you use advanced search.
 // Only search by: Folder and ( Subject or Body or From).
 $sql = '';
 $sql .= $select . $from . ' WHERE fm.mailid = m.id ' . ' AND m.userid = u.id ' . ' AND s.mailid = m.id ' . $wherefolders . $sqlcourse . $sqlsubjectbody . $searchfrom . ' AND ( m.userid = ' . $USER->id . ' OR ( s.userid = ' . $USER->id . ' AND s.mailid = m.id) ) ' . $groupby;
 if (!($searchmails = $DB->get_records_sql($sql))) {
开发者ID:saurabh947,项目名称:MoodleLearning,代码行数:31,代码来源:search.php

示例4: hsuforum_search_posts

/**
 * Returns a list of posts found using an array of search terms.
 *
 * @global object
 * @global object
 * @global object
 * @param array $searchterms array of search terms, e.g. word +word -word
 * @param int $courseid if 0, we search through the whole site
 * @param int $limitfrom
 * @param int $limitnum
 * @param int &$totalcount
 * @param string $extrasql
 * @return array|bool Array of posts found or false
 */
function hsuforum_search_posts($searchterms, $courseid = 0, $limitfrom = 0, $limitnum = 50, &$totalcount, $extrasql = '')
{
    global $CFG, $DB, $USER;
    require_once $CFG->libdir . '/searchlib.php';
    $forums = hsuforum_get_readable_forums($USER->id, $courseid);
    if (count($forums) == 0) {
        $totalcount = 0;
        return false;
    }
    $now = round(time(), -2);
    // db friendly
    $fullaccess = array();
    $where = array();
    $params = array('privatereply1' => $USER->id, 'privatereply2' => $USER->id);
    foreach ($forums as $forumid => $forum) {
        $select = array();
        if (!$forum->viewhiddentimedposts) {
            $select[] = "(d.userid = :userid{$forumid} OR (d.timestart < :timestart{$forumid} AND (d.timeend = 0 OR d.timeend > :timeend{$forumid})))";
            $params = array_merge($params, array('userid' . $forumid => $USER->id, 'timestart' . $forumid => $now, 'timeend' . $forumid => $now));
        }
        if ($forum->type == 'qanda' && !has_capability('mod/hsuforum:viewqandawithoutposting', $forum->context)) {
            if (!empty($forum->onlydiscussions)) {
                list($discussionid_sql, $discussionid_params) = $DB->get_in_or_equal($forum->onlydiscussions, SQL_PARAMS_NAMED, 'qanda' . $forumid . '_');
                $params = array_merge($params, $discussionid_params);
                $select[] = "(d.id {$discussionid_sql} OR p.parent = 0)";
            } else {
                $select[] = "p.parent = 0";
            }
        }
        if (!empty($forum->onlygroups)) {
            list($groupid_sql, $groupid_params) = $DB->get_in_or_equal($forum->onlygroups, SQL_PARAMS_NAMED, 'grps' . $forumid . '_');
            $params = array_merge($params, $groupid_params);
            $select[] = "d.groupid {$groupid_sql}";
        }
        if ($select) {
            $selects = implode(" AND ", $select);
            $where[] = "(d.forum = :forum{$forumid} AND {$selects})";
            $params['forum' . $forumid] = $forumid;
        } else {
            $fullaccess[] = $forumid;
        }
    }
    if ($fullaccess) {
        list($fullid_sql, $fullid_params) = $DB->get_in_or_equal($fullaccess, SQL_PARAMS_NAMED, 'fula');
        $params = array_merge($params, $fullid_params);
        $where[] = "(d.forum {$fullid_sql})";
    }
    $selectdiscussion = "(" . implode(" OR ", $where) . ")";
    $messagesearch = '';
    $searchstring = '';
    // Need to concat these back together for parser to work.
    foreach ($searchterms as $searchterm) {
        if ($searchstring != '') {
            $searchstring .= ' ';
        }
        $searchstring .= $searchterm;
    }
    // We need to allow quoted strings for the search. The quotes *should* be stripped
    // by the parser, but this should be examined carefully for security implications.
    $searchstring = str_replace("\\\"", "\"", $searchstring);
    $parser = new search_parser();
    $lexer = new search_lexer($parser);
    if ($lexer->parse($searchstring)) {
        $parsearray = $parser->get_parsed_array();
        // Experimental feature under 1.8! MDL-8830
        // Use alternative text searches if defined
        // This feature only works under mysql until properly implemented for other DBs
        // Requires manual creation of text index for hsuforum_posts before enabling it:
        // CREATE FULLTEXT INDEX foru_post_tix ON [prefix]hsuforum_posts (subject, message)
        // Experimental feature under 1.8! MDL-8830
        $usetextsearches = get_config('hsuforum', 'usetextsearches');
        if (!empty($usetextsearches)) {
            list($messagesearch, $msparams) = search_generate_text_SQL($parsearray, 'p.message', 'p.subject', 'p.userid', 'u.id', 'u.firstname', 'u.lastname', 'p.modified', 'd.forum');
        } else {
            list($messagesearch, $msparams) = search_generate_SQL($parsearray, 'p.message', 'p.subject', 'p.userid', 'u.id', 'u.firstname', 'u.lastname', 'p.modified', 'd.forum');
        }
        $params = array_merge($params, $msparams);
    }
    $fromsql = "{hsuforum_posts} p,\n                  {hsuforum_discussions} d JOIN {hsuforum} f ON f.id = d.forum,\n                  {user} u";
    foreach ($parsearray as $item) {
        if ($item->getType() == TOKEN_USER || $item->getType() == TOKEN_USERID) {
            // Additional user SQL for anonymous posts.
            $extrasql .= " AND ((f.anonymous != 1 OR p.userid = :currentuserid) OR p.reveal = 1) ";
            $params['currentuserid'] = $USER->id;
            break;
        }
//.........这里部分代码省略.........
开发者ID:cdsmith-umn,项目名称:moodle-mod_hsuforum,代码行数:101,代码来源:lib.php


注:本文中的search_generate_text_SQL函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。