Standing on the Shoulder of Linus
現在地: / Home / 2011 / 12月 / 17 / Concrete5 の Events
印刷 メール ショートリンク

Concrete5 の Events

投稿者 mizuno 作成日 2011年12月17日 in Concrete5

Concrete5 では、events というフックが用意されています。Concrete5 の処理の途中に、利用者が独自に処理を追加することができます。(WordPress を使っている方は、アクションフックのようなもの、と考えてください)

処理が追加可能な場所は、ソースコード内で Events::fire が用意されている所です。

パッケージ等で、Events::extend と記述することで処理を追加します。

Events::extend('on_user_login', 'UserprofilePackage', 'on_user_login', 'packages/userprofile/controller.php');

フックする箇所(Events::fire が用意されている所)、(自分で追加する)クラス名、(クラスの)メソッド名、クラスのあるファイルパス、です。上の例では、on_user_login フックで、packages/userprofile/controller.php にある UserprofilePackage の on_user_login を実行します。

例えば、ログイン後、ユーザー名と同じ名前のページにリダイレクトする場合は、以下のようになります。(実運用では、リダイレクトさせるページが存在するかどうかのチェックを挟みますが、ここでは省略しています)

public function on_user_login($obj) {
		$u = new User();
		$obj->redirect('/'.$u->uName);
}

詳しく知りたい方は、How concrete5 Events work、またはConcrete5 Begginer’s Guideをごらんください。またEvent Tester というアドオンを利用すると、フックについて調べるのが楽になります。

Concrete5.5β では、以下のフックが用意されています (*.php を対象に文字列検索した結果です。抜けや重複等があるかもしれません)。

blocks/library_file/controller.php:				$ret = Events::fire('on_file_upload', $bf);
controllers/login.php:		Events::fire('on_user_login',$this);
dispatcher.php:		Events::fire('on_page_view', $c, $u);
libraries/view.php:				Events::fire('on_start', $this);
libraries/view.php:							Events::fire('on_before_render', $this);
libraries/view.php:							Events::fire('on_render_complete', $this);
libraries/view.php:				Events::fire('on_before_render', $this);
libraries/view.php:					$ret = Events::fire('on_page_output', $pageContent);
libraries/view.php:				Events::fire('on_render_complete', $this);
libraries/events.php:		// params coming at the end. e.g. if I fire Events::fire('on_login', $userObject) it will come in with user object first
models/file.php:		Events::fire('on_file_set_password', $this, $pw);
models/file.php:		Events::fire('on_file_add', $f, $fv);
models/file.php:		Events::fire('on_file_version_add', $fv);
models/file.php:		Events::fire('on_file_download', $fv, $u);
models/users_friends.php:		Events::fire('on_user_friend_add', $uID, $friendUID);
models/users_friends.php:		$ret = Events::fire('on_user_friend_remove', $uID, $friendUID);
models/job.php:		Events::fire('on_before_job_execute', $this);
models/job.php:		Events::fire('on_job_execute', $this);
models/job.php:			Events::fire('on_job_install', $j);
models/job.php:		Events::fire('on_job_install', $this);
models/job.php:		$ret = Events::fire('on_job_uninstall', $this);
models/collection_version.php:			Events::fire('on_page_version_add', $c, $nv);
models/collection_version.php:			Events::fire('on_page_version_approve', $c);
models/file_version.php:		Events::fire('on_file_version_duplicate', $fv2);
models/file_version.php:		Events::fire('on_file_version_update_title', $this, $title);
models/file_version.php:		Events::fire('on_file_version_update_tags', $this, $tags);
models/file_version.php:		Events::fire('on_file_version_update_description', $this, $descr);
models/file_version.php:		Events::fire('on_file_version_approve', $this);
models/file_version.php:		Events::fire('on_file_version_deny', $this);
models/user.php:			Events::fire('on_user_logout');
models/user.php:				Events::fire('on_user_enter_group', $this, $g);
models/user.php:				$ret = Events::fire('on_user_exit_group', $this, $g);
models/user_private_message.php:				Events::fire('on_private_message_marked_as_read', $this);
models/user_private_message.php:			$ret = Events::fire('on_private_message_delete', $this);
models/user_private_message.php:			Events::fire('on_private_message_marked_not_new', $this);
models/user_private_message.php:			Events::fire('on_private_message_over_limit', $offender);
models/userinfo.php:					Events::fire('on_user_add', $ui, $data['uPassword']);
models/userinfo.php:			$ret = Events::fire('on_user_delete', $this);
models/userinfo.php:				Events::fire('on_user_update', $ui);
models/userinfo.php:					Events::fire('on_user_change_password', $ui, $data['uPassword']);
models/userinfo.php:			Events::fire('on_user_validate', $this);
models/userinfo.php:				Events::fire('on_user_change_password', $this, $newPassword);
models/groups.php:			$ret = Events::fire('on_group_delete', $this);
models/groups.php:		        Events::fire('on_group_update', $this);
models/groups.php:				Events::fire('on_group_add', $ng);
models/page.php:		$icon = Events::fire('on_page_get_icon', $this);
models/page.php:		$ret = Events::fire('on_page_update', $this);
models/page.php:		$ret = Events::fire('on_page_move', $this, $oldParent, $newParent);
models/page.php:			$ret = Events::fire('on_page_duplicate', $nc2, $this);
models/page.php:		$ret = Events::fire('on_page_delete', $this);
models/page.php:			Events::fire('on_page_add', $pc);
シェア: Mixx Delicious Digg Facebook Twitter
PHPアドオン
返信をキャンセル
← 前へ 次へ →

良く見られている記事

  • キンドル本を印刷する(PDFに変換する)方法
  • 名古屋駅から国際センターまでの道のり
  • WordPress の更新にプラグインが追従しなかった場合の対処方法まとめ
  • ユニットテストのすすめ
  • Home

アーカイブ

最近の投稿

  • FuelPHP 1.6 翻訳ウィーク
  • casperjs を用いて Novius OS をインストールする
  • AGPL ライセンスについて
  • WordPress の更新にプラグインが追従しなかった場合の対処方法まとめ
  • Novius OS で A/B テスト
  • FuelPHP 勉強会 東海 vol.4 開催しました
  • 書評 「アメブロからWordPressへの移行方法」
  • Novius OS 言語/文字エンコーディング関連の問題
  • 言い値書店 アクセス解析と販売データ 2013年4月号
  • KDPノ全テを読んだ
  • 管理者紹介
  • オープンソースのメリットデメリット
  • wordbench
  • myplugin
  • Contact

Copyright © 2008-2013 Standing on the Shoulder of Linus. Powered by WordPress

ブログ、CMS構築はPHPでWEB作成