Hex Artifact Content
Not logged in

Artifact dcfd147e1d91677973a3047f85e149a126244e8e:


0000: 3c 3f 70 68 70 0a 2f 2a 2a 0a 20 2a 20 43 6f 70  <?php./**. * Cop
0010: 79 72 69 67 68 74 20 28 63 29 20 32 30 31 35 20  yright (c) 2015 
0020: 52 6f 62 69 6e 20 41 70 70 65 6c 6d 61 6e 20 3c  Robin Appelman <
0030: 69 63 65 77 69 6e 64 40 6f 77 6e 63 6c 6f 75 64  icewind@owncloud
0040: 2e 63 6f 6d 3e 0a 20 2a 20 54 68 69 73 20 66 69  .com>. * This fi
0050: 6c 65 20 69 73 20 6c 69 63 65 6e 73 65 64 20 75  le is licensed u
0060: 6e 64 65 72 20 74 68 65 20 41 66 66 65 72 6f 20  nder the Affero 
0070: 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c  General Public L
0080: 69 63 65 6e 73 65 20 76 65 72 73 69 6f 6e 20 33  icense version 3
0090: 20 6f 72 0a 20 2a 20 6c 61 74 65 72 2e 0a 20 2a   or. * later.. *
00a0: 20 53 65 65 20 74 68 65 20 43 4f 50 59 49 4e 47   See the COPYING
00b0: 2d 52 45 41 44 4d 45 20 66 69 6c 65 2e 0a 20 2a  -README file.. *
00c0: 2f 0a 0a 6e 61 6d 65 73 70 61 63 65 20 54 65 73  /..namespace Tes
00d0: 74 5c 54 72 61 69 74 73 3b 0a 0a 75 73 65 20 4f  t\Traits;..use O
00e0: 43 5c 46 69 6c 65 73 5c 4d 6f 75 6e 74 5c 4d 6f  C\Files\Mount\Mo
00f0: 75 6e 74 50 6f 69 6e 74 3b 0a 75 73 65 20 4f 43  untPoint;.use OC
0100: 5c 46 69 6c 65 73 5c 53 74 6f 72 61 67 65 5c 53  \Files\Storage\S
0110: 74 6f 72 61 67 65 46 61 63 74 6f 72 79 3b 0a 75  torageFactory;.u
0120: 73 65 20 4f 43 50 5c 49 55 73 65 72 3b 0a 0a 2f  se OCP\IUser;../
0130: 2a 2a 0a 20 2a 20 41 6c 6c 6f 77 20 73 65 74 74  **. * Allow sett
0140: 69 6e 67 20 6d 6f 75 6e 74 73 20 66 6f 72 20 75  ing mounts for u
0150: 73 65 72 73 0a 20 2a 2f 0a 74 72 61 69 74 20 4d  sers. */.trait M
0160: 6f 75 6e 74 50 72 6f 76 69 64 65 72 54 72 61 69  ountProviderTrai
0170: 74 20 7b 0a 09 2f 2a 2a 0a 09 20 2a 20 40 76 61  t {../**.. * @va
0180: 72 20 5c 4f 43 50 5c 46 69 6c 65 73 5c 43 6f 6e  r \OCP\Files\Con
0190: 66 69 67 5c 49 4d 6f 75 6e 74 50 72 6f 76 69 64  fig\IMountProvid
01a0: 65 72 0a 09 20 2a 2f 0a 09 70 72 6f 74 65 63 74  er.. */..protect
01b0: 65 64 20 24 6d 6f 75 6e 74 50 72 6f 76 69 64 65  ed $mountProvide
01c0: 72 3b 0a 0a 09 2f 2a 2a 0a 09 20 2a 20 40 76 61  r;.../**.. * @va
01d0: 72 20 5c 4f 43 5c 46 69 6c 65 73 5c 53 74 6f 72  r \OC\Files\Stor
01e0: 61 67 65 5c 53 74 6f 72 61 67 65 46 61 63 74 6f  age\StorageFacto
01f0: 72 79 0a 09 20 2a 2f 0a 09 70 72 6f 74 65 63 74  ry.. */..protect
0200: 65 64 20 24 73 74 6f 72 61 67 65 46 61 63 74 6f  ed $storageFacto
0210: 72 79 3b 0a 0a 09 70 72 6f 74 65 63 74 65 64 20  ry;...protected 
0220: 24 6d 6f 75 6e 74 73 20 3d 20 5b 5d 3b 0a 0a 09  $mounts = [];...
0230: 70 72 6f 74 65 63 74 65 64 20 66 75 6e 63 74 69  protected functi
0240: 6f 6e 20 72 65 67 69 73 74 65 72 4d 6f 75 6e 74  on registerMount
0250: 28 24 75 73 65 72 49 64 2c 20 24 73 74 6f 72 61  ($userId, $stora
0260: 67 65 2c 20 24 6d 6f 75 6e 74 50 6f 69 6e 74 2c  ge, $mountPoint,
0270: 20 24 61 72 67 75 6d 65 6e 74 73 20 3d 20 6e 75   $arguments = nu
0280: 6c 6c 29 20 7b 0a 09 09 69 66 20 28 21 69 73 73  ll) {...if (!iss
0290: 65 74 28 24 74 68 69 73 2d 3e 6d 6f 75 6e 74 73  et($this->mounts
02a0: 5b 24 75 73 65 72 49 64 5d 29 29 20 7b 0a 09 09  [$userId])) {...
02b0: 09 24 74 68 69 73 2d 3e 6d 6f 75 6e 74 73 5b 24  .$this->mounts[$
02c0: 75 73 65 72 49 64 5d 20 3d 20 5b 5d 3b 0a 09 09  userId] = [];...
02d0: 7d 0a 09 09 24 74 68 69 73 2d 3e 6d 6f 75 6e 74  }...$this->mount
02e0: 73 5b 24 75 73 65 72 49 64 5d 5b 5d 20 3d 20 5b  s[$userId][] = [
02f0: 27 73 74 6f 72 61 67 65 27 20 3d 3e 20 24 73 74  'storage' => $st
0300: 6f 72 61 67 65 2c 20 27 6d 6f 75 6e 74 50 6f 69  orage, 'mountPoi
0310: 6e 74 27 20 3d 3e 20 24 6d 6f 75 6e 74 50 6f 69  nt' => $mountPoi
0320: 6e 74 2c 20 27 61 72 67 75 6d 65 6e 74 73 27 20  nt, 'arguments' 
0330: 3d 3e 20 24 61 72 67 75 6d 65 6e 74 73 5d 3b 0a  => $arguments];.
0340: 09 7d 0a 0a 09 70 72 6f 74 65 63 74 65 64 20 66  .}...protected f
0350: 75 6e 63 74 69 6f 6e 20 72 65 67 69 73 74 65 72  unction register
0360: 53 74 6f 72 61 67 65 57 72 61 70 70 65 72 28 24  StorageWrapper($
0370: 6e 61 6d 65 2c 20 24 77 72 61 70 70 65 72 29 20  name, $wrapper) 
0380: 7b 0a 09 09 24 74 68 69 73 2d 3e 73 74 6f 72 61  {...$this->stora
0390: 67 65 46 61 63 74 6f 72 79 2d 3e 61 64 64 53 74  geFactory->addSt
03a0: 6f 72 61 67 65 57 72 61 70 70 65 72 28 24 6e 61  orageWrapper($na
03b0: 6d 65 2c 20 24 77 72 61 70 70 65 72 29 3b 0a 09  me, $wrapper);..
03c0: 7d 0a 0a 09 70 72 6f 74 65 63 74 65 64 20 66 75  }...protected fu
03d0: 6e 63 74 69 6f 6e 20 73 65 74 55 70 4d 6f 75 6e  nction setUpMoun
03e0: 74 50 72 6f 76 69 64 65 72 54 72 61 69 74 28 29  tProviderTrait()
03f0: 20 7b 0a 09 09 24 74 68 69 73 2d 3e 73 74 6f 72   {...$this->stor
0400: 61 67 65 46 61 63 74 6f 72 79 20 3d 20 6e 65 77  ageFactory = new
0410: 20 53 74 6f 72 61 67 65 46 61 63 74 6f 72 79 28   StorageFactory(
0420: 29 3b 0a 09 09 24 74 68 69 73 2d 3e 6d 6f 75 6e  );...$this->moun
0430: 74 50 72 6f 76 69 64 65 72 20 3d 20 24 74 68 69  tProvider = $thi
0440: 73 2d 3e 67 65 74 4d 6f 63 6b 42 75 69 6c 64 65  s->getMockBuilde
0450: 72 28 27 5c 4f 43 50 5c 46 69 6c 65 73 5c 43 6f  r('\OCP\Files\Co
0460: 6e 66 69 67 5c 49 4d 6f 75 6e 74 50 72 6f 76 69  nfig\IMountProvi
0470: 64 65 72 27 29 2d 3e 67 65 74 4d 6f 63 6b 28 29  der')->getMock()
0480: 3b 0a 09 09 24 74 68 69 73 2d 3e 6d 6f 75 6e 74  ;...$this->mount
0490: 50 72 6f 76 69 64 65 72 2d 3e 65 78 70 65 63 74  Provider->expect
04a0: 73 28 24 74 68 69 73 2d 3e 61 6e 79 28 29 29 0a  s($this->any()).
04b0: 09 09 09 2d 3e 6d 65 74 68 6f 64 28 27 67 65 74  ...->method('get
04c0: 4d 6f 75 6e 74 73 46 6f 72 55 73 65 72 27 29 0a  MountsForUser').
04d0: 09 09 09 2d 3e 77 69 6c 6c 28 24 74 68 69 73 2d  ...->will($this-
04e0: 3e 72 65 74 75 72 6e 43 61 6c 6c 62 61 63 6b 28  >returnCallback(
04f0: 66 75 6e 63 74 69 6f 6e 20 28 49 55 73 65 72 20  function (IUser 
0500: 24 75 73 65 72 29 20 7b 0a 09 09 09 09 69 66 20  $user) {.....if 
0510: 28 69 73 73 65 74 28 24 74 68 69 73 2d 3e 6d 6f  (isset($this->mo
0520: 75 6e 74 73 5b 24 75 73 65 72 2d 3e 67 65 74 55  unts[$user->getU
0530: 49 44 28 29 5d 29 29 20 7b 0a 09 09 09 09 09 72  ID()])) {......r
0540: 65 74 75 72 6e 20 61 72 72 61 79 5f 6d 61 70 28  eturn array_map(
0550: 66 75 6e 63 74 69 6f 6e 20 28 24 63 6f 6e 66 69  function ($confi
0560: 67 29 20 7b 0a 09 09 09 09 09 09 72 65 74 75 72  g) {.......retur
0570: 6e 20 6e 65 77 20 4d 6f 75 6e 74 50 6f 69 6e 74  n new MountPoint
0580: 28 24 63 6f 6e 66 69 67 5b 27 73 74 6f 72 61 67  ($config['storag
0590: 65 27 5d 2c 20 24 63 6f 6e 66 69 67 5b 27 6d 6f  e'], $config['mo
05a0: 75 6e 74 50 6f 69 6e 74 27 5d 2c 20 24 63 6f 6e  untPoint'], $con
05b0: 66 69 67 5b 27 61 72 67 75 6d 65 6e 74 73 27 5d  fig['arguments']
05c0: 2c 20 24 74 68 69 73 2d 3e 73 74 6f 72 61 67 65  , $this->storage
05d0: 46 61 63 74 6f 72 79 29 3b 0a 09 09 09 09 09 7d  Factory);......}
05e0: 2c 20 24 74 68 69 73 2d 3e 6d 6f 75 6e 74 73 5b  , $this->mounts[
05f0: 24 75 73 65 72 2d 3e 67 65 74 55 49 44 28 29 5d  $user->getUID()]
0600: 29 3b 0a 09 09 09 09 7d 20 65 6c 73 65 20 7b 0a  );.....} else {.
0610: 09 09 09 09 09 72 65 74 75 72 6e 20 5b 5d 3b 0a  .....return [];.
0620: 09 09 09 09 7d 0a 09 09 09 7d 29 29 3b 0a 09 09  ....}....}));...
0630: 5c 4f 43 3a 3a 24 73 65 72 76 65 72 2d 3e 67 65  \OC::$server->ge
0640: 74 4d 6f 75 6e 74 50 72 6f 76 69 64 65 72 43 6f  tMountProviderCo
0650: 6c 6c 65 63 74 69 6f 6e 28 29 2d 3e 72 65 67 69  llection()->regi
0660: 73 74 65 72 50 72 6f 76 69 64 65 72 28 24 74 68  sterProvider($th
0670: 69 73 2d 3e 6d 6f 75 6e 74 50 72 6f 76 69 64 65  is->mountProvide
0680: 72 29 3b 0a 09 7d 0a 7d 0a                       r);..}.}.