diff options
Diffstat (limited to 'hugo/libraries/plugins/import/upload/UploadSession.class.php')
| -rw-r--r-- | hugo/libraries/plugins/import/upload/UploadSession.class.php | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/hugo/libraries/plugins/import/upload/UploadSession.class.php b/hugo/libraries/plugins/import/upload/UploadSession.class.php new file mode 100644 index 0000000..3640413 --- /dev/null +++ b/hugo/libraries/plugins/import/upload/UploadSession.class.php @@ -0,0 +1,96 @@ +<?php +/* vim: set expandtab sw=4 ts=4 sts=4: */ +/** + * Provides upload functionalities for the import plugins + * + * @package PhpMyAdmin + */ +if (! defined('PHPMYADMIN')) { + exit; +} + +/* Get the transformations interface */ +require_once 'libraries/plugins/UploadInterface.int.php'; + +/** + * 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] = array( + 'id' => $id, + 'finished' => false, + 'percent' => 0, + 'total' => 0, + 'complete' => 0, + 'plugin' => UploadSession::getIdKey() + ); + } + $ret = $_SESSION[$SESSION_KEY][$id]; + + if (! PMA_import_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 = array( + 'id' => $id, + 'finished' => true, + 'percent' => 100, + 'total' => $ret['total'], + 'complete' => $ret['total'], + 'plugin' => UploadSession::getIdKey() + ); + } + + $_SESSION[$SESSION_KEY][$id] = $ret; + + return $ret; + } +} +?>
\ No newline at end of file |
