Created
May 24, 2017 02:29
-
-
Save kanetei/d42c52f7b8f403dd2f0fb7695a161eac to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace Application\Src\Workflow; | |
use Concrete\Core\Workflow\HistoryEntry\BasicHistoryEntry as BasicWorkflowHistoryEntry; | |
use Concrete\Core\Workflow\Progress\Progress as WorkflowProgress; | |
use Concrete\Core\Workflow\Progress\BasicData as BasicWorkflowProgressData; | |
use Loader; | |
use Core; | |
use PermissionKey; | |
use User; | |
use UserInfo; | |
use Group; | |
class BasicWorkflow extends \Concrete\Core\Workflow\BasicWorkflow | |
{ | |
protected function notify( | |
WorkflowProgress $wp, | |
$message, | |
$permission = 'notify_on_basic_workflow_entry', | |
$parameters = array() | |
) | |
{ | |
$nk = PermissionKey::getByHandle($permission); | |
$nk->setPermissionObject($this); | |
$users = $nk->getCurrentlyActiveUsers($wp); | |
foreach ($users as $ui) { | |
$mh = Core::make('helper/mail'); | |
$mh->addParameter('uName', $ui->getUserName()); | |
$mh->to($ui->getUserEmail()); | |
$mh->from('[email protected]', t('Basic Workflow')); | |
$mh->addParameter('message', $message); | |
foreach ($parameters as $key => $value) { | |
$mh->addParameter($key, $value); | |
} | |
$mh->addParameter('siteName', Core::make('config')->get('concrete.site')); | |
$mh->load('basic_workflow_notification'); | |
$mh->sendMail(); | |
unset($mh); | |
} | |
} | |
public function start(WorkflowProgress $wp) | |
{ | |
// lets save the basic data associated with this workflow. | |
$req = $wp->getWorkflowRequestObject(); | |
$db = Loader::db(); | |
$db->Execute( | |
'INSERT INTO BasicWorkflowProgressData (wpID, uIDStarted) VALUES (?, ?)', | |
array($wp->getWorkflowProgressID(), $req->getRequesterUserID())); | |
if ($this->canApproveWorkflow()) { | |
// Then that means we have the ability to approve the workflow we just started. | |
// In that case, we transparently approve it, and skip the entry notification step. | |
$wpr = $req->approve($wp); | |
$wp->delete(); | |
} else { | |
$ui = UserInfo::getByID($req->getRequesterUserID()); | |
$ids = array_keys($ui->getUserObject()->getUserGroups()); | |
$groupName = ''; | |
foreach($ids as $id) { | |
$group = Group::getByID($id); | |
if($group->getGroupDisplayName() === '登録者' || $group->getGroupDisplayName() === '企業ページ作成者') | |
$groupName .= $group->getGroupDisplayName(); | |
} | |
// let's get all the people who are set to be notified on entry | |
$message = | |
Core::make('helper/date')->formatDateTime($wp->getWorkflowProgressDateAdded(), true) . | |
' に ' . | |
$ui->getUserName() . | |
' さん(グループ ' . | |
$groupName . | |
')が次のリクエストを申請しました:\n\n' . | |
$req->getWorkflowRequestDescriptionObject()->getEmailDescription(); | |
$this->notify($wp, $message, 'notify_on_basic_workflow_entry'); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment