} /** * 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), ] ); } }