Esempio n. 1
0
    /**
     * Output data as json and end the request.
     *
     * @param array|integer $data
     *   The data to output as JSON.
     * @param boolean $suppress_status
     *   Whether to suppress the default success/error message.
     */
    public static function json($data = array(), $suppress_status = false) {
        // Predefined outputs.
        if ($data == self::ACCESS_DENIED) {
            $data = array('status' => 'access_denied');
        }
        elseif ($data == self::SUCCESS) {
            $data = array('status' => 'success');
        }
        elseif ($data == self::ERROR) {
            $data = array('status' => 'error');
        }
        elseif (!empty($data['status']) && !empty(self::$statusStrings[$data['status']])) {
            // Convert numeric status to string.
            $data['status'] = self::$statusStrings[$data['status']];
        }

        // Add errors and messages.
        if (Messenger::hasErrors()) {
            $data['errors'] = Messenger::getErrors();
        }
        if (Messenger::hasMessages()) {
            $data['messages'] = Messenger::getMessages();
        }

        if (!$suppress_status && empty($data['status']) && empty($data['errors'])) {
            $data['status'] = self::$statusStrings[self::SUCCESS];
        }

        // Output and terminate.
        self::jsonOut($data);
    }