📄 all.php
字号:
<?phpdefined('WikyBlog') or die("Not an entry point...");// query class// BROWSE FUNCTION// DisplayDefault////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// QUERY CLASS////--------------------------// CLASS QUERY//--------------------------// class query{ var $owner; var $title; var $query; var $fields; var $field; var $rowLimit = 5; var $searchUrl; var $maxRows; // = 500; //new var $useTables = false; var $currLabel; var $browseString; var $numTables = 0; var $numFields = 0; var $spaces = array(); var $joinAllTo = false; //could be set to $wbTables['all_files'] or $wbTables['all_search'] var $selectFrom = false; var $allSelect = array('modified','posted','created','username','ip','keywords','flags'); var $infoSelect = array('owner','uniqLink','dTitle'); ////////////////////////////////////////////////////////////////////////////// // // Query Functions // // /// ORDER-BY function orderBy(){ if( empty($this->field) ){ if( empty($_GET['field']) ){ reset($this->fields); $this->field = key($this->fields); }elseif( is_numeric($_GET['field']) ){ $temp = array_keys($this->fields); if( isset($temp[(int)$_GET['field']]) ){ $this->field = $temp[(int)$_GET['field']]; } } } if( empty($this->field) ){ return; } $this->query .= ' ORDER BY '.$this->fields[$this->field]; if( isset($_GET['ascending']) && $_GET['ascending'] == 'true' ){ $this->query .= ' ASC '; }else{ $this->query .= ' DESC '; } } /// LIMIT function limit(){ $_GET += array('offset'=>0); if( $_GET['offset'] < 0){ unset($_GET['offset']); }else{ $a = round($_GET['offset']/$this->rowLimit); $_GET['offset'] = $a*$this->rowLimit; } if( !empty($_GET['offset']) ){ $this->query .= ' LIMIT '. (int)$_GET['offset'] .', '.$this->rowLimit; }else{ //$_GET['offset'] = 0; $this->query .= ' LIMIT 0,'.$this->rowLimit; } } /// queryAllFiles function queryAllFiles(){ global $dbInfo,$lang,$wbTables; $unused = array(); if( !$this->joinAllTo ){ $this->joinAllTo =& $wbTables['all_files']; $this->selectFrom =& $wbTables['all_files']; } //// Select $this->query = 'SELECT SQL_CALC_FOUND_ROWS '; foreach($this->allSelect as $key => $value){ if( is_numeric($key) ){ $this->query .= $this->joinAllTo.'.`'.$value.'`, '; }else{ $this->query .= $key.' as '.$value.', '; } } foreach($dbInfo as $space => $info){ if( !isset($info['dbTable']) ){ continue; } $this->numTables++; //row selects if( is_array($this->useTables) && !isset($this->useTables[$space]) ){ $unused[] = $space; foreach($this->infoSelect as $tempKey){ $selectA[] = ' "" '; } }else{ foreach($this->infoSelect as $tempKey){ if($tempKey === 'dTitle'){ $selectA[] = $this->getDTitle($space); }else{ $selectA[] = wbData::dbInfo($space,$tempKey); } } } $fromA[] = $info['dbTable']; $this->spaces[] = $space; } $this->numFields = count($selectA); $this->query .= implode(', ',$selectA); //// FROM $this->query .= ' FROM '.$this->selectFrom; if( count($fromA) === 1){ $this->query .= ' INNER JOIN '.$fromA[0].' ON '.$from[0].'.`file_id` = '.$this->joinAllTo.'.`file_id` '; }else{ foreach($fromA as $value){ $this->query .= ' LEFT JOIN '.$value.' ON '.$value.'.`file_id` = '.$this->joinAllTo.'.`file_id` '; } } //// WHERE .. unused // This is actually a fairly efficient solution, EXPLAIN SELECT ... shows us "NOT EXISTS" $this->query .= ' WHERE 1 '; //HACK if( count($fromA) > 1){ $temp = array(); $this->query .= ' AND ('; foreach($fromA as $value){ $temp[] = ' ('.$value.'.`file_id` IS NOT NULL ) '; } $this->query .= implode(' OR ',$temp); $this->query .= ' ) '; } if( count($unused) > 0 ){ foreach($unused as $space){ $this->query .= ' AND '.$dbInfo[$space]['dbTable'].'.`file_id` IS NULL '; } } } // Creates SQL statement to create a displayTitle for each row // // function getDTitle($space){ global $lang,$dbInfo; $format = wbData::dbInfo($space,'dTitle'); $tempA = array(); foreach( $format as $piece => $how){ if( $how == 0){ $tempA[] = $piece; }else{ $tempA[] = '"'.$lang[$piece].'"'; } } return ' CONCAT( '.implode($tempA,', ').') as dTitle '; } //Get The Values From a queryAllFiles type of request function queryAllResult(&$row){ $numEach = count($this->infoSelect); $startIndex = count($row) - ($numEach*$this->numTables); $i = 0; while( empty($row[$startIndex]) && $startIndex < count($row) ){ $i++; $startIndex+=$numEach; } $row['space'] = $this->spaces[$i]; //rowLabels $i = 0; foreach($this->infoSelect as $tempKey){ $row[$tempKey] =& $row[$startIndex+($i++)]; } $i=0; foreach($this->allSelect as $key => $value){ if( is_numeric($key) ){ $row[$value] =& $row[$i++]; }else{ $row[$value] =& $row[$i++]; } } } ////////////////////////////////////////////////////////////////////////////// // // Link Functions // // //setLinks() // must set $this->currLabel at least function setLinks(&$currentPageNum,&$rowsFound,&$tabLabel){ global $dbObject; $maxIndex = ceil($rowsFound/$this->rowLimit); $maxIndex = max(1,$maxIndex);//set values for at least first page //$dbObject->links $text=''; $i = max(1,($currentPageNum - 2)); $finishIndex = min(($i+4),$maxIndex); $finishIndex = max($finishIndex,$currentPageNum); while($i <= $finishIndex){ if( $i == 1){ $label = $tabLabel; }else{ $label = $tabLabel.' ('.$i.')'; } if($i == $currentPageNum){ $this->currLabel = $label; } $newOffset = ($i-1) * $this->rowLimit; $dbObject->links[$label] = browseLink2($this->searchUrl,$this->searchUrlLow,$newOffset,$this->browseString); $i++; } //Text links at the bottom of the search $i = max(1,($currentPageNum - 7)); $finishIndex = min(($i+13),$maxIndex); if( $i > 1){ $text = ' '.browseLink2($this->searchUrl,$this->searchUrlLow,0,$this->browseString,1); if( $i > 2 ){ $text .= ' ... '; } } while($i <= $finishIndex){ $newOffset = ($i-1) * $this->rowLimit; if($currentPageNum === $i){ $text .= ' '.$i.' '; }else{ $text .= ' '.browseLink2($this->searchUrl,$this->searchUrlLow,$newOffset,$this->browseString,$i); } $i++; } $last = ceil($rowsFound/$this->rowLimit); if($i <= $last){ $lastOffset = ($last-1) * $this->rowLimit; $text .= ' ... '.browseLink2($this->searchUrl,$this->searchUrlLow,$lastOffset,$this->browseString,$last); } return $text.' '; } function browseString($overWrite=false){ if( !is_array($_GET) ){ return ''; } $string = ''; $sep = ''; if( is_array($overWrite) ){ $overWrite = array_merge($_GET,$overWrite); //later values overwrite! }else{ $overWrite = $_GET; } if( isset($this->overWrite) && is_array($this->overWrite) ){ $overWrite = array_merge($overWrite,$this->overWrite); } return arrayToBrowseString($overWrite); } ////////////////////////////////////////////////////////////////////////////// // // Display Functions // function mysqlFetch(&$result){ return mysql_fetch_row($result); } //0 function displayNumbers(&$from,&$to,&$rowsFound,&$prev,&$next){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -