/** * Unregisters the current user from a given push notification service * * @param string $service_name name of the service * * @return SuccessResult|ErrorResult */ function ws_pack_users_unregister_from_push_notifications($service_name) { $result = false; $user = elgg_get_logged_in_user_entity(); $api_application = ws_pack_get_current_api_application(); if (!empty($user) && !empty($api_application)) { if ($api_application_user_settings = ws_pack_get_application_user_settings($user, $api_application)) { switch ($service_name) { case "appcelerator": if ($api_application_user_settings->unregisterFromPushNotifications($service_name)) { $result = new SuccessResult($service_name); } break; default: $result = new ErrorResult(elgg_echo("ws_pack:push_notifications:error:unsupported_service", array($service_name))); break; } } else { $result = new ErrorResult(elgg_echo("ws_pack:user_settings:error:notfound")); } } if ($result === false) { $result = new ErrorResult(elgg_echo("ws_pack:users:unregister_from_push_notifications:error")); } return $result; }
function ws_pack_get_lang_file() { $result = false; $user = elgg_get_logged_in_user_entity(); $api_application = ws_pack_get_current_api_application(); if (!empty($user) && !empty($api_application)) { $translations = array(); //kinds of translations $fields = array("members", "search", "groups", "friends", "notifications", "messages", "messageboard", "likes", "invitefriends", "discussion", "profile", "user", "usersettings", "date", "email"); //load and iterate the language cached by the site foreach ($GLOBALS["CONFIG"]->translations as $trans) { foreach ($trans as $k => $v) { if (strpos($k, ":")) { $parts = explode(':', $k); $new_key = $parts[1]; foreach ($fields as $field) { if ($parts[0] == $field) { $translations[$field][$new_key] = $v; } } } else { $translations["general"][$k] = $v; } } } $translations = json_encode($translations); $result = new SuccessResult($translations); } if ($result === false) { $result = new ErrorResult(elgg_echo("ws_pack:error:notfound")); } return $result; }
/** * Unregisters the current user from a given push notification service * * @param string $service_name name of the service * * @return SuccessResult|ErrorResult */ function ws_pack_users_unregister_from_push_notifications($service_name) { $result = false; $user = elgg_get_logged_in_user_entity(); $api_application = ws_pack_get_current_api_application(); if (!empty($user) && !empty($api_application)) { // is the service registered if ($api_application->isRegisteredPushNotificationService($service_name)) { $api_application_user_settings = ws_pack_get_application_user_settings($user, $api_application); if (!empty($api_application_user_settings)) { if ($api_application_user_settings->unregisterFromPushNotifications($service_name)) { $result = new SuccessResult($service_name); } } else { $result = new ErrorResult(elgg_echo("ws_pack:user_settings:error:notfound")); } } else { $result = new ErrorResult(elgg_echo("ws_pack:push_notifications:error:unsupported_service", [$service_name])); } } if ($result === false) { $result = new ErrorResult(elgg_echo("ws_pack:users:unregister_from_push_notifications:error")); } return $result; }
/** * Unregister a push notifications from the current api application * * @param string $service_name name of the service * * @return ErrorResult|SuccessResult */ function ws_pack_system_api_unregister_push_notification_service($service_name) { $result = false; $api_application = ws_pack_get_current_api_application(); if (!empty($api_application)) { if ($api_application->unregisterPushNotificationService($service_name)) { $result = new SuccessResult($service_name); } else { $result = new ErrorResult(elgg_echo("ws_pack:push_notifications:error:unsupported_service", [$service_name])); } } if ($result === false) { $result = new ErrorResult(elgg_echo("ws_pack:system:api:unregister_push_notification_service:error")); } return $result; }
/** * Serch members * * @param int $guid Member GUID * * @return SuccessResult|ErrorResult */ function ws_pack_get_member($guid) { $result = false; $user = elgg_get_logged_in_user_entity(); $api_application = ws_pack_get_current_api_application(); if (!empty($user) && !empty($api_application)) { $member_result = get_entity($guid); if ($member_result !== false) { $member_result = ws_pack_export_entity($member_result); $result = new SuccessResult($member_result); } } if ($result === false) { $result = new ErrorResult(elgg_echo("ws_pack:error:notfound")); } return $result; }
/** * Returns the colorscheme * * @return SuccessResult|ErrorResult */ function ws_pack_get_color_scheme() { $result = false; $user = elgg_get_logged_in_user_entity(); $api_application = ws_pack_get_current_api_application(); if (!empty($user) && !empty($api_application)) { if ($color_1 = elgg_get_plugin_setting('color_1', 'ws_pack')) { $result = $color_1; } if ($result === false) { $result = new ErrorResult(elgg_echo("notfound")); } } if ($result === false) { $result = new ErrorResult(elgg_echo("ws_pack:error:notfound")); } return $result; }
/** * Get Entity * * @param int $id Entity GUID * * @return SuccessResult|ErrorResult */ function ws_pack_get_entity($id) { $result = false; $user = elgg_get_logged_in_user_entity(); $api_application = ws_pack_get_current_api_application(); if (!empty($user) && !empty($api_application)) { $options = array("guids" => explode(",", $id)); $entity = elgg_get_entities($options); if ($entity === false) { // error } else { $entity["entity"] = ws_pack_export_entities($entity); $result = new SuccessResult($entity); } } if ($result === false) { $result = new ErrorResult(elgg_echo("ws_pack:error:notfound")); } return $result; }
/** * Unregister a push notifications from the current api application * * @param string $service_name name of the service * * @return ErrorResult|SuccessResult */ function ws_pack_system_api_unregister_push_notification_service($service_name) { $result = false; if ($api_application = ws_pack_get_current_api_application()) { switch ($service_name) { case "appcelerator": if ($api_application->unregisterPushNotificationService($service_name)) { $result = new SuccessResult($service_name); } break; default: $result = new ErrorResult(elgg_echo("ws_pack:push_notifications:error:unsupported_service", array($service_name))); break; } } if ($result === false) { $result = new ErrorResult(elgg_echo("ws_pack:system:api:unregister_push_notification_service:error")); } return $result; }
function ws_pack_get_lang_file() { $result = false; $user = elgg_get_logged_in_user_entity(); $api_application = ws_pack_get_current_api_application(); if (!empty($user) && !empty($api_application)) { $translations = []; //kinds of translations $fields = ['members', 'search', 'groups', 'friends', 'notifications', 'messages', 'messageboard', 'likes', 'invitefriends', 'discussion', 'profile', 'user', 'usersettings', 'date', 'email']; global $_ELGG; $elgg_translations = $_ELGG->translations['en']; $user_lang = get_current_language(); if ($user_lang !== 'en') { if (array_key_exists($user_lang, $_ELGG->translations)) { $elgg_translations = array_merge($elgg_translations, $_ELGG->translations[$user_lang]); } } //load and iterate the language cached by the site foreach ($elgg_translations as $k => $v) { if (strpos($k, ':')) { $parts = explode(':', $k); $new_key = $parts[1]; foreach ($fields as $field) { if ($parts[0] == $field) { $translations[$field][$new_key] = $v; } } } else { $translations['general'][$k] = $v; } } $translations = json_encode($translations); $result = new SuccessResult($translations); } if ($result === false) { $result = new ErrorResult(elgg_echo('ws_pack:error:notfound')); } return $result; }
/** * Get Notifications * * @return SuccessResult|ErrorResult */ function ws_pack_get_notifications() { $result = false; $user = elgg_get_logged_in_user_entity(); $api_application = ws_pack_get_current_api_application(); if (!empty($user) && !empty($api_application)) { if (!$user_guid) { $user_guid = elgg_get_logged_in_user_guid(); } $options = array('type' => 'object', 'subtype' => 'site_notification', 'limit' => 50, 'order_by' => 'e.last_action desc', 'owner_guid' => $user->guid, 'full_view' => false, 'relationship' => 'hasActor', 'no_results' => elgg_echo('site_notifications:empty')); $notifications = elgg_get_entities_from_metadata($options); if ($notifications === false) { $result = new ErrorResult(elgg_echo("ws_pack:error:notfound")); } else { $notifications["entities"] = ws_pack_export_entities($notifications); $guids = array(); foreach ($notifications["entities"] as $key => $notification) { $notification_guid = $notification["guid"]; if (!in_array($notification_guid, $guids)) { $guids[] = $notification_guid; $notification_entity = get_entity($notification_guid); $owner = get_entity($notification["owner_guid"]); $notification["owner"] = ws_pack_export_entity($owner); $notification["parent_guid"] = $notification_entity->getURL(); $notifications["entities"][$key] = $notification; } else { unset($notifications["entities"][$key]); } } $result = new SuccessResult($notifications); } if ($result === false) { $result = new ErrorResult(elgg_echo("ws_pack:error:notfound")); } } return $result; }
/** * Delete Message * * @param int $guid Message GUID * * @return SuccessResult|ErrorResult */ function ws_pack_delete_message($guid) { $result = false; $user = elgg_get_logged_in_user_entity(); $api_application = ws_pack_get_current_api_application(); if (!empty($user) && !empty($api_application)) { $guid = (int) get_input('guid'); $message = get_entity($guid); if (!elgg_instanceof($message, 'object', 'messages') || !$message->canEdit()) { $result = new ErrorResult(elgg_echo("messages:error:delete:single")); } if (!$message->delete()) { $result = new ErrorResult(elgg_echo("messages:error:delete:single")); } else { $result = new SuccessResult(true); } } else { $result = new ErrorResult(elgg_echo("ws_pack:error:notfound")); } return $result; }
/** * Delete Wire * * @param int $guid Wire GUID * * @return SuccessResult|ErrorResult */ function ws_pack_delete_wire($guid) { $result = false; $user = elgg_get_logged_in_user_entity(); $api_application = ws_pack_get_current_api_application(); if (!empty($user) && !empty($api_application)) { $thewire = get_entity($guid); if ($thewire->getSubtype() == "thewire" && $thewire->canEdit()) { // unset reply metadata on children $children = elgg_get_entities_from_relationship(array('relationship' => 'parent', 'relationship_guid' => $guid, 'inverse_relationship' => true)); if ($children) { foreach ($children as $child) { $child->reply = false; } } // Delete it $rowsaffected = $thewire->delete(); if ($rowsaffected > 0) { $result = new SuccessResult(true); } else { $result = new ErrorResult(elgg_echo("ws_pack:users:register_for_push_notifications:error")); } } else { $result = new ErrorResult(elgg_echo("ws_pack:users:register_for_push_notifications:error")); } } return $result; }
/** * Delete Discussions from a group * * @param int $guid Discussion GUID * * @return SuccessResult|ErrorResult */ function ws_pack_delete_discussion($guid) { $result = false; $user = elgg_get_logged_in_user_entity(); $api_application = ws_pack_get_current_api_application(); if (!empty($user) && !empty($api_application)) { $discussion = get_entity($guid); if ($discussion->canEdit()) { // unset reply metadata on children $children = elgg_get_entities_from_relationship(array('relationship' => 'parent', 'relationship_guid' => $guid, 'inverse_relationship' => true)); if ($children) { foreach ($children as $child) { $child->reply = false; } } // Delete it $rowsaffected = $discussion->delete(); if ($rowsaffected > 0) { $result = new SuccessResult(true); } else { $result = new ErrorResult(elgg_echo("ws_pack:error:notfound")); } } else { $result = new ErrorResult(elgg_echo("ws_pack:error:notfound")); } } return $result; }