concrete5でファイルオブジェクトの色んな情報を取得する
Posted by admin at 10:58 日時 2014/05/24
ファイルのダウンロードリンクは「ファイル」ブロックで簡単にページ内に設置できるけど、拡張子やファイルのサイズなど、もっと詳しい情報を表示したい場合の方法についてまとめたゾ☆
<?php // ファイルブロックの場合のFileオブジェクトの取得方法です。 // ページ属性などの場合は適宜読み替えてね(はあと $f = $controller->getFileObject(); // ファイルオブジェクトを渡して権限オブジェクトの生成 $fp = new Permissions($f); // 現在のユーザーがファイルの閲覧権限を持っているかチェック! if ($fp->canViewFile()) : // ファイルのタイトルの取得 $file_title = $f->getTitle(); // 承認されたファイルバージョンの取得。 // concrete5ではファイルの変更/差し替えの履歴が残りますので、 // 承認されたバージョンを取得しないとサイズも変わってきちゃうんだょ $fv = $f->getApprovedVersion(); // ファイルダウンロードURLの取得 $download_url = View::url('/download_file', $fv->getFileID(), Page::getCurrentPage()->getCollectionID()); // ファイルサイズの取得 $file_size = $fv->getSize(); $file_fill_side = $fv->getFullSize(); $file_size_mb = Loader::helper('number')->formatSize($file_full_size, 'MB'); // ファイルがアップされた日時の取得 $fvDateAdded = $fv->getDateAdded(); $upload_date = Loader::helper('date')->date(DATE_APP_GENERIC_MDYT_FULL_SECONDS, strtotime($fvDateAdded)); // FileTypeオブジェクトの取得。 $ft = FileTypeList::getType($fv->fvFilename); // ファイルタイプ(PDFとかPNGとか)名の取得 $file_type = $ft->getName(); ?> <p>ファイル名:<?php echo h($file_title); >?></p> <p>ダウンロードURL:<?php echo $download_url; >?></p> <p>サイズ:<?php echo $file_size; >?></p> <p>アップロード日時:<?php echo $upload_date; >?></p> <p>タイプ:<?php echo $file_type; >?></p> <?php else: echo '表示権限がないよ!'; endif;
自分で作るのメンドクサイよって人は、拙作のアドオン File Templates+ を使うとすぐに表示できちゃうぜ(・ω≦)