pickles2/lib-indigo

0.3.0 2021-04-27 18:05 UTC

This package is auto-updated.

Last update: 2024-10-28 01:42:14 UTC


README

導入方法 - Setup

1. pickles2/lib-indigo をインストール

$ composer require pickles2/lib-indigo;

2. Resourceファイルを配置する

indigo を動作させる上で必要となる Resrouceファイル をプロジェクトに取込みます。

2-1. Resourceファイル取込用スクリプトをプロジェクトへコピーする

$ cp yourProject/vendor/pickles2/lib-indigo/res_install_script.php yourProject

2-2. Resourceファイル格納用のディレクトリを作成する。

$ mkdir yourProject/[directoryName(ex. res)]

2-3. スクリプトをコマンドラインで実行する

$ php res_install_script.php [resourceInstallPath(ex. ./res)]

3. Resourceを読み込み、フロントエンドを初期化する

<!-- 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();

4. indigo作業用のディレクトリを作成する。

後述の6. indigoの実行パラメタ設定 にて 「 indigo作業用ディレクトリ(絶対パス):'realpath_workdir'」 にパス設定を行うディレクトリとなります。

4-1. ディレクトリを作成します。

$ mkdir yourProject/[directoryName(ex. indigo_dir)]

4-2. apache(その他)ユーザに書き込み権限を付与します。

$ chmod -R o+w yourProject/[directoryName(ex. indigo_dir)]

5. 同期先の本番環境ディレクトリのパーミッションを変更する。

apache(その他)ユーザに書き込み権限を付与します。

-R オプションを付けることで、指定ディレクトリ以下に存在するディレクトリ・ファイルも全て再帰的に権限変更を行います。

$ chmod -R o+w honbanProject/[directoryName(ex. indigo-test-project)]

6. indigoの実行パラメタ設定

各種パラメータを設定します。こちらに記載したパラメタが別ファイルから呼び出されます。

<?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;
};

7. indigoの画面実行

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();

8. ajax呼び出しクラス

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();

9. indigoのクーロン実行

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();

9-3. indigo(cron)をサーバから一定の間隔で呼び出すようクーロン登録を行う

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

更新履歴 - Change log

pickles2/lib-indigo v0.3.0 (2021年4月28日)

  • namespace を変更: indigo\* to pickles2\indigo\*
  • 複数の本番サーバー設定を利用できるようになった。
  • 内部コードの細かい修正。

pickles2/lib-indigo v0.2.1 (2021年4月4日)

  • GitリモートURLの扱いに関する不具合を修正。

pickles2/lib-indigo v0.2.0 (2020年11月9日)

  • Gitリモートの usernamepassword オプションを省略可能になった。
  • 設定項目名 realpath_ajax_callurl_ajax_call に名称変更。
  • 新しい設定項目 realpath_git_master_dir を追加。
  • 新しい設定項目 space_name を追加。
  • indigo\ajax::ajax_run() を廃止し、indigo\main::ajax_run() に統一した。
  • データベース接続設定の項目名を変更。
  • データベース接続設定に prefix を追加。
  • データベース接続先に mysql を追加。
  • データベースのプライマリキーを INT ではなく UUID を使用するように変更。
  • 出力先のパスの設定名を real_path から dist に変更。
  • 細かい不具合の修正。

pickles2/lib-indigo v0.1.4 (2019年7月1日)

  • オプション additional_params を追加。
  • オプション _GET, _POST を省略可能とした。
  • Ajaxの実行メソッド名を ajax_run() に変更。
  • フロントエンドの初期化スクリプト仕様を変更。
  • 配信予約日時の時制チェックに関する不具合を修正。
  • 配信予約の更新に関する不具合を修正。
  • その他いくつかの細かい修正。

pickles2/lib-indigo v0.1.3 (2018年8月31日)

  • エラーハンドラ登録処理の削除
  • indigo内で生成するディレクトリ名を一部修正
  • 不具合修正:グローバル関数にバックスラッシュ付与

pickles2/lib-indigo v0.1.2 (2018年8月22日)

  • パラメタ不足パターンの対策

pickles2/lib-indigo v0.1.1 (2018年8月21日)

  • SQLインジェクション対策実装
  • htmlspecialchars実装
  • 複数のエンドポイントファイルのパラメタ部分を一元管理
  • 関数戻り値受け渡し時のjson変換を廃止
  • docコメント修正

pickles2/lib-indigo v0.1.0 (2018年8月6日)

  • Initial Release.

ライセンス - License

MIT License

作者 - Author