示例#1
0
 function searchAttach($params, vB_Database $db, $check_only = false)
 {
     if ($check_only) {
         return true;
     }
     $query = array("a.nodeid <> 0");
     if ($params['search']['filename']) {
         $query[] = "a.filename LIKE '%" . $db->escape_string_like($params['search']['filename']) . "%' ";
     }
     if ($params['search']['attachedbyuser']) {
         $query[] = "node.userid=" . $params['search']['attachedbyuser'] . " ";
     }
     if ($params['search']['datelinebefore'] and $params['search']['datelineafter']) {
         $query[] = "(fd.dateline BETWEEN UNIX_TIMESTAMP('" . $db->escape_string($params['search']['datelineafter']) . "') AND UNIX_TIMESTAMP('" . $db->escape_string($params['search']['datelinebefore']) . "')) ";
     } else {
         if ($params['search']['datelinebefore']) {
             $query[] = "fd.dateline < UNIX_TIMESTAMP('" . $db->escape_string($params['search']['datelinebefore']) . "') ";
         } else {
             if ($params['search']['datelineafter']) {
                 $query[] = "fd.dateline > UNIX_TIMESTAMP('" . $db->escape_string($params['search']['datelineafter']) . "') ";
             }
         }
     }
     if ($params['search']['downloadsmore'] and $params['search']['downloadsless']) {
         $query[] = "(a.counter BETWEEN " . $params['search']['downloadsmore'] . " AND " . $params['search']['downloadsless'] . ") ";
     } else {
         if ($params['search']['downloadsless']) {
             $query[] = "a.counter < " . $params['search']['downloadsless'] . " ";
         } else {
             if ($params['search']['downloadsmore']) {
                 $query[] = "a.counter > " . $params['search']['downloadsmore'] . " ";
             }
         }
     }
     if ($params['search']['sizemore'] and $params['search']['sizeless']) {
         $query[] = "(fd.filesize BETWEEN " . $params['search']['sizemore'] . " AND " . $params['search']['sizeless'] . ") ";
     } else {
         if ($params['search']['sizeless']) {
             $query[] = "fd.filesize < " . $params['search']['sizeless'] . " ";
         } else {
             if ($params['search']['sizemore']) {
                 $query[] = "fd.filesize > " . $params['search']['sizemore'] . " ";
             }
         }
     }
     // 		if ($params['search']['visible'] != -1)
     // 		{
     // 			$query[] = "a.state = '" . ($params['search']['visible'] ? 'visible' : 'moderation') . "' ";
     // 		}
     $tables = "FROM " . TABLE_PREFIX . "node AS node\n\t\t\t\tINNER JOIN " . TABLE_PREFIX . "attach AS a ON (node.nodeid = a.nodeid)\n\t\t\t\tINNER JOIN " . TABLE_PREFIX . "filedata AS fd ON (a.filedataid = fd.filedataid)\n\t\t";
     $where = "WHERE " . implode(" AND ", $query);
     $limit = "";
     $order = "";
     if (!empty($params['countonly'])) {
         $fields = "COUNT(*) AS count, SUM(fd.filesize) AS sum";
     } else {
         $fields = "node.*, fd.filesize, a.filedataid, a.filename, fd.dateline";
         $limit = "LIMIT " . ($params['pagenum'] - 1) * $params['search']['results'] . ", " . $params['search']['results'];
         $order = 'ORDER BY ' . $params['search']['orderby'] . ' ' . $params['search']['ordering'];
     }
     $sql = "\n\t\t\t\tSELECT {$fields}\n\t\t\t\t{$tables}\n\t\t\t\t{$where}\n\t\t\t\t{$order}\n\t\t\t\t{$limit}\n\t\t";
     $resultclass = 'vB_dB_' . $this->db_type . '_result';
     $config = vB::getConfig();
     if (isset($config['Misc']['debug_sql']) and $config['Misc']['debug_sql']) {
         echo "sql: {$sql}<br />\n";
     }
     $result = new $resultclass($db, $sql);
     return $result;
 }