ワークフローの通知メールのFromを、adminユーザーのメールアドレスから変更したい

2017年1月20日 at 16:51

現在運用中のサイトでワークフローの設定をしているのですが、
『基本ワークフロー』のメールのFromに入っているメールアドレスを変更して欲しい、という依頼が来ました。

運用の都合上、admin(スーパーアドミン)のメールアドレスを変更せずに変更したいのですが、
concrete.phpの設定を見た所、emailの項目には

default
form_block
forgot_password
validate_registration

があったのですが、 default を変更しても基本ワークフローのメールアドレスは変わりませんでした……。

他に設定項目があるのでしょうか?
もしくは、どこかのPHPをオーバーライドして変更する必要があるのでしょうか?
ご存じの方いらっしゃいましたら教えて頂けるとありがたいです。

タグ:

Re: ワークフローの通知メールのFromを、adminユーザーのメールアドレスから変更したい

2017年1月20日 at 19:41
取り急ぎ

/concrete/src/Workflow/BasicWorkflow.php
の notify() メソッドでスーパーユーザーのメールアドレスに固定されてますね。

ここの
$mh->from($adminUser->getUserEmail(), t('Basic Workflow'));

$adminUser->getUserEmail()
の部分を
"example@example.com"
とメールアドレスに書き換えれば大丈夫です。

オーバーライドの方法は少々お待ちを。


ちょうどよいので、GitHub に concrete.php からでも指定できるように、Issue を作って、承諾されれば、PR 作っても良いかもですね。
 

Re: ワークフローの通知メールのFromを、adminユーザーのメールアドレスから変更したい

2017年1月23日 at 11:38
ありがとうございます!

オーバーライドは、application/src/Workflow/BasicWorkflon.php を作成して、
下記のように記載すれば良いでしょうか……?

http://gist.github.com/kanetei/dbfd9e688aef2587701bcf6ab857da20

夕方以降にテスト環境作って確認してみます。

issue の件、 concrete/config/concrete.php に設定追加してプルリクエスト送れば良いのでしょうか……?
 

Re: ワークフローの通知メールのFromを、adminユーザーのメールアドレスから変更したい

2017年1月23日 at 7:12
GitHub の Issue に登録しました
http://github.com/concrete5/concrete5/issues/4991

承認されれば、簡単なので、PR 作りますが、よろしければ、金子さん、されますか?
 

Re: ワークフローの通知メールのFromを、adminユーザーのメールアドレスから変更したい

2017年1月23日 at 13:10
金子さん
http://gist.github.com/kanetei/dbfd9e688aef2587701bcf6ab857da20
の件ですが、

/application/bootstrap/app.php にて、

\Concrete\Core\Workflow\BasicWorkflow のリクエストがあったら、
\Application\Src\Workflow\BasicWorkflow にオーバーライドするという宣言が必要です。

ちょいと、うるおぼえなんです

---------
Core::bind('\Concrete\Core\Workflow\BasicWorkflow', function() {
return new \Application\Src\Workflow\BasicWorkflow();
});
----------

これでよかったんじゃないかなー。
すいませんが、ちょっと試してみてくれませんか?

あと、もしかしたら、これで、\Concrete\Core\Workflow\BasicWorkflow を書き換えちゃっているので、\Application\Src\Workflow\BasicWorkflow に全部のメソッドを書かないといけなかったかも・・・。
 

Re: ワークフローの通知メールのFromを、adminユーザーのメールアドレスから変更したい

2017年1月24日 at 18:08
ああ、src以下のオーバーライドは /application/bootstrap/app.php の変更も必要なのですね……。

テスト環境を作成して検証しました。

/application/bootstrap/app.php に設定を追加して、無事にメールアドレスの上書きは出来ました。

http://gist.github.com/kanetei/dbfd9e688aef2587701bcf6ab857da20

gistのコード更新しましたが、BasicWorkflow に全てのメソッドを記述しなくても動作しています。
 

Re: ワークフローの通知メールのFromを、adminユーザーのメールアドレスから変更したい

2017年1月24日 at 18:13
お、じゃ、解決ですね!
ありがとうございます!
 

Re: ワークフローの通知メールのFromを、adminユーザーのメールアドレスから変更したい

2017年1月24日 at 18:16
ちょうど Andrew からも、Go 的なコメントを貰ってます
http://github.com/concrete5/concrete5/issues/4991

よろしければ、PR に挑戦してみてください。

自分が提案した仕様は

concrete.email.basicworkflow.address と concrete.email.basicworkflow.namの値を新設してこれをまず見る
なければ concrete.email.default.address と concrete.email.default.name の値を見る
なければ、admin のメールアドレスを使用する

という仕様を提案しています。

よろしければ、これで実装し、PRを送ってみてもらえますか?

よろしくおねがいいたします。
 

Re: ワークフローの通知メールのFromを、adminユーザーのメールアドレスから変更したい

2018年1月23日 at 19:22
補足

-----
Core::bind('\Concrete\Core\Workflow\BasicWorkflow', function() {
return new \Application\Src\Workflow\BasicWorkflow();
});
-----

ですが、正しくは

----------
$app->bind('\Concrete\Core\Workflow\BasicWorkflow', function($app, $params) {
return new \Application\Concrete\Workflow\BasicWorkflow($params[0]);
});
----------
で訂正します。

(もしかすると 8.x で書き方が変わったかも)

参考
http://www.suitosha.co.jp/topics/blog/1165