Home > CUSTOMIZED | WordPress > [wp×SQLite]Simple Tagsとか使う

[wp×SQLite]Simple Tagsとか使う

色々変わって読みづらくなったので、いっそ書き換え

例えば
SELECT p.post_title FROM テーブル AS p
というSQLがあるとする。

MySQLなら配列は『$うんつら["post_title"]』として返してもらえるんだけど、
SQLiteだと『$うんつら["q.post_title"]』として返される。

そのせいでSimple Tagsとか巧く動かないプラグインが多数ある。

前回同様SQL文を書き換えようと思ったのだけど、
『q.post_title as post_title』みたいに
『AS うんつら』と既に宣言されているものもあるのだから、なかなか巧くいかない。
※q.post_title as post_title AS post_title as post_title てなる

そこで『配列の添字を書き換えて作り直す』修正をする。

/wp-content/pdo/PDOEngine.phpの書き足し+書き換え

class PDO_Engine{~}内の最後の方に、下記を追加。

/// 再帰的配列名変更 @to
function RecurrenceCutExtraAlignmentName($Array){
	if(is_array($Array)){
		foreach($Array as $Akey => $Aval){
			$ArrTname = explode(".",$Akey,2);
			unset($Array[$Akey]);

			if(isset($ArrTname[1]))
				$Akey = $ArrTname[1];

			$Array[$Akey] = $Aval;
			if(is_array($Aval))
				$Array[$Akey] = $this->RecurrenceCutExtraAlignmentName($Aval);
		}
	}
	return $Array;
}

次に同じファイル内から
private function processResults()を探して、7・8行目を追加。

	private function processResults(){
		if(in_array($this->queryType, array("select", "describe","show")) && $this->needsPostProcessing){
			$this->results = $this->rewriteEngine->processResults($this->_results);
		}else{
			$this->results = $this->_results;
		}
		// @to
		$this->results = $this->RecurrenceCutExtraAlignmentName($this->results);
	}

結構無理矢理。

とりあえずは動いてるから、ログを見ながら様子見。

更新@2010.01.31 23:06
更新@2009.10.27 23:44
更新@2009.07.19 00:56
公開@2009.07.14 00:06


関連する投稿

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://qooga.jb-jk.net/wp/2009/07/sqlite%c3%97wordpress%e3%81%a7simple-tags%e3%82%92%e4%bd%bf%e3%81%86/trackback/
Listed below are links to weblogs that reference
http://qooga.jb-jk.net/wp[wp×SQLite]Simple Tagsとか使う from MOT:主にプログラム勉強メモ部屋

Home > CUSTOMIZED | WordPress > [wp×SQLite]Simple Tagsとか使う

Search
Option
  • Twitter
  • 絵板
Feeds
commercial
Mobile
Meta
Tag Cloud
TOP10
commercial

Return to page top