Jul 17
次期バージョンのNucleus3.5では、遂にPDOがサポートされます。
とはいっても100%純粋なPDOサポートではなく、今までのSQLをそのまま残した形でのPDOサポートになるので、データベースのサポートはとりあえずMySQLだけになりそうですが。
現状のプラグインの大多数は、おそらくそのままではPDOでは使えませんが、「mysql_*」関数を「sql_*」と書き換えるだけでPDOで使えるようになります。
ただしいくつかの関数は、PDO関数とMySQL関数の挙動の違いを吸収するために書き換えないとダメだったりします。Read More No Comments yet.

OpenID を使ってログインすることができます。

Identity URL:



Web Services by Yahoo! JAPAN

Mar 28
昨日探し回ったんでメモ。
NP_LimitLoginAttemptsを作ってて、ログイン画面にどうやってメッセージを表示するか小一時間ソースとにらめっこした結果、「$error」というグローバル変数を発見しました。
「ADMIN::action_showlogin()」で、
$this->login($error);
って使われてて、これがログイン画面で表示されます。これをプラグインの「event_LoginFailed」で引っ掛けて、
global $error;
$error = 'ログイン情報が間違ってます';
としてやればOK。イベント仕込んだりコア書き換えたりする必要もなく目的達成できました。 No Comments yet.

OpenID を使ってログインすることができます。

Identity URL:



Web Services by Yahoo! JAPAN

Mar 19
本家の方のリポジトリは、v3.4xをブランチに移してv3.5の開発に移行しました。
初っ端に追加されたのは、「年別アーカイブ」……
やっぱWPで出来ることは全部Nucleusでもやりたいってやつですか?
とか思ってしまった。
日本語版v3.41は、本家のv3.4xブランチから出るんですが、更新を忘れないようにエボレボ版に<%archiveyearlist%>と<%otherarchiveyearlist%>を追加してと…… No Comments yet.

OpenID を使ってログインすることができます。

Identity URL:



Web Services by Yahoo! JAPAN

Mar 16
無視しよう。
あれは無かったことに。
あんなの使わなくたって、いままでちゃんとやってきたんだしね。
「Pingの機能はプラグイン化してコアから追い出したんだから、コアで面倒見るようなことはやめようよ」
だそうで。
なら、v3.31以降の
		$pingUrl = $manager->addTicketToUrl($CONF['AdminURL'] . 'index.php?action=sendping&blogid=' . intval($blogid));

		if ($result['status'] == 'newcategory')
			$this->action_categoryedit(
				$result['catid'],
				$blogid,
				$blog->sendPing() && numberOfEventSubscriber('SendPing') > 0 ? $pingUrl : ''
			);
		elseif ((postVar('actiontype') == 'addnow') && $blog->sendPing() && numberOfEventSubscriber('SendPing') > 0)
			$this->action_sendping($blogid);
		else
			$this->action_itemlist($blogid);
とか、
		if (!$closed && $publish && $wasdraft && $blog->sendPing() && numberOfEventSubscriber('SendPing') > 0 && !$isFuture) {
			$this->action_sendping($blogid);
			return;
		}
のコードはなんなの?って話。Read More

OpenID を使ってログインすることができます。

Identity URL:



Web Services by Yahoo! JAPAN

Mar 14
Nucleusを新規インストールした時に、MySQLのバージョンによって文字化けが起きるというお話。
以前v3.30がリリースされた時に実験した結果、インストールの時点からちゃんと文字コードを指定しないと、phpMyAdminかサイトのどちらかで文字化けが起きることが判りました。
これを踏まえて、globalfunctions.phpのsql_connect()に、次のコードを追加してやります。
	$mysqlCharset = _CHASER == 'UTF-8' ? 'utf8' : 'ujis';
	if (mysql_client_encoding() != $mysqlCharset) {
		$mySqlVer = implode('.', array_map('intval', explode('.', mysql_get_server_info($MYSQL_CONN))));
		if ($mySqlVer >= '5.0.7' && phpversion() >= '5.2.3') {
			mysql_set_charset($mysqlCharset);
		} else {
			mysql_query("SET NAMES " . $mysqlCharset);
		}
	}
これで、phpやMySQLのバージョンに応じて、正しいキャラクタセットでデータベースの内容を取得してくれます。
しかーし!
サイトの表示が文字化けしちゃいます。大問題です。
で、このコードを削ると文字化けせずにちゃんと表示されます。この時は当然のようにphpMyAdminは文字化けしています。
Nucleusでバックアップをとった後、キャラクタセットをきちんと指定してデータベースを作り直して、そこにバックアップを取ったデータを流し込んでやれば修正できるんですが、これって自動でやる方法ってあるんでしょうか? No Comments yet.

OpenID を使ってログインすることができます。

Identity URL:



Web Services by Yahoo! JAPAN