function callPluginFunction({ p_plugin_name, p_function_name, p_data = null, p_callback = null, p_loading = true, p_check_database_connection = true, p_cancel_button = null, p_onAjaxErrorCallBack = false }) {
  var v_database_index = null;
  if (v_connTabControl.selectedTab.tag.selectedDatabaseIndex) {
    v_database_index = v_connTabControl.selectedTab.tag.selectedDatabaseIndex;
  }
  execAjax('/exec_plugin_function/',
      JSON.stringify({'p_plugin_name': p_plugin_name,
                      'p_function_name': p_function_name,
                      'p_data': p_data,
                      'p_database_index': v_database_index,
                      'p_tab_id': v_connTabControl.selectedTab.id,
                      'p_check_database_connection': p_check_database_connection
                    }),
      function(p_return) {
        p_callback(p_return.v_data);
      },
      function(p_return) {
        if (p_return.v_data.password_timeout) {
            showPasswordPrompt(
                v_connTabControl.selectedTab.tag.selectedDatabaseIndex,
                function() {
                    callPluginFunction({ p_plugin_name, p_function_name, p_data, p_callback, p_loading, p_check_database_connection, p_cancel_button, p_onAjaxErrorCallBack })
                },
                null,
                p_return.v_data.message
            );
        } else {
            showError(p_return.v_data);
        }
      },
      'box',
      p_loading,
      p_cancel_button,
      p_onAjaxErrorCallBack);
}
## callPluginFunction
@desc callPluginFunction

@param  {String} p_plugin_name                       String mapping the context on which python should seek for the `pfunction_name`.
@param  {String} p_function_name                     String mapping the name of the function to be run.
@param  {[Object, Array, String, Number, Boolean]}   p_data = null                      Data relevant to the function.
@param  {String} p_callback = null                   String mapping the name of the function to be run as callback when the plugin function returns successfully with valid data.
@param  {Boolean} p_loading = true                   Defines if the loading animation should be used during the request.
@param  {Boolean} p_check_database_connection = true Defines if the active connection to the selected database should be checked.
@param  {Boolean} p_cancel_button = null             Defines if the default cancel button must be displayed or not.
@param  {String} p_onAjaxErrorCallBack = false       String mapping the name of the function to be run as callback if the ajax request fails with an error.
@return {Function}                                   Triggers the `p_callback` function with the returned data.