Geeklog実験室 Geeklogのテストや改良のためのサイトです    

2010-09-08 00:27
 記事を友人にメールする 印刷用画面 

ファイル置き場を更新

ひとりごとファイル置き場をカテゴリ別に分け、古いファイルを消しました。
GeeklogRのテーマ以外は以前からのものと内容は変わりません。
 記事を友人にメールする 印刷用画面 

nmoxmenuプラグイン考察

ひとりごと

現在わかっている問題

メニューの表示位置がおかしい

サブメニューが並べる順序順に表示されない問題

並べる順序を指定していない場合に重複表示される

現在解決法が示されているもので上の3つかな?
また新たに問題を発見してしまった。

変な例で申し訳ないがw
「きつね_うどん」と「きつ_つき」というメニューがあると「きつ」メニューのサブに「うどん」が表示されたりされなかったり(記事のあるなしで挙動が変わる)。
現在公式BBSの情報によりfunction.incにある問題のか所は修正されてこのようになっているんだけど(オレンジの部分)グリーンの部分を見て欲しい。

          $sql = "select * from ".$_TABLES["topics"]." where topic like '".$topic_first."_%' ORDER BY sortnum,topic ASC";

あいまい検索の場合$topic_firstの後ろにある「_」が任意の1文字として扱われるため「%」1文字の場合と意味合いは同じになっている。何カ所かでこのあいまい検索が使われているので探ってみる。ちなみに「\_%」とエスケープするだけでは完全に直らなかった。

その後の調べで1階層目のデータをDBから引いてくる段階ですでに問題があることもわかった。先ほどの所のもう少し上を見てみると

    $sql="select * from ".$_TABLES["topics"]." where topic like '".$topic_first."%'";

と、なっていてこの部分で第1階層「きつ」のときに「きつね」にもヒットしてしまっている。「きつ」に表示できる記事がなくとも「きつね」に記事がある場合表示フラグが立ってしまう。その後サブメニューでの表示判定で記事がないことになるのでメニューは表示されるが記事がないということになる。かといって%を取っ払うと2階層目のあるメニューがすべてヒットしなくなるのでダメだ。うーん、なにかカンタンな解決方法はないものか・・・

 記事を友人にメールする 印刷用画面 

mediagalleryプラグインでzipファイルを展開モードでアップロードすると致命的エラー

変更したところまとめ_重要

【重要】1.5.0jpr2でもこの影響を受けます

ZIPファイルをアップロードした際に展開するよう設定を変更している場合で再現。アップロードされたファイルを一時的に展開するための作業フォルダを削除する際にエラーになります。初期設定は展開されないようになっているので、この影響は受けません。

今回初めてファイル操作をしている部分を開きましたが、日本語のファイル名でのアップロードはしないほうがよいでしょう。基本的にマルチバイト文字のことを考慮されずにプログラムが書かれています。

<geeklog>/public_html/mediagallery/lib-upload.php
988行

function MG_deleteDir($dir) {
    if (substr($dir, strlen($dir)-1, 1) != '/')
        $dir .= '/';

    if ($handle = opendir($dir)) {
       while ($obj = readdir($handle)) {
           if ($obj != '.' && $obj != '..') {
               if (is_dir($dir.$obj)) {
                   if (!deleteDir($dir.$obj))
                       return false;
               } elseif (is_file($dir.$obj)) {
                   if (!unlink($dir.$obj))
                       return false;

青字部分を

                   if (!rmdir($dir.$obj))

に変更してください。

参考記事