Skip to main content

PHP

Artisteer の垂直メニューブロックにサブ項目を表示するには PHP の DOM が必須

Posted in

Artisteer で作成した Drupal テーマで垂直メニューを使う場合、サーバーの PHP 環境に DOM が組み込まれていないと、サブメニュー項目の表示がおかしくなる件。

エクスポートしたテーマに含まれる common_methods.php の art_menu_worker() 関数に次のようなコードがある。

・・・
  if (class_exists('DOMDocument')) {
    $output = art_menu_xml_parcer($output, $show_sub_menus, $menu_class);
    /* Support Block Edit Link module */
      $output = str_replace('<!DOCTYPE root>', $empty_str, $output);
  }
  else {
    $output = preg_replace('~(<a [^>]*>)([^<]*)(</a>)~', '$1<span class="l"></span><span class="r"></span><span class="t">$2</span>$3', $output);
  }
  return $output;

DOM が組み込まれていなくても else ブロックが実行されてエラーにはならないが、メニューのサブ項目にも余計な span が追加されてレイアウトが崩れる模様。

対策は DOM をインストールすること。
CentOS の場合は次のコマンドラインを実行する。

# yum install php-xml

DOM がインストールされれば、サブ項目も含めて垂直メニューが正常に表示されるようになる。

以上、Artisteer の便利な垂直メニューの階層表示を使うには PHP に DOM が必須っぽいということでメモ。

データベース (MySQL) の中身を SQL 形式でダンプする PHP スクリプト

Posted in

mysqldump の代わりに使える PHP スクリプトが必要になり、探してみると下記ページを発見:
http://snipplr.com/view/173/mysql-dump/

試してみると、残念ながら(自分の目的には)そのままでは使えなかった。
主キーが複数あるテーブルの CREATE TABLE で PRIMARY KEY が正しく出力されないとか、null 値が空の文字列として INSERT されてしまうとか。

やむなく、最近老眼が入ってきた目を凝らしてコードを読み、少しだけ手を入れた。

header('Content-Type: application/octet-stream');
 
function nullcheck($values) {
 $ret = Array();
 foreach($values as $val) {
  if ($val===NULL) $ret[] = 'NULL';
  else $ret[] = '\'' . $val . '\'';
 }
 return $ret;
}
 
function mysql_dump($database) {
 $lnbr = "\r\n"; 
 $query = '';
 $tables = @mysql_list_tables($database);
 while ($row = @mysql_fetch_row($tables)) { $table_list[] = $row[0]; }
  for ($i = 0; $i < @count($table_list); $i++) {
   $results = mysql_query('SHOW CREATE TABLE ' . $database . '.' . $table_list[$i]);
   $query .= 'DROP TABLE IF EXISTS `' . $table_list[$i] . '`;' . str_repeat($lnbr, 2);
   while ($row = @mysql_fetch_assoc($results)) {
    $query .= $row['Create Table'] . ';';

Eclipse 3.4 Ganymede Pleiades All in One の PDT + xampp のセットアップ : デバッガ編

この資料は、Pleiades All in One (Eclipse 3.4 Ganymede) の PDT と xampp の環境で、デバッガの設定をしたときの作業メモです。

Eclipse 3.4 Ganymede Pleiades All in One の PDT + xampp のセットアップ : 導入編

Pleiades All in One (Eclipse 3.4 Ganymede) の PDT と xampp を利用して、Windows (XP SP3) 上の PHP 開発環境のセットアップを行ったときの作業メモです。まずは、eclipse と xampp の導入と実行確認から。

mbstring と文字化けの記事へのリンク

とても参考になるので、忘れないようにメモさせていただきます。

PHP5 で Drupal 4.7.6 を使うときの array_merge の問題

PHP5 では、array_merge() 関数の仕様が変わり、array 型の引数のみを受け取るようになっている。
このため、PHP4 ベースのシステムで、この関数に array 型以外のオブジェクトを渡しているコードがあった場合、PHP5 環境に移行するときにエラーが発生することになる。

コンテンツの配信