bcom/megaProcess/megaapi.php

1115 lines
26 KiB
PHP

<?php
set_include_path(get_include_path() . PATH_SEPARATOR . ".libs");
ini_set('extension','libmegaphp.so');
include 'mega.php';
interface MegaRequestListenerInterface
{
public function onRequestStart($api, $request);
public function onRequestFinish($api, $request, $error);
public function onRequestTemporaryError($api, $request, $error);
}
interface MegaTransferListenerInterface
{
public function onTransferStart($api, $transfer);
public function onTransferFinish($api, $transfer, $error);
public function onTransferUpdate($api, $transfer);
public function onTransferTemporaryError($api, $request, $error);
}
interface MegaGlobalListenerInterface
{
public function onUsersUpdate($api, $users);
public function onNodesUpdate($api, $nodes);
public function onReloadNeeded($api);
}
interface MegaListenerInterface extends MegaRequestListenerInterface,
MegaTransferListenerInterface, MegaGlobalListenerInterface { }
class MegaListenerPHP extends MegaListener
{
var $megaApi;
var $listener;
public function MegaListenerPHP($megaApi, $listener)
{
parent::__construct();
$this->megaApi = $megaApi;
$this->listener = $listener;
}
public function getUserListener()
{
return $this->listener;
}
public function onRequestStart($api, $request)
{
if($this->listener != null)
{
$megaApi = $this->megaApi;
$megaRequest = $megaApi->getCurrentRequest()->copy();
$this->listener->onRequestStart($megaApi, $megaRequest);
}
}
public function onRequestFinish($api, $request, $error)
{
if($this->listener != null)
{
$megaApi = $this->megaApi;
$megaRequest = $megaApi->getCurrentRequest()->copy();
$megaError = $megaApi->getCurrentError()->copy();
$this->listener->onRequestFinish($megaApi, $megaRequest, $megaError);
}
}
public function onRequestTemporaryError($api, $request, $error)
{
if($this->listener != null)
{
$megaApi = $this->megaApi;
$megaRequest = $megaApi->getCurrentRequest()->copy();
$megaError = $megaApi->getCurrentError()->copy();
$this->listener->onRequestTemporaryError($megaApi, $megaRequest, $megaError);
}
}
public function onTransferStart($api, $transfer)
{
if($this->listener != null)
{
$megaApi = $this->megaApi;
$megaTransfer = $megaApi->getCurrentTransfer()->copy();
$this->listener->onTransferStart($megaApi, $megaTransfer);
}
}
public function onTransferFinish($api, $transfer, $error)
{
if($this->listener != null)
{
$megaApi = $this->megaApi;
$megaTransfer = $megaApi->getCurrentTransfer()->copy();
$megaError = $megaApi->getCurrentError()->copy();
$this->listener->onTransferFinish($megaApi, $megaTransfer, $megaError);
}
}
public function onTransferUpdate($api, $transfer)
{
if($this->listener != null)
{
$megaApi = $this->megaApi;
$megaTransfer = $megaApi->getCurrentTransfer()->copy();
$this->listener->onTransferUpdate($megaApi, $megaTransfer);
}
}
public function onTransferTemporaryError($api, $request, $error)
{
if($this->listener != null)
{
$megaApi = $this->megaApi;
$megaTransfer = $megaApi->getCurrentTransfer()->copy();
$megaError = $megaApi->getCurrentError()->copy();
$this->listener->onTransferTemporaryError($megaApi, $megaTransfer, $megaError);
}
}
public function onUsersUpdate($api, $users)
{
if($this->listener != null)
{
$megaApi = $this->megaApi;
if($megaApi->getCurrentUsers() != null)
{
$megaUsers = $megaApi->getCurrentUsers();
}
else
{
$megaUsers = null;
}
$this->listener->onUsersUpdate($megaApi, $megaUsers);
}
}
public function onNodesUpdate($api, $nodes)
{
if($this->listener != null)
{
$megaApi = $this->megaApi;
if($megaApi->getCurrentNodes() != null)
{
$megaNodes = $megaApi->getCurrentNodes();
}
else
{
$megaNodes = null;
}
$this->listener->onNodesUpdate ($megaApi, $megaNodes);
}
}
public function onReloadNeeded($api)
{
if($this->listener != null)
{
$megaApi = $this->megaApi;
$this->listener->onReloadNeeded ($megaApi);
}
}
}
class MegaRequestListenerPHP extends MegaRequestListener
{
var $megaApi;
var $listener;
var $sigleListener;
public function MegaRequestListenerPHP($megaApi, $listener, $single)
{
parent::__construct();
$this->megaApi = $megaApi;
$this->listener = $listener;
$this->sigleListener = $single;
}
public function getUserListener()
{
return $this->listener;
}
public function onRequestStart($api, $request)
{
if($this->listener != null)
{
$megaApi = $this->megaApi;
$megaRequest = $megaApi->getCurrentRequest()->copy();
$this->listener->onRequestStart($megaApi, $megaRequest);
}
}
public function onRequestFinish($api, $request, $error)
{
if($this->listener != null)
{
$megaApi = $this->megaApi;
$megaRequest = $megaApi->getCurrentRequest()->copy();
$megaError = $megaApi->getCurrentError()->copy();
$this->listener->onRequestFinish($megaApi, $megaRequest, $megaError);
if($this->singleListener == 1)
{
$megaApi->privateFreeRequestListener($this);
}
}
}
public function onRequestTemporaryError($api, $request, $error)
{
if($this->listener != null)
{
$megaApi = $this->megaApi;
$megaRequest = $megaApi->getCurrentRequest()->copy();
$megaError = $megaApi->getCurrentError()->copy();
$this->listener->onRequestTemporaryError($megaApi, $megaRequest, $megaError);
}
}
}
class MegaTransferListenerPHP extends MegaTransferListener
{
var $megaApi;
var $listener;
var $singleListener;
public function MegaTransferListenerPHP($megaApi, $listener, $single)
{
parent::__construct();
$this->megaApi = $megaApi;
$this->listener = $listener;
$this->sigleListener = $single;
}
public function getUserListener()
{
return $this->listener;
}
public function onTransferStart($api, $transfer)
{
if($this->listener != null)
{
$megaApi = $this->megaApi;
$megaTransfer = $megaApi->getCurrentTransfer()->copy();
$this->listener->onTransferStart($megaApi, $megaTransfer);
}
}
public function onTransferFinish($api, $transfer, $error)
{
if($this->listener != null)
{
$megaApi = $this->megaApi;
$megaTransfer = $megaApi->getCurrentTransfer()->copy();
$megaError = $megaApi->getCurrentError()->copy();
$this->listener->onTransferFinish($megaApi, $megaTransfer, $megaError);
if($this->singleListener == 1)
{
$megaApi->privateFreeTransferListener($this);
}
}
}
public function onTransferUpdate($api, $transfer)
{
if($this->listener != null)
{
$megaApi = $this->megaApi;
$megaTransfer = $megaApi->getCurrentTransfer()->copy();
$this->listener->onTransferUpdate($megaApi, $megaTransfer);
}
}
public function onTransferTemporaryError($api, $request, $error)
{
if($this->listener != null)
{
$megaApi = $this->megaApi;
$megaTransfer = $megaApi->getCurrentTransfer()->copy();
$megaError = $megaApi->getCurrentError()->copy();
$this->listener->onTransferTemporaryError($megaApi, $megaTransfer, $megaError);
}
}
}
class MegaGlobalListenerPHP extends MegaGlobalListener
{
var $megaApi;
var $listener;
public function MegaGlobalListenerPHP($megaApi, $listener)
{
parent::__construct();
$this->megaApi = $megaApi;
$this->listener = $listener;
}
public function getUserListener()
{
return $this->listener;
}
public function onUsersUpdate($api, $users)
{
if($this->listener != null)
{
$megaApi = $this->megaApi;
if($megaApi->getCurrentUsers() != null)
{
$megaUsers = $megaApi->getCurrentUsers()->copy();
}
else
{
$megaUsers = null;
}
$this->listener->onUsersUpdate($megaApi, $megaUsers);
}
}
public function onNodesUpdate($api, $nodes)
{
if($this->listener != null)
{
$megaApi = $this->megaApi;
if($megaApi->getCurrentNodes() != null)
{
$megaNodes = $megaApi->getCurrentNodes()->copy();
}
else
{
$megaNodes = null;
}
$this->listener->onNodesUpdate ($megaApi, $megaNodes);
}
}
public function onReloadNeeded($api)
{
if($this->listener != null)
{
$megaApi = $this->megaApi;
$this->listener->onReloadNeeded ($megaApi);
}
}
}
class MegaApiPHP extends MegaApi
{
private $megaApi;
private $activeMegaListeners = array();
private $activeMegaRequestListeners = array();
private $activeMegaTransferListeners = array();
private $activeMegaGlobalListeners = array();
private $semaphore;
public function MegaApiPHP($appKey, $userAgent, $basePath = null)
{
$this->megaApi = new MegaApi($appKey, $basePath, $userAgent);
$this->semaphore = sem_get("32462", 1, 0666, 1);
}
private function createDelegateMegaListener($listener)
{
if($listener == null)
{
return null;
}
$delegateListener = new MegaListenerPHP($this, $listener);
sem_acquire($this->semaphore);
array_push($this->activeMegaListeners, $delegateListener);
sem_release($this->semaphore);
return $delegateListener;
}
private function createDelegateRequestListener($listener, $singleListener = 1)
{
if($listener == null)
{
return null;
}
$delegateListener = new MegaRequestListenerPHP($this, $listener, $singleListener);
sem_acquire($this->semaphore);
array_push($this->activeMegaRequestListeners, $delegateListener);
sem_release($this->semaphore);
return $delegateListener;
}
private function createDelegateTransferListener($listener, $singleListener = 1)
{
if($listener == null)
{
return null;
}
$delegateListener = new MegaTransferListenerPHP($this, $listener, $singleListener);
sem_acquire($this->semaphore);
array_push($this->activeMegaTransferListeners, $delegateListener);
sem_release($this->semaphore);
return $delegateListener;
}
private function createDelegateGlobalListener($listener)
{
if($listener == null)
{
return null;
}
$delegateListener = new MegaGlobalListenerPHP($this, $listener);
sem_acquire($this->semaphore);
array_push($this->activeMegaGlobalListeners, $delegateListener);
sem_release($this->semaphore);
return $delegateListener;
}
function addListener($listener)
{
$this->megaApi->addListener($this->createDelegateMegaListener($listener));
}
function addRequestListener($listener)
{
$this->megaApi->addRequestListener($this->createDelegateRequestListener($listener, 0));
}
function addTransferListener($listener)
{
$this->megaApi->addTransferListener($this->createDelegateTransferListener($listener, 0));
}
function addGlobalListener($listener)
{
$this->megaApi->addGlobalListener($this->createDelegateGlobalListener($listener));
}
function removeListener($listener)
{
sem_acquire($this->semaphore);
foreach ($this->activeMegaListeners as $delegate)
{
if($delegate->getUserListener() == $listener)
{
$this->megaApi->removeListener($delegate);
unset($this->activeMegaListeners[$delegate]);
break;
}
}
sem_release($this->semaphore);
}
function removeRequestListener($listener)
{
sem_acquire($this->semaphore);
foreach ($this->activeMegaRequestListeners as $delegate)
{
if($delegate->getUserListener() == $listener)
{
$this->megaApi->removeRequestListener($delegate);
unset($this->activeMegaRequestListeners[$delegate]);
break;
}
}
sem_release($this->semaphore);
}
function removeTransferListener($listener)
{
sem_acquire($this->semaphore);
foreach ($this->activeMegaTransferListeners as $delegate)
{
if($delegate->getUserListener() == $listener)
{
$this->megaApi->removeTransferListener($delegate);
unset($this->activeMegaTransferListeners[$delegate]);
break;
}
}
sem_release($this->semaphore);
}
function removeGlobalListener($listener)
{
sem_acquire($this->semaphore);
foreach ($this->activeMegaGlobalListeners as $delegate)
{
if($delegate->getUserListener() == $listener)
{
$this->megaApi->removeGlobalListener($delegate);
unset($this->activeMegaGlobalListeners[$delegate]);
break;
}
}
sem_release($this->semaphore);
}
function getBase64PwKey($password)
{
return $this->megaApi->getBase64PwKey($password);
}
function getStringHash($base64pwkey, $email)
{
return $this->megaApi->getStringHash($base64pwkey, $email);
}
static function base64ToHandle($base64Handle)
{
return MegaApi::base64ToHandle($handle);
}
static function handleToBase64($handle)
{
return MegaApi::handleToBase64($handle);
}
static function userHandleToBase64($handle)
{
return MegaApi::userHandleToBase64($handle);
}
static function addEntropy($data, $size)
{
MegaApi::addEntropy($data, $size);
}
function retryPendingConnections($disconnect = false, $includexfers = false, $listener = null)
{
$this->megaApi->retryPendingConnections($disconnect, $includexfers, $this->createDelegateRequestListener($listener));
}
function login($email, $password, $listener = null)
{
$this->megaApi->login($email, $password, $this->createDelegateRequestListener($listener));
}
function loginToFolder($megaFolderLink, $listener = null)
{
$this->megaApi->loginToFolder($megaFolderLink, $this->createDelegateRequestListener($listener));
}
function dumpSession()
{
return $this->megaApi->dumpSession();
}
function dumpXMPPSession()
{
return $this->megaApi->dumpXMPPSession();
}
function createAccount($email, $password, $name, $listener = null)
{
$this->megaApi->createAccount($email, $password, $name, $this->createDelegateRequestListener($listener));
}
function fastCreateAccount($email, $base64pwkey, $name, $listener = null)
{
$this->megaApi->fastCreateAccount($email, $base64pwkey, $name, $this->createDelegateRequestListener($listener));
}
function querySignupLink($link, $listener = null)
{
$this->megaApi->querySignupLink($link, $this->createDelegateRequestListener($listener));
}
function confirmAccount($link, $password, $listener = null)
{
$this->megaApi->confirmAccount($link, $password, $this->createDelegateRequestListener($listener));
}
function fastConfirmAccount($link, $base64pwkey, $listener = null)
{
$this->megaApi->fastConfirmAccount($link, $base64pwkey, $this->createDelegateRequestListener($listener));
}
function setProxySettings($proxySettings)
{
$this->megaApi->setProxySettings($proxySettings);
}
function getAutoProxySettings()
{
return $this->megaApi->getAutoProxySettings();
}
function isLoggedIn()
{
return $this->megaApi->isLoggedIn();
}
function getMyEmail()
{
return $this->megaApi->getMyEmail();
}
static function setLogLevel($logLevel)
{
MegaApi::setLogLevel($logLevel);
}
static function setLoggerObject($megaLogger)
{
MegaApi::setLoggerObject($megaLogger);
}
static function log($logLevel, $message, $filename = "", $line = -1)
{
MegaApi::log($logLevel, $message, $filename, $line);
}
function createFolder($name, $parent, $listener = null)
{
$this->megaApi->createFolder($name, $parent, $this->createDelegateRequestListener($listener));
}
function moveNode($node, $newParent, $listener = null)
{
$this->megaApi->moveNode($node, $newParent, $this->createDelegateRequestListener($listener));
}
function copyNode($node, $newParent, $listener = null)
{
$this->megaApi->copyNode($node, $newParent, $this->createDelegateRequestListener($listener));
}
function renameNode($node, $newName, $listener = null)
{
$this->megaApi->renameNode($node, $newName, $this->createDelegateRequestListener($listener));
}
function remove($node, $listener = null)
{
$this->megaApi->remove($node, $this->createDelegateRequestListener($listener));
}
function sendFileToUser($node, $user, $listener = null)
{
$this->megaApi->sendFileToUser($node, $user, $this->createDelegateRequestListener($listener));
}
function share($node, $user_or_email, $level, $listener = null)
{
$this->megaApi->share($node, $user_or_email, $level, $this->createDelegateRequestListener($listener));
}
function importFileLink($megaFileLink, $parent, $listener = null)
{
$this->megaApi->importFileLink($megaFileLink, $parent, $this->createDelegateRequestListener($listener));
}
function getPublicNode($megaFileLink, $listener = null)
{
$this->megaApi->getPublicNode($megaFileLink, $this->createDelegateRequestListener($listener));
}
function getThumbnail($node, $dstFilePath, $listener = null)
{
$this->megaApi->getThumbnail($node, $dstFilePath, $this->createDelegateRequestListener($listener));
}
function getPreview($node, $dstFilePath, $listener = null)
{
$this->megaApi->getPreview($node, $dstFilePath, $this->createDelegateRequestListener($listener));
}
function getUserAvatar($user, $dstFilePath, $listener=null)
{
$this->megaApi->getUserAvatar($user, $dstFilePath, $this->createDelegateRequestListener($listener));
}
function cancelGetThumbnail($node, $listener = null)
{
$this->megaApi->cancelGetThumbnail($node, $this->createDelegateRequestListener($listener));
}
function cancelGetPreview($node, $listener = null)
{
$this->megaApi->cancelGetPreview($node, $this->createDelegateRequestListener($listener));
}
function setThumbnail($node, $srcFilePath, $listener = null)
{
$this->megaApi->setThumbnail($node, $srcFilePath, $this->createDelegateRequestListener($listener));
}
function setPreview($node, $srcFilePath, $listener = null)
{
$this->megaApi->setPreview($node, $srcFilePath, $this->createDelegateRequestListener($listener));
}
function setAvatar($srcFilePath, $listener = null)
{
$this->megaApi->setAvatar($srcFilePath, $this->createDelegateRequestListener($listener));
}
function exportNode($node, $listener = null)
{
$this->megaApi->exportNode($node, $this->createDelegateRequestListener($listener));
}
function disableExport($node, $listener = null)
{
$this->megaApi->disableExport($node, $this->createDelegateRequestListener($listener));
}
function fetchNodes($listener = null)
{
$this->megaApi->fetchNodes($this->createDelegateRequestListener($listener));
}
function getAccountDetails($listener = null)
{
$this->megaApi->getAccountDetails($this->createDelegateRequestListener($listener));
}
function getPricing($listener = null)
{
$this->megaApi->getPricing($this->createDelegateRequestListener($listener));
}
function getPaymentUrl($productHandle, $listener = null)
{
$this->megaApi->getPaymentUrl($productHandle, $this->createDelegateRequestListener($listener));
}
function exportMasterKey()
{
return $this->megaApi->exportMasterKey();
}
function changePassword($oldPassword, $newPassword, $listener = null)
{
$this->megaApi->changePassword($oldPassword, $newPassword, $this->createDelegateRequestListener($listener));
}
function inviteContact($user, $message, $action, $listener = null)
{
$this->megaApi->inviteContact($user, $message, $action, $this->createDelegateRequestListener($listener));
}
function removeContact($user, $listener = null)
{
$this->megaApi->removeContact($user, $this->createDelegateRequestListener($listener));
}
function logout($listener = null)
{
$this->megaApi->logout($this->createDelegateRequestListener($listener));
}
function submitFeedback($rating, $comment, $listener = null)
{
$this->megaApi->submitFeedback($rating, $comment, $this->createDelegateRequestListener($listener));
}
function reportDebugEvent($text, $listener = null)
{
$this->megaApi->reportDebugEvent($text, $this->createDelegateRequestListener($listener));
}
function startUpload($localPath, $parent, $listener = null)
{
$this->megaApi->startUpload($localPath, $parent, null, null, $this->createDelegateTransferListener($listener));
}
function startDownload($node, $localPath, $listener = null)
{
$this->megaApi->startDownload($node, $localPath, $this->createDelegateTransferListener($listener));
}
function cancelTransfer($transfer, $listener = null)
{
$this->megaApi->cancelTransfer($transfer, $this->createDelegateRequestListener($listener));
}
function cancelTransfers($type, $listener = null)
{
$this->megaApi->cancelTransfers($type, $this->createDelegateRequestListener($listener));
}
function pauseTransfers($pause, $listener = null)
{
$this->megaApi->pauseTransfers($pause, $this->createDelegateRequestListener($listener));
}
function setUploadLimit($bpslimit)
{
$this->megaApi->setUploadLimit($bpslimit);
}
function getTransfers($type = null)
{
if($type == null)
return $this->listToArray($this->megaApi->getTransfersAll());
else
return $this->listToArray($this->megaApi->getTransfers($type));
}
function update()
{
$this->megaApi->update();
}
function isWaiting()
{
return $this->megaApi->isWaiting();
}
function getNumPendingUploads()
{
return $this->megaApi->getNumPendingUploads();
}
function getNumPendingDownloads()
{
return $this->megaApi->getNumPendingDownloads();
}
function getTotalUploads()
{
return $this->megaApi->getTotalUploads();
}
function getTotalDownloads()
{
return $this->megaApi->getTotalDownloads();
}
function resetTotalDownloads()
{
$this->megaApi->resetTotalDownloads();
}
function resetTotalUploads()
{
$this->megaApi->resetTotalUploads();
}
function getTotalDownloadedBytes()
{
return $this->megaApi->getTotalDownloadedBytes();
}
function getTotalUploadedBytes()
{
return $this->megaApi->getTotalUploadedBytes();
}
function updateStats()
{
$this->megaApi->updateStats();
}
const ORDER_NONE = 0;
const ORDER_DEFAULT_ASC = MegaApi::ORDER_DEFAULT_ASC;
const ORDER_DEFAULT_DESC = MegaApi::ORDER_DEFAULT_DESC;
const ORDER_SIZE_ASC = MegaApi::ORDER_SIZE_ASC;
const ORDER_SIZE_DESC = MegaApi::ORDER_SIZE_DESC;
const ORDER_CREATION_ASC = MegaApi::ORDER_CREATION_ASC;
const ORDER_CREATION_DESC = MegaApi::ORDER_CREATION_DESC;
const ORDER_MODIFICATION_ASC = MegaApi::ORDER_MODIFICATION_ASC;
const ORDER_MODIFICATION_DESC = MegaApi::ORDER_MODIFICATION_DESC;
const ORDER_ALPHABETICAL_ASC = MegaApi::ORDER_ALPHABETICAL_ASC;
const ORDER_ALPHABETICAL_DESC = MegaApi::ORDER_ALPHABETICAL_DESC;
function getNumChildren($parent)
{
return $this->megaApi->getNumChildren($parent);
}
function getNumChildFiles($parent)
{
return $this->megaApi->getNumChildFiles($parent);
}
function getNumChildFolders($parent)
{
return $this->megaApi->getNumChildFolders($parent);
}
function getChildren($parent, $order = 1)
{
return $this->listToArray($this->megaApi->getChildren($parent, $order));
}
function getChildNode($parent, $name)
{
return $this->megaApi->getChildNode($parent, $name);
}
function getParentNode($node)
{
return $this->megaApi->getParentNode($node);
}
function getNodePath($node)
{
return $this->megaApi->getNodePath($node);
}
function getNodeByPath($path, $base = null)
{
return $this->megaApi->getNodeByPath($path, $base);
}
function getNodeByHandle($handle)
{
return $this->megaApi->getNodeByHandle($handle);
}
function getContacts()
{
return $this->listToArray($this->megaApi->getContacts());
}
function getContact($email)
{
return $this->megaApi->getContact($email);
}
function getInShares($user = null)
{
if($user == null)
return $this->listToArray($this->megaApi->getInSharesAll());
else
return $this->listToArray($this->megaApi->getInShares($user));
}
function isShared($node)
{
return $this->megaApi->isShared($node);
}
function getOutShares($node = null)
{
if($node == null)
return $this->listToArray($this->megaApi->getOutSharesAll());
else
return $this->listToArray($this->megaApi->getOutShares($node));
}
function getAccess($node)
{
return $this->megaApi->getAccess($node) ;
}
function getSize($node)
{
return $this->megaApi->getSize($node) ;
}
function getFingerprint($filePath_or_node)
{
return $this->megaApi->getFingerprint($filePath_or_node);
}
function getNodeByFingerprint($fingerprint)
{
return $this->megaApi->getNodeByFingerprint($fingerprint);
}
function hasFingerprint($fingerprint)
{
return $this->megaApi->hasFingerprint($fingerprint);
}
function checkAccess($node, $level)
{
return $this->megaApi->checkAccess($node, $level);
}
function checkMove($node, $target)
{
return $this->megaApi->checkMove($node, $target);
}
function getRootNode()
{
return $this->megaApi->getRootNode();
}
function getInboxNode()
{
return $this->megaApi->getInboxNode();
}
function getRubbishNode()
{
return $this->megaApi->getRubbishNode();
}
function search($node, $searchString, $recursive = true)
{
return $this->listToArray($this->megaApi->search($node, $searchString, $recursive));
}
function getCurrentRequest()
{
return $this->megaApi->getCurrentRequest();
}
function getCurrentTransfer()
{
return $this->megaApi->getCurrentTransfer();
}
function getCurrentError()
{
return $this->megaApi->getCurrentError();
}
function getCurrentNodes()
{
return $this->listToArray($this->megaApi->getCurrentNodes());
}
function getCurrentUsers()
{
return $this->listToArray($this->megaApi->getCurrentUsers());
}
private function listToArray($list)
{
if ($list == null)
{
return array();
}
$result = array();
for($i=0; $i<$list->size(); $i++)
{
array_push($result, $list->get($i)->copy());
}
return $result;
}
function privateFreeRequestListener($listener)
{
sem_acquire($this->semaphore);
activeRequestListeners.remove(listener);
sem_release($this->semaphore);
}
function privateFreeTransferListener($listener)
{
sem_acquire($this->semaphore);
activeTransferListeners.remove(listener);
sem_release($this->semaphore);
}
public function __destruct()
{
foreach($this->activeMegaListeners as $listener)
{
$this->megaApi->removeListener($listener);
}
foreach($this->activeMegaRequestListeners as $listener)
{
$this->megaApi->removeRequestListener($listener);
}
foreach($this->activeMegaTransferListeners as $listener)
{
$this->megaApi->removeTransferListener($listener);
}
foreach($this->activeMegaGlobalListeners as $listener)
{
$this->megaApi->removeGlobalListener($listener);
}
sem_remove($this->semaphore);
}
}
?>