Example #1
0
/**
 * 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;
}
Example #2
0
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;
}
Example #3
0
/**
 * 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;
}
Example #4
0
/**
 * 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;
}
Example #5
0
/**
 * 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;
}
Example #6
0
/**
 * 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;
}
Example #7
0
/**
 * 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;
}
Example #8
0
/**
 * 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;
}
Example #9
0
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;
}
Example #10
0
/**
 * 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;
}
Example #11
0
/**
 * 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;
}
Example #12
0
/**
 * 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;
}
Example #13
0
/**
 * 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;
}