/**
  * Get messages supported
  *
  * @param string $actor_guid Actor guid
  * @param bool   $all        All messages
  * @param null   $evenement  Event name
  * @param null   $show_actif Show only active
  *
  * @return array
  */
 function getMessagesSupported($actor_guid, $all = true, $evenement = null, $show_actif = null)
 {
     list($object_class, $object_id) = explode("-", $actor_guid);
     $family = array();
     foreach ($this->getFamily() as $_message => $_root_class) {
         $root = new $_root_class();
         foreach ($root->getEvenements() as $_evt => $_evt_class) {
             if ($evenement && $evenement != $_evt) {
                 continue;
             }
             $message_supported = new CMessageSupported();
             $message_supported->object_class = $object_class;
             $message_supported->object_id = $object_id;
             $message_supported->message = $_evt_class;
             if ($show_actif) {
                 $message_supported->active = $show_actif;
             }
             $message_supported->loadMatchingObject();
             if (!$message_supported->_id && !$all) {
                 continue;
             }
             $message_supported->loadEventByName();
             $message_supported->_data_format = $this;
             $this->_messages_supported_class[] = $message_supported->message;
             $family[$_root_class][] = $message_supported;
         }
     }
     return $family;
 }
 /**
  * Get objects by events
  *
  * @param array            $events   Events name
  * @param CInteropReceiver $receiver receiver
  *
  * @return array Receivers supported
  */
 static function getObjectsBySupportedEvents($events = array(), CInteropReceiver $receiver = null)
 {
     $receivers = array();
     foreach ($events as $_event) {
         $msg_supported = new CMessageSupported();
         $where = array();
         $where["message"] = " = '{$_event}'";
         $where["active"] = " = '1'";
         $ljoin = array();
         if ($receiver) {
             $table = $receiver->_spec->table;
             $ljoin[$table] = "{$table}.{$table}" . "_id" . " = message_supported.object_id";
             $where["object_class"] = " = '{$receiver->_class}'";
             if ($receiver->_id) {
                 $where["object_id"] = " = '{$receiver->_id}'";
             }
             $where["{$table}.actif"] = " = '1'";
         }
         if (!$msg_supported->loadObject($where, null, null, $ljoin)) {
             $receivers[$_event] = null;
             return $receivers;
         }
         $messages = $msg_supported->loadList($where, "object_class", null, null, $ljoin);
         foreach ($messages as $_message) {
             /** @var CInteropReceiver $receiver */
             $receiver = CMbObject::loadFromGuid("{$_message->object_class}-{$_message->object_id}");
             if (!$receiver->actif) {
                 continue;
             }
             $receiver->loadRefGroup();
             $receiver->isReachable();
             $receivers[$_event][] = $receiver;
         }
     }
     return $receivers;
 }
Example #3
0
 /**
  * Is that the message is supported by this actor
  *
  * @param string $message Message
  *
  * @return bool
  */
 function isMessageSupported($message)
 {
     $msg_supported = new CMessageSupported();
     $msg_supported->object_class = $this->_class;
     $msg_supported->object_id = $this->_id;
     $msg_supported->message = $message;
     $msg_supported->active = 1;
     return $msg_supported->countMatchingList() > 0;
 }