$ composer require pickles2/lib-indigo;
indigo を動作させる上で必要となる Resrouceファイル をプロジェクトに取込みます。
$ cp yourProject/vendor/pickles2/lib-indigo/res_install_script.php yourProject
$ mkdir yourProject/[directoryName(ex. res)]
$ php res_install_script.php [resourceInstallPath(ex. ./res)]
<!-- Bootstrap -->
<link rel="stylesheet" href="/[resourceInstallPath]/bootstrap/css/bootstrap.min.css">
<script src="/[resourceInstallPath]/bootstrap/js/bootstrap.min.js"></script>
<!-- Indigo -->
<link rel="stylesheet" href="/[resourceInstallPath]/styles/common.css">
<script src="/[resourceInstallPath]/scripts/common.js"></script>
<!-- jQuery UI -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1/i18n/jquery.ui.datepicker-ja.min.js"></script>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
<script>
// Initialize Indigo
window.addEventListener('load', function(){
var dateFormat = 'yy-mm-dd';
$.datepicker.setDefaults($.datepicker.regional["ja"]);
$("#datepicker").datepicker({
dateFormat: dateFormat
});
var indigo = new window.Indigo();
indigo.init();
});
</script>
var indigo = new window.Indigo({
ajaxBridge: function(data, callback){
// バックエンドとのデータ受け渡しの方式を変更したい場合に、
// このオプションを指定します。
var rtn = '';
var error = false;
$.ajax ({
type: 'POST',
url: '/path/to/ajax.php',
data: data,
dataType: 'json',
success: function(data, dataType) {
rtn = data;
},
error: function(jqXHR, textStatus, errorThrown) {
error = textStatus;
},
complete: function(){
callback(rtn, error);
}
});
}
});
indigo.init();
後述の6. indigoの実行パラメタ設定 にて 「 indigo作業用ディレクトリ(絶対パス):'realpath_workdir'」 にパス設定を行うディレクトリとなります。
$ mkdir yourProject/[directoryName(ex. indigo_dir)]
$ chmod -R o+w yourProject/[directoryName(ex. indigo_dir)]
apache(その他)ユーザに書き込み権限を付与します。
※ -R
オプションを付けることで、指定ディレクトリ以下に存在するディレクトリ・ファイルも全て再帰的に権限変更を行います。
$ chmod -R o+w honbanProject/[directoryName(ex. indigo-test-project)]
各種パラメータを設定します。こちらに記載したパラメタが別ファイルから呼び出されます。
<?php
function call_parameter () {
$parameter = array(
// POST
'_POST' => $_POST,
// GET
'_GET' => $_GET,
// フォーム送信時に付加する追加のパラメータ (省略可)
'additional_params' => array(
'hoge' => 'fuga',
),
// indigo作業用ディレクトリの絶対パス
// indigoは、このディレクトリに内部で利用する情報を書き込みます。
'realpath_workdir' => '/var/www/html/sample-lib-indigo/', // directoryName (ex. indigo_dir)
// git local のマスターデータディレクトリの絶対パス
// 省略時は、 `realpath_workdir` 内に自動生成されます。
'realpath_git_master_dir' => '/var/www/html/sample-lib-indigo/master_repository/',
// リソースディレクトリ(ドキュメントルートからの相対パス)
'relativepath_resourcedir' => './../res/', // directoryName (ex. res)
// ajax呼出クラス(ドキュメントルートからの相対パス)
'url_ajax_call' => './ajax.php',
// 画面表示上のタイムゾーン
'time_zone' => 'Asia/Tokyo',
// ユーザID
'user_id' => 'user01', // 省略可
// 空間名
'space_name' => 'project0001', // 省略可
// DB設定
'db' => array(
// 'mysql' or 'sqlite' (省略時は SQLite を採用)
'dbms' => null,
'prefix' => 'indigo_', // テーブル名の接頭辞
'database' => null,
'host' => null,
'port' => null,
'username' => null,
'password' => null,
),
// 予約最大件数
'max_reserve_record' => 10,
// バックアップ世代管理件数
// ※ v0.2.0 時点では未対応
'max_backup_generation' => 5,
// 本番環境パス (同期先)
// 複数の同期先を設定できます。
'server' => array(
array(
// 任意の名前
'name' => 'server1',
// 同期先絶対パス
'dist' => '/path/to/document_root_01/htdocs/'
),
array(
// 任意の名前
'name' => 'server2',
// 同期先絶対パス
'dist' => '/path/to/document_root_02/htdocs/'
)
),
// 同期除外ディレクトリ、またはファイル
'ignore' => array(
'.git',
'.htaccess'
),
// Git情報定義
'git' => array(
// Gitリポジトリのurl(現在はhttpsプロトコルのみ対応)
'giturl' => 'https://github.com/foo/bar.git',
// ユーザ名
// Gitリポジトリのユーザ名を設定
'username' => 'hoge',
// パスワード
// Gitリポジトリのパスワードを設定
'password' => 'fuga'
)
);
return $parameter;
};
6.で作成したパラメータを引数にlib-indigoのmainクラスの呼び出しを行います。
<?php
require_once('/path/to/vendor/autoload.php');
// 6.1で作成したパラメタ記載ファイル
require __DIR__ . '/parameter.php';
// parameter.phpのcall_parameterメソッド
$parameter = call_parameter();
// load main class
$indigo = new pickles2\indigo\main( $parameter );
// 実行する
echo $indigo->run();
6.で作成したパラメータを引数に設定し、lib-indigoのajaxクラスの呼び出しを行います。
※先述の 6. 「ajax呼出クラス(絶対パス):'url_ajax_call'」 のファイル名と一致するようにファイルを作成してください。
<?php
require_once('/path/to/vendor/autoload.php');
// 6.1で作成したパラメタ記載ファイル
require __DIR__ . '/parameter.php';
// parameter.phpのcall_parameterメソッド
$parameter = call_parameter();
// load main class
$indigo = new pickles2\indigo\main( $parameter );
// 実行する
echo $indigo->ajax_run();
6.で作成したパラメータを引数にlib-indigoのmainクラスを呼び出し初期化を行います。
<?php
require_once('/path/to/vendor/autoload.php');
// 6.1で作成したパラメタ記載ファイル
require __DIR__ . '/parameter.php';
// parameter.phpのcall_parameterメソッド
$parameter = call_parameter();
// load main class
$indigo = new pickles2\indigo\main( $parameter );
// 実行する
echo $indigo->cron_run();
apache権限でクーロン登録用コマンドを実行(root権限だとindigo内の一部動作時にエラーとなる)
$ crontab -u apache -e
何分間隔で呼び出すのかを設定する。クーロン用のログも出力させる場合は、以下のようにログディレクトリ・ログファイル名を記載する。
$ */1 * * * * /usr/bin/php /var/www/html/sample-lib-indigo/htdocs/cron.php >>/var/www/html/sample-lib-indigo/indigo_dir/log/cron.log 2>>/var/www/html/sample-lib-indigo/indigo_dir/log/cron-err.log
namespace
を変更:indigo\*
topickles2\indigo\*
- 複数の本番サーバー設定を利用できるようになった。
- 内部コードの細かい修正。
- GitリモートURLの扱いに関する不具合を修正。
- Gitリモートの
username
とpassword
オプションを省略可能になった。 - 設定項目名
realpath_ajax_call
をurl_ajax_call
に名称変更。 - 新しい設定項目
realpath_git_master_dir
を追加。 - 新しい設定項目
space_name
を追加。 indigo\ajax::ajax_run()
を廃止し、indigo\main::ajax_run()
に統一した。- データベース接続設定の項目名を変更。
- データベース接続設定に
prefix
を追加。 - データベース接続先に
mysql
を追加。 - データベースのプライマリキーを INT ではなく UUID を使用するように変更。
- 出力先のパスの設定名を
real_path
からdist
に変更。 - 細かい不具合の修正。
- オプション
additional_params
を追加。 - オプション
_GET
,_POST
を省略可能とした。 - Ajaxの実行メソッド名を
ajax_run()
に変更。 - フロントエンドの初期化スクリプト仕様を変更。
- 配信予約日時の時制チェックに関する不具合を修正。
- 配信予約の更新に関する不具合を修正。
- その他いくつかの細かい修正。
- エラーハンドラ登録処理の削除
- indigo内で生成するディレクトリ名を一部修正
- 不具合修正:グローバル関数にバックスラッシュ付与
- パラメタ不足パターンの対策
- SQLインジェクション対策実装
- htmlspecialchars実装
- 複数のエンドポイントファイルのパラメタ部分を一元管理
- 関数戻り値受け渡し時のjson変換を廃止
- docコメント修正
- Initial Release.
MIT License
- (C) Tomoya Koyanagi tomk79@gmail.com
- (C) Natsuki Gushikawa natsuki.gushikawa@imjp.co.jp