動的にプラグインのイベントを追加したいなぁと思い、MODxのAPI周りを見ていたらそれっぽい関数のaddEventListenerがありました。
中身はこんな感じです。
./manager/includes/document.parser.class.inc[2219行目付近]
# add an event listner to a plugin - only for use within the currentexecution cycle
function addEventListener($evtName, $pluginName) {
if (!$evtName || !$pluginName)
return false;
$el= $this->pluginEvent[$evtName];
if (empty ($el))
$el= $this->pluginEvent[$evtName]= array ();
return array_push($el, $pluginName); // return index
}
ただ、どうも機能していないようです。
機能していないと言うよりもMODxのコア内では一切使われておらず、開発チームから忘れ去られているような気もしないではないのですが、一応動作するように修正しました。
# add an event listner to a plugin - only for use within the currentexecution cycle
function addEventListener($evtName, $pluginName) {
if (!$evtName || !$pluginName)
return false;
$el= &$this->pluginEvent[$evtName];
if (empty ($el)){
$this->pluginEvent[$evtName]= array ();
$el= &$this->pluginEvent[$evtName];
}
return array_push($el, $pluginName); // return index
あまり動的にプラグインのイベントをいじることはなさそうな気がしますが、参考までに投稿します。
これってバグとして報告したほうがいいのでしょうか??