Plugin: External Notification Connect: Send notification when changing post visibility - refs BT#20443
parent
d32f518ed5
commit
2675965ec5
@ -0,0 +1,22 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
/* For licensing terms, see /license.txt */ |
||||||
|
|
||||||
|
class HookPortfolioItemVisibility extends HookEvent implements HookPortfolioItemVisibilityEventInterface |
||||||
|
{ |
||||||
|
protected function __construct() |
||||||
|
{ |
||||||
|
parent::__construct('HookPortfolioItemVisibility'); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* {@inheritDoc} |
||||||
|
*/ |
||||||
|
public function notifyItemVisibility() |
||||||
|
{ |
||||||
|
/** @var HookPortfolioItemVisibilityObserverInterface $observer */ |
||||||
|
foreach ($this->observers as $observer) { |
||||||
|
$observer->hookItemVisibility($this); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,11 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
/* For licensing terms, see /license.txt */ |
||||||
|
|
||||||
|
interface HookPortfolioItemVisibilityEventInterface extends HookEventInterface |
||||||
|
{ |
||||||
|
/** |
||||||
|
* @return void |
||||||
|
*/ |
||||||
|
public function notifyItemVisibility(); |
||||||
|
} |
||||||
@ -0,0 +1,11 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
/* For licensing terms, see /license.txt */ |
||||||
|
|
||||||
|
interface HookPortfolioItemVisibilityObserverInterface extends HookObserverInterface |
||||||
|
{ |
||||||
|
/** |
||||||
|
* @return void |
||||||
|
*/ |
||||||
|
public function hookItemVisibility(HookPortfolioItemVisibilityEventInterface $event); |
||||||
|
} |
||||||
@ -0,0 +1,44 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
/* For licensing terms, see /license.txt */ |
||||||
|
|
||||||
|
use Chamilo\CoreBundle\Entity\Portfolio; |
||||||
|
use Chamilo\PluginBundle\ExternalNotificationConnect\Traits\RequestTrait\RequestTrait; |
||||||
|
|
||||||
|
class ExternalNotificationConnectPortfolioItemVisibilityHookObserver extends ExternalNotificationConnectHookObserver implements HookPortfolioItemVisibilityObserverInterface |
||||||
|
{ |
||||||
|
use RequestTrait; |
||||||
|
|
||||||
|
/** |
||||||
|
* {@inheritDoc} |
||||||
|
*/ |
||||||
|
public function hookItemVisibility(HookPortfolioItemVisibilityEventInterface $event) |
||||||
|
{ |
||||||
|
/** @var Portfolio $item */ |
||||||
|
$item = $event->getEventData()['item']; |
||||||
|
$recipients = $event->getEventData()['recipients']; |
||||||
|
|
||||||
|
try { |
||||||
|
$json = $this->doVisibilityRequest( |
||||||
|
[ |
||||||
|
'content_id' => $item->getId(), |
||||||
|
'content_type' => 'eportfolio', |
||||||
|
'visibility' => $item->getVisibility(), |
||||||
|
'user_list' => $recipients, |
||||||
|
] |
||||||
|
); |
||||||
|
} catch (Exception $e) { |
||||||
|
Display::addFlash( |
||||||
|
Display::return_message($e->getMessage(), 'error') |
||||||
|
); |
||||||
|
|
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
if (empty($json)) { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
error_log('ExtNotifConn: Portfolio item visibility: ID '.$json['data']['notification_id']); |
||||||
|
} |
||||||
|
} |
||||||
Loading…
Reference in new issue