예제 #1
0
/**
* @desc Realiza una búsqueda en el módulo desde EXM
*/
function bxpressSearch($queryarray, $andor, $limit, $offset, $userid = 0)
{
    global $myts, $module;
    $db = XoopsDatabaseFactory::getDatabaseConnection();
    $tbl1 = $db->prefix("mod_bxpress_topics");
    $tbl2 = $db->prefix("mod_bxpress_posts_text");
    $tbl3 = $db->prefix("mod_bxpress_posts");
    if ($userid <= 0) {
        $sql = "SELECT a.*,b.*,c.* FROM {$tbl1} a, {$tbl2} b, {$tbl3} c ";
        $sql1 = '';
        foreach ($queryarray as $k) {
            $sql1 .= ($sql1 == '' ? '' : " {$andor} ") . " (\n        \t    (a.title LIKE '%{$k}%' AND a.id_topic=c.id_topic) OR \n        \t     (b.post_text LIKE '%{$k}%' AND b.post_id=c.id_post))";
        }
        $sql .= $sql1 != '' ? "WHERE {$sql1}" : '';
        $sql .= $userid > 0 ? "GROUP BY c.id_topic" : " GROUP BY c.id_topic";
        $sql .= " ORDER BY c.post_time DESC LIMIT {$offset}, {$limit}";
        $result = $db->queryF($sql);
    } else {
        $sql = "SELECT a.*, b.*, c.post_text FROM {$tbl3} a, {$tbl1} b, {$tbl2} c WHERE a.uid='{$userid}' AND b.id_topic=a.id_topic \n                AND c.post_id=a.id_post ";
        $sql1 = '';
        foreach ($queryarray as $k) {
            $sql1 .= ($sql1 == '' ? 'AND ' : " {$andor} ") . "\n                b.title LIKE '%{$k}%' AND c.post_text LIKE '%{$k}%'";
        }
        $sql .= $sql1;
        $sql .= "ORDER BY a.post_time DESC\n                LIMIT {$offset}, {$limit}";
        $result = $db->query($sql);
    }
    include_once XOOPS_ROOT_PATH . '/modules/bxpress/class/bxpost.class.php';
    include_once XOOPS_ROOT_PATH . '/modules/bxpress/class/bxfunctions.class.php';
    $tc = TextCleaner::getInstance();
    $ret = array();
    while ($row = $db->fetchArray($result)) {
        $post = new bXPost();
        $post->assignVars($row);
        $rtn = array();
        $rtn['image'] = 'images/forum16.png';
        $rtn['link'] = $post->permalink();
        $rtn['title'] = $row['title'];
        $rtn['time'] = $row['post_time'];
        $rtn['uid'] = $row['uid'];
        $rtn['desc'] = substr($tc->clean_disabled_tags($row['post_text']), 0, 150) . '...';
        $ret[] = $rtn;
    }
    return $ret;
}
예제 #2
0
파일: topic.php 프로젝트: petitours/bxpress
$edit = $forum->isAllowed($groups, 'edit');
$delete = $forum->isAllowed($groups, 'delete');
$report = $forum->isAllowed($groups, 'reply');
$moderator = $xoopsUser ? $forum->isModerator($xoopsUser->uid()) : false;
$admin = $xoopsUser ? $xoopsUser->isAdmin() : false;
$tbl1 = $db->prefix("mod_bxpress_posts");
$tbl2 = $db->prefix("mod_bxpress_posts_text");
$tbl3 = $db->prefix("mod_bxpress_likes");
$sql = "SELECT\n          posts.*,\n          texts.*,\n          (SELECT COUNT(*) FROM {$tbl1} WHERE parent=posts.id_post) as replies,\n          GROUP_CONCAT(tlikes.uid ORDER BY " . ($xoopsUser ? "tlikes.uid=" . $xoopsUser->uid() . ' DESC' : 'tlikes.uid') . ") as liked\n        FROM\n          {$tbl1} posts\n        LEFT JOIN {$tbl3} tlikes ON tlikes.post=posts.id_post\n        INNER JOIN {$tbl2} texts ON texts.post_id=posts.id_post\n        WHERE\n            posts.id_topic='" . $topic->id() . "'\n        AND\n            texts.post_id=posts.id_post\n        GROUP BY\n            posts.id_post\n        ORDER BY\n            posts.post_time ASC,\n            posts.parent ASC\n        LIMIT\n            {$start},{$limit}";
$result = $db->query($sql);
$users = array();
$posts_ids = array();
$posts = array();
while ($row = $db->fetchArray($result)) {
    $post = new bXPost();
    $post->assignVars($row);
    // Permisos de edición y eliminación
    $canedit = $moderator || $admin ? true : $edit && $post->isOwner();
    $candelete = $moderator || $admin ? true : $delete && $post->isOwner();
    //Permiso de visualizar mensaje
    $canshow = $moderator || $admin ? true : false;
    // Datos del usuario
    if ($post->user() > 0) {
        if (!isset($users[$post->user()])) {
            $users[$post->user()] = new XoopsUser($post->user());
        }
        $bbUser = $users[$post->user()];
        $userData = array();
        $userData['id'] = $bbUser->uid();
        $userData['uname'] = $bbUser->uname();
        $userData['name'] = $bbUser->getVar('name') != '' ? $bbUser->getVar('name') : $bbUser->uname();
예제 #3
0
 public function getPosts($object = true, $id_as_key = true)
 {
     $result = $this->db->query("SELECT * FROM " . $this->db->prefix("mod_bxpress_posts") . " WHERE id_topic='" . $this->id() . "'");
     $ret = array();
     while ($row = $this->db->fetchArray($result)) {
         if ($object) {
             $attach = new bXPost();
             $attach->assignVars($row);
             if ($id_as_key) {
                 $ret[$row['id_post']] = $attach;
             } else {
                 $ret[] = $attach;
             }
         } else {
             if ($id_as_key) {
                 $ret[$row['id_post']] = $row;
             } else {
                 $ret[] = $row;
             }
         }
     }
     return $ret;
 }
예제 #4
0
파일: index.php 프로젝트: petitours/bxpress
$daysnum = ceil($daysnum / 86400);
//Lista de Mensajes recientes
$tbl1 = $db->prefix('mod_bxpress_posts');
$tbl2 = $db->prefix('mod_bxpress_topics');
$tbl3 = $db->prefix('mod_bxpress_posts_text');
$tbl4 = $db->prefix('mod_bxpress_forums');
$sql = "SELECT a.*, b.*, c.post_text, d.* \n        FROM {$tbl1} a, {$tbl2} b, {$tbl3} c, {$tbl4} d \n        WHERE b.id_topic = a.id_topic AND c.post_id=a.id_post AND d.id_forum=b.id_forum\n        GROUP BY a.id_topic \n        ORDER BY a.post_time DESC \n        LIMIT 0,5";
$result = $db->query($sql);
$posts = array();
$topics = array();
$topic = new bXTopic();
$forum = new bXForum();
$pt = new bXPost();
while ($row = $db->fetchArray($result)) {
    //print_r($row);
    $pt->assignVars($row);
    $post = array('id' => $row['last_post'], 'date' => sprintf(__('Last post on %s', 'bxpress'), bXFunctions::formatDate($row['post_time'])), 'by' => sprintf(__('By %s', 'bxpress'), $row['poster_name']), 'link' => $pt->permalink(), 'uid' => $row['uid']);
    $topic->assignVars($row);
    $forum->assignVars($row);
    $topics[] = array('id' => $row['id_topic'], 'title' => $row['title'], 'post' => $post, 'link' => $topic->permalink(), 'forum' => array('id' => $forum->id(), 'name' => $forum->name(), 'link' => $forum->permalink()));
}
$sql = "SELECT * FROM {$tbl2} ORDER BY replies DESC LIMIT 0,5";
$result = $db->query($sql);
$poptops = array();
$topic = new bXTopic();
while ($row = $db->fetchArray($result)) {
    $topic->assignVars($row);
    $forum->assignVars($row);
    $poptops[] = array('id' => $topic->id(), 'title' => $topic->title(), 'date' => sprintf(__('Created on %s', 'bxpress'), bXFunctions::formatDate($row['date'])), 'replies' => $topic->replies(), 'link' => $topic->permalink(), 'forum' => array('id' => $forum->id(), 'name' => $forum->name(), 'link' => $forum->permalink()));
}
unset($post, $pt, $topic, $result, $row, $sql, $tbl1, $tbl2, $tbl3);