/** * 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); }