12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- <?php
- /**
- * Enable or disable group notifications for all members
- */
- $NOTIFICATION_HANDLERS = _elgg_services()->notifications->getMethods();
- $toggle = get_input("toggle");
- $guid = (int) get_input("guid");
- $forward_url = REFERER;
- if (!empty($guid) && !empty($toggle)) {
- $group = get_entity($guid);
- if (!empty($group) && elgg_instanceof($group, "group")) {
- // get group members
- $members = $group->getMembers(array("count" => true));
- if (!empty($members)) {
- $options = array(
- "type" => "user",
- "relationship" => "member",
- "relationship_guid" => $group->getGUID(),
- "inverse_relationship" => true,
- "limit" => false,
- );
- $members = new ElggBatch("elgg_get_entities_from_relationship", $options);
-
- if ($toggle == "enable") {
- // fix notifications settings for site amd email
- $auto_notification_handlers = array(
- "site",
- "email"
- );
-
- // enable notification for everyone
- foreach ($members as $member) {
- foreach ($NOTIFICATION_HANDLERS as $method => $dummy) {
- if (in_array($method, $auto_notification_handlers)) {
- add_entity_relationship($member->getGUID(), "notify" . $method, $group->getGUID());
- }
- }
- }
-
- system_message(elgg_echo("group_tools:action:notifications:success:enable"));
- $forward_url = $group->getURL();
- } elseif ($toggle == "disable") {
- // disable notification for everyone
- foreach ($members as $member) {
- foreach ($NOTIFICATION_HANDLERS as $method => $dummy) {
- remove_entity_relationship($member->getGUID(), "notify" . $method, $group->getGUID());
- }
- }
-
- system_message(elgg_echo("group_tools:action:notifications:success:disable"));
- $forward_url = $group->getURL();
- } else {
- register_error(elgg_echo("group_tools:action:notifications:error:toggle"));
- }
- }
- } else {
- register_error(elgg_echo("group_tools:action:error:entity"));
- }
- } else {
- register_error(elgg_echo("group_tools:action:error:input"));
- }
- forward($forward_url);
|