diff options
Diffstat (limited to 'srcs/phpmyadmin/libraries/classes/Plugins/Import/Upload/UploadApc.php')
| -rw-r--r-- | srcs/phpmyadmin/libraries/classes/Plugins/Import/Upload/UploadApc.php | 83 |
1 files changed, 83 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; + } +} |
