ページ: 1
アップロードしたメディアファイルを削除・編集するためのプラグインです。NP_SkinFilesの対象ディレクトリを、mediaディレクトリに変更し、若干の修正および機能追加したものです。
このフォーラムの『アップロード画像の削除ボタンが欲しい』の記事で知ったpushmanさんのブログ記事『Nucleus管理画面より画像を削除する方法』がヒントになって、作成したものです。私のブログでこっそり公開していたのですが、不具合報告もないのでこちらに載せることにしました。
(追記 2006-02-15)
バージョン 101.1bには、セキュリティーホールがあります(kosugiatkipsさんの記事『アクセス権限関係で』を参考にしてください)。ご使用の方でこの脆弱性で問題が起きる方(super-adminではないブログ管理者がいるケース)は、最新のバージョンにアップグレードしてください。
(追記 2006-03-01)
機能が少し増えたので、簡単に使用方法を説明します。プラグイン管理メニューにてインストールした後(アップグレードの際は、古い方の削除のボタンを押してから新しい物をインストール)、『編集』画面にてプラグインオプションの設定をしてください。
『Show in the QuickMenu?』は、管理画面左のメニューにクイックボタンを表示させたい時、『はい』にしてください。
『Use thumbnail images?』は、メディアファイル管理画面で画像ファイルのサムネイルを表示させたい時に、『はい』にしてください。このとき、『Max width of thumbnail image』にはサムネイル画像の最大幅を、『Max height of thumbnail image』にはサムネイル画像の最大の高さを指定します。また、『Use cache for thumbnail images?』を『はい』に指定すると、Mediaフォルダに『np-mediafiles』という名のフォルダが作成され、ここにサムネイル画像がキャッシュされるようになります。結果として、二回目以降のメディアファイル管理画面で、高速にサムネイル画像が表示されます。
使用する際は、プラグイン管理メニューのNP_MediaFiles右の『管理』ボタンか、左に表示される『MediaFiles』クイックメニューから入って操作してください。『(ren)』ボタンでファイル名の変更、『(del)』ボタンでファイル削除、『(d/l)』ボタンでファイルのダウンロードが行えます。また、新規にメディアファイルをアップロードすることもできます。
管理画面の下の方に表示される『Show only non-liked files. 』ボタンを押すと、ブログで使われていないと思われる画像のみを表示させることができます。この表示はあくまで参考ですので、ファイルを削除する際は、本当に使われていないかどうか、きちんと確認してください。『Show all files. 』を押すと、元通りすべてのファイルが表示されるようになります。
(追記 2006-11-29)
バージョン 101.7b もしくはそれより古いバージョンには、管理画面の脆弱性があります。お使いの方は、最新のバージョンにアップグレードしてください。
Nucleus-SQLite の配布は終了しました
VBScript / JScript で Win32API / 構造体 / コールバック関数: SFC mini
オフライン
アップロードしたメディアファイルを削除・編集するためのプラグインです。NP_SkinFilesの対象ディレクトリを、mediaディレクトリに変更しただけのものです。
こちらは日本人ではありませんので、間違ったところを勘弁してください。 :oops:
イメージファイルがpreview できなくて、ちょっと不便ですので、ちょっと自分の都合で少し改造しました。
1.gdthumb.php を media ディレクトリの下に置きます。
2.NP_MediaFile.php の 29行に三つオプションを新増します。
$this -> createOption('showimage','Show thumbnail on management area','yesno','no');
$this -> createOption('mwidth', 'Width of thumbnail','text','30');
$this -> createOption('mheight','Height of thumbnail','text','30');
3.mediafilesディレクトリの中のindex.phpを開いて、411ラインのところに
global $DIR_MEDIA, $pluginsmediafiles, $CONF, $oPluginAdmin;
$this->plug =& $oPluginAdmin->plugin;
$this->showimage =$this->plug->getOption('showimage');
$oPluginAdmin と 新しい2行を加えます。続き、502~504行の
if (_isImageFile($file)) {
echo ' <a href="'.$CONF['MediaURL'].$thisdir."$file" title="View graphic">(view)</a>";
}
ところを
if (_isImageFile($file)) {
if($this->showimage =='no'){
echo ' <a href="'.$CONF['MediaURL'].$thisdir."$file" title="View graphic" target="_blank">(view)</a>";
} else {
$mwidth = $this->plug->getOption('mwidth');
$mheight = $this->plug->getOption('mheight');
echo ' <a href="'.$CONF['MediaURL'].$thisdir."$file" title="View graphic" target="_blank"><img src="" .$CONF['MediaURL']. "gdthumb.php?path=" .$thisdir."$file&mw=$mwidth&mh=$mheight" alt="View graphic"></a>";
}
}
変えます。
これで一番目のオプションをYESにすると、サムネイル画像が表示できます。
知り合いから「動かなくなったー」と質問されたので調べたところ、PHP5ではnewshidankoさんの改造が動作しませんでした。
xampp(phpdevみたいなもの)でテスト環境を作っている途中で、標準ではPHP5が有効だったみたいです。
今回は、本番環境もPHP4だったので単純にxamppの設定変更で解決しました。
書き換えまではやっていません、お知らせまで。
(誰かはまる人のないように・・
追記
newshidankoさんの書いてくださったコード、一部に全角スペースが使われていた気がします。(未確認)
こちらの手違いで何かの拍子に紛れ込んだのかもしれませんが、もしエラーが出たらその線で確認すると幸せになれるかもしれません>利用される方
オフライン
追記
newshidankoさんの書いてくださったコード、一部に全角スペースが使われていた気がします。(未確認)
こちらの手違いで何かの拍子に紛れ込んだのかもしれませんが、もしエラーが出たらその線で確認すると幸せになれるかもしれません>利用される方
行頭部分の全角スペースを半角スペースに修正しました。ご了承ください>newshidankoさん
オフライン
行頭部分の全角スペースを半角スペースに修正しました。ご了承ください>newshidankoさん
お手数をかけまして申し訳ございません。>Andyさん
不注意とはいえ、みんなにご迷惑をかけました。
実はこの改造はイメージファイルが多い方に少々不都合があるんです。
サムネイルの数が多ければ多いほどページが重くなってしまいます。
はあ。。。_|-|O 三百枚くらいのイメージがある自分はそういう改造をしないと名前だけで
わかりにくいですよ。
ディレクトリーで分けるのも一つ方法ですが、どうにも自分の我侭でそれをしたくないんです。
できればページングとかしたいと思いますけど、力不足でできません(泣)
それに、Xreaを使っている方はGIFがサムネイルできないかもしれないという欠点もあります。
どなたさま~~~NP_thumbnail と連動できるように改造していただけませんが。
newshidankoさんの改造をNP_SkinFiles2.0xに施してみましたが、
おっしゃるとおりXreaサーバのためgif表示で沈没…
オフライン
遅レスになってしまいました。
NP_thumbnail との連動ですが、newshidankoさんのされている変更を
if (_isImageFile($file)) {
if($this->showimage =='no'){
echo ' <a href="'.$CONF['MediaURL'].$thisdir."$file\" title=\"View graphic\" target=\"_blank\">(view)</a>";
} else {
echo ' <a href="'.$CONF['MediaURL'].$thisdir."$file\" title=\"View graphic\" target=\"_blank\"><img src=\"../action.php?action=plugin&name=Thumbnail&p=$file&id=".substr($thisdir,0,strpos($thisdir,'/'))."\" alt=\"View graphic\"></a>";
}
}
の様にすれば、うまく行くと思います。当方の環境ではGDが使えないので、動作確認できないのですが…。
Nucleus-SQLite の配布は終了しました
VBScript / JScript で Win32API / 構造体 / コールバック関数: SFC mini
オフライン
<!-- l --><a class="postlink-local" href="http://japan.nucleuscms.org/bb/viewtopic.php?t=1761">viewtopic.php?t=1761</a><!-- l -->
に書いたことなので、詳しくは省きますが、NP_Mediafiles-101.1bのindex.phpだとブログ管理者権限のユーザがsuper-admin権限を奪取できる脆弱性があります。
mediafiles/index.phpの
if (preg_match("/MD$/", $nucleus['version'])) {
$isblogadmin = $member->isBlogAdmin(-1);
} else {
$isblogadmin = $member->isBlogAdmin($blogid);
}
if (!($member->isAdmin() || $isblogadmin)) {
$oPluginAdmin = new PluginAdmin('MediaFiles');
$oPluginAdmin->start();
echo "<p>"._ERROR_DISALLOWED."</p>";
$oPluginAdmin->end();
exit;
}
を
if (!($member->isLoggedIn() && $member->isAdmin()))
{
$oPluginAdmin->start();
echo '<p>' . _ERROR_DISALLOWED . '</p>';
$oPluginAdmin->end();
exit;
}
に変えて、super-adminにアクセスを制限すると問題は解消します。
オフライン
新しいバージョン(1.01.2b)をアップしました。kosugiatkipsご指摘の分(有り難うございます)以外にも、セキュリティー関連で変更を加えてあります。その結果として、Super-Adminのみがこのプラグインを使用できることになります。
(追記)
新しいバージョン(1.01.3b)をアップしました。1.01.2bには、ファイルダウンロード不具合のバグがあります(1.01.2bをダウンロードされた方、申し訳ありません)。
Super-Adminでないブログ管理者による使用のサポートについては、現在考慮中です。
なお、newshidankoさんご提案の改造は、
2. 33行目
3. 375行目及び462-464行目
に施してください。
Nucleus-SQLite の配布は終了しました
VBScript / JScript で Win32API / 構造体 / コールバック関数: SFC mini
オフライン
Katsumiさん、ありがとうございます。
前の記事を参照して、こちらでまとめます。
一、gdthumb.php を使うこと。
美点:サムネイル画像の大きさは自由に設定できます。
欠点:xrea のサイトで GIF がサムネイルできません。
二、NP_Thumbnail との連動すること。
美点:xrea のサイトで、GIFがサムネイルできます。
(NP_Thumbnail v1.4 で実験済みます。v1.5 はこちらが使ったとき元々GIFのサムネイルができなくて今回の実験をしていません)
欠点:サムネイル画像の大きさはNP_Thumbnail の設定を従います。
もし、NP_Thumbnail 設定のサイズが大きかった場合は、イメージの数が多ければ多いほどページのロードが凄く遅くなります。
小さくしたくても、ブログ全体のページのサムネイルを影響が与えますので、勝手に変えません。
多分、Katsumiさんが使っているNP_Thumbnail は最新版かもしれません。
こちらは v1.5 以後のversion がxreaで使えません(理由不明で、GIFがサムネイルできません)ので、v1.4 を使っています。もし、NP_Thumbnail v1.4 との連動を元に改造したかったら、Katsumiさんが提供したコードで画像がばつになってしまいます。ディレクトリのところはちょっと違います。
NP_Thumbnail v1.4 限定の改造です。
if (_isImageFile($file)) {
if($this->showimage =='no'){
echo ' <a href="'.$CONF['MediaURL'].$thisdir."$file\" title=\"View graphic\" target=\"_blank\">(view)</a>";
} else {
echo ' <a href="'.$CONF['MediaURL'].$thisdir."$file\" title=\"View graphic\" target=\"_blank\"><img src=\"../action.php?action=plugin&name=Thumbnail&p=".substr($thisdir,0,strpos($thisdir,'/'))."/$file\" alt=\"View graphic\"></a>";
}
}
こちらは、gdthumb.php とNP_Thumbnail v1.4 のサムネイルについてのコード構成が違ったところが
見えますが、どんなところが違うか良くわかりません。 :?
どうしてGIFのサムネイルは前者ができて、後者ができない訳もさっばりわかりません。
もし解ったら、gdthumb.php をGIFができるように改造することができるかもしれません。
こちらのプラグインを使わせて頂いてます(v1.01.3b に入れ替えました)。
newshidanko さんの改造を加えて画像サムネイルを出していて気づいたのですが、
ロリポップサーバでも GIF サムネイルが出て来ない場合があります。
確認はしていませんが透過 GIF にしているものはサムネイルが出て来て
それ以外は出てこないようです (そもそも私のサイトは GIF 画像が少ないので間違ってたら済みません)。
またうちでは NP_TrimImage v0.8 を使っていますが、こちらでは GIF サムネイルは全く出せません
(MediaFiles と連携させているわけではありません。サムネイル生成に NP_Thumbnail と同様のルーチンを
使っていると考えこの文を書いたのですが、これも間違っていたら申し訳ないです)。
また NP_TrimImage でサムネイルが表示出来る PNG ファイルが
NP_MediaFiles の gdthumb.php 使用の改造では一色で塗りつぶされた画像になってしまうようです。
ロリポップの PHP Version は 4.3.11、GD Version は bundled (2.0.28 compatible) となっています。
以上、とりあえず御報告させて頂きます。
オフライン
バージョン 101.5b をアップしました。
サムネイル表示に正式に対応させました。サムネイル画像のキャッシュはしていませんが、多くのサムネイル作成スクリプトで用いられているPHPの『ImageCopyResampled()』関数ではなく、『ImageCopyResized()』関数を用いている(100倍ほど速度に差があります)ので、多くの画像を含む場合の処理速度の問題が軽減しているかもしれません。反面、少し荒めの画像が表示される可能性があります。
一応、GIF, PNG, JPEG画像対応です。プロバイダごとの対応状況は…何とも言えません。知らせて頂ければ、対応できるかも知れません。
もう一つの新しい機能として、メディア管理画面で『Show only non-liked files.』をクリックすると、ブログ記事で使われていないと思われる画像ファイルだけを表示させることができるようになりました。画像が多く、かつサムネイルも表示させたい方は、こちらを試して頂けたらと思います。
Nucleus-SQLite の配布は終了しました
VBScript / JScript で Win32API / 構造体 / コールバック関数: SFC mini
オフライン
あわただしいですが、バージョン 101.6b をアップしました。101.5b に、サムネイルのキャッシュ機能を追加した物です。キャッシュの方法は色々試した結果、Media ディレクトリにサムネイル画像ファイルを作成する形にしました。この方法が、表示が一番速かったからです。
大元の画像ファイルを NP_MediaFiles を用いて消去すると、同時にサムネイル画像も消去される仕組みになっています。FTP等を使って消去した場合は、サムネイル画像ファイルは残ってしまいますのでご注意ください。
Nucleus-SQLite の配布は終了しました
VBScript / JScript で Win32API / 構造体 / コールバック関数: SFC mini
オフライン
NP_MediaFilesをインストールし、大変困った状態になっております。
インストールしたところ、管理画面から画像の管理ができて、大変便利に感じていたのですが、実際にブログの方を確認すると画像が表示されていませんでした。
(NP_TrimImageを使ってメインの目次ページに画像を表示させています)
画像が表示されていないだけならよかったんですが、ブログのトップページから個別のアイテムページへ遷移しようとすると、「Internal Server Error」が表示されてしまいます。
複数のブログを設置していますが、どれもです。
複数のブログですが大元のブログ(親ブログ?)だけは、トップページもエラーがでる状態です。
さくらサーバを利用し、Nucleusのバージョンは3.23sp3です。
ブログも表示されず、どうすればよいのか困っております。
プラグインをはずしてもエラーが出続けるので、原因がNP_MediaFilesだけでないのかもしれませんが、よろしくお願いします。
**--追記です--**
只今原因究明のため格闘中ですが、どうやらhtaccessが原因のようです。
NP_CustomURLのために設置してあるhtaccessをリネームし、URLを直打ちだと記事が出るようになりました。
そこでhtaccessを元に戻した状態でURL直打ちした場合でも同様に記事が表示されることがわかりました。
これはNP_MediaFilesとは無関係なのでしょうね。サーバーの問題でしょうか。
別のところで質問した方がよさそうですね。お手数おかけしました。
オフライン
横からすみません。
元々こちらのプラグインに興味があったので、さくらサーバで試してみたところ
同じようにエラーが出てページが一切表示されなくなりました。
素人ながら少し調べてみたのですが、結論から言うと、
こちらのプラグインでサムネイルのキャッシュ用ディレクトリが作られる際に
それより上位のディレクトリが全てパーミッション777に変更されていたため
.phpが実行出来なくなっていたのが原因でした。
(参考:さくらサーバでPHPスクリプトを実行する場合
http://faq.sakura.ne.jp/wiki/wiki.cgi?cgi%a4%c8php#i15)
エラー自体は、ディレクトリのパーミッションを元の705などに戻せば解消されたのですが、
キャッシュ用ディレクトリを含めてそれより上位、
ユーザーディレクトリ自体(/home/ユーザー名/)まで全てのディレクトリが777になっていたので、
これはちょっとまずいのではないかなと…
一応こちらで確認した限りなのですが、
plugins/mediafiles/thumbnail.php の一番最後、function mkdirex 内で
if (!file_exists($temp)) @mkdir($temp);
@chmod($temp,$i);
ここを
if (!file_exists($temp)){
@mkdir($temp);
@chmod($temp,$i);
}
このように変更すれば、パーミッションが変わってしまう事はなくなりましたので
ご報告させていただきます。
オフライン
素人ながら少し調べてみたのですが、結論から言うと、
こちらのプラグインでサムネイルのキャッシュ用ディレクトリが作られる際に
それより上位のディレクトリが全てパーミッション777に変更されていたため
.phpが実行出来なくなっていたのが原因でした。
ありがとうございます。
まったく気づいていませんでした…
エラー自体は、ディレクトリのパーミッションを元の705などに戻せば解消されたのですが、
キャッシュ用ディレクトリを含めてそれより上位、
ユーザーディレクトリ自体(/home/ユーザー名/)まで全てのディレクトリが777になっていたので、
これはちょっとまずいのではないかなと…
この通り、手動で修正したところ、しっかり元通りにされるようになり、且つ画像管理もできるようになりました。
やっぱり、上位ディレクトリまで777になるのは、まずいですよね…。
オフライン
キャッシュ用ディレクトリを含めてそれより上位、
ユーザーディレクトリ自体(/home/ユーザー名/)まで全てのディレクトリが777になっていたので、
これはちょっとまずいのではないかなと…一応こちらで確認した限りなのですが、
plugins/mediafiles/thumbnail.php の一番最後、function mkdirex 内でif (!file_exists($temp)) @mkdir($temp); @chmod($temp,$i);
ここを
if (!file_exists($temp)){ @mkdir($temp); @chmod($temp,$i); }
このように変更すれば、パーミッションが変わってしまう事はなくなりましたので
ご報告させていただきます。
その通りです。バグの混入、どうもすみません。また、バグレポート及びデバッグコードのご提示、どうもありがとうございます。rkzさんのコードで、もともと意図していたように働きます。
近日中に新しいバージョンをアップします。
Nucleus-SQLite の配布は終了しました
VBScript / JScript で Win32API / 構造体 / コールバック関数: SFC mini
オフライン
Ver 1.01.7bを、Wikiにアップしました。上記の不具合修正、Windows 環境下での不具合修正他、バグフィックスを行っています。
Nucleus-SQLite の配布は終了しました
VBScript / JScript で Win32API / 構造体 / コールバック関数: SFC mini
オフライン
管理画面の脆弱性を解消したバージョン、1.01.8 をリリースします。以前のバージョンでもNP_0TicketForPlugin をインストールしてあれば脆弱性が解消できますが、新しいバージョンにアップグレードすることを強く推奨します。
また、今回のバージョンで日本語対応にしました。ダウンロードファイルは、UTF-8 / EUC-JP 共用です。
Nucleus-SQLite の配布は終了しました
VBScript / JScript で Win32API / 構造体 / コールバック関数: SFC mini
オフライン
同梱されているjapanese-utf8.phpの文字コードがUTF-8(BOM付き)で保存されているのが文字化けの原因のようです。Nucleus v3.24に始めから入っていたjapanese-utf8.phpの文字コードはUTF-8N(BOM無し)でした。
でも、ブラウザのエンコードをUTF-8からEUC-JPにすると化けずに表示されてたんですよ。よくわからない挙動です。
v1.01.8に入ってたjapanese-utf8.phpの文字コードをUTF-8Nで保存しなおすと、ブラウザでエンコードをUTF-8に指定しても文字化けしなくなりました。
オフライン
最新NP_MediaFiles101.8.zipをダウンロード インストールしました。
管理画面からファイルをアップロードしようとすると
”このファイルタイプは認められていません”
と表示されます。
jpgもgifもです。
グローバル設定で禁止してるわけでもありません。
何か設定が必要ですか?
宜しくお願い致します。
オフライン
syo804's problem comes from his PHP version not supporting the deprecated $HTTP_POST_FILES variable (deprecated since PHP 4.1) used in nucleus/plugins/mediafiles/index.php .
Starting about line 265 of that file, replace
$filename = $HTTP_POST_FILES['filename']['name'];
$filesize = $HTTP_POST_FILES['filename']['size'];
$filetempname = $HTTP_POST_FILES['filename']['tmp_name'];
with this:
$filename = $_FILES['filename']['name'];
$filesize = $_FILES['filename']['size'];
$filetempname = $_FILES['filename']['tmp_name'];
オフライン
>ftruscot
Nice to meet you!
ここは、postFileInfo('filename')を使うのがクールでスマートでユーザーフレンドリーじゃないでしょうか。
in vars4.0.6.php
function postFileInfo($name) {
global $HTTP_POST_FILES;
if (!isset($HTTP_POST_FILES[$name])) {
return;
}
return $HTTP_POST_FILES[$name];
}
in vars4.1.0.php
function postFileInfo($name) {
if (!isset($_FILES[$name])) {
return;
}
return $_FILES[$name];
}
NucleusCMS V3.5からはサポート外になりますけど。
オフライン
Thanks, that's even better. I forgot to look into those files to see if wrapper functions existed already.
オフライン
ページ: 1