--- nfo/site/htdocs/inc/cms/cms.php.inc 2004/08/30 04:16:24 1.3 +++ nfo/site/htdocs/inc/cms/cms.php.inc 2004/09/06 00:15:28 1.5 @@ -4,12 +4,12 @@ --- Content management functions include file. -------------------------------------------------------------------------------- --- rabit, 01:04 27.08.2004 ---- $Id: cms.php.inc,v 1.3 2004/08/30 04:16:24 rabit Exp $ +--- $Id: cms.php.inc,v 1.5 2004/09/06 00:15:28 rabit Exp $ ------------------------------------------------------------------------------*/ function cms_getcontent($type, $keyname, $language_id = 0) { - $sql = "SELECT contents.content, contents.description, UNIX_TIMESTAMP(contents.timestamp), languages.name, users.name FROM contents, languages, users WHERE contents.type='$type' AND contents.keyname='$keyname'" . ($language_id ? " AND languages.id='$language_id'" : '') . " AND users.id=contents.creator_id AND languages.id=contents.language_id LIMIT 0,1;"; + $sql = "SELECT contents.content, contents.description, UNIX_TIMESTAMP(contents.timestamp), languages.name, users.name, contents.keyname FROM contents, languages, users WHERE contents.type='$type' AND contents.keyname='$keyname'" . ($language_id ? " AND languages.id='$language_id'" : '') . " AND users.id=contents.creator_id AND languages.id=contents.language_id LIMIT 0,1;"; $res = mysql_query($sql); if(!$res) return false; @@ -21,7 +21,8 @@ 'description' => $row[1], 'unixtime' => $row[2], 'language_name' => $row[3], - 'creator_name' => $row[4] + 'creator_name' => $row[4], + 'keyname' => $row[5], ); return $contentdata; @@ -34,7 +35,7 @@ $sql = "SELECT contents.id, contents.description, UNIX_TIMESTAMP(contents.timestamp), languages.id, languages.name, users.name FROM contents, languages, users WHERE contents.type='$types' AND contents.keyname='$keynames' AND users.id=contents.creator_id AND languages.id=contents.language_id;"; - $res = mysql_query($sql); + $res = common_dbc_query($sql); $rowcount = 0; @@ -46,6 +47,255 @@ //---------------------------------------------------------- +function cms_getindex($type) { + + $sql = "SELECT contents.id, contents.keyname, contents.description, UNIX_TIMESTAMP(contents.timestamp) as timestamp, languages.id, languages.name as lang, users.name as creator FROM contents, languages, users WHERE contents.type='$type' AND users.id=contents.creator_id AND languages.id=contents.language_id;"; + + $res = common_dbc_query($sql); + + $rowcount = 0; + + while($row = mysql_fetch_assoc($res)) $rows[$rowcount++] = $row; + + return $rows; + +} + +//---------------------------------------------------------- + +function cms_query($querycmd, &$response) { + +//------------------ + +$operationindices = array( + 'LIST' => 0, + 'GET' => 1 +); + +//------------------ + +$sourceindices = array( + 'contenttypes' => 0, + 'languages' => 1, + 'contents' => 2 +); + +//------------------ + + $querycmd = str_replace("\r\n", ' ', $querycmd); + $querycmd = str_replace("\n", ' ', $querycmd); + + $querycmd = trim($querycmd); + + $d1 = strpos($querycmd, ' '); + $operation = substr($querycmd, 0, $d1); + + if(isset($operationindices[$operation])) { + + $operationindex = $operationindices[$operation]; + + } else { + + $response = cms_create_respose(1, null, null, null, $querycmd, $operation); + + return false; + + } + + switch($operationindex) { + + case 0: // "LIST" + + $d2 = strpos($querycmd, ' WITH ', $d1 + 1); + + if($d2) { + + $source = substr($querycmd, $d1 + 1, $d2 - $d1 - 1); + $conditionlist = substr($querycmd, $d2 + 6); + + } else { + + $source = substr($querycmd, $d1 + 1); + $conditionlist = ''; + + } + + if(isset($sourceindices[$source])) { + + $sourceindex = $sourceindices[$source]; + + } else { + + $response = cms_create_respose(2, null, null, null, $querycmd, $operation, $source, $conditionlist); + + return false; + + } + + $sqlconditions = ''; + + if($conditionlist) { + + $conditions = split(',', $conditionlist); + + $sqlconditions .= ' WHERE'; + + for($c = 0; $c < count($conditions); $c++) { + + list($conditionname, $conditionvalue) = split('=', $conditions[$c]); + $condition = trim($conditionname) . '=\'' . trim($conditionvalue) . '\''; + $sqlconditions .= ($c ? ' AND' : '') . ' ' . $condition; + + } + + } + + $sql = 'SELECT id FROM ' . $source . $sqlconditions . ';'; + + $res = common_dbc_query($sql); + + $columnnames = array('id'); + $resultlist = array(); + + while($row = mysql_fetch_row($res)) array_push($resultlist, $row); + + $response = cms_create_respose(0, $resultlist, $columnnames, 0, $querycmd, $operation, $source, $conditionlist); + + return true; + + break; + + case 1: // "GET" + + $d2 = strpos($querycmd, 'FROM') + 4; + $idlist = trim(substr($querycmd, $d1, $d2 - $d1 - 4)); + $source = trim(substr($querycmd, $d2)); + + if(isset($sourceindices[$source])) { + + $sourceindex = $sourceindices[$source]; + + } else { + + $response = cms_create_respose(2, null, null, null, $querycmd, $operation, $source); + + return false; + + } + + switch($sourceindex) { + + case 0: // "contenttypes" + + $fieldlist = 'id, name'; + $columnnames = array('id', 'name'); + + break; + + case 1: // "languages" + + $fieldlist = 'id, name, abbreviation'; + $columnnames = array('id', 'name', 'abbreviation'); + + break; + + case 2: // "contents" + + $fieldlist = 'id, keyname, type, creator_id, language_id, description, content'; + $columnnames = array('id', 'keyname', 'contenttype', 'creator_id', 'language_id', 'description', 'content'); + + break; + + } + + $sqlconditions = ''; + + if($idlist) { + + $ids = split(',', $idlist); + + $sqlconditions .= ' WHERE'; + + for($i = 0; $i < count($ids); $i++) { + + $condition = ' id=\'' . intval(trim($ids[$i])) . '\''; + $sqlconditions .= ($i ? ' OR' : '') . $condition; + + } + + } else { + + // ERROR + + } + + $sql = "SELECT $fieldlist FROM " . $source . $sqlconditions . ';'; + $res = common_dbc_query($sql); + $resultlist = array(); + + while($row = mysql_fetch_row($res)) array_push($resultlist, $row); + + $response = cms_create_respose(0, $resultlist, $columnnames, 0, $querycmd, $operation, $source); +// $response = cms_create_respose(0, $resultlist, $columnnames, 0, $sql, $operation, $source); + + return true; + + break; + + } + +} + +//---------------------------------------------------------- + +function cms_create_respose( + $errornumber, + $resultlist, + $columnnames, + $firstrow = 0, + $querycmd = '', + $operation = '', + $source = '', + $conditionlist = '' +) { + +//------------------ + +$errortexts = array( + 0 => 'No error', + 1 => 'Unknown base operation', + 2 => 'Unknown data source name' +); + +//------------------ + + $response = array( + + // Result information: + 0 => array( + 'error' => $errornumber, + 'errortext' => $errortexts[$errornumber], + 'columncount' => (isset($columnnames) ? count($columnnames) : null), + 'firstrow' => $firstrow, + 'rowcount' => count($resultlist), + 'querycmd' => $querycmd, + 'operation' => $operation, + 'source' => $source, + 'conditionlist' => $conditionlist + ), + + // Result list: + 1 => $resultlist, + + // Column names: + 2 => $columnnames + + ); + + return $response; + +} + //------------------------------------------------------------------------------ ?>