%PDF- %PDF-
| Direktori : /www/varak.net/mail2.varak.net_old/libraries/afterlogic/common/managers/filestorage/ |
| Current File : /www/varak.net/mail2.varak.net_old/libraries/afterlogic/common/managers/filestorage/manager.php |
<?php
/*
* Copyright 2004-2014, AfterLogic Corp.
* Licensed under AGPLv3 license or AfterLogic license
* if commercial version of the product was purchased.
* See the LICENSE file for a full license statement.
*/
/**
* @package Filestorage
*/
class CApiFilestorageManager extends AApiManagerWithStorage
{
protected $oMinMan = null;
/**
* @param CApiGlobalManager &$oManager
*/
public function __construct(CApiGlobalManager &$oManager, $sForcedStorage = '')
{
parent::__construct('filestorage', $oManager, $sForcedStorage);
$this->inc('classes.item');
}
public function GetMinManager()
{
if ($this->oMinMan === null)
{
$this->oMinMan = \CApi::Manager('min');
}
return $this->oMinMan;
}
public function FileExists($oAccount, $iType, $sPath, $sName)
{
$bResult = false;
$bBreak = false;
\CApi::Plugin()->RunHook('filestorage.file-exists', array($oAccount, $iType, $sPath, $sName, &$bResult, &$bBreak));
if (!$bBreak)
{
$bResult = $this->oStorage->FileExists($oAccount, $iType, $sPath, $sName);
}
return $bResult;
}
public function GetSharedFile($oAccount, $iType, $sPath, $sName)
{
return $this->oStorage->GetSharedFile($oAccount, $iType, $sPath, $sName);
}
public function GetFileInfo($oAccount, $iType, $sPath, $sName)
{
$bResult = false;
$bBreak = false;
\CApi::Plugin()->RunHook('filestorage.get-file-info', array($oAccount, $iType, $sPath, $sName, &$bResult, &$bBreak));
if (!$bBreak)
{
$bResult = $this->oStorage->GetFileInfo($oAccount, $iType, $sPath, $sName);
}
return $bResult;
}
public function GetDirectoryInfo($oAccount, $iType, $sPath)
{
return $this->oStorage->GetDirectoryInfo($oAccount, $iType, $sPath);
}
public function GetFile($oAccount, $iType, $sPath, $sName)
{
$bResult = false;
$bBreak = false;
\CApi::Plugin()->RunHook('filestorage.get-file', array($oAccount, $iType, $sPath, $sName, &$bResult, &$bBreak));
if (!$bBreak)
{
$bResult = $this->oStorage->GetFile($oAccount, $iType, $sPath, $sName);
}
return $bResult;
}
public function CreatePublicLink($oAccount, $iType, $sPath, $sName, $sSize, $bIsFolder)
{
$bResult = false;
$bBreak = false;
\CApi::Plugin()->RunHook('filestorage.create-public-link', array($oAccount, $iType, $sPath, $sName, &$bResult, &$bBreak));
if (!$bBreak)
{
$bResult = $this->oStorage->CreatePublicLink($oAccount, $iType, $sPath, $sName, $sSize, $bIsFolder);
}
return $bResult;
}
public function DeletePublicLink($oAccount, $iType, $sPath, $sName)
{
$bResult = false;
$bBreak = false;
\CApi::Plugin()->RunHook('filestorage.delete-public-link', array($oAccount, $iType, $sPath, $sName, &$bResult, &$bBreak));
if (!$bBreak)
{
$bResult = $this->oStorage->DeletePublicLink($oAccount, $iType, $sPath, $sName);
}
return $bResult;
}
public function GetFiles($oAccount, $iType, $sPath, $sPattern = '')
{
$bResult = false;
$bBreak = false;
\CApi::Plugin()->RunHook('filestorage.get-files', array($oAccount, $iType, $sPath, $sPattern, &$bResult, &$bBreak));
if (!$bBreak)
{
$bResult = $this->oStorage->GetFiles($oAccount, $iType, $sPath, $sPattern);
}
return $bResult;
}
public function CreateFolder($oAccount, $iType, $sPath, $sFolderName)
{
$bResult = false;
$bBreak = false;
\CApi::Plugin()->RunHook('filestorage.create-folder', array($oAccount, $iType, $sPath, $sFolderName, &$bResult, &$bBreak));
if (!$bBreak)
{
$bResult = $this->oStorage->CreateFolder($oAccount, $iType, $sPath, $sFolderName);
}
return $bResult;
}
public function CreateFile($oAccount, $iType, $sPath, $sFileName, $mData, $bOverride = true)
{
$bResult = false;
$bBreak = false;
\CApi::Plugin()->RunHook('filestorage.create-file', array($oAccount, $iType, $sPath, $sFileName, $mData, &$bResult, &$bBreak));
if (!$bBreak)
{
if (!$bOverride)
{
$sFileName = $this->oStorage->GetNonExistingFileName($oAccount, $iType, $sPath, $sFileName);
}
$bResult = $this->oStorage->CreateFile($oAccount, $iType, $sPath, $sFileName, $mData);
}
return $bResult;
}
public function CreateLink($oAccount, $iType, $sPath, $sLink, $sName)
{
return $this->oStorage->CreateLink($oAccount, $iType, $sPath, $sLink, $sName);
}
public function Delete($oAccount, $iType, $sPath, $sName)
{
$bResult = false;
$bBreak = false;
\CApi::Plugin()->RunHook('filestorage.delete', array($oAccount, $iType, $sPath, $sName, &$bResult, &$bBreak));
if (!$bBreak)
{
$bResult = $this->oStorage->Delete($oAccount, $iType, $sPath, $sName);
if ($oAccount && $oAccount instanceof CAccount)
{
$oMin = $this->GetMinManager();
if ($oMin)
{
$oMin->DeleteMinByID($this->oStorage->GenerateShareHash($oAccount, $iType, $sPath, $sName));
}
}
}
return $bResult;
}
private function generateMinArray($oAccount, $iType, $sPath, $sNewName, $iSize)
{
$aData = null;
if ($oAccount)
{
$aData = array(
'AccountType' => $oAccount instanceof CAccount ? 'wm' : '',
'Account' => 0,
'Type' => $iType,
'Path' => $sPath,
'Name' => $sNewName,
'Size' => $iSize
);
if (empty($aData['AccountType']) && $oAccount instanceof CHelpdeskUser)
{
$aData['AccountType'] = 'hd';
}
if ('wm' === $aData['AccountType'])
{
$aData['Account'] = $oAccount->IdAccount;
}
else if ('hd' === $aData['AccountType'])
{
$aData['Account'] = $oAccount->IdHelpdeskUser;
}
}
return $aData;
}
public function Rename($oAccount, $iType, $sPath, $sName, $sNewName)
{
$bResult = false;
$bBreak = false;
\CApi::Plugin()->RunHook('filestorage.rename', array($oAccount, $iType, $sPath, $sName, $sNewName, &$bResult, &$bBreak));
if (!$bBreak)
{
$bResult = $this->oStorage->Rename($oAccount, $iType, $sPath, $sName, $sNewName);
if ($bResult)
{
$sID = $this->oStorage->GenerateShareHash($oAccount, $iType, $sPath, $sName);
$sNewID = $this->oStorage->GenerateShareHash($oAccount, $iType, $sPath, $sNewName);
$oMin = $this->GetMinManager();
$mData = $oMin->GetMinByID($sID);
if ($mData && $oAccount)
{
$aData = $this->generateMinArray($oAccount, $iType, $sPath, $sNewName, $mData['Size']);
if ($aData)
{
$oMin->UpdateMinByID($sID, $aData, $sNewID);
}
}
}
}
return $bResult;
}
public function Move($oAccount, $iFromType, $iToType, $sFromPath, $sToPath, $sName, $sNewName)
{
$bResult = false;
$bBreak = false;
\CApi::Plugin()->RunHook('filestorage.move', array($oAccount, $iFromType, $iToType, $sFromPath, $sToPath, $sName, $sNewName, &$bResult, &$bBreak));
if (!$bBreak)
{
$GLOBALS['__FILESTORAGE_MOVE_ACTION__'] = true;
$bResult = $this->oStorage->Copy($oAccount, $iFromType, $iToType, $sFromPath, $sToPath, $sName, $sNewName, true);
$GLOBALS['__FILESTORAGE_MOVE_ACTION__'] = false;
if ($bResult)
{
$sID = $this->oStorage->GenerateShareHash($oAccount, $iFromType, $sFromPath, $sName);
$sNewID = $this->oStorage->GenerateShareHash($oAccount, $iToType, $sToPath, $sNewName);
$oMin = $this->GetMinManager();
$mData = $oMin->GetMinByID($sID);
if ($mData)
{
$aData = $this->generateMinArray($oAccount, $iToType, $sToPath, $sNewName, $mData['Size']);
if ($aData)
{
$oMin->UpdateMinByID($sID, $aData, $sNewID);
}
}
}
}
return $bResult;
}
public function Copy($oAccount, $iFromType, $iToType, $sFromPath, $sToPath, $sName, $sNewName = null)
{
$bResult = false;
$bBreak = false;
\CApi::Plugin()->RunHook('filestorage.copy', array($oAccount, $iFromType, $iToType, $sFromPath, $sToPath, $sName, $sNewName, &$bResult, &$bBreak));
if (!$bBreak)
{
$bResult = $this->oStorage->Copy($oAccount, $iFromType, $iToType, $sFromPath, $sToPath, $sName, $sNewName);
}
return $bResult;
}
public function GetRealQuota($oAccount, $iType = EFileStorageType::Personal)
{
return $this->oStorage->GetRealQuota($oAccount, $iType);
}
public function GetQuota($oAccount)
{
$iUsageSize = 0;
$iFreeSize = 0;
$oApiTenants = \CApi::Manager('tenants');
$oTenant = $oApiTenants ? $oApiTenants->GetTenantById($oAccount->IdTenant) : null;
if ($oTenant)
{
$iUsageSize = $oTenant->FilesUsageInMB * 1024 * 1024;
$iFreeSize = ($oTenant->FilesUsageDynamicQuotaInMB * 1024 * 1024) - $iUsageSize;
}
return array($iUsageSize, $iFreeSize);
}
public function GetNonExistingFileName($oAccount, $iType, $sPath, $sFileName)
{
return $this->oStorage->GetNonExistingFileName($oAccount, $iType, $sPath, $sFileName);
}
public function ClearPrivateFiles($oAccount)
{
$this->oStorage->ClearPrivateFiles($oAccount);
}
public function ClearCorporateFiles($oAccount)
{
$this->oStorage->ClearPrivateFiles($oAccount);
}
public function ClearAllFiles($oAccount)
{
$this->ClearPrivateFiles($oAccount);
$this->ClearCorporateFiles($oAccount);
}
}