%PDF- %PDF-
| Direktori : /www/varak.net/mail2.varak.net_old/libraries/afterlogic/common/managers/min/storages/db/ |
| Current File : /www/varak.net/mail2.varak.net_old/libraries/afterlogic/common/managers/min/storages/db/storage.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 Min
*/
class CApiMinDbStorage extends CApiMinStorage
{
/**
* @var CDbStorage $oConnection
*/
protected $oConnection;
/**
* @var CApiMinCommandCreatorMySQL
*/
protected $oCommandCreator;
/**
* @param CApiGlobalManager &$oManager
*/
public function __construct(CApiGlobalManager &$oManager)
{
parent::__construct('db', $oManager);
$this->oConnection =& $oManager->GetConnection();
$this->oCommandCreator =& $oManager->GetCommandCreator(
$this, array(
EDbType::MySQL => 'CApiMinCommandCreatorMySQL',
EDbType::PostgreSQL => 'CApiMinCommandCreatorPostgreSQL'
)
);
}
/**
* @param string $sHashID
* @param array $aParams
*
* @return string|bool
*/
public function CreateMin($sHashID, $aParams)
{
$mResult = false;
$sNewMin = '';
if (is_string($sHashID) && 0 < strlen($sHashID) && false !== $this->GetMinByID($sHashID))
{
return false;
}
while (true)
{
$sNewMin = api_Utils::GenerateShortHashString(10);
if (false === $this->GetMinByHash($sNewMin))
{
break;
}
}
if (0 < strlen($sNewMin))
{
$aParams['__hash_id__'] = $sHashID;
$aParams['__hash__'] = $sNewMin;
$aParams['__time__'] = time();
$aParams['__time_update__'] = time();
if ($this->oConnection->Execute($this->oCommandCreator->CreateMin($sNewMin, md5($sHashID), @\json_encode($aParams))))
{
$mResult = $sNewMin;
}
}
$this->throwDbExceptionIfExist();
return $mResult;
}
/**
* @param string $sHashID
* @param array $aParams
* @param string $sNewHashID = null
*
* @return bool
*/
public function UpdateMinByID($sHashID, $aParams, $sNewHashID = null)
{
$mResult = false;
if (is_string($sHashID) && 0 < strlen($sHashID))
{
$aPrevParams = $this->GetMinByID($sHashID);
if (isset($aPrevParams['__hash__']))
{
$aParams['__hash__'] = $aPrevParams['__hash__'];
}
if (!empty($sNewHashID))
{
$aParams['__hash_id__'] = $sNewHashID;
}
if (isset($aPrevParams['__time__']))
{
$aParams['__time__'] = $aPrevParams['__time__'];
}
$aParams['__time_update__'] = time();
$mResult = $this->oConnection->Execute($this->oCommandCreator->UpdateMinByID(md5($sHashID), @\json_encode($aParams),
!empty($sNewHashID) ? md5($sNewHashID) : null));
}
$this->throwDbExceptionIfExist();
return $mResult;
}
/**
* @param string $sHash
* @param array $aParams
* @param string $sNewHashID = null
*
* @return bool
*/
public function UpdateMinByHash($sHash, $aParams, $sNewHashID = null)
{
$mResult = false;
if (is_string($sHash) && 0 < strlen($sHash) && is_array($aParams))
{
$aPrevParams = $this->GetMinByHash($sHash);
if (isset($aPrevParams['__hash_id__']))
{
$aParams['__hash_id__'] = $aPrevParams['__hash_id__'];
}
if (!empty($sNewHashID))
{
$aParams['__hash_id__'] = $sNewHashID;
}
if (isset($aPrevParams['__time__']))
{
$aParams['__time__'] = $aPrevParams['__time__'];
}
$aParams['__time_update__'] = time();
$mResult = $this->oConnection->Execute($this->oCommandCreator->UpdateMinByHash($sHash, @\json_encode($aParams),
!empty($sNewHashID) ? md5($sNewHashID) : null));
}
$this->throwDbExceptionIfExist();
return $mResult;
}
/**
* @return array|bool
*/
private function parseGetMinDbResult()
{
$mResult = false;
$oRow = $this->oConnection->GetNextRecord();
if ($oRow && !empty($oRow->data))
{
$aData = @\json_decode($oRow->data, true);
if (is_array($aData) && 0 < count($aData))
{
$mResult = $aData;
}
}
$this->oConnection->FreeResult();
return $mResult;
}
/**
* @param string $sHashID
*
* @return array|bool
*/
public function GetMinByID($sHashID)
{
$mResult = false;
if (is_string($sHashID) && 0 < strlen($sHashID) && $this->oConnection->Execute($this->oCommandCreator->GetMinByID(md5($sHashID))))
{
$mResult = $this->parseGetMinDbResult();
}
$this->throwDbExceptionIfExist();
return $mResult;
}
/**
* @param string $sHash
*
* @return array|bool
*/
public function GetMinByHash($sHash)
{
$mResult = false;
if (is_string($sHash) && 0 < strlen($sHash) && $this->oConnection->Execute($this->oCommandCreator->GetMinByHash($sHash)))
{
$mResult = $this->parseGetMinDbResult();
}
$this->throwDbExceptionIfExist();
return $mResult;
}
/**
* @param string $sHashID
*
* @return array|bool
*/
public function DeleteMinByID($sHashID)
{
$mResult = false;
if (is_string($sHashID) && 0 < strlen($sHashID))
{
$mResult = $this->oConnection->Execute($this->oCommandCreator->DeleteMinByID(md5($sHashID)));
}
$this->throwDbExceptionIfExist();
return $mResult;
}
/**
* @param string $sHash
*
* @return array|bool
*/
public function DeleteMinByHash($sHash)
{
$mResult = false;
if (is_string($sHash) && 0 < strlen($sHash))
{
$mResult = $this->oConnection->Execute($this->oCommandCreator->DeleteMinByHash($sHash));
}
$this->throwDbExceptionIfExist();
return $mResult;
}
}