Example #1
0
 /**
  * Autoconnect, notify.
  * @param Sharing[]                 $successSharingByEntity
  * @param File|Folder|BaseObject $objectToSharing
  */
 protected static function processConnectAndNotify(array $successSharingByEntity, BaseObject $objectToSharing)
 {
     $isFolder = $objectToSharing instanceof Folder;
     if (Configuration::canAutoconnectSharedObjects()) {
         $urlManager = Driver::getInstance()->getUrlManager();
         foreach ($successSharingByEntity as $entity => $sharingModel) {
             /** @var \Bitrix\Disk\Sharing $sharingModel */
             if (!$sharingModel->approve()) {
                 unset($successSharingByEntity[$entity]);
             } else {
                 if (!$sharingModel->isToUser()) {
                     continue;
                 }
                 $pathInListing = $urlManager->getPathInListing($sharingModel->getLinkObject()) . "#hl-{$sharingModel->getLinkObjectId()}";
                 $uriToDisconnect = $pathInListing . "!detach";
                 $message = Loc::getMessage($isFolder ? 'DISK_SHARING_MODEL_AUTOCONNECT_NOTIFY' : 'DISK_SHARING_MODEL_AUTOCONNECT_NOTIFY_FILE', array('#NAME#' => '<a href="' . $pathInListing . '">' . $objectToSharing->getName() . '</a>', '#DESCRIPTION#' => $sharingModel->getDescription(), '#DISCONNECT_LINK#' => '<a href="' . $uriToDisconnect . '">' . Loc::getMessage('DISK_SHARING_MODEL_TEXT_DISCONNECT_LINK') . '</a>'));
                 list($subTag, $tag) = $sharingModel->getNotifyTags();
                 Driver::getInstance()->sendNotify(substr($sharingModel->getToEntity(), 1), array('FROM_USER_ID' => $sharingModel->getCreatedBy(), 'NOTIFY_EVENT' => 'sharing', 'NOTIFY_TAG' => $tag, 'NOTIFY_SUB_TAG' => $subTag, 'NOTIFY_MESSAGE' => $message, 'NOTIFY_MESSAGE_OUT' => strip_tags($message)));
             }
         }
     } else {
         $buttons = array(array('TITLE' => Loc::getMessage($isFolder ? 'DISK_SHARING_MODEL_APPROVE_Y' : 'DISK_SHARING_MODEL_APPROVE_Y_FILE'), 'VALUE' => 'Y', 'TYPE' => 'accept'), array('TITLE' => Loc::getMessage('DISK_SHARING_MODEL_APPROVE_N_2_DECLINE'), 'VALUE' => 'N', 'TYPE' => 'cancel'));
         $message = Loc::getMessage($isFolder ? 'DISK_SHARING_MODEL_TEXT_APPROVE_CONFIRM' : 'DISK_SHARING_MODEL_TEXT_APPROVE_CONFIRM_FILE', array('#NAME#' => $objectToSharing->getName()));
         foreach ($successSharingByEntity as $entity => $sharingModel) {
             if (!$sharingModel->isToUser()) {
                 continue;
             }
             list($subTag, $tag) = $sharingModel->getNotifyTags();
             Driver::getInstance()->sendNotify(substr($sharingModel->getToEntity(), 1), array('NOTIFY_BUTTONS' => $buttons, 'NOTIFY_TYPE' => 'IM_NOTIFY_CONFIRM', 'FROM_USER_ID' => $sharingModel->getCreatedBy(), 'NOTIFY_EVENT' => 'sharing', 'NOTIFY_TAG' => $tag, 'NOTIFY_SUB_TAG' => $subTag, 'NOTIFY_MESSAGE' => $message, 'NOTIFY_MESSAGE_OUT' => strip_tags($message)));
         }
     }
 }