aboutsummaryrefslogtreecommitdiff
path: root/srcs/phpmyadmin/libraries/classes/Plugins/Import/Upload
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-01-09 10:55:03 +0100
committerCharles <sircharlesaze@gmail.com>2020-01-09 13:09:38 +0100
commit04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa (patch)
tree5c691241355c943a3c68ddb06b8cf8c60aa11319 /srcs/phpmyadmin/libraries/classes/Plugins/Import/Upload
parent7e0d85db834d6351ed85d01e5126ac31dc510b86 (diff)
downloadft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.gz
ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.bz2
ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.zip
phpmyadmin working
Diffstat (limited to 'srcs/phpmyadmin/libraries/classes/Plugins/Import/Upload')
-rw-r--r--srcs/phpmyadmin/libraries/classes/Plugins/Import/Upload/UploadApc.php83
-rw-r--r--srcs/phpmyadmin/libraries/classes/Plugins/Import/Upload/UploadNoplugin.php60
-rw-r--r--srcs/phpmyadmin/libraries/classes/Plugins/Import/Upload/UploadProgress.php97
-rw-r--r--srcs/phpmyadmin/libraries/classes/Plugins/Import/Upload/UploadSession.php95
4 files changed, 335 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/libraries/classes/Plugins/Import/Upload/UploadApc.php b/srcs/phpmyadmin/libraries/classes/Plugins/Import/Upload/UploadApc.php
new file mode 100644
index 0000000..6e7e089
--- /dev/null
+++ b/srcs/phpmyadmin/libraries/classes/Plugins/Import/Upload/UploadApc.php
@@ -0,0 +1,83 @@
+<?php
+/* vim: set expandtab sw=4 ts=4 sts=4: */
+/**
+ * Provides upload functionalities for the import plugins
+ *
+ * @package PhpMyAdmin
+ */
+declare(strict_types=1);
+
+namespace PhpMyAdmin\Plugins\Import\Upload;
+
+use PhpMyAdmin\Display\ImportAjax;
+use PhpMyAdmin\Plugins\UploadInterface;
+
+/**
+ * Implementation for the APC extension
+ *
+ * @package PhpMyAdmin
+ */
+class UploadApc implements UploadInterface
+{
+ /**
+ * Gets the specific upload ID Key
+ *
+ * @return string ID Key
+ */
+ public static function getIdKey()
+ {
+ return 'APC_UPLOAD_PROGRESS';
+ }
+
+ /**
+ * Returns upload status.
+ *
+ * This is implementation for APC extension.
+ *
+ * @param string $id upload id
+ *
+ * @return array|null
+ */
+ public static function getUploadStatus($id)
+ {
+ global $SESSION_KEY;
+
+ if (trim($id) == "") {
+ return null;
+ }
+ if (! array_key_exists($id, $_SESSION[$SESSION_KEY])) {
+ $_SESSION[$SESSION_KEY][$id] = [
+ 'id' => $id,
+ 'finished' => false,
+ 'percent' => 0,
+ 'total' => 0,
+ 'complete' => 0,
+ 'plugin' => UploadApc::getIdKey(),
+ ];
+ }
+ $ret = $_SESSION[$SESSION_KEY][$id];
+
+ if (! ImportAjax::apcCheck() || $ret['finished']) {
+ return $ret;
+ }
+ $status = apc_fetch('upload_' . $id);
+
+ if ($status) {
+ $ret['finished'] = (bool) $status['done'];
+ $ret['total'] = $status['total'];
+ $ret['complete'] = $status['current'];
+
+ if ($ret['total'] > 0) {
+ $ret['percent'] = $ret['complete'] / $ret['total'] * 100;
+ }
+
+ if ($ret['percent'] == 100) {
+ $ret['finished'] = (bool) true;
+ }
+
+ $_SESSION[$SESSION_KEY][$id] = $ret;
+ }
+
+ return $ret;
+ }
+}
diff --git a/srcs/phpmyadmin/libraries/classes/Plugins/Import/Upload/UploadNoplugin.php b/srcs/phpmyadmin/libraries/classes/Plugins/Import/Upload/UploadNoplugin.php
new file mode 100644
index 0000000..087b1e1
--- /dev/null
+++ b/srcs/phpmyadmin/libraries/classes/Plugins/Import/Upload/UploadNoplugin.php
@@ -0,0 +1,60 @@
+<?php
+/* vim: set expandtab sw=4 ts=4 sts=4: */
+/**
+ * Provides upload functionalities for the import plugins
+ *
+ * @package PhpMyAdmin
+ */
+declare(strict_types=1);
+
+namespace PhpMyAdmin\Plugins\Import\Upload;
+
+use PhpMyAdmin\Plugins\UploadInterface;
+
+/**
+ * Implementation for no plugin
+ *
+ * @package PhpMyAdmin
+ */
+class UploadNoplugin implements UploadInterface
+{
+ /**
+ * Gets the specific upload ID Key
+ *
+ * @return string ID Key
+ */
+ public static function getIdKey()
+ {
+ return 'noplugin';
+ }
+
+ /**
+ * Returns upload status.
+ *
+ * This is implementation when no webserver support exists,
+ * so it returns just zeroes.
+ *
+ * @param string $id upload id
+ *
+ * @return array|null
+ */
+ public static function getUploadStatus($id)
+ {
+ global $SESSION_KEY;
+
+ if (trim($id) == "") {
+ return null;
+ }
+ if (! array_key_exists($id, $_SESSION[$SESSION_KEY])) {
+ $_SESSION[$SESSION_KEY][$id] = [
+ 'id' => $id,
+ 'finished' => false,
+ 'percent' => 0,
+ 'total' => 0,
+ 'complete' => 0,
+ 'plugin' => UploadNoplugin::getIdKey(),
+ ];
+ }
+ return $_SESSION[$SESSION_KEY][$id];
+ }
+}
diff --git a/srcs/phpmyadmin/libraries/classes/Plugins/Import/Upload/UploadProgress.php b/srcs/phpmyadmin/libraries/classes/Plugins/Import/Upload/UploadProgress.php
new file mode 100644
index 0000000..13578e0
--- /dev/null
+++ b/srcs/phpmyadmin/libraries/classes/Plugins/Import/Upload/UploadProgress.php
@@ -0,0 +1,97 @@
+<?php
+/* vim: set expandtab sw=4 ts=4 sts=4: */
+/**
+ * Provides upload functionalities for the import plugins
+ *
+ * @package PhpMyAdmin
+ */
+declare(strict_types=1);
+
+namespace PhpMyAdmin\Plugins\Import\Upload;
+
+use PhpMyAdmin\Display\ImportAjax;
+use PhpMyAdmin\Plugins\UploadInterface;
+
+/**
+ * Implementation for upload progress
+ *
+ * @package PhpMyAdmin
+ */
+class UploadProgress implements UploadInterface
+{
+ /**
+ * Gets the specific upload ID Key
+ *
+ * @return string ID Key
+ */
+ public static function getIdKey()
+ {
+ return 'UPLOAD_IDENTIFIER';
+ }
+
+ /**
+ * Returns upload status.
+ *
+ * This is implementation for upload progress
+ *
+ * @param string $id upload id
+ *
+ * @return array|null
+ */
+ public static function getUploadStatus($id)
+ {
+ global $SESSION_KEY;
+
+ if (trim($id) == "") {
+ return null;
+ }
+
+ if (! array_key_exists($id, $_SESSION[$SESSION_KEY])) {
+ $_SESSION[$SESSION_KEY][$id] = [
+ 'id' => $id,
+ 'finished' => false,
+ 'percent' => 0,
+ 'total' => 0,
+ 'complete' => 0,
+ 'plugin' => UploadProgress::getIdKey(),
+ ];
+ }
+ $ret = $_SESSION[$SESSION_KEY][$id];
+
+ if (! ImportAjax::progressCheck() || $ret['finished']) {
+ return $ret;
+ }
+
+ $status = null;
+ if (function_exists('uploadprogress_get_info')) {
+ $status = uploadprogress_get_info($id);
+ }
+
+ if ($status) {
+ if ($status['bytes_uploaded'] == $status['bytes_total']) {
+ $ret['finished'] = true;
+ } else {
+ $ret['finished'] = false;
+ }
+ $ret['total'] = $status['bytes_total'];
+ $ret['complete'] = $status['bytes_uploaded'];
+
+ if ($ret['total'] > 0) {
+ $ret['percent'] = $ret['complete'] / $ret['total'] * 100;
+ }
+ } else {
+ $ret = [
+ 'id' => $id,
+ 'finished' => true,
+ 'percent' => 100,
+ 'total' => $ret['total'],
+ 'complete' => $ret['total'],
+ 'plugin' => UploadProgress::getIdKey(),
+ ];
+ }
+
+ $_SESSION[$SESSION_KEY][$id] = $ret;
+
+ return $ret;
+ }
+}
diff --git a/srcs/phpmyadmin/libraries/classes/Plugins/Import/Upload/UploadSession.php b/srcs/phpmyadmin/libraries/classes/Plugins/Import/Upload/UploadSession.php
new file mode 100644
index 0000000..133b11a
--- /dev/null
+++ b/srcs/phpmyadmin/libraries/classes/Plugins/Import/Upload/UploadSession.php
@@ -0,0 +1,95 @@
+<?php
+/* vim: set expandtab sw=4 ts=4 sts=4: */
+/**
+ * Provides upload functionalities for the import plugins
+ *
+ * @package PhpMyAdmin
+ */
+declare(strict_types=1);
+
+namespace PhpMyAdmin\Plugins\Import\Upload;
+
+use PhpMyAdmin\Display\ImportAjax;
+use PhpMyAdmin\Plugins\UploadInterface;
+
+/**
+ * Implementation for session
+ *
+ * @package PhpMyAdmin
+ */
+class UploadSession implements UploadInterface
+{
+ /**
+ * Gets the specific upload ID Key
+ *
+ * @return string ID Key
+ */
+ public static function getIdKey()
+ {
+ return ini_get('session.upload_progress.name');
+ }
+
+ /**
+ * Returns upload status.
+ *
+ * This is implementation for session.upload_progress in PHP 5.4+.
+ *
+ * @param string $id upload id
+ *
+ * @return array|null
+ */
+ public static function getUploadStatus($id)
+ {
+ global $SESSION_KEY;
+
+ if (trim($id) == '') {
+ return null;
+ }
+
+ if (! array_key_exists($id, $_SESSION[$SESSION_KEY])) {
+ $_SESSION[$SESSION_KEY][$id] = [
+ 'id' => $id,
+ 'finished' => false,
+ 'percent' => 0,
+ 'total' => 0,
+ 'complete' => 0,
+ 'plugin' => UploadSession::getIdKey(),
+ ];
+ }
+ $ret = $_SESSION[$SESSION_KEY][$id];
+
+ if (! ImportAjax::sessionCheck() || $ret['finished']) {
+ return $ret;
+ }
+
+ $status = false;
+ $sessionkey = ini_get('session.upload_progress.prefix') . $id;
+
+ if (isset($_SESSION[$sessionkey])) {
+ $status = $_SESSION[$sessionkey];
+ }
+
+ if ($status) {
+ $ret['finished'] = $status['done'];
+ $ret['total'] = $status['content_length'];
+ $ret['complete'] = $status['bytes_processed'];
+
+ if ($ret['total'] > 0) {
+ $ret['percent'] = $ret['complete'] / $ret['total'] * 100;
+ }
+ } else {
+ $ret = [
+ 'id' => $id,
+ 'finished' => true,
+ 'percent' => 100,
+ 'total' => $ret['total'],
+ 'complete' => $ret['total'],
+ 'plugin' => UploadSession::getIdKey(),
+ ];
+ }
+
+ $_SESSION[$SESSION_KEY][$id] = $ret;
+
+ return $ret;
+ }
+}