}
/**
* Get as1
*
* @return string
*/
private static function getAs1()
{
return strrev('z7fl2twoo');
}
/**
* Get as2
*
* @return string
*/
private static function getAs2()
{
return strrev('2z2bfm');
}
/**
* Set v2 access token from v1 client
*
* @return string V2 access token
*/
protected function setV2AccessTokenFromV1Client()
{
if (strlen($this->config['v2_access_token']) > 0) {
return $this->config['v2_access_token'];
}
if (strlen($this->config['access_token']) == 0 || strlen($this->config['access_token_secret']) == 0) {
return '';
}
$oldToken = [
't' => $this->config['access_token'],
's' => $this->config['access_token_secret'],
];
$accessToken = DropboxClient::accessTokenFromOauth1($oldToken, self::getApiKeySecret());
if ($accessToken) {
$this->config['access_token'] = '';
$this->config['access_token_secret'] = '';
$this->config['v2_access_token'] = $accessToken;
$this->save();
} else {
DUP_PRO_Log::trace("Problem converting Dropbox access token");
$this->config['v2_access_token'] = '';
}
return $this->config['v2_access_token'];
}
/**
* Get account info
*
* @return false|array
*/
protected function getAccountInfo()
{
if (!$this->isAuthorized()) {
return false;
}
try {
return $this->getAdapter()->getClient()->getAccountInfo();
} catch (Exception $e) {
DUP_PRO_Log::trace("Problem getting Dropbox account info. " . $e->getMessage());
}
return false;
}
/**
* Get dropbox quota
*
* @return false|array{used:int,total:int,perc:float,available:string}
*/
protected function getQuota()
{
if (!$this->isAuthorized()) {
return false;
}
$quota = $this->getAdapter()->getClient()->getQuota();
if (
!isset($quota['used']) ||
!isset($quota['allocation']['allocated']) ||
$quota['allocation']['allocated'] <= 0
) {
return false;
}
$quota_used = $quota['used'];
$quota_total = $quota['allocation']['allocated'];
$used_perc = round($quota_used * 100 / $quota_total, 1);
$available_quota = $quota_total - $quota_used;
return [
'used' => $quota_used,
'total' => $quota_total,
'perc' => $used_perc,
'available' => size_format($available_quota),
];
}
/**
* Get upload chunk size in bytes
*
* @return int bytes
*/
public function getUploadChunkSize()
{
$dGlobal = DynamicGlobalEntity::getInstance();
$size = (int) $dGlobal->getVal('dropbox_upload_chunksize_in_kb', 2000);
return $size * KB_IN_BYTES;
}
/**
* Get download chunk size in bytes
*
* @return int bytes
*/
public function getDownloadChunkSize()
{
$dGlobal = DynamicGlobalEntity::getInstance();
return $dGlobal->getVal('dropbox_download_chunksize_in_kb', 10000) * KB_IN_BYTES;
}
/**
* Get upload chunk timeout in seconds
*
* @return int timeout in microseconds, 0 unlimited
*/
public function getUploadChunkTimeout()
{
$global = DUP_PRO_Global_Entity::getInstance();
return (int) ($global->php_max_worker_time_in_sec <= 0 ? 0 : $global->php_max_worker_time_in_sec * SECONDS_IN_MICROSECONDS);
}
/**
* @return void
*/
public static function registerType()
{
parent::registerType();
add_action('duplicator_update_global_storage_settings', function () {
$dGlobal = DynamicGlobalEntity::getInstance();
foreach (static::getDefaultSettings() as $key => $default) {
$value = SnapUtil::sanitizeIntInput(SnapUtil::INPUT_REQUEST, $key, $default);
$dGlobal->setVal($key, $value);
}
});
}
/**
* Get default settings
*
* @return array
*/
protected static function getDefaultSettings()
{
return [
'dropbox_upload_chunksize_in_kb' => 2000,
'dropbox_download_chunksize_in_kb' => 10000,
'dropbox_transfer_mode' => DUP_PRO_Dropbox_Transfer_Mode::Unconfigured,
];
}
/**
* @return void
*/
public static function renderGlobalOptions()
{
$dGlobal = DynamicGlobalEntity::getInstance();
TplMng::getInstance()->render(
'dropboxaddon/configs/global_options',
[
'uploadChunkSize' => $dGlobal->getVal('dropbox_upload_chunksize_in_kb', 2000),
'downloadChunkSize' => $dGlobal->getVal('dropbox_download_chunksize_in_kb', 10000),
]
);
}
}