Skip to content

Commit

Permalink
refs #514
Browse files Browse the repository at this point in the history
  * 1.8 트리와 trunk 동기화
  • Loading branch information
inureyes committed Jan 7, 2010
1 parent dab5259 commit 9fe9785
Show file tree
Hide file tree
Showing 46 changed files with 497 additions and 740 deletions.
23 changes: 23 additions & 0 deletions documents/changelog_ko.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,29 @@
* 이 문서는 변경사항을 모두 포함하고 있지 않을 수 있습니다. 자세한 변경사항 열람을 위해서는 텍스트큐브 개발 사이트 (http://dev.textcube.org) 의 해당 버전의 로드맵과 티켓들을 확인해 주시기 바랍니다.
* 버그 로그는 일반적으로 이전 버전에서 발생했으나 해결된 부분을 포함하며, 이번 버전을 만드는 과정에서 발생하는 버그는 기록하지 않습니다.

== v1.8.1 개발 관련 노트 ==
=== 추가된 점 ===
* 일반 : memcached 서버를 다중 서버 기반에서 사용할 때 도메인 키를 통하여 데이터 혼선이 생기지 않도록 함 (#1375)
* 관리패널 : 댓글 페이징 안내를 상세하게 추가 (#1400)
* 설치 : 설치시 데이터베이스의 기본 포트 번호를 자동 제안하는 기능 추가 (#1398)

=== 버그 수정 ===
* 플러그인 : 최근 댓글 플러그인 출력시 발생하는 오류 수정 (#1397)
* 플러그인 : 이올린으로 싱크하기 플러그인이 제대로 동작하지 않는 문제 수정 (#1383)
* 플러그인 : 디버그 모드에서 항상 xquared 플러그인 관련 오류가 출력되는 문제 수정 (#1394)
* 플러그인 : 리퍼러 플러그인에서 출력 항목수 저장이 되지 않는 문제 수정 (#1392)
* 일반 : OpenID 연결이 삭제되지 않는 오류 수정 (#1385)
* 일반 : OpenID 로그인 완료 후 리다이렉트 되지 않는 오류 수정 (#1385)
* 일반 : 플래시 업로더 옵션이 반대로 동작하는 문제 수정 (#1388)
* 설치 : PostgreSQL 설치시 잘못된 리소스 참조 오류 수정 (#1396)
* 설치 : MySQLi 모드로 설치시 필요한 파일을 찾지 못하는 오류 수정 (#1393)
* TTXML : 데이터 복원시 방문자 수가 0이 되는 문제 수정 (#1391)
* TTXML : 데이터 복원시 카테고리 정보가 유실되는 문제 수정 (#1389)
* TTXML : 데이터 복원시 링크 카테고리 정보가 유실되는 문제 수정 (#1389)
* TTXML : 데이터 복원시 공지 정보가 유실되는 문제 수정 (#1389)
* TTXML : 데이터 복원시 피드 정보가 유실되는 문제 수정 (#1389)
* 블로그 : 사이드바 모듈 출력시 스킨 정보를 제대로 읽지 못하는 문제 수정 (#1074)

== v1.8 개발 관련 노트 ==

=== 추가된 점 ===
Expand Down
11 changes: 5 additions & 6 deletions framework/Dispatcher.php
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,6 @@ private function URIinterpreter() {
$interfacePath = null;
if ($uri['interfaceType'] == 'icon') {
$uri['interfacePath'] = $this->interfacePath = 'interface/'.$pathPart.'.php';
$this->uri = $uri;
} else {
if (!empty($uri['fragment'])) {
if (is_numeric(strtok(end($uri['fragment']), '&'))) {
Expand All @@ -147,7 +146,7 @@ private function URIinterpreter() {
$interfacePath = 'interface/blog/'.$pathPart.'.php';
break;
case 'rss': case 'atom':
if(in_array($uri['fragment'][1],array('category','tag','search'))) {
if(isset($uri['fragment'][1]) && in_array($uri['fragment'][1],array('category','tag','search'))) {
$pathPart = $uri['fragment'][0].'/'.$uri['fragment'][1];
$interfacePath = 'interface/'.$pathPart.'/index.php';
}
Expand All @@ -156,11 +155,11 @@ private function URIinterpreter() {
$pathPart = implode("/",$uri['fragment']);
$interfacePath = 'interface/blog/'.$pathPart.'/index.php';
break;
case 'i':case 'm':
if(in_array($uri['fragment'][1],array('entry','comment'))) {
case 'i': case 'm':
if(isset($uri['fragment'][1]) && in_array($uri['fragment'][1],array('entry','comment'))) {
$pathPart = $uri['fragment'][0].'/'.$uri['fragment'][1];
} else {
$pathPath = $uri['fragment'][0].'/';
$pathPart = $uri['fragment'][0];
}
$interfacePath = 'interface/'.$pathPart.'/index.php';
break;
Expand All @@ -176,8 +175,8 @@ private function URIinterpreter() {
header("HTTP/1.0 404 Not Found");exit;
}
$uri['interfacePath'] = $this->interfacePath = $interfacePath;
$this->uri = $uri;
}
$this->uri = $uri;
}
}
?>
7 changes: 5 additions & 2 deletions framework/boot/30-Auth.php
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,11 @@ function authorize( $domain, $userid ) {
} else {
$ownership = "group.owners";
}
$result = POD::queryAllWithCache("SELECT blogid,acl FROM {$context->getProperty('database.prefix')}Privileges WHERE userid = $userid");
$data = DBModel::getInstance();
$data->reset('Privileges');
$data->setQualifier('userid','equals',$userid);
$result = $data->getAll('blogid,acl');

foreach( $result as $rec ) {
$priv = array("group.writers", "textcube.$userid");

Expand All @@ -251,7 +255,6 @@ function authorize( $domain, $userid ) {
}

$blogid = getBlogId();
$data = DBModel::getInstance();
$data->reset('Privileges');
$data->setQualifier('blogid','equals',$blogid);
$data->setQualifier('userid','equals',$userid);
Expand Down
25 changes: 18 additions & 7 deletions framework/data/DBModel.php
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,8 @@ public function getAttribute($name) {

public function setAttribute($name, $value, $escape = false) {
if (is_null($value))
$this->_attributes[$name] = 'NULL';
$this->_attributes[$name] = null;
// $this->_attributes[$name] = 'NULL';
else
$this->_attributes[$name] = ($escape === false && (!is_string($value) || in_array($value,$this->_reservedFunctions)) ? $value : ($escape ? '\'' . POD::escapeString($value) . '\'' : "'" . $value . "'"));
}
Expand Down Expand Up @@ -113,7 +114,8 @@ public function getQualifier($name) {
public function setQualifier($name, $condition, $value = null, $escape = false) {
//OR, setQualifier(string(name_condition_value), $escape = null) - Descriptive mode (NOT implemented)
if (is_null($condition)) {
$this->_qualifiers[$name] = 'NULL';
$this->_qualifiers[$name] = null;
// $this->_qualifiers[$name] = 'NULL';
} else {
switch(strtolower($condition)) {
case 'equals':
Expand All @@ -122,7 +124,7 @@ public function setQualifier($name, $condition, $value = null, $escape = false)
break;
case 'not':
case 'neq':
$this->_relations[$name] = 'NOT';
$this->_relations[$name] = '<>';
break;
case 'bigger':
case 'b':
Expand Down Expand Up @@ -187,6 +189,7 @@ public function doesExist() {

public function getCell($field = '*') {
$field = $this->_treatReservedFields($field);
// var_dump('SELECT ' . $field . ' FROM ' . $this->table . $this->_makeWhereClause() . ' LIMIT 1');
return POD::queryCell('SELECT ' . $field . ' FROM ' . $this->table . $this->_makeWhereClause() . ' LIMIT 1');
}

Expand All @@ -212,7 +215,10 @@ public function insert() {
$attributes = array_merge($this->_qualifiers, $this->_attributes);
if (empty($attributes))
return false;
$this->_query = 'INSERT INTO ' . $this->table . ' (' . implode(',', $this->_capsulateFields(array_keys($attributes))) . ') VALUES(' . implode(',', $attributes) . ')';
$pairs = $attributes;
foreach($pairs as $key => $value) if (is_null($value)) $pairs[$key] = 'NULL';

$this->_query = 'INSERT INTO ' . $this->table . ' (' . implode(',', $this->_capsulateFields(array_keys($attributes))) . ') VALUES (' . implode(',', $pairs) . ')';
if (POD::query($this->_query)) {
// $this->id = POD::insertId();
return true;
Expand All @@ -224,9 +230,12 @@ public function update() {
if (empty($this->table) || empty($this->_attributes))
return false;
$attributes = array();

foreach ($this->_attributes as $name => $value)
array_push($attributes,
(array_key_exists($name, $this->_isReserved) ? '"'.$name.'"' : $name) . '=' . $value);
(array_key_exists($name, $this->_isReserved) ? '"'.$name.'"' : $name) . '=' .
(is_null($value) ? ' NULL' : $value ));

$this->_query = 'UPDATE ' . $this->table . ' SET ' . implode(',', $attributes) . $this->_makeWhereClause();
if (POD::query($this->_query))
return true;
Expand All @@ -240,9 +249,11 @@ public function replace() {
$attributes = array_merge($this->_qualifiers, $this->_attributes);
if (empty($attributes))
return false;
$pairs = $attributes;
foreach($pairs as $key => $value) if (is_null($value)) $pairs[$key] = 'NULL';
$attributeFields = $this->_capsulateFields(array_keys($attributes));
if (in_array(POD::dbms(), array('MySQL','MySQLi'))) { // Those supports 'REPLACE'
$this->_query = 'REPLACE INTO ' . $this->table . ' (' . implode(',', $attributeFields) . ') VALUES(' . implode(',', $attributes) . ')';
$this->_query = 'REPLACE INTO ' . $this->table . ' (' . implode(',', $attributeFields) . ') VALUES(' . implode(',', $pairs) . ')';
if (POD::query($this->_query)) {
$this->id = POD::insertId();
return true;
Expand Down Expand Up @@ -309,7 +320,7 @@ protected function _makeWhereClause() {
foreach ($this->_qualifiers as $name => $value) {
$clause .= (strlen($clause) ? ' AND ' : '') .
(array_key_exists($name, $this->_isReserved) ? '"'.$name.'"' : $name) .
' '.(is_null($value) ? 'IS NULL' : $this->_relations[$name] . ' ' . $value);
' '.(is_null($value) ? ' IS NULL' : $this->_relations[$name] . ' ' . $value);
}
if(!empty($this->_order)) $clause .= ' ORDER BY '.$this->_treatReservedFields($this->_order['attribute']).' '.$this->_order['order'];
if(!empty($this->_limit)) $clause .= ' LIMIT '.$this->_limit['count'].' OFFSET '.$this->_limit['offset'];
Expand Down
5 changes: 3 additions & 2 deletions framework/data/MySQLi/Debug.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ function __tcSqlLogBegin( $sql )

$__tcSqlLog[$__tcSqlLogCount] = array( 'sql' => trim($sql), 'backtrace' => $backtrace );
$__tcSqlQueryBeginTime = explode(' ', microtime());
//dumpAsFile($sql);
}
function __tcSqlLogEnd( $result, $cachedResult = 0 )
{
Expand Down Expand Up @@ -422,14 +423,14 @@ function dumpAsFile($data) {
@mkdir(ROOT."/cache");
@chmod(ROOT."/cache",0777);
}

$dumpFile = ROOT.'/cache/dump';
if(file_exists($dumpFile)) {
$dumpedLog = @file_get_contents($dumpFile);
} else {
$dumpedLog = '';
}
$dumpedLog = $dumpedLog.Timestamp::format5()." : ".print_r($data,true).CRLF;
//$dumpedLog = $dumpedLog.Timestamp::format5()." : ".var_export($data,true).CRLF;
$dumpedLog = $dumpedLog.var_export($data,true).CRLF;
$fileHandle = fopen($dumpFile,'w');
fwrite($fileHandle, $dumpedLog);
fclose($fileHandle);
Expand Down
11 changes: 4 additions & 7 deletions framework/data/PostgreSQL/Adapter.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
global $fileCachedResult;

class DBAdapter implements IAdapter {
static $dbProperties, $cachedResult;
static $dbProperties, $cachedResult, $lastQueryType;
/*@static@*/
public static function bind($database) {
// Connects DB and set environment variables
Expand Down Expand Up @@ -78,7 +78,6 @@ public static function reservedFunctionNames() {
}

public static function query($query, $compatiblity = true) {
global $__gLastQueryType;
/// Bypassing compatiblitiy issue : will be replace to NAF2.
if($compatibility) {
$query = str_replace('UNIX_TIMESTAMP()',Timestamp::getUNIXtime(),$query); // compatibility issue.
Expand Down Expand Up @@ -141,7 +140,7 @@ public static function query($query, $compatiblity = true) {
} else {
$result = pg_query($query);
}
$__gLastQueryType = strtolower(substr($query, 0,6));
self::$lastQueryType = strtolower(substr($query, 0,6));
if( stristr($query, 'update ') ||
stristr($query, 'insert ') ||
stristr($query, 'delete ') ||
Expand All @@ -165,12 +164,11 @@ public static function queryExistence($query) {

/*@static@*/
public static function queryCount($query) {
global $__gLastQueryType;
$count = 0;
$query = trim($query);
if ($result = self::query($query)) {
$operation = strtolower(substr($query, 0,6));
$__gLastQueryType = $operation;
self::$lastQueryType = $operation;
switch ($operation) {
case 'select':
$count = pg_num_rows($result);
Expand Down Expand Up @@ -329,8 +327,7 @@ public static function commit() {
/* Raw public static functions (to easier adoptation) */
/*@static@*/
public static function num_rows($handle = null) {
global $__gLastQueryType;
switch($__gLastQueryType) {
switch(self::$lastQueryType) {
case 'select':
return pg_num_rows($handle);
break;
Expand Down
6 changes: 4 additions & 2 deletions framework/legacy/Needlworks.Cache.PageCache.php
Original file line number Diff line number Diff line change
Expand Up @@ -399,6 +399,8 @@ function flushAuthor($authorId = null) {
}

function flushTag($tagId = null) {
global $database;

if(empty($tagId)) $tagId = '';
else $tagId = $tagId.'-';
$cache = pageCache::getInstance();
Expand Down Expand Up @@ -439,7 +441,7 @@ function flushSearchKeywordRSS($search = null) {
FROM {$database['prefix']}PageCacheLog
WHERE blogid = ".getBlogId()."
AND (name like 'searchATOM-".$search."%'
OR name like 'searchRSS-".$search."%");
OR name like 'searchRSS-".$search."%')");
CacheControl::purgeItems($searchEntries);
return true;
}
Expand All @@ -452,7 +454,7 @@ function flushEntry($entryId = null) {
$Entries = POD::queryColumn("SELECT name
FROM {$database['prefix']}PageCacheLog
WHERE blogid = ".getBlogId()."
AND (name like 'entry-".$entryId."%' OR name = 'commentRSS-".$entryId."')");
AND (name like 'entry-".$entryId."%' OR name = 'commentRSS-".$entryId."' OR name = 'commentATOM-".$entryId."')");
CacheControl::purgeItems($Entries);
if(!empty($entryId)) {
$entry = POD::queryCell("SELECT userid, category FROM {$database['prefix']}Entries
Expand Down
Loading

0 comments on commit 9fe9785

Please sign in to comment.