<?php /** * Sample implementation of a Service Plan Item declaration. * */ /** * * Plan_Item_Interface declares the following methods: * * public function getName(); * public function getHint($locale); * public function getDescription($locale); * public function update( * $subject, * $change, * $subscriptionUuid, * $planItemUuid * ); * * Additional descriptions are available as annotations to method * implementations below. * */ class servicedir_servicefile implements Plan_Item_Interface { private $_logFile = '/tmp/custom-item-connector.log'; private $_locales = array( 'en-US' => array( 'description' => 'External Mail Filtering Service', 'hint' => 'Filter all incoming mail throug cloud mail filter', ), 'de-DE' => array( 'description' => 'This is a description in German', 'hint' => 'And hint is also in German', ), ); /** * Returns a unique name of an additional service. * Plesk uses this name to distinguish services from each other. * * * @return string */ public function getName() { return 'urn:isv:custom-item-connector:1'; } /** * Returns a localized name of the service, that will be * displayed in Plesk (in Service Plans > Additional Services). * * * @param string $locale Currently used locale in format 'xx-XX' (RFC 1766). * @return string */ public function getHint($locale) { return $this->_('hint', $locale); } /** * Returns a localized name of the service, that will be * displayed in Plesk (in Service Plans > Additional Services). * * * @param string $locale Currently used locale in format 'xx-XX' * @return string */ public function getDescription($locale) { return $this->_('description', $locale); } /** * Receives update notifications about related Plesk objects. The objects are * specified with object implementing Plan_Item_Subject interface that * declares the following methods: * * public function getType() - Returns type of a changed object * as specified by Plan_Item_Subject constants * * Available types: Plan_Item_Subject::EMAIL, Plan_Item_Subject::SITE, * Plan_Item_Subject::SUBSCRIPTION * * * public function getProperties() - Returns the current values of * subject properties. The properties are returned as key => value pairs. * For deleted objects, properties values remain as they were * before deletion. For created objects, properties values are those * that were assigned to these objects upon creation. * * * Available properties. * * For subscriptions: * GUID: string * status: boolean * * For sites: * status: boolean * name: string * GUID: string * * For e-mail accounts: * email: string (account name) * * Changes are specified with $change that is one of * Plan_Item_Notification::{CREATED,UPDATED,DELETED} constants. * * $subscriptionUuid is a GUID of subscription. * * $planItemUuid is a GUID of the additional service. * * * @param Plan_Item_Subject $subject * @param int $change * @param string $subscriptionUuid * @param string $planItemUuid * @return void */ public function update( Plan_Item_Subject $subject, $change, $subscriptionUuid, $planItemUuid ) { $subjectType = Plan_Item_Subject::EMAIL === $subject->getType() ? 'Email address' : 'unknown'; switch ($change) { case Plan_Item_Notification::CREATED: $this->_log("$subjectType created: " . print_r($subject->getProperties(), true) ); break; case Plan_Item_Notification::UPDATED: $this->_log("$subjectType updated: " . print_r($subject->getProperties(), true) ); break; case Plan_Item_Notification::DELETED: $this->_log("$subjectType deleted: " . print_r($subject->getProperties(), true) ); break; } } /** * Declares from what type of Plesk objects the service will receive notifications. * It returns either an array or a single type. * * Plan_Item_Subject::SUBSCRIPTION * The service will recieve notifications about all changes made to * subscription (including activation/suspension of subscriptions, * assigning/de-assigning the service to a subscription) * * Plan_Item_Subject::EMAIL * The service will recieve notifications about all changes made to * e-mail accounts on affected subscriptions. * * Plan_Item_Subject::SITE * The service will recieve notifications about all changes made to * site names in the scope affected subscriptions. * */ public static function getSubjectTypes() { return array(Plan_Item_Subject::EMAIL); } private function _($key, $locale) { if (!isset($this->_locales[$locale])) { return $this->_locales['en-US'][$key]; } return $this->_locales[$locale][$key]; } private function _log($message) { date_default_timezone_set('UTC'); $logString = "[" . date("H:i:s") . "] " . $message; file_put_contents($this->_logFile, $message, FILE_APPEND); } }
Is this page helpful?
Yes No
Thank you for the feedback! Please tell us if we can improve further.
Sorry to hear that. Please tell us how we can improve.