ここの情報は古いです。ご理解頂いた上でお取り扱いください。
- Timestamp:
-
Mar 30, 2008, 7:37:11 PM (14 years ago)
- Author:
-
imoto
- Comment:
-
--
Legend:
- Unmodified
- Added
- Removed
- Modified
-
v13
|
v14
|
|
6 | 6 | |
7 | 7 | == 概要 == |
8 | | ディレクトリツアーではOpenPNEのディレクトリ構造を見ていきます。[[BR]] |
9 | 8 | 現在のOpenPNE2.0系は独自のフレームワークを採用しています。[[BR]] |
10 | | よってディレクトリ構造も独自の構成をしています。[[BR]] |
11 | | 今回は、trac.openpne.jpのtrunkを参照しながら解説を行っていきますのでディレクトリはアルファベット順になっているので、解説も上からアルファベット順に解説していきます。 |
12 | | |
13 | | それでは、主要なディレクトリを網羅しながら、OpenPNEのディレクトリを見ていきましょう。 |
| 9 | この独自のフレームワークはディレクトリ構造も独自の構成をしています。 |
| 10 | そこで今回はこのディレクトリ構造を、trac.openpne.jpのtrunkを参照しながら解説を行っていきます。 |
| 11 | 解説するディレクトリはアルファベット順に解説していきます。 |
| 12 | |
| 13 | それでは、主要なディレクトリを網羅しながら、OpenPNEのディレクトリ構造を見ていきましょう。 |
14 | 14 | |
15 | 15 | {{{ |
… |
… |
|
38 | 38 | まずはじめに、rootディレクトリです。[[BR]] |
39 | 39 | このrootディレクトリはOpenPNEのディレクトリの中で一番上の階層です。[[BR]] |
40 | | OpenPNEをダウンロードして解凍したり、trac.openpne.jpのtrunkをみるとこのような構造になっていると思います。[[BR]] |
41 | | ここには、いろいろなディレクトリがあります。それぞれディレクトリについて後ほど詳しく解説するのでここでは割愛します。[[BR]] |
42 | | |
43 | | このrootディレクトリにはその他に、二つのファイルがあります。一つがconfig.php.sampleという設定ファイルです。もう一つはLICENSEファイルです。 |
44 | | |
45 | | 簡単に2つのファイルについて説明すると、config.php.sampleは通常config.phpとリネームしてOpenPNEの設定ファイルとして使用します。この設定ファイルには、データベースの設定から、OpenPNEのAPI設定までさまざまな設定項目があります。詳しくは、実際にconfig.php.sampleを確認してみてください。各項目にはコメントがあるのでコメントを読めば分かると思います。 |
| 40 | OpenPNEをダウンロードして解凍したり、trac.openpne.jpのtrunkをみるとこのような構造になっています。[[BR]] |
| 41 | このrootにあるディレクトリは、後ほど詳しく解説します。[[BR]] |
| 42 | |
| 43 | このrootディレクトリにはディレクトリの他に、二つのファイルがあります。一つがconfig.php.sampleという設定ファイルと、LICENSEというライセンスが記述されたファイルです。 |
| 44 | |
| 45 | 簡単に2つのファイルについて解説します。 |
| 46 | config.php.sampleファイルは通常config.phpとリネームしてOpenPNEの設定ファイルとして使用します。この設定ファイルには、データベースの設定から、OpenPNEのAPI設定までさまざまな設定項目があります。設定項目の詳細は、実際にconfig.php.sampleのコメントを参照してください。 |
| 47 | LICENSEファイルはPHP Licenseの詳細について記述しているファイルです。 |
| 48 | |
46 | 49 | |
47 | 50 | |
… |
… |
|
652 | 655 | }}} |
653 | 656 | |
654 | | このbinディレクトリはアプリケーションの動作には依存していない、単体で動作するスクリプトが入っています。 |
655 | | binの中には2種類のファイルタイプがあります。一つ目はcronで、もう一つはPHPです。 |
| 657 | このbinディレクトリはアプリケーションの動作には依存していなく、単体で動作するスクリプトが入っています。 |
| 658 | binディレクトリの中には2種類のファイルタイプがあります。一つはcronで、もう一つはPHPです。 |
656 | 659 | 基本的にこのcronファイルは同名のPHPファイルと対になって存在しています。 |
657 | | もう一つは、実際に携帯の写メール投稿や、RSSの取得などの処理を行うPHPファイルです。 |
658 | | |
659 | | |
660 | | このbinディレクトの中に、cronとPHPファイルが対でないファイルが2つあります。その2つのファイルととはconfig.inc.phpとmail.phpです。簡単にこの2つのファイルについて解説します。 |
661 | | |
662 | | まず、config.inc.phpは中を見ると分かりますが、root以下にあるconfig.phpを読み込む処理が書いています。 |
663 | | このconfig.inc.phpはそれぞれ単体で動くスクリプトにOpenPNEの設定やパスを教えるためのものです。 |
| 660 | PHPファイルは、実際に携帯の写メール投稿や、RSSの取得などの処理を行うファイルです。 |
| 661 | |
| 662 | このbinディレクトの中に、cronファイルとPHPファイルが対でない二つのファイルがあります。その二つのファイルとはconfig.inc.phpとmail.phpです。簡単にこの二つのファイルについて解説します。 |
| 663 | |
| 664 | まず、config.inc.phpのソースコードを見てみましょう。 |
| 665 | ソースコードを見ると非常にシンプルで、root以下にある設定ファイルのconfig.phpを読み込む処理が書かれています。 |
664 | 666 | |
665 | 667 | {{{ |
… |
… |
|
679 | 681 | |
680 | 682 | |
681 | | 次に、mail.phpですが、これはcatch allというメールサーバの機能を利用してこのmail.phpにメールの本文を渡すことで動作しています。 |
682 | | mail.phpがメールの本文などを受け取ったら、このmail.phpでメール本文を読み込み、それぞれの処理を判断しています。 |
683 | | このmail.phpはメールを受信したときに動作するので、対のcronファイルがないということになります。 |
| 683 | 次に、mail.phpを解説します。 |
| 684 | mail.phpはcatch allというメールサーバの機能を利用してこのmail.phpにメールの本文を渡すことで動作しています。 |
| 685 | mail.phpがメールの本文などを受け取ったら、mail.phpでメール本文を読み込み、それぞれの処理を判断しています。 |
| 686 | このmail.phpはメールを受信したときに動作するので、対のcronファイルがありません。 |
684 | 687 | |
685 | 688 | |
… |
… |
|
697 | 700 | このlibディレクトリの中には、includeディレクトリとsmarty_pluginsディレクトリがあります。このlibディレクトリには外部のライブラリが入っています。具体的にはPEARのライブラリなどが入っています。 |
698 | 701 | |
699 | | このlib直下のREADME.txtにも書いていますが、このライブラリを使用する際に注意が必要なことがあります。[[BR]] |
700 | | それは、OpenPNEはPHPライセンスですが、このlib直下のライブラリは必ずしもPHPライセンスではないということです。ですので、使用する際には十分注意が必要です。[[BR]] |
701 | | ただし、あくまでPHPライセンスで使用できるライセンスのライブラリで、GPLなど縛りの強いライセンスは同梱していないので、PHPライセンスであれば使用しても大丈夫です。[[BR]] |
| 702 | このlib直下のREADME.txtにも書いていますが、このライブラリを使用する際に注意が必要です。OpenPNEはPHPライセンスですが、このlib直下のライブラリは必ずしもPHPライセンスではないので、使用する際には十分注意が必要です。 |
| 703 | |
| 704 | ただし、GPLなど縛りの強いライセンスは同梱していないので、PHPライセンスであれば使用可能です。[[BR]] |
702 | 705 | |
703 | 706 | |
… |
… |
|
735 | 738 | }}} |
736 | 739 | |
737 | | このincludeディレクトリは、外部のライブラリでOpenPNEに欠かせないライブラリが揃っています。[[BR]] |
738 | | このincludeディレクトリの特徴としては、このincludeディレクトリはインクルードパスに指定されていますので、ライブラリ名を指定して読み込むだけでファイルを読み込むことが出来ます。[[BR]] |
739 | | 全体的にこのライブラリ群を見ると、このincludeディレクトリはの中に含まれるライブラリはほぼPEARのライブラリです。 |
740 | | |
741 | | この中でも主要なディレクトリや特徴のあるライブラリについて解説していきます。 |
| 740 | このincludeディレクトリは、OpenPNEに欠かせない外部のライブラリが入っています。[[BR]] |
| 741 | このincludeディレクトリの特徴としては、このincludeディレクトリはインクルードパスに指定されているので、ライブラリ名を指定して読み込むだけで指定のライブラリを読み込むことができます。[[BR]] |
| 742 | このincludeディレクトリのライブラリ群を見ると、ほぼPEARのライブラリです。 |
| 743 | |
| 744 | このincludeディレクトリの中でも主要なディレクトリや特徴のあるライブラリについて解説していきます。 |
742 | 745 | |
743 | 746 | |
744 | 747 | まず、一番上のAuthディレクトリですが、OpenPNEの認証系には欠かせないライブラリが入っています。[[BR]] |
745 | | このAuthディレクトリの中でも、ContainerディレクトリはSlavePNEを実現するためのライブラリ群が入っています。SlavePNEはこのPEAR_Authを使って実現しているので、どのような認証系が使えるかどうかが知りたければ、この中のContainerディレクトリを見てみるのもいいと思います。 |
746 | | |
| 748 | このAuthディレクトリの中でも、ContainerディレクトリはSlavePNEを実現するためのライブラリ群が入っています。SlavePNEはこのPEAR_Authを使用して実現しているので、どの認証系を使用することができるか知りたければ、この中のContainerディレクトリ内にあるファイルを見ると対応する認証を確認することができます。 |
747 | 749 | |
748 | 750 | {{{ |
… |
… |
|
773 | 775 | OpenPNEはこのPEAR_DBに依存しているので、このライブラリ群がなければデータベースの操作はできません。 |
774 | 776 | |
775 | | SmartyディレクトリはOpenPNEのテンプレートに使用しているテンプレートエンジンのライブラリ群が入っています。OpenPNEではこのSmartyに独自の拡張クラスを作成しているのですが、ベースはこのincludeディレクトリ以下のSmartyディレクトリに入っています。 |
776 | | |
777 | | ファイルの中に、simplepie.incというファイルがあります。[[BR]] |
778 | | OpenPNEは現在のPHPライセンスにする前はGPLライセンスというライセンス形態をとっていました。RSS取得のためのライブラリにMagpieRSSを使っていたのですが、MagpieRSSがGPLライセンスなので、PHPライセンスにすることが出来ませんでした。そこで、OpenPNE2.3.0にするときに、このsimplepieというライブラリに変更したという経緯があります。 |
| 777 | SmartyディレクトリはOpenPNEのテンプレートに使用しているテンプレートエンジンのライブラリ群が入っています。OpenPNEではこのSmartyに独自の拡張クラスを作成していますが、その拡張クラスのベースはこのincludeディレクトリ以下のSmartyディレクトリに入っています。 |
| 778 | |
| 779 | ファイルの中に、simplepie.incというファイルがあります。このファイルはRSS取得のためのライブラリです。[[BR]] |
| 780 | 以前、OpenPNEはGPLライセンスというライセンス形態をとっていました。その時はRSS取得のためにMagpieRSSというライブラリを使用していました。しかし、MagpieRSSはGPLライセンスであるため、PHPライセンスにすることができませんでした。そこで、OpenPNE2.3.0にバージョンアップするときに、RSS取得のためのライブラリをMagpieRSSからこのsimplepieというライブラリに変更したという経緯があります。 |
779 | 781 | |
780 | 782 | {{{ |
… |
… |
|
824 | 826 | |
825 | 827 | それでは、Webサーバの公開領域であるpubic_htmlディレクトリを見ていきましょう。[[BR]] |
826 | | このpubic_htmlディレクトリはWebサーバから読み込まれるディレクトリなのでcssやjsなどがあります。詳しくは後ほど説明します。[[BR]] |
| 828 | このpubic_htmlディレクトリはWebサーバから読み込まれるディレクトリなのでCSSファイルやJavaScriptファイルなどがあります。詳しくは後ほど説明します。[[BR]] |
827 | 829 | また、このpubic_htmlは公開領域であるために注意が必要な場合があります。[[BR]] |
828 | | このpubic_htmlディレクトリ以下のファイルはURLを直接入力された場合は誰でも見ることが出来るという特徴があります。[[BR]] |
829 | | 例えば、会員のみに公開したい資料などをここに置いた場合でも、会員でない人がURLを直接入力してアクセスした場合は見ることが可能なので注意が必要です。[[BR]] |
830 | | |
831 | | |
832 | | このディレクトリにあるファイルを見ると、まずcap.phpがあります。このcap.phpはlib/includeディレクトリ以下にあるkcaptchaというライブラリを使うためにあります。[[BR]] |
| 830 | このpubic_htmlディレクトリ以下のファイルはURLを直接入力された場合、ログインしていないユーザでもファイルを見ることができます。[[BR]] |
| 831 | 例えば、会員のみに公開したい資料などをここに置いた場合、会員でない人がURLを直接入力してファイルにアクセスすれば、そのファイルを見ることができるのでこのディレクトリにファイルを置くときには注意が必要です。[[BR]] |
| 832 | |
| 833 | |
| 834 | このディレクトリにあるファイルを見ると、まずcap.phpがあります。このcap.phpはlib/includeディレクトリ以下にあるkcaptchaというライブラリを使用するためにあります。[[BR]] |
833 | 835 | kcaptchaライブラリは招待メールを送るときや、新規登録の際にコンピュータが判別しにくい崩れた人間しか読めない文字の画像を表示するために使用しています。[[BR]] |
834 | | 次に、img.phpとimg_skin.phpがあります。この2つのファイルはデータベースから画像ファイルを読み込むためにあります。ブラウザ側から直接Webサーバにアクセスすることができないので、このimg.phpとimg_skin.phpがブラウザとデータベースの橋渡しになって画像ファイルのやり取りをしています。[[BR]] |
835 | | img.phpとimg_skin.phpの違いは、通常の画像なのか、スキン用の画像なのかという違いがあります。具体的には、認証の部分が違います。通常の画像はタイムスタンプがついていますが、テンプレートからスキン画像を読み込む場合はそれが出来ないので、この様に2種類のファイルに分けて画像の受け渡しをしています。 |
| 836 | 次に、img.phpとimg_skin.phpがあります。この2つのファイルはデータベースから画像ファイルを読み込むためにあります。ブラウザ側から直接Webサーバにアクセスすることができないので、このimg.phpとimg_skin.phpがブラウザとデータベースの橋渡となり、画像ファイルのやり取りをしています。[[BR]] |
| 837 | img.phpとimg_skin.phpの違いは、通常の画像であるか、スキン用の画像であるかという違いがあります。具体的には、認証の部分が違います。通常の画像はタイムスタンプがついていますが、テンプレートからスキン画像を読み込む場合はそれができないので、この様に2種類のファイルに分けて画像の受け渡しをしています。 |
836 | 838 | |
837 | 839 | 最後に、index.phpというファイルがあります。OpenPNEでは、基本的にすべてこのindex.phpが読み込まれて処理が始まります。OpenPNEのフレームワークはフロントコントローラという形式をとっており、入り口はこのindex.php一つにまとめています。このindex.phpからすべての処理が始まります。[[BR]] |
… |
… |
|
949 | 951 | |
950 | 952 | 次はflashディレクトリです。[[BR]] |
951 | | ここにはflashファイルが入っています。しかし、このflashディレクトリには現在一つしかファイルがありません。現在あるファイルはフレンドリストをFlashで表示するという機能のソースです。このflashのソースも公開してますので、これを編集しなおしてオリジナルのフレンドリストを作ることも可能です。[[BR]] |
| 953 | ここにはflashファイルが入っています。しかし、このflashディレクトリには現在一つしかファイルがありません。現在あるファイルはフレンドリストをFlashで表示するという機能のソースです。このflashのソースも公開してますので、これを再編集してオリジナルのフレンドリストを作ることも可能です。[[BR]] |
952 | 954 | |
953 | 955 | {{{ |
… |
… |
|
973 | 975 | 次はimgディレクトリです。このimgディレクトリはデフォルトの設定では使いません。[[BR]] |
974 | 976 | この機能を使うときは、config.phpで設定します。[[BR]] |
975 | | OPENPNE_IMG_CACHE_PUBLICをtrueに書き換える必要があります。[[BR]] |
976 | | なぜ、このOPENPNE_IMG_CACHE_PUBLICをデフォルトの設定でtrueにしていないかというと、この画像キャッシュをpublic_html以下に置くにはmod_rewriteが必要でだからです。[[BR]] |
977 | | |
| 977 | 【OPENPNE_IMG_CACHE_PUBLIC】をtrueに書き換える必要があります。[[BR]] |
| 978 | このOPENPNE_IMG_CACHE_PUBLICをデフォルトでtrueにしていない理由としては、画像キャッシュをpublic_html以下に置くためにはmod_rewriteが必要だからです。 |
| 979 | mod_rewriteに対応していないレンタルサーバでも動くように、OPENPNE_IMG_CACHE_PUBLICをデフォルトでfalseにしています。 |
| 980 | |
| 981 | |
978 | 982 | {{{ |
979 | 983 | root/config.php |
… |
… |
|
1014 | 1018 | このjsディレクトリにもcmdディレクトリと同じく、JavaScriptファイルが入っています。OpenPNEには小窓以外にもJavaScriptが使われています、[[BR]] |
1015 | 1019 | pne.jsはURL2CMDを実現するために必要なJavaScriptファイルです。[[BR]] |
1016 | | prototype.jsはフォーム入力欄のフォーカス契機で色を変えるというものに使っていました。現在は使用されていませんが、今後使用する可能性が高いためこのライブラリを残しています。[[BR]] |
| 1020 | prototype.jsはフォーム入力欄のフォーカス契機で色を変えるというものに使っていました。現在は使用していませんが、今後使用する可能性が高いためこのライブラリを残しています。[[BR]] |
1017 | 1021 | show_flash.jsはフレンドリストをFlashで表示するために必要なJavaScriptファイルです。[[BR]] |
1018 | 1022 | OpenPNEでは基本的にJavaScriptを使っておらず、あくまで補助的なものとして使用しています。 |
… |
… |
|
1079 | 1083 | }}} |
1080 | 1084 | |
1081 | | 次に、imgディレクトリについて見てみましょう。このimgディレクトリにはOpenPNEレッドに必要な画像しか入っていません。具体的には、ヘッダーやナビやログイン画面の画像などです。つまり、ボタン画像やアイコンは入っていません。[[BR]] |
1082 | | 001_openpne_redディレクトリにはない、ボタン画像やアイコンはskinディレクトリ以下のdefaultディレクトリが読み込まれることになっています。同名のファイル名がない場合は、defaultディレクトリの画像が使われることになります。[[BR]] |
| 1085 | 次に、imgディレクトリを見てみましょう。このimgディレクトリにはOpenPNEレッドに必要な画像しか入っていません。具体的には、ヘッダーやナビやログイン画面の画像などです。つまり、ボタン画像やアイコンは入っていません。[[BR]] |
| 1086 | 001_openpne_redディレクトリにはない、ボタン画像やアイコンはskinディレクトリ以下のdefaultディレクトリが読み込まれています。同名のファイル名がない場合は、defaultディレクトリの画像が使用されます。[[BR]] |
1083 | 1087 | |
1084 | 1088 | {{{ |
… |
… |
|
1115 | 1119 | |
1116 | 1120 | このsetupディレクトリにはセットアップに必要なファイルとOpenPNEのマニュアルが入っています。[[BR]] |
1117 | | PostgreSQLを使う場合はOpenPNE_Setup_pgsql.htmlを見てください。[[BR]] |
1118 | | そのほかにも、アップグレードのマニュアルもあるので安定版から安定版にアップグレードしたいときは、OpenPNE_Upgrade.htmlを見てアップグレードを進めてください。[[BR]] |
1119 | | それではscriptディレクトリから見ていきましょう。[[BR]] |
| 1121 | PostgreSQLを使う場合はOpenPNE_Setup_pgsql.htmlを参照してください。[[BR]] |
| 1122 | その他にも、アップグレードのマニュアルもあるので安定版から安定版にアップグレードする場合は、OpenPNE_Upgrade.htmlを参照してアップグレードしてください。[[BR]] |
| 1123 | それではscriptディレクトリを見ていきましょう。[[BR]] |
1120 | 1124 | |
1121 | 1125 | === script === |
… |
… |
|
1144 | 1148 | }}} |
1145 | 1149 | |
1146 | | 次に、sqlディレクトリですが、このディレクトリには基本的にSQLファイルが入っています。OpenPNEは原則として画像などもデータベースに保存しているためバージョンアップの時もこのSQLを実行するだけでバージョンアップをすることが出来ます。[[BR]] |
1147 | | 基本的にはどのディレクトリも構造は同じなのでOpenPNEが推奨しているMySQL4.1系のディレクトリを詳しく見ていきましょう。[[BR]] |
| 1150 | 次に、sqlディレクトリをみていきましょう。このsqlディレクトリには基本的にSQLファイルが入っています。OpenPNEは原則として画像などもデータベースに保存しているためバージョンアップの時もこのSQLを実行するだけでバージョンアップをすることができます。[[BR]] |
| 1151 | 基本的にはどのディレクトリも同じ構造なので、今回はOpenPNEが推奨しているMySQL4.1系のディレクトリについて詳しく見ていきましょう。[[BR]] |
1148 | 1152 | |
1149 | 1153 | |
… |
… |
|
1160 | 1164 | installディレクトリにはOpenPNEを新規にインストールするためのSQLが入っています。 |
1161 | 1165 | |
1162 | | optionには、OpenPNEの動作に必須ではないSQLが入っています。例えば、add_c_api.sqlはOpenPNEの動作には直接関係していません。つまり実行しなくてもOpenPNEは動作します。[[BR]] |
| 1166 | optionディレクトリには、OpenPNEの動作に必須ではないSQLが入っています。例えば、add_c_api.sqlはOpenPNEの動作には直接関係していません。つまり実行しなくてもOpenPNEは動作します。[[BR]] |
1163 | 1167 | しかし、OpenPNEのAPIを使用する場合にはこのadd_c_api.sqlを実行する必要があります。sqlディレクトリにあるREADME.txtの「用途」の欄を見ればoptionディレクトリにあるSQLの説明があります。 |
1164 | 1168 | |
… |
… |
|
1184 | 1188 | }}} |
1185 | 1189 | |
1186 | | このvarディレクトリには基本的には一時的なファイル、一時的なデータが入るようになります。ですので、OpenPNEをダウンロードして展開した状態だと空の状態です。 |
1187 | | |
1188 | | OpenPNEはデータはデータベースに置くという方針で開発しています。しかし、毎回データベースに接続して読み込んでいると表示速度が遅くなることがあるので、一度データベースから読み込んだファイルはこのvarディレクトリに置いておきます。[[BR]] |
1189 | | そうすることで、毎回データベースにデータを読み込みに行く必要がなくなるのでパフォーマンスが上がります。 |
| 1190 | このvarディレクトリには基本的には一時的なファイル、一時的なデータが入ります。よって、OpenPNEをダウンロードして展開した状態だと空の状態です。 |
| 1191 | |
| 1192 | OpenPNEはデータはデータベースに置くという方針で開発しています。しかし、毎回データベースに接続して読み込んでいると表示速度が遅くなるので、一度データベースから読み込んだファイルはこのvarディレクトリにキャッシュとして置いておきます。[[BR]] |
| 1193 | キャッシュすることで、毎回データベースにデータを読み込みに行く必要がなくなるのでパフォーマンスが向上します。 |
1190 | 1194 | |
1191 | 1195 | varディレクトリを詳しく見ていきましょう。[[BR]] |
1192 | 1196 | まず一番上にfunction_cacheディレクトリがあります。このfunction_cacheディレクトリは、 負荷のかかる処理などをキャッシュするために存在します。[[BR]] |
1193 | | 例えば、OpenPNEにはランキングという機能がありますが、このランキングを集計するのは非常に時間がかかります。しかも、ランキングは一日に一回しか計算しません。ですので、あらかじめ計算しておいて、このfunction_cacheディレクトリに置いています。このように、計算の難しいことや時間のかかることは一回計算した結果をこのfunction_cacheディレクトリに置いておきます。そして、二回目からはデータベースを読み込まないで、ファイルを読み込んで計算結果を出力しています。[[BR]] |
| 1197 | 例えば、OpenPNEにはランキング機能がありますが、このランキングを集計するのは非常に時間がかかります。しかも、ランキングは一日に一回しか計算しません。ですので、あらかじめ計算しておいて、このfunction_cacheディレクトリに置いています。このように、計算の難しいことや時間のかかることは一回計算した結果をこのfunction_cacheディレクトリに置いておきます。そして、二回目からはデータベースを読み込まないで、ファイルを読み込んで計算結果を出力しています。[[BR]] |
1194 | 1198 | |
1195 | 1199 | 次に、img_cacheディレクトリです。このimg_cacheディレクトリは日記やプロフィールなどの画像をキャッシュするために存在します。この img_cacheディレクトリを見ると、まずは拡張子別で分かれていて、次に高さ・幅、サイズ別に分かれています。サイズを分けてキャッシュをとることによって性能が劣化するのを避けています。[[BR]] |
… |
… |
|
1235 | 1239 | このディレクトリには2つのファイルがあります。 |
1236 | 1240 | |
1237 | | まず、init.incですがOpenPNEはconfigの後にこのファイルを読み込むことになります。このファイルにはOpenPNEのフレームワークの設定などがここには書いています。[[BR]] |
1238 | | version.phpはOpenPNEのバージョンを定義しているだけのファイルです。 |
| 1241 | まず、init.incですがOpenPNEはconfigの後にこのファイルを読み込みます。このファイルにはOpenPNEのフレームワークの設定が書かれています。[[BR]] |
| 1242 | version.phpはOpenPNEのバージョンを定義しているファイルです。 |
1239 | 1243 | |
1240 | 1244 | |
… |
… |
|
1297 | 1301 | |
1298 | 1302 | |
1299 | | OpenPNEではこのdbディレクトリ以下のファイルをよく使用しています。[[BR]] |
| 1303 | OpenPNEではこのdbディレクトリ以下のファイルにある関数を頻繁に使用しています。[[BR]] |
1300 | 1304 | 例えば、メンバーのidを取得したい場合、member.phpファイル内のdb_member_c_member4c_member_idという関数を呼ぶと、指定したメンバーの情報が取得出来ます。 |
1301 | 1305 | |
… |
… |
|
1320 | 1324 | }}} |
1321 | 1325 | |
1322 | | |
1323 | 1326 | ==== OpenPNE ==== |
1324 | 1327 | このOpenPNEディレクトリにはOpenPNEが使っているクラスライブラリが入っています。例えば、Smarty.phpはsmartyの派生クラスであるOpenPNE_Smartyというクラスを定義しています。ここではOpenPNE独自の処理を施しています。[[BR]] |
… |
… |
|
1326 | 1329 | |
1327 | 1330 | ==== color ==== |
1328 | | colorディレクトリには配色設定があります。[[BR]] |
1329 | | このディレクトリいはktaiディレクトリとpcディレクトリに分けてプリセットカラーが定義されています。 |
| 1331 | colorディレクトリには配色設定をしているファイルが入っています。[[BR]] |
| 1332 | このディレクトリはktaiディレクトリとpcディレクトリに分けてプリセットカラーが定義されています。 |
1330 | 1333 | |
1331 | 1334 | pcディレクトリには各プリセットカラーの配色設定が定義されています。[[BR]] |
1332 | | 同じフォーマットで新たに定義ファイルを追加すると、プリセットカラーとして管理画面から選択出来る様になります。 |
| 1335 | 同じフォーマットで新たに定義ファイルを追加すると、プリセットカラーとして管理画面から選択できるようになります。 |
1333 | 1336 | |
1334 | 1337 | {{{ |
… |
… |
|
1347 | 1350 | このsmarty_pluginsディレクトリには、OpenPNEプロジェクトが作ったSmartyのプラグインが入っています。[[BR]] |
1348 | 1351 | 中でも、function.t_url.phpというプラグインはOpenPNE独特のプラグインです。[[BR]] |
1349 | | OpenPNEの場合は、SSLを使用することがあるので、アクションによってはURLが変わることがあります。ですので、テンプレートに直接URLを書くより、Smartyプラグインを使ってSmartyにURLを生成してもらう処理をしています。[[BR]] |
| 1352 | OpenPNEは、SSLを使用することがあるので、アクションによってはURLが変わることがあります。そのため、Smartyプラグインを使ってSmartyでURLを生成しています。[[BR]] |
1350 | 1353 | その他にも、CMDタグを小窓にするfunction.t_cmd.phpや、絵文字を変換するためのoutputfilter.pne_display_emoji.phpなどもあります。 |
1351 | 1354 | |
… |
… |
|
1386 | 1389 | |
1387 | 1390 | }}} |
| 1391 | |
1388 | 1392 | modulesディレクトリには、管理画面からSNSの情報を変更をする、日記を読む、メッセージを送るなど、何らかの動作をするためのファイルがこの中には入っています。OpenPNEでの動作プログラムはほぼこのmodulesディレクトリの中にあります。[[BR]] |
1389 | 1393 | 基本的には構造は同じなのでpcディレクトリを見ながら詳しく解説していきます。[[BR]] |
… |
… |
|
1407 | 1411 | ===== do ===== |
1408 | 1412 | このdoディレクトリには、実行系の処理をするファイルが入っています。 |
1409 | | このdoディレクトリを見ると、データベースに追加、削除など何らかの処理をしています。フォームにはdo系の関数が使われることが多いことも特徴です。 |
| 1413 | このdoディレクトリを見ると、データベースに追加、削除などの処理をしています。フォームにはdo系の関数が使われることが多いことも特徴です。 |
1410 | 1414 | |
1411 | 1415 | ===== page ===== |
… |
… |
|
1420 | 1424 | validateディレクトリには入力値のチェックのためのファイルが入っています。[[BR]] |
1421 | 1425 | 例えば、c_member_idは1や2などの数値ですが、aなどの文字列が変数として渡された時にプログラムが予期せぬ動作を起こすことがあるかもしれません。そのような予期せぬ動作を未然に防ぐために、あらかじめ変数の値をチェックをしています。[[BR]] |
1422 | | このvalidateディレクトリの中でもdoとpageに分かれておりどちらも変数の入力値をチェックしています。 |
| 1426 | このvalidateディレクトリの中でもdoとpageに分かれており、どちらも変数の入力値をチェックしています。 |
| 1427 | |
1423 | 1428 | {{{ |
1424 | 1429 | root/webapp/modules/pc/validate/ |
… |
… |
|
1442 | 1447 | このtemplatesディレクトリにはOpenPNEのすべてのモジュールから使用できるテンプレートが入っています。[[BR]] |
1443 | 1448 | 一番上のmailディレクトリには、メールのテンプレートが入っています。このテンプレートの中に変数があり、その変数に値を渡してメールを送信しています。[[BR]] |
1444 | | 次に、debug.tplはconfig.phpでOPENPNE_DEBUGGINGを2にしたときに出力されるデバッグコンソールの中身です。[[BR]] |
| 1449 | 次に、debug.tplはconfig.phpでOPENPNE_DEBUGGINGを2にしたときに出力されるデバッグコンソールのテンプレートです。[[BR]] |
1445 | 1450 | 最後に、error.tplというのがありますが、OpenPNEではエラーやメンテナンス画面はこのerror.tplを使って表示しています。[[BR]] |
1446 | 1451 | |
… |
… |
|
1477 | 1482 | 新しい機能を追加や拡張する時のために用意されているもので、デフォルトでは空のディレクトリです。[[BR]] |
1478 | 1483 | 何らかの機能を追加したい場合、直接ファイルを書き換えるということも可能ですが、バージョンアップに追従できないというデメリットがあります。[[BR]] |
1479 | | 実際にこのwebapp_extディレクトリを使用して機能を拡張する場合は、webapp_bizディレクトリが参考になると思います。[[BR]] |
1480 | | |
1481 | | webapp_extディレクトリを使用する場合は、config.phpでUSE_EXT_DIRをtrueにする必要があります。このUSE_EXT_DIRをtrueにすることによって、まずwebapp_extディレクトリが読み込まれ、もしアクションファイルが存在しない場合は、webappのアクションファイルを読み込みます。 |
| 1484 | 実際に、このwebapp_extディレクトリを使用して機能を拡張する場合は、webapp_bizディレクトリが参考になると思います。[[BR]] |
| 1485 | |
| 1486 | webapp_extディレクトリを使用する場合は、config.phpで【USE_EXT_DIR】をtrueにする必要があります。このUSE_EXT_DIRをtrueにすることによって、まずwebapp_extディレクトリが読み込まれ、もしアクションファイルが存在しない場合は、webappのアクションファイルを読み込みます。 |
1482 | 1487 | |
1483 | 1488 | {{{ |
… |
… |
|
1493 | 1498 | }}} |
1494 | 1499 | |
1495 | | ただ、webapp_extディレクトリを使用して開発する場合にいくつか注意が必要です。[[BR]] |
| 1500 | ただし、webapp_extディレクトリを使用して開発する場合にいくつか注意が必要です。[[BR]] |
1496 | 1501 | 一つ目は「アクションファイルを追加してもvalidateで変数の値をチェックする必要」で、二つ目は「do系のアクションを追加する場合はセッションIDのハッシュ値が必要」です。 |
1497 | 1502 | |
… |
… |
|
1504 | 1509 | |
1505 | 1510 | <input type="hidden" name="sessid" value="({$PHPSESSID})"> |
1506 | | |
1507 | | }}} |
1508 | | |
1509 | | |
1510 | | {{{ |
1511 | | OpenPNE trunk |
1512 | | http://trac.openpne.jp/browser/OpenPNE/trunk |
1513 | | }}} |
| 1511 | }}} |
| 1512 | |