HEX
Server: nginx/1.22.1
System: Linux VM-16-9-centos 3.10.0-1160.99.1.el7.x86_64 #1 SMP Wed Sep 13 14:19:20 UTC 2023 x86_64
User: www (1001)
PHP: 7.3.31
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: //www/server/phpmyadmin/phpmyadmin_adbe6840229e67e3/js/dist/designer/database.js
var designerTables = [{
  name: 'pdf_pages',
  key: 'pgNr',
  autoIncrement: true
}, {
  name: 'table_coords',
  key: 'id',
  autoIncrement: true
}];

// eslint-disable-next-line no-unused-vars
var DesignerOfflineDB = function () {
  var designerDB = {};

  /**
   * @type {IDBDatabase|null}
   */
  var datastore = null;

  /**
   * @param {String} table
   * @return {IDBTransaction}
   */
  designerDB.getTransaction = function (table) {
    return datastore.transaction([table], 'readwrite');
  };

  /**
   * @param {String} table
   * @return {IDBObjectStore}
   */
  designerDB.getObjectStore = function (table) {
    var transaction = designerDB.getTransaction(table);
    var objStore = transaction.objectStore(table);
    return objStore;
  };

  /**
   * @param {IDBTransaction} transaction
   * @param {String} table
   * @return {IDBObjectStore}
   */
  designerDB.getCursorRequest = function (transaction, table) {
    var objStore = transaction.objectStore(table);
    var keyRange = IDBKeyRange.lowerBound(0);
    var cursorRequest = objStore.openCursor(keyRange);
    return cursorRequest;
  };

  /**
   * @param {Function} callback
   * @return {void}
   */
  designerDB.open = function (callback) {
    var version = 1;
    var request = window.indexedDB.open('pma_designer', version);
    request.onupgradeneeded = function (e) {
      var db = e.target.result;
      e.target.transaction.onerror = designerDB.onerror;
      var t;
      for (t in designerTables) {
        if (db.objectStoreNames.contains(designerTables[t].name)) {
          db.deleteObjectStore(designerTables[t].name);
        }
      }
      for (t in designerTables) {
        db.createObjectStore(designerTables[t].name, {
          keyPath: designerTables[t].key,
          autoIncrement: designerTables[t].autoIncrement
        });
      }
    };
    request.onsuccess = function (e) {
      datastore = e.target.result;
      if (typeof callback === 'function') {
        callback(true);
      }
    };
    request.onerror = function () {
      Functions.ajaxShowMessage(Messages.strIndexedDBNotWorking, null, 'error');
    };
  };

  /**
   * @param {String} table
   * @param {String} id
   * @param {Function} callback
   * @return {void}
   */
  designerDB.loadObject = function (table, id, callback) {
    if (datastore === null) {
      Functions.ajaxShowMessage(Messages.strIndexedDBNotWorking, null, 'error');
      return;
    }
    var objStore = designerDB.getObjectStore(table);
    var cursorRequest = objStore.get(parseInt(id));
    cursorRequest.onsuccess = function (e) {
      callback(e.target.result);
    };
    cursorRequest.onerror = designerDB.onerror;
  };

  /**
   * @param {String} table
   * @param {Function} callback
   * @return {void}
   */
  designerDB.loadAllObjects = function (table, callback) {
    if (datastore === null) {
      Functions.ajaxShowMessage(Messages.strIndexedDBNotWorking, null, 'error');
      return;
    }
    var transaction = designerDB.getTransaction(table);
    var cursorRequest = designerDB.getCursorRequest(transaction, table);
    var results = [];
    transaction.oncomplete = function () {
      callback(results);
    };
    cursorRequest.onsuccess = function (e) {
      var result = e.target.result;
      if (Boolean(result) === false) {
        return;
      }
      results.push(result.value);
      result.continue();
    };
    cursorRequest.onerror = designerDB.onerror;
  };

  /**
   * @param {String} table
   * @param {Function} callback
   * @return {void}
   */
  designerDB.loadFirstObject = function (table, callback) {
    if (datastore === null) {
      Functions.ajaxShowMessage(Messages.strIndexedDBNotWorking, null, 'error');
      return;
    }
    var transaction = designerDB.getTransaction(table);
    var cursorRequest = designerDB.getCursorRequest(transaction, table);
    var firstResult = null;
    transaction.oncomplete = function () {
      callback(firstResult);
    };
    cursorRequest.onsuccess = function (e) {
      var result = e.target.result;
      if (Boolean(result) === false) {
        return;
      }
      firstResult = result.value;
    };
    cursorRequest.onerror = designerDB.onerror;
  };

  /**
   * @param {String} table
   * @param {Object} obj
   * @param {Function} callback
   * @return {void}
   */
  designerDB.addObject = function (table, obj, callback) {
    if (datastore === null) {
      Functions.ajaxShowMessage(Messages.strIndexedDBNotWorking, null, 'error');
      return;
    }
    var objStore = designerDB.getObjectStore(table);
    var request = objStore.put(obj);
    request.onsuccess = function (e) {
      if (typeof callback === 'function') {
        callback(e.currentTarget.result);
      }
    };
    request.onerror = designerDB.onerror;
  };

  /**
   * @param {String} table
   * @param {String} id
   * @param {Function} callback
   * @return {void}
   */
  designerDB.deleteObject = function (table, id, callback) {
    if (datastore === null) {
      Functions.ajaxShowMessage(Messages.strIndexedDBNotWorking, null, 'error');
      return;
    }
    var objStore = designerDB.getObjectStore(table);
    var request = objStore.delete(parseInt(id));
    request.onsuccess = function () {
      if (typeof callback === 'function') {
        callback(true);
      }
    };
    request.onerror = designerDB.onerror;
  };

  /**
   * @param {Error} e
   * @return {void}
   */
  designerDB.onerror = function (e) {
    // eslint-disable-next-line no-console
    console.log(e);
  };

  // Export the designerDB object.
  return designerDB;
}();