function add_subscribers(ContentDataObject $object) { if (logged_user()->isGuest()) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } $log_info = ""; $subscribers = array_var($_POST, 'subscribers'); $object->clearSubscriptions(); if (is_array($subscribers)) { $user_ids = array(); foreach ($subscribers as $key => $checked) { $user_id = substr($key, 5); if ($checked == "checked") { $user = Contacts::findById($user_id); if ($user instanceof Contact) { $object->subscribeUser($user); $log_info .= ($log_info == "" ? "" : ",") . $user->getId(); $user_ids[] = $user_id; } } } Hook::fire('after_add_subscribers', array('object' => $object, 'user_ids' => $user_ids), $null); if ($log_info != "") { ApplicationLogs::createLog($object, ApplicationLogs::ACTION_SUBSCRIBE, false, true, true, $log_info); } } }
function add_subscribers(ContentDataObject $object, $subscribers = null, $check_permissions = true) { if (logged_user()->isGuest()) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } $log_info = ""; $log_info_unsubscribe = ""; if ($subscribers == null) { $subscribers = array_var($_POST, 'subscribers'); } $subscribers_ids = array(); if (is_array($subscribers)) { $user_ids = array(); $subscribers_to_remove = array(); //add new subscribers foreach ($subscribers as $key => $checked) { $user_id = substr($key, 5); $subscribers_ids[] = $user_id; if ($checked == "1" && !in_array($user_id, $object->getSubscriberIds())) { $user = Contacts::findById($user_id); if ($user instanceof Contact) { $object->subscribeUser($user); $log_info .= ($log_info == "" ? "" : ",") . $user->getId(); $user_ids[] = $user_id; } } else { if ((!$checked || $checked == '0') && in_array($user_id, $object->getSubscriberIds())) { $subscribers_to_remove[] = $user_id; } } } //remove subscribers //$subscribers_to_remove = array_diff($object->getSubscriberIds(), $subscribers_ids); foreach ($subscribers_to_remove as $subs_remove) { $user = Contacts::findById($subs_remove); if ($user instanceof Contact) { $object->unsubscribeUser($user); $log_info_unsubscribe .= ($log_info_unsubscribe == "" ? "" : ",") . $user->getId(); } } Hook::fire('after_add_subscribers', array('object' => $object, 'user_ids' => $user_ids), $null); if ($log_info != "") { ApplicationLogs::createLog($object, ApplicationLogs::ACTION_SUBSCRIBE, false, true, true, $log_info); } if ($log_info_unsubscribe != "") { ApplicationLogs::createLog($object, ApplicationLogs::ACTION_UNSUBSCRIBE, false, true, true, $log_info_unsubscribe); } } else { $subscribers_to_remove = $object->getSubscriberIds(); foreach ($subscribers_to_remove as $user_id_remove) { $log_info_unsubscribe .= ($log_info_unsubscribe == "" ? "" : ",") . $user_id_remove; } $object->clearSubscriptions(); if ($log_info_unsubscribe != "") { ApplicationLogs::createLog($object, ApplicationLogs::ACTION_UNSUBSCRIBE, false, true, true, $log_info_unsubscribe); } } if ($check_permissions) { // remove subscribers without permissions $subscribed_users = $object->getSubscribers(); foreach ($subscribed_users as $user) { if (!$object->canView($user)) { $object->unsubscribeUser($user); } } } }