_sentry_client = new Client(self::SENTRY_DSN); $this->_plugin_settings = PluginSettings::instance(); $user = amoUser::instance(); $this->_sentry_client->set_user_data(1, $user->get_data('login'), $user->get_data()); $this->_sentry_client->extra_context([ 'version' => AMOFORMS_VERSION, 'plugin_uid' => $this->_plugin_settings->get(PluginSettings::KEY_PLUGIN_UID), ]); $error_handler = new Raven_ErrorHandler($this->_sentry_client); $error_handler->registerExceptionHandler(); $error_handler->registerErrorHandler(); $error_handler->registerShutdownFunction(); } /** * @param \Exception $e * @return string|null - event_id | NULL */ public function capture_exception($e) { return $this->_sentry_client->captureException($e); } /** * @param string $message * @param array $params * @return null|string - event_id | NULL */ public function capture_message($message, array $params = []) { return $this->_sentry_client->captureMessage($message, $params); } /** * @param array $data * @return null|string - event_id | NULL */ public function handle_js_error(array $data) { $message = NULL; foreach (['message', 'msg'] as $key) { if (!empty($data[$key]) && is_string($data[$key])) { $message = trim($data[$key]); break; } } if (!$message) { return NULL; } $extra = []; foreach (['file', 'line', 'type', 'target', 'time', 'stack', 'data'] as $key) { if (isset($data[$key])) { $extra[$key] = $data[$key]; } } $options = [ 'logger' => 'js', 'extra' => $extra, ]; foreach (['method', 'url', 'query_string'] as $key) { if (!empty($data['request'][$key])) { $options['request'][$key] = $data['request'][$key]; } } return $this->_sentry_client->captureMessage($message, [], $options); } }