1<?php 2 3set_include_path(get_include_path() . PATH_SEPARATOR . ".libs"); 4dl('libmegaphp.so'); 5 6include 'mega.php'; 7 8interface MegaRequestListenerInterface 9{ 10 public function onRequestStart($api, $request); 11 public function onRequestFinish($api, $request, $error); 12 public function onRequestTemporaryError($api, $request, $error); 13} 14 15interface MegaTransferListenerInterface 16{ 17 public function onTransferStart($api, $transfer); 18 public function onTransferFinish($api, $transfer, $error); 19 public function onTransferUpdate($api, $transfer); 20 public function onTransferTemporaryError($api, $request, $error); 21} 22 23interface MegaGlobalListenerInterface 24{ 25 public function onUsersUpdate($api, $users); 26 public function onNodesUpdate($api, $nodes); 27 public function onReloadNeeded($api); 28} 29 30interface MegaListenerInterface extends MegaRequestListenerInterface, 31MegaTransferListenerInterface, MegaGlobalListenerInterface { } 32 33class MegaListenerPHP extends MegaListener 34{ 35 var $megaApi; 36 var $listener; 37 38 public function __construct($megaApi, $listener) 39 { 40 parent::__construct(); 41 42 $this->megaApi = $megaApi; 43 $this->listener = $listener; 44 } 45 46 public function getUserListener() 47 { 48 return $this->listener; 49 } 50 51 public function onRequestStart($api, $request) 52 { 53 if ($this->listener != null) 54 { 55 $megaApi = $this->megaApi; 56 $megaRequest = $megaApi->getCurrentRequest()->copy(); 57 $this->listener->onRequestStart($megaApi, $megaRequest); 58 } 59 } 60 61 public function onRequestFinish($api, $request, $error) 62 { 63 if ($this->listener != null) 64 { 65 $megaApi = $this->megaApi; 66 $megaRequest = $megaApi->getCurrentRequest()->copy(); 67 $megaError = $megaApi->getCurrentError()->copy(); 68 69 $this->listener->onRequestFinish($megaApi, $megaRequest, $megaError); 70 } 71 } 72 73 public function onRequestTemporaryError($api, $request, $error) 74 { 75 if ($this->listener != null) 76 { 77 $megaApi = $this->megaApi; 78 $megaRequest = $megaApi->getCurrentRequest()->copy(); 79 $megaError = $megaApi->getCurrentError()->copy(); 80 81 $this->listener->onRequestTemporaryError($megaApi, $megaRequest, $megaError); 82 } 83 } 84 85 public function onTransferStart($api, $transfer) 86 { 87 if ($this->listener != null) 88 { 89 $megaApi = $this->megaApi; 90 $megaTransfer = $megaApi->getCurrentTransfer()->copy(); 91 92 $this->listener->onTransferStart($megaApi, $megaTransfer); 93 } 94 } 95 96 public function onTransferFinish($api, $transfer, $error) 97 { 98 if ($this->listener != null) 99 { 100 $megaApi = $this->megaApi; 101 $megaTransfer = $megaApi->getCurrentTransfer()->copy(); 102 $megaError = $megaApi->getCurrentError()->copy(); 103 104 $this->listener->onTransferFinish($megaApi, $megaTransfer, $megaError); 105 } 106 } 107 108 public function onTransferUpdate($api, $transfer) 109 { 110 if ($this->listener != null) 111 { 112 $megaApi = $this->megaApi; 113 $megaTransfer = $megaApi->getCurrentTransfer()->copy(); 114 115 $this->listener->onTransferUpdate($megaApi, $megaTransfer); 116 } 117 } 118 119 public function onTransferTemporaryError($api, $request, $error) 120 { 121 if ($this->listener != null) 122 { 123 $megaApi = $this->megaApi; 124 $megaTransfer = $megaApi->getCurrentTransfer()->copy(); 125 $megaError = $megaApi->getCurrentError()->copy(); 126 127 $this->listener->onTransferTemporaryError($megaApi, $megaTransfer, $megaError); 128 } 129 } 130 131 public function onUsersUpdate($api, $users) 132 { 133 if ($this->listener != null) 134 { 135 $megaApi = $this->megaApi; 136 if ($megaApi->getCurrentUsers() != null) 137 { 138 $megaUsers = $megaApi->getCurrentUsers(); 139 } 140 else 141 { 142 $megaUsers = null; 143 } 144 145 $this->listener->onUsersUpdate($megaApi, $megaUsers); 146 } 147 } 148 149 public function onNodesUpdate($api, $nodes) 150 { 151 if ($this->listener != null) 152 { 153 $megaApi = $this->megaApi; 154 if ($megaApi->getCurrentNodes() != null) 155 { 156 $megaNodes = $megaApi->getCurrentNodes(); 157 } 158 else 159 { 160 $megaNodes = null; 161 } 162 163 $this->listener->onNodesUpdate ($megaApi, $megaNodes); 164 } 165 } 166 167 public function onReloadNeeded($api) 168 { 169 if ($this->listener != null) 170 { 171 $megaApi = $this->megaApi; 172 $this->listener->onReloadNeeded ($megaApi); 173 } 174 } 175} 176 177class MegaRequestListenerPHP extends MegaRequestListener 178{ 179 var $megaApi; 180 var $listener; 181 var $singleListener; 182 183 public function __construct($megaApi, $listener, $single) 184 { 185 parent::__construct(); 186 187 $this->megaApi = $megaApi; 188 $this->listener = $listener; 189 $this->singleListener = $single; 190 } 191 192 public function getUserListener() 193 { 194 return $this->listener; 195 } 196 197 public function onRequestStart($api, $request) 198 { 199 if ($this->listener != null) 200 { 201 $megaApi = $this->megaApi; 202 $megaRequest = $megaApi->getCurrentRequest()->copy(); 203 204 $this->listener->onRequestStart($megaApi, $megaRequest); 205 } 206 } 207 208 public function onRequestFinish($api, $request, $error) 209 { 210 if ($this->listener != null) 211 { 212 $megaApi = $this->megaApi; 213 $megaRequest = $megaApi->getCurrentRequest()->copy(); 214 $megaError = $megaApi->getCurrentError()->copy(); 215 216 $this->listener->onRequestFinish($megaApi, $megaRequest, $megaError); 217 218 if($this->singleListener == 1) 219 { 220 $megaApi->privateFreeRequestListener($this); 221 } 222 } 223 } 224 225 public function onRequestTemporaryError($api, $request, $error) 226 { 227 if ($this->listener != null) 228 { 229 $megaApi = $this->megaApi; 230 $megaRequest = $megaApi->getCurrentRequest()->copy(); 231 $megaError = $megaApi->getCurrentError()->copy(); 232 233 $this->listener->onRequestTemporaryError($megaApi, $megaRequest, $megaError); 234 } 235 } 236} 237 238class MegaTransferListenerPHP extends MegaTransferListener 239{ 240 var $megaApi; 241 var $listener; 242 var $singleListener; 243 244 public function __construct($megaApi, $listener, $single) 245 { 246 parent::__construct(); 247 248 $this->megaApi = $megaApi; 249 $this->listener = $listener; 250 $this->singleListener = $single; 251 } 252 253 public function getUserListener() 254 { 255 return $this->listener; 256 } 257 258 public function onTransferStart($api, $transfer) 259 { 260 if($this->listener != null) 261 { 262 $megaApi = $this->megaApi; 263 $megaTransfer = $megaApi->getCurrentTransfer()->copy(); 264 265 $this->listener->onTransferStart($megaApi, $megaTransfer); 266 } 267 } 268 269 public function onTransferFinish($api, $transfer, $error) 270 { 271 if ($this->listener != null) 272 { 273 $megaApi = $this->megaApi; 274 $megaTransfer = $megaApi->getCurrentTransfer()->copy(); 275 $megaError = $megaApi->getCurrentError()->copy(); 276 277 $this->listener->onTransferFinish($megaApi, $megaTransfer, $megaError); 278 279 if ($this->singleListener == 1) 280 { 281 $megaApi->privateFreeTransferListener($this); 282 } 283 } 284 } 285 286 public function onTransferUpdate($api, $transfer) 287 { 288 if ($this->listener != null) 289 { 290 $megaApi = $this->megaApi; 291 $megaTransfer = $megaApi->getCurrentTransfer()->copy(); 292 293 $this->listener->onTransferUpdate($megaApi, $megaTransfer); 294 } 295 } 296 297 public function onTransferTemporaryError($api, $request, $error) 298 { 299 if ($this->listener != null) 300 { 301 $megaApi = $this->megaApi; 302 $megaTransfer = $megaApi->getCurrentTransfer()->copy(); 303 $megaError = $megaApi->getCurrentError()->copy(); 304 305 $this->listener->onTransferTemporaryError($megaApi, $megaTransfer, $megaError); 306 } 307 } 308} 309 310class MegaGlobalListenerPHP extends MegaGlobalListener 311{ 312 var $megaApi; 313 var $listener; 314 315 public function __construct($megaApi, $listener) 316 { 317 parent::__construct(); 318 319 $this->megaApi = $megaApi; 320 $this->listener = $listener; 321 } 322 323 public function getUserListener() 324 { 325 return $this->listener; 326 } 327 328 public function onUsersUpdate($api, $users) 329 { 330 if ($this->listener != null) 331 { 332 $megaApi = $this->megaApi; 333 if($megaApi->getCurrentUsers() != null) 334 { 335 $megaUsers = $megaApi->getCurrentUsers()->copy(); 336 } 337 else 338 { 339 $megaUsers = null; 340 } 341 342 $this->listener->onUsersUpdate($megaApi, $megaUsers); 343 } 344 } 345 346 public function onNodesUpdate($api, $nodes) 347 { 348 if ($this->listener != null) 349 { 350 $megaApi = $this->megaApi; 351 if ($megaApi->getCurrentNodes() != null) 352 { 353 $megaNodes = $megaApi->getCurrentNodes()->copy(); 354 } 355 else 356 { 357 $megaNodes = null; 358 } 359 360 $this->listener->onNodesUpdate ($megaApi, $megaNodes); 361 } 362 } 363 364 public function onReloadNeeded($api) 365 { 366 if ($this->listener != null) 367 { 368 $megaApi = $this->megaApi; 369 $this->listener->onReloadNeeded ($megaApi); 370 } 371 } 372} 373 374class MegaApiPHP extends MegaApi 375{ 376 private $megaApi; 377 private $activeMegaListeners = array(); 378 private $activeMegaRequestListeners = array(); 379 private $activeMegaTransferListeners = array(); 380 private $activeMegaGlobalListeners = array(); 381 private $semaphore; 382 383 public function __construct($appKey, $userAgent, $basePath = null) 384 { 385 $this->megaApi = new MegaApi($appKey, $basePath, $userAgent); 386 $this->semaphore = sem_get("32462", 1, 0666, 1); 387 } 388 389 private function createDelegateMegaListener($listener) 390 { 391 if ($listener == null) 392 { 393 return null; 394 } 395 396 $delegateListener = new MegaListenerPHP($this, $listener); 397 398 sem_acquire($this->semaphore); 399 array_push($this->activeMegaListeners, $delegateListener); 400 sem_release($this->semaphore); 401 402 return $delegateListener; 403 } 404 405 private function createDelegateRequestListener($listener, $singleListener = 1) 406 { 407 if ($listener == null) 408 { 409 return null; 410 } 411 412 $delegateListener = new MegaRequestListenerPHP($this, $listener, $singleListener); 413 414 sem_acquire($this->semaphore); 415 array_push($this->activeMegaRequestListeners, $delegateListener); 416 sem_release($this->semaphore); 417 418 return $delegateListener; 419 } 420 421 private function createDelegateTransferListener($listener, $singleListener = 1) 422 { 423 if ($listener == null) 424 { 425 return null; 426 } 427 428 $delegateListener = new MegaTransferListenerPHP($this, $listener, $singleListener); 429 430 sem_acquire($this->semaphore); 431 array_push($this->activeMegaTransferListeners, $delegateListener); 432 sem_release($this->semaphore); 433 434 return $delegateListener; 435 } 436 437 private function createDelegateGlobalListener($listener) 438 { 439 if ($listener == null) 440 { 441 return null; 442 } 443 444 $delegateListener = new MegaGlobalListenerPHP($this, $listener); 445 446 sem_acquire($this->semaphore); 447 array_push($this->activeMegaGlobalListeners, $delegateListener); 448 sem_release($this->semaphore); 449 450 return $delegateListener; 451 } 452 453 function addListener($listener) 454 { 455 $this->megaApi->addListener($this->createDelegateMegaListener($listener)); 456 } 457 458 function addRequestListener($listener) 459 { 460 $this->megaApi->addRequestListener($this->createDelegateRequestListener($listener, 0)); 461 } 462 463 function addTransferListener($listener) 464 { 465 $this->megaApi->addTransferListener($this->createDelegateTransferListener($listener, 0)); 466 } 467 468 function addGlobalListener($listener) 469 { 470 $this->megaApi->addGlobalListener($this->createDelegateGlobalListener($listener)); 471 } 472 473 474 function removeListener($listener) 475 { 476 sem_acquire($this->semaphore); 477 foreach ($this->activeMegaListeners as $delegate) 478 { 479 if($delegate->getUserListener() == $listener) 480 { 481 $this->megaApi->removeListener($delegate); 482 unset($this->activeMegaListeners[$delegate]); 483 break; 484 } 485 } 486 sem_release($this->semaphore); 487 } 488 489 function removeRequestListener($listener) 490 { 491 sem_acquire($this->semaphore); 492 foreach ($this->activeMegaRequestListeners as $delegate) 493 { 494 if ($delegate->getUserListener() == $listener) 495 { 496 $this->megaApi->removeRequestListener($delegate); 497 unset($this->activeMegaRequestListeners[$delegate]); 498 break; 499 } 500 } 501 sem_release($this->semaphore); 502 } 503 504 function removeTransferListener($listener) 505 { 506 sem_acquire($this->semaphore); 507 foreach ($this->activeMegaTransferListeners as $delegate) 508 { 509 if ($delegate->getUserListener() == $listener) 510 { 511 $this->megaApi->removeTransferListener($delegate); 512 unset($this->activeMegaTransferListeners[$delegate]); 513 break; 514 } 515 } 516 sem_release($this->semaphore); 517 } 518 519 function removeGlobalListener($listener) 520 { 521 sem_acquire($this->semaphore); 522 foreach ($this->activeMegaGlobalListeners as $delegate) 523 { 524 if ($delegate->getUserListener() == $listener) 525 { 526 $this->megaApi->removeGlobalListener($delegate); 527 unset($this->activeMegaGlobalListeners[$delegate]); 528 break; 529 } 530 } 531 sem_release($this->semaphore); 532 } 533 534 function getBase64PwKey($password) 535 { 536 return $this->megaApi->getBase64PwKey($password); 537 } 538 539 function getStringHash($base64pwkey, $email) 540 { 541 return $this->megaApi->getStringHash($base64pwkey, $email); 542 } 543 544 static function base64ToHandle($base64Handle) 545 { 546 return MegaApi::base64ToHandle($handle); 547 } 548 549 static function handleToBase64($handle) 550 { 551 return MegaApi::handleToBase64($handle); 552 } 553 554 static function userHandleToBase64($handle) 555 { 556 return MegaApi::userHandleToBase64($handle); 557 } 558 559 static function addEntropy($data, $size) 560 { 561 MegaApi::addEntropy($data, $size); 562 } 563 564 function retryPendingConnections($disconnect = false, $includexfers = false, $listener = null) 565 { 566 $this->megaApi->retryPendingConnections($disconnect, $includexfers, $this->createDelegateRequestListener($listener)); 567 } 568 569 function login($email, $password, $listener = null) 570 { 571 $this->megaApi->login($email, $password, $this->createDelegateRequestListener($listener)); 572 } 573 574 function loginToFolder($megaFolderLink, $listener = null) 575 { 576 $this->megaApi->loginToFolder($megaFolderLink, $this->createDelegateRequestListener($listener)); 577 } 578 579 function dumpSession() 580 { 581 return $this->megaApi->dumpSession(); 582 } 583 584 function dumpXMPPSession() 585 { 586 return $this->megaApi->dumpXMPPSession(); 587 } 588 589 function createAccount($email, $password, $firstname, $lastname, $listener = null) 590 { 591 $this->megaApi->createAccount($email, $password, $firstname, $lastname, $this->createDelegateRequestListener($listener)); 592 } 593 594 function fastCreateAccount($email, $base64pwkey, $name, $listener = null) 595 { 596 $this->megaApi->fastCreateAccount($email, $base64pwkey, $name, $this->createDelegateRequestListener($listener)); 597 } 598 599 function querySignupLink($link, $listener = null) 600 { 601 $this->megaApi->querySignupLink($link, $this->createDelegateRequestListener($listener)); 602 } 603 604 function confirmAccount($link, $password, $listener = null) 605 { 606 $this->megaApi->confirmAccount($link, $password, $this->createDelegateRequestListener($listener)); 607 } 608 609 function fastConfirmAccount($link, $base64pwkey, $listener = null) 610 { 611 $this->megaApi->fastConfirmAccount($link, $base64pwkey, $this->createDelegateRequestListener($listener)); 612 } 613 614 function setProxySettings($proxySettings) 615 { 616 $this->megaApi->setProxySettings($proxySettings); 617 } 618 619 function getAutoProxySettings() 620 { 621 return $this->megaApi->getAutoProxySettings(); 622 } 623 624 function isLoggedIn() 625 { 626 return $this->megaApi->isLoggedIn(); 627 } 628 629 function getMyEmail() 630 { 631 return $this->megaApi->getMyEmail(); 632 } 633 634 static function setLogLevel($logLevel) 635 { 636 MegaApi::setLogLevel($logLevel); 637 } 638 639 static function setLoggerObject($megaLogger) 640 { 641 MegaApi::setLoggerObject($megaLogger); 642 } 643 644 static function log($logLevel, $message, $filename = "", $line = -1) 645 { 646 MegaApi::log($logLevel, $message, $filename, $line); 647 } 648 649 function createFolder($name, $parent, $listener = null) 650 { 651 $this->megaApi->createFolder($name, $parent, $this->createDelegateRequestListener($listener)); 652 } 653 654 function moveNode($node, $newParent, $listener = null) 655 { 656 $this->megaApi->moveNode($node, $newParent, $this->createDelegateRequestListener($listener)); 657 } 658 659 function copyNode($node, $newParent, $listener = null) 660 { 661 $this->megaApi->copyNode($node, $newParent, $this->createDelegateRequestListener($listener)); 662 } 663 664 function renameNode($node, $newName, $listener = null) 665 { 666 $this->megaApi->renameNode($node, $newName, $this->createDelegateRequestListener($listener)); 667 } 668 669 function remove($node, $listener = null) 670 { 671 $this->megaApi->remove($node, $this->createDelegateRequestListener($listener)); 672 } 673 674 function sendFileToUser($node, $user, $listener = null) 675 { 676 $this->megaApi->sendFileToUser($node, $user, $this->createDelegateRequestListener($listener)); 677 } 678 679 function share($node, $user_or_email, $level, $listener = null) 680 { 681 $this->megaApi->share($node, $user_or_email, $level, $this->createDelegateRequestListener($listener)); 682 } 683 684 function importFileLink($megaFileLink, $parent, $listener = null) 685 { 686 $this->megaApi->importFileLink($megaFileLink, $parent, $this->createDelegateRequestListener($listener)); 687 } 688 689 function getPublicNode($megaFileLink, $listener = null) 690 { 691 $this->megaApi->getPublicNode($megaFileLink, $this->createDelegateRequestListener($listener)); 692 } 693 694 function getThumbnail($node, $dstFilePath, $listener = null) 695 { 696 $this->megaApi->getThumbnail($node, $dstFilePath, $this->createDelegateRequestListener($listener)); 697 } 698 699 function getPreview($node, $dstFilePath, $listener = null) 700 { 701 $this->megaApi->getPreview($node, $dstFilePath, $this->createDelegateRequestListener($listener)); 702 } 703 704 function getUserAvatar($user, $dstFilePath, $listener=null) 705 { 706 $this->megaApi->getUserAvatar($user, $dstFilePath, $this->createDelegateRequestListener($listener)); 707 } 708 709 function cancelGetThumbnail($node, $listener = null) 710 { 711 $this->megaApi->cancelGetThumbnail($node, $this->createDelegateRequestListener($listener)); 712 } 713 714 function cancelGetPreview($node, $listener = null) 715 { 716 $this->megaApi->cancelGetPreview($node, $this->createDelegateRequestListener($listener)); 717 } 718 719 function setThumbnail($node, $srcFilePath, $listener = null) 720 { 721 $this->megaApi->setThumbnail($node, $srcFilePath, $this->createDelegateRequestListener($listener)); 722 } 723 724 function setPreview($node, $srcFilePath, $listener = null) 725 { 726 $this->megaApi->setPreview($node, $srcFilePath, $this->createDelegateRequestListener($listener)); 727 } 728 729 function setAvatar($srcFilePath, $listener = null) 730 { 731 $this->megaApi->setAvatar($srcFilePath, $this->createDelegateRequestListener($listener)); 732 } 733 734 function exportNode($node, $listener = null) 735 { 736 $this->megaApi->exportNode($node, $this->createDelegateRequestListener($listener)); 737 } 738 739 function disableExport($node, $listener = null) 740 { 741 $this->megaApi->disableExport($node, $this->createDelegateRequestListener($listener)); 742 } 743 744 function fetchNodes($listener = null) 745 { 746 $this->megaApi->fetchNodes($this->createDelegateRequestListener($listener)); 747 } 748 749 function getAccountDetails($listener = null) 750 { 751 $this->megaApi->getAccountDetails($this->createDelegateRequestListener($listener)); 752 } 753 754 function getPricing($listener = null) 755 { 756 $this->megaApi->getPricing($this->createDelegateRequestListener($listener)); 757 } 758 759 function getPaymentUrl($productHandle, $listener = null) 760 { 761 $this->megaApi->getPaymentUrl($productHandle, $this->createDelegateRequestListener($listener)); 762 } 763 764 function exportMasterKey() 765 { 766 return $this->megaApi->exportMasterKey(); 767 } 768 769 function changePassword($oldPassword, $newPassword, $listener = null) 770 { 771 $this->megaApi->changePassword($oldPassword, $newPassword, $this->createDelegateRequestListener($listener)); 772 } 773 774 function inviteContact($user, $message, $action, $listener = null) 775 { 776 $this->megaApi->inviteContact($user, $message, $action, $this->createDelegateRequestListener($listener)); 777 } 778 779 function removeContact($user, $listener = null) 780 { 781 $this->megaApi->removeContact($user, $this->createDelegateRequestListener($listener)); 782 } 783 784 function logout($listener = null) 785 { 786 $this->megaApi->logout($this->createDelegateRequestListener($listener)); 787 } 788 789 function submitFeedback($rating, $comment, $listener = null) 790 { 791 $this->megaApi->submitFeedback($rating, $comment, $this->createDelegateRequestListener($listener)); 792 } 793 794 function reportDebugEvent($text, $listener = null) 795 { 796 $this->megaApi->reportDebugEvent($text, $this->createDelegateRequestListener($listener)); 797 } 798 799 function startUpload($localPath, $parent, $listener = null) 800 { 801 $this->megaApi->startUpload($localPath, $parent, null, null, $this->createDelegateTransferListener($listener)); 802 } 803 804 function startDownload($node, $localPath, $listener = null) 805 { 806 $this->megaApi->startDownload($node, $localPath, $this->createDelegateTransferListener($listener)); 807 } 808 809 function cancelTransfer($transfer, $listener = null) 810 { 811 $this->megaApi->cancelTransfer($transfer, $this->createDelegateRequestListener($listener)); 812 } 813 814 function cancelTransfers($type, $listener = null) 815 { 816 $this->megaApi->cancelTransfers($type, $this->createDelegateRequestListener($listener)); 817 } 818 819 function pauseTransfers($pause, $listener = null) 820 { 821 $this->megaApi->pauseTransfers($pause, $this->createDelegateRequestListener($listener)); 822 } 823 824 function setUploadLimit($bpslimit) 825 { 826 $this->megaApi->setUploadLimit($bpslimit); 827 } 828 829 function getTransfers($type = null) 830 { 831 if ($type == null) 832 return $this->listToArray($this->megaApi->getTransfersAll()); 833 else 834 return $this->listToArray($this->megaApi->getTransfers($type)); 835 } 836 837 function update() 838 { 839 $this->megaApi->update(); 840 } 841 842 function isWaiting() 843 { 844 return $this->megaApi->isWaiting(); 845 } 846 847 function getNumPendingUploads() 848 { 849 return $this->megaApi->getNumPendingUploads(); 850 } 851 852 function getNumPendingDownloads() 853 { 854 return $this->megaApi->getNumPendingDownloads(); 855 } 856 857 function getTotalUploads() 858 { 859 return $this->megaApi->getTotalUploads(); 860 } 861 862 function getTotalDownloads() 863 { 864 return $this->megaApi->getTotalDownloads(); 865 } 866 867 function resetTotalDownloads() 868 { 869 $this->megaApi->resetTotalDownloads(); 870 } 871 872 function resetTotalUploads() 873 { 874 $this->megaApi->resetTotalUploads(); 875 } 876 877 function getTotalDownloadedBytes() 878 { 879 return $this->megaApi->getTotalDownloadedBytes(); 880 } 881 882 function getTotalUploadedBytes() 883 { 884 return $this->megaApi->getTotalUploadedBytes(); 885 } 886 887 function updateStats() 888 { 889 $this->megaApi->updateStats(); 890 } 891 892 const ORDER_NONE = 0; 893 const ORDER_DEFAULT_ASC = MegaApi::ORDER_DEFAULT_ASC; 894 const ORDER_DEFAULT_DESC = MegaApi::ORDER_DEFAULT_DESC; 895 const ORDER_SIZE_ASC = MegaApi::ORDER_SIZE_ASC; 896 const ORDER_SIZE_DESC = MegaApi::ORDER_SIZE_DESC; 897 const ORDER_CREATION_ASC = MegaApi::ORDER_CREATION_ASC; 898 const ORDER_CREATION_DESC = MegaApi::ORDER_CREATION_DESC; 899 const ORDER_MODIFICATION_ASC = MegaApi::ORDER_MODIFICATION_ASC; 900 const ORDER_MODIFICATION_DESC = MegaApi::ORDER_MODIFICATION_DESC; 901 const ORDER_ALPHABETICAL_ASC = MegaApi::ORDER_ALPHABETICAL_ASC; 902 const ORDER_ALPHABETICAL_DESC = MegaApi::ORDER_ALPHABETICAL_DESC; 903 904 function getNumChildren($parent) 905 { 906 return $this->megaApi->getNumChildren($parent); 907 } 908 909 function getNumChildFiles($parent) 910 { 911 return $this->megaApi->getNumChildFiles($parent); 912 } 913 914 function getNumChildFolders($parent) 915 { 916 return $this->megaApi->getNumChildFolders($parent); 917 } 918 919 function getChildren($parent, $order = 1) 920 { 921 return $this->listToArray($this->megaApi->getChildren($parent, $order)); 922 } 923 924 function getChildNode($parent, $name) 925 { 926 return $this->megaApi->getChildNode($parent, $name); 927 } 928 929 function getParentNode($node) 930 { 931 return $this->megaApi->getParentNode($node); 932 } 933 934 function getNodePath($node) 935 { 936 return $this->megaApi->getNodePath($node); 937 } 938 939 function getNodeByPath($path, $base = null) 940 { 941 return $this->megaApi->getNodeByPath($path, $base); 942 } 943 944 function getNodeByHandle($handle) 945 { 946 return $this->megaApi->getNodeByHandle($handle); 947 } 948 949 function getContacts() 950 { 951 return $this->listToArray($this->megaApi->getContacts()); 952 } 953 954 function getContact($email) 955 { 956 return $this->megaApi->getContact($email); 957 } 958 959 function getInShares($user = null) 960 { 961 if ($user == null) 962 return $this->listToArray($this->megaApi->getInSharesAll()); 963 else 964 return $this->listToArray($this->megaApi->getInShares($user)); 965 } 966 967 function isShared($node) 968 { 969 return $this->megaApi->isShared($node); 970 } 971 972 function getOutShares($node = null) 973 { 974 if ($node == null) 975 return $this->listToArray($this->megaApi->getOutSharesAll()); 976 else 977 return $this->listToArray($this->megaApi->getOutShares($node)); 978 } 979 980 function getAccess($node) 981 { 982 return $this->megaApi->getAccess($node) ; 983 } 984 985 function getSize($node) 986 { 987 return $this->megaApi->getSize($node) ; 988 } 989 990 function getFingerprint($filePath_or_node) 991 { 992 return $this->megaApi->getFingerprint($filePath_or_node); 993 } 994 995 function getNodeByFingerprint($fingerprint) 996 { 997 return $this->megaApi->getNodeByFingerprint($fingerprint); 998 } 999 1000 function hasFingerprint($fingerprint) 1001 { 1002 return $this->megaApi->hasFingerprint($fingerprint); 1003 } 1004 1005 function checkAccess($node, $level) 1006 { 1007 return $this->megaApi->checkAccess($node, $level); 1008 } 1009 1010 function checkMove($node, $target) 1011 { 1012 return $this->megaApi->checkMove($node, $target); 1013 } 1014 1015 function getRootNode() 1016 { 1017 return $this->megaApi->getRootNode(); 1018 } 1019 1020 function getInboxNode() 1021 { 1022 return $this->megaApi->getInboxNode(); 1023 } 1024 1025 function getRubbishNode() 1026 { 1027 return $this->megaApi->getRubbishNode(); 1028 } 1029 1030 function search($node, $searchString, $recursive = true) 1031 { 1032 return $this->listToArray($this->megaApi->search($node, $searchString, $recursive)); 1033 } 1034 1035 function getCurrentRequest() 1036 { 1037 return $this->megaApi->getCurrentRequest(); 1038 } 1039 1040 function getCurrentTransfer() 1041 { 1042 return $this->megaApi->getCurrentTransfer(); 1043 } 1044 1045 function getCurrentError() 1046 { 1047 return $this->megaApi->getCurrentError(); 1048 } 1049 1050 function getCurrentNodes() 1051 { 1052 return $this->listToArray($this->megaApi->getCurrentNodes()); 1053 } 1054 1055 function getCurrentUsers() 1056 { 1057 return $this->listToArray($this->megaApi->getCurrentUsers()); 1058 } 1059 1060 private function listToArray($list) 1061 { 1062 if ($list == null) 1063 { 1064 return array(); 1065 } 1066 1067 $result = array(); 1068 for ($i = 0; $i < $list->size(); $i++) 1069 { 1070 array_push($result, $list->get($i)->copy()); 1071 } 1072 1073 return $result; 1074 } 1075 1076 function privateFreeRequestListener($listener) 1077 { 1078 sem_acquire($this->semaphore); 1079 activeRequestListeners.remove(listener); 1080 sem_release($this->semaphore); 1081 } 1082 1083 function privateFreeTransferListener($listener) 1084 { 1085 sem_acquire($this->semaphore); 1086 activeTransferListeners.remove(listener); 1087 sem_release($this->semaphore); 1088 } 1089 1090 public function __destruct() 1091 { 1092 foreach ($this->activeMegaListeners as $listener) 1093 { 1094 $this->megaApi->removeListener($listener); 1095 } 1096 1097 foreach ($this->activeMegaRequestListeners as $listener) 1098 { 1099 $this->megaApi->removeRequestListener($listener); 1100 } 1101 1102 foreach ($this->activeMegaTransferListeners as $listener) 1103 { 1104 $this->megaApi->removeTransferListener($listener); 1105 } 1106 1107 foreach ($this->activeMegaGlobalListeners as $listener) 1108 { 1109 $this->megaApi->removeGlobalListener($listener); 1110 } 1111 1112 sem_remove($this->semaphore); 1113 } 1114} 1115?> 1116