Example #1
0
/**
 * Create a new application
 * 
 * @param string $application_id   id op the app
 * @param string $title            name of the app
 * @param string $description      description of the app
 * @param string $icon_url         url to an icon
 * @param array  $application_info array containing additional data about the application
 * 
 * @return APIApplication|boolean
 */
function ws_pack_create_application($application_id, $title, $description = "", $icon_url = "", $application_info = array())
{
    $result = false;
    if (!($application = ws_pack_get_application_from_id($application_id))) {
        // check if api registration is allowed
        if (elgg_get_plugin_setting("allow_registration", "ws_pack") == "yes") {
            if (!empty($application_id) && !empty($title)) {
                $application = new APIApplication();
                $application->title = $title;
                $application->application_id = $application_id;
                // set a description
                if (!empty($description)) {
                    $application->description = $description;
                }
                if (!empty($icon_url)) {
                    $application->icon_url = $icon_url;
                }
                if (!empty($application_info) && is_array($application_info)) {
                    $application->extended_information = json_encode($application_info);
                }
                // make sure we can save the application
                $ia = elgg_set_ignore_access(true);
                if ($application->save()) {
                    $result = $application;
                }
                // restore access
                elgg_set_ignore_access($ia);
            }
        } else {
            // registration is not allowed
            $result = -1;
        }
    } else {
        // already existed, shouldn't happen
        $result = $application;
    }
    return $result;
}
Example #2
0
/**
 * Get API keys for your application
 *
 * @param string $application_id   a unique id for your application
 * @param string $title            the title/name of your application
 * @param string $description      an optional description of your application
 * @param string $icon_url         an optional URL to the icon for your application
 * @param array  $application_info more information in a key => value array
 *
 * @return SuccessResult|ErrorResult
 */
function ws_pack_auth_get_api_keys($application_id, $title, $description = "", $icon_url = "", $application_info = array())
{
    $result = false;
    $application = false;
    if ($application = ws_pack_get_application_from_id($application_id)) {
        // we found an application, check the status
    } elseif ($application = ws_pack_create_application($application_id, $title, $description, $icon_url, $application_info)) {
        // an application was created, check the status
        if ($application === -1) {
            // no application was created, because this has been disabled
            $application = false;
            $result = new ErrorResult(elgg_echo("ws_pack:api:auth:get_api_keys:disabled"), WS_PACK_API_REGISTRATION_DISABLED);
        }
    }
    // check the application satus
    if (!empty($application)) {
        switch ($application->getStatusCode()) {
            case SuccessResult::$RESULT_SUCCESS:
                $api_keys = $application->getApiKeys();
                $result = new SuccessResult($api_keys);
                break;
            case ErrorResult::$RESULT_FAIL_APIKEY_DISABLED:
                $result = new ErrorResult(elgg_echo("ws_pack:api:application:status:disabled"), ErrorResult::$RESULT_FAIL_APIKEY_DISABLED);
                break;
            case ErrorResult::$RESULT_FAIL_APIKEY_INACTIVE:
                $result = new ErrorResult(elgg_echo("ws_pack:api:application:status:inactive"), ErrorResult::$RESULT_FAIL_APIKEY_INACTIVE);
                break;
            case APIApplication::STATE_PENDING:
                $result = new ErrorResult(elgg_echo("ws_pack:api:application:status:pending"), APIApplication::STATE_PENDING);
                break;
        }
    }
    if ($result === false) {
        $result = new ErrorResult(elgg_echo("APIException:ApiResultUnknown"));
    }
    return $result;
}