Exemple #1
0
 /**
  * Prepare log object
  * @param  integer     $flags
  * @param  object      $settings
  * @param  object      $params
  * @param  string      $HTTPMethod
  * @param  array       $headers
  * @param  object|null $additionalParameters
  * @return object
  */
 private static function prepareObject($flags, $settings, $params, $HTTPMethod, $headers, $additionalParameters)
 {
     list($URI) = \Phramework\URIStrategy\URITemplate::URI();
     $object = (object) ['request_id' => Phramework::getRequestUUID(), 'URI' => $URI, 'method' => $HTTPMethod, 'user_id' => null, 'ip_address' => \Phramework\Models\Util::getIPAddress(), 'request_headers' => null, 'request_params' => null, 'request_body_raw' => null, 'request_timestamp' => $_SERVER['REQUEST_TIME'], 'response_timestamp' => time(), 'response_headers' => null, 'response_body' => null, 'response_status_code' => http_response_code(), 'exception' => null, 'exception_class' => null, 'errors' => null, 'call_trace' => null, 'flags' => $flags, 'additional_parameters' => $additionalParameters];
     if (($flags & self::LOG_USER_ID) !== 0) {
         $user = Phramework::getUser();
         $object->user_id = $user ? $user->id : false;
     }
     /*
        Request flags
     */
     if (($flags & self::LOG_REQUEST_HEADERS) !== 0) {
         //Asterisk authorization header value except schema
         if (isset($headers['Authorization'])) {
             list($authorizationSchema) = sscanf($headers['Authorization'], '%s %s');
             $headers['Authorization'] = $authorizationSchema . ' ***';
         }
         $object->request_headers = $headers;
     } else {
         $request_headers = [];
         if (($flags & self::LOG_REQUEST_HEADER_CONTENT_TYPE) !== 0) {
             //Write content type
             $request_headers[\Phramework\Models\Request::HEADER_CONTENT_TYPE] = isset($headers[\Phramework\Models\Request::HEADER_CONTENT_TYPE]) ? $headers[\Phramework\Models\Request::HEADER_CONTENT_TYPE] : null;
         }
         if (($flags & self::LOG_REQUEST_HEADER_AGENT) !== 0) {
             $request_headers['User-Agent'] = isset($headers['User-Agent']) ? $headers['User-Agent'] : null;
         }
         if (($flags & self::LOG_REQUEST_HEADER_REFERER) !== 0) {
             $request_headers['Referer'] = isset($headers['Referer']) ? $headers['Referer'] : null;
         }
         if (($flags & self::LOG_REQUEST_HEADER_ACCEPT) !== 0) {
             $request_headers['Accept'] = isset($headers['Accept']) ? $headers['Accept'] : null;
         }
         if (!empty($request_headers)) {
             $object->request_headers = $request_headers;
         }
     }
     if (($flags & self::LOG_REQUEST_PARAMS) !== 0) {
         $object->request_params = $params;
     }
     if (($flags & self::LOG_REQUEST_BODY_RAW) !== 0) {
         $bodyRaw = file_get_contents('php://input');
         if (strlen($bodyRaw) > $settings->body_raw_limit) {
             $bodyRaw = 'TRIMMED' . PHP_EOL . substr($bodyRaw, 0, $settings->body_raw_limit);
         }
         //Apply FILTER_SANITIZE_STRING
         $object->request_body_raw = \Phramework\Models\Filter::string($bodyRaw);
         //include content type headers if disabled
         if (!empty($bodyRaw) && ($flags & self::LOG_REQUEST_HEADERS) === 0 && ($flags & self::LOG_REQUEST_HEADER_CONTENT_TYPE) === 0) {
             $contentType = isset($headers[\Phramework\Models\Request::HEADER_CONTENT_TYPE]) ? $headers[\Phramework\Models\Request::HEADER_CONTENT_TYPE] : null;
             if (empty($object->request_headers)) {
                 //make sure it's array
                 $object->request_headers = [];
             }
             $object->request_headers[\Phramework\Models\Request::HEADER_CONTENT_TYPE] = $contentType;
         }
     }
     $responseHeaders = new \stdClass();
     foreach (headers_list() as $header) {
         list($key, $value) = explode(': ', $header);
         $responseHeaders->{$key} = $value;
     }
     /*
        Response flags
     */
     if (($flags & self::LOG_RESPONSE_HEADER) !== 0) {
         $object->response_headers = $responseHeaders;
     }
     if (($flags & self::LOG_RESPONSE_BODY) !== 0) {
         $object->response_body = ob_get_contents();
         if (($flags & self::LOG_RESPONSE_HEADER) === 0) {
             //show content type if headers are disabled
             $object->response_headers = (object) [\Phramework\Models\Request::HEADER_CONTENT_TYPE => isset($responseHeaders->{\Phramework\Models\Request::HEADER_CONTENT_TYPE}) ? $responseHeaders->{\Phramework\Models\Request::HEADER_CONTENT_TYPE} : null];
         }
     }
     return $object;
 }