{"type":"rich","version":"1.0","provider_name":"phorkie","provider_url":"https:\/\/p.cweiske.de\/","title":"typo3 fal driver cache","author_name":"Christian Weiske","cache_age":86400,"width":900,"height":900,"html":"<!-- embedding all files of https:\/\/p.cweiske.de\/194 -->\n<link rel=\"stylesheet\" href=\"https:\/\/p.cweiske.de\/css\/embed.css\"\/>\n<div class=\"phork\" id=\"194\">\n    <div class=\"phork-file\">\n <div class=\"phork-content\">\n  <style type=\"text\/css\">\/**\n * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann\n * (http:\/\/qbnz.com\/highlighter\/ and http:\/\/geshi.org\/)\n *\/\n.php .de1, .php .de2 {font: normal normal 1em\/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}\n.php  {font-family:monospace;}\n.php .imp {font-weight: bold; color: red;}\n.php li, .php .li1 {color: #DDD;}\n.php .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}\n.php .kw1 {color: #b1b100;}\n.php .kw2 {color: #000000; font-weight: bold;}\n.php .kw3 {color: #990000;}\n.php .kw4 {color: #009900; font-weight: bold;}\n.php .co1 {color: #666666; font-style: italic;}\n.php .co2 {color: #666666; font-style: italic;}\n.php .co3 {color: #0000cc; font-style: italic;}\n.php .co4 {color: #009933; font-style: italic;}\n.php .coMULTI {color: #666666; font-style: italic;}\n.php .es0 {color: #000099; font-weight: bold;}\n.php .es1 {color: #000099; font-weight: bold;}\n.php .es2 {color: #660099; font-weight: bold;}\n.php .es3 {color: #660099; font-weight: bold;}\n.php .es4 {color: #006699; font-weight: bold;}\n.php .es5 {color: #006699; font-weight: bold; font-style: italic;}\n.php .es6 {color: #009933; font-weight: bold;}\n.php .es_h {color: #000099; font-weight: bold;}\n.php .br0 {color: #009900;}\n.php .sy0 {color: #339933;}\n.php .sy1 {color: #000000; font-weight: bold;}\n.php .st0 {color: #0000ff;}\n.php .st_h {color: #0000ff;}\n.php .nu0 {color: #cc66cc;}\n.php .nu8 {color: #208080;}\n.php .nu12 {color: #208080;}\n.php .nu19 {color:#800080;}\n.php .me1 {color: #004000;}\n.php .me2 {color: #004000;}\n.php .re0 {color: #000088;}\n.php span.xtra { display:block; }\n<\/style><div class=\"code\"><table class=\"php\"><tbody><tr class=\"li1\"><td class=\"ln\"><pre class=\"de1\">1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41\n42\n43\n44\n45\n46\n47\n48\n49\n50\n51\n52\n53\n54\n55\n56\n57\n58\n59\n60\n61\n62\n63\n64\n65\n66\n67\n68\n69\n70\n71\n72\n73\n74\n75\n76\n77\n78\n79\n80\n81\n82\n83\n84\n85\n86\n87\n88\n89\n90\n91\n92\n93\n94\n95\n96\n97\n98\n99\n100\n101\n102\n103\n104\n105\n106\n107\n108\n109\n110\n111\n112\n113\n114\n115\n116\n117\n118\n119\n120\n121\n122\n123\n124\n125\n126\n127\n128\n129\n130\n131\n132\n133\n134\n135\n136\n137\n138\n139\n140\n141\n142\n143\n144\n145\n146\n147\n148\n149\n150\n151\n152\n153\n154\n155\n156\n157\n158\n159\n160\n161\n162\n163\n164\n165\n166\n167\n168\n169\n170\n171\n172\n173\n174\n175\n176\n177\n178\n179\n180\n181\n182\n183\n184\n185\n186\n187\n188\n189\n190\n191\n192\n193\n194\n195\n196\n197\n198\n199\n200\n201\n202\n203\n204\n205\n206\n207\n208\n209\n210\n211\n212\n213\n214\n215\n216\n217\n218\n219\n220\n221\n222\n223\n224\n225\n226\n227\n228\n229\n230\n231\n232\n233\n234\n235\n236\n237\n238\n239\n240\n241\n242\n243\n244\n245\n246\n247\n248\n249\n250\n251\n252\n253\n254\n255\n256\n257\n258\n259\n260\n261\n262\n263\n264\n265\n266\n267\n268\n269\n270\n271\n272\n273\n274\n275\n276\n277\n278\n279\n280\n281\n282\n283\n284\n285\n286\n287\n288\n289\n290\n291\n292\n293\n294\n295\n296\n297\n298\n299\n300\n301\n302\n303\n304\n305\n306\n307\n308\n309\n310\n311\n312\n313\n314\n315\n316\n317\n318\n319\n320\n321\n322\n323\n324\n325\n326\n327\n328\n329\n330\n331\n332\n333\n334\n335\n336\n337\n338\n339\n340\n341\n342\n343\n344\n345\n346\n347\n348\n349\n350\n351\n352\n353\n354\n355\n356\n357\n358\n359\n360\n361\n362\n363\n364\n365\n366\n367\n368\n369\n370\n371\n372\n373\n374\n375\n376\n377\n378\n379\n380\n381\n382\n383\n384\n385\n386\n387\n388\n389\n390\n391\n392\n393\n394\n395\n396\n397\n398\n399\n400\n401\n402\n403\n404\n405\n406\n407\n408\n409\n410\n411\n412\n413\n414\n415\n416\n417\n418\n419\n420\n421\n422\n423\n424\n425\n426\n427\n428\n429\n430\n431\n432\n433\n434\n435\n436\n437\n438\n439\n440\n441\n442\n443\n444\n445\n446\n447\n448\n449\n450\n451\n452\n453\n454\n455\n456\n457\n458\n459\n460\n461\n462\n463\n464\n465\n466\n467\n468\n469\n470\n471\n472\n473\n474\n475\n476\n477\n478\n479\n480\n481\n482\n483\n484\n485\n486\n487\n488\n489\n490\n491\n492\n493\n494\n495\n496\n497\n498\n499\n500\n501\n502\n503\n504\n505\n506\n507\n508\n509\n510\n511\n512\n513\n514\n515\n516\n517\n518\n519\n520\n521\n522\n523\n524\n525\n526\n527\n528\n529\n530\n531\n532\n533\n534\n535\n536\n537\n538\n539\n540\n541\n542\n543\n544\n545\n546\n547\n548\n549\n550\n551\n552\n553\n554\n555\n556\n557\n558\n559\n560\n561\n562\n563\n564\n565\n566\n567\n568\n569\n570\n571\n572\n573\n574\n575\n576\n577\n578\n579\n580\n581\n582\n583\n584\n585\n586\n587\n588\n589\n590\n591\n592\n593\n594\n595\n596\n597\n598\n599\n600\n601\n602\n603\n604\n605\n606\n607\n608\n609\n610\n611\n612\n613\n614\n615\n616\n617\n618\n619\n620\n621\n622\n623\n624\n625\n<\/pre><\/td><td class=\"de1\"><pre class=\"de1\"><span class=\"kw2\">&lt;?php<\/span>\n<span class=\"kw2\">declare<\/span><span class=\"br0\">&#40;<\/span>encoding <span class=\"sy0\">=<\/span> <span class=\"st_h\">'UTF-8'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160;* xxx FAL DAM driver.<\/span>\n<span class=\"co4\">&#160;*<\/span>\n<span class=\"co4\">&#160;* PHP version 5<\/span>\n<span class=\"co4\">&#160;*<\/span>\n<span class=\"co4\">&#160;* @category &#160; xxx<\/span>\n<span class=\"co4\">&#160;* @package &#160; &#160;FAL_DAM<\/span>\n<span class=\"co4\">&#160;* @subpackage Driver<\/span>\n<span class=\"co4\">&#160;* @author &#160; &#160; Christian Weiske &lt;christian.weiske@netresearch.de&gt;<\/span>\n<span class=\"co4\">&#160;*\/<\/span>\n&#160;\n<span class=\"kw2\">namespace<\/span> xxx\\fal\\dam<span class=\"sy0\">;<\/span>\n<span class=\"kw2\">use<\/span> \\TYPO3\\CMS\\Core\\Resource\\Driver\\DriverInterface<span class=\"sy0\">;<\/span>\n&#160;\n<span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160;* Driver that caches results of another driver.<\/span>\n<span class=\"co4\">&#160;*<\/span>\n<span class=\"co4\">&#160;* @category &#160; xxx<\/span>\n<span class=\"co4\">&#160;* @package &#160; &#160;FAL_DAM<\/span>\n<span class=\"co4\">&#160;* @subpackage Driver<\/span>\n<span class=\"co4\">&#160;* @author &#160; &#160; Christian Weiske &lt;christian.weiske@netresearch.de&gt;<\/span>\n<span class=\"co4\">&#160;*\/<\/span>\n<span class=\"kw2\">class<\/span> Driver_Cache implements DriverInterface\n<span class=\"br0\">&#123;<\/span>\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @var DriverInterface<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">protected<\/span> <span class=\"re0\">$driver<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"kw2\">protected<\/span> <span class=\"re0\">$fileExistsCache<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"kw2\">protected<\/span> <span class=\"re0\">$folderExistsCache<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"kw2\">protected<\/span> <span class=\"re0\">$getPermissionsCache<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> __construct<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a> <span class=\"re0\">$configuration<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">new<\/span> Driver_Dam<span class=\"br0\">&#40;<\/span><span class=\"re0\">$configuration<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Checks if a file exists.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $fileIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return boolean<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> fileExists<span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"sy0\">!<\/span><a href=\"http:\/\/www.php.net\/isset\"><span class=\"kw3\">isset<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">fileExistsCache<\/span><span class=\"br0\">&#91;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">fileExistsCache<\/span><span class=\"br0\">&#91;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"br0\">&#93;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"sy0\">=<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">fileExists<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">fileExistsCache<\/span><span class=\"br0\">&#91;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Checks if a folder exists.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $folderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return boolean<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> folderExists<span class=\"br0\">&#40;<\/span><span class=\"re0\">$folderIdentifier<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"sy0\">!<\/span><a href=\"http:\/\/www.php.net\/isset\"><span class=\"kw3\">isset<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">folderExistsCache<\/span><span class=\"br0\">&#91;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">folderExistsCache<\/span><span class=\"br0\">&#91;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"br0\">&#93;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"sy0\">=<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">folderExists<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">folderExistsCache<\/span><span class=\"br0\">&#91;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Returns the permissions of a file\/folder as an array<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* (keys r, w) of boolean flags<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $identifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return array<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> getPermissions<span class=\"br0\">&#40;<\/span><span class=\"re0\">$identifier<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"sy0\">!<\/span><a href=\"http:\/\/www.php.net\/isset\"><span class=\"kw3\">isset<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getPermissionsCache<\/span><span class=\"br0\">&#91;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getPermissionsCache<\/span><span class=\"br0\">&#91;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"br0\">&#93;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"sy0\">=<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getPermissions<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$identifier<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getPermissionsCache<\/span><span class=\"br0\">&#91;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160;\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Processes the configuration for this driver.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return void<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> processConfiguration<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">processConfiguration<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Sets the storage uid the driver belongs to<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param integer $storageUid<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return void<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> setStorageUid<span class=\"br0\">&#40;<\/span><span class=\"re0\">$storageUid<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">setStorageUid<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$storageUid<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Initializes this object. This is called by the storage after the driver<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* has been attached.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return void<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> initialize<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">initialize<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Returns the capabilities of this driver.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return integer<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @see Storage::CAPABILITY_* constants<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> getCapabilities<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getCapabilities<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Merges the capabilites merged by the user at the storage<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* configuration into the actual capabilities of the driver<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* and returns the result.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param integer $capabilities<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return integer<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> mergeConfigurationCapabilities<span class=\"br0\">&#40;<\/span><span class=\"re0\">$capabilities<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">mergeConfigurationCapabilities<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$capabilities<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Returns TRUE if this driver has the given capability.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param integer $capability A capability, as defined in a CAPABILITY_* constant<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return boolean<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> hasCapability<span class=\"br0\">&#40;<\/span><span class=\"re0\">$capability<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">hasCapability<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$capability<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Returns TRUE if this driver uses case-sensitive identifiers. NOTE: This<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* is a configurable setting, but the setting does not change the way the<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* underlying file system treats the identifiers; the setting should<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* therefore always reflect the file system and not try to change its<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* behaviour<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return boolean<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> isCaseSensitiveFileSystem<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">isCaseSensitiveFileSystem<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Cleans a fileName from not allowed characters<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $fileName<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $charset Charset of the a fileName<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;(defaults to current charset; depending on context)<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return string the cleaned filename<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> sanitizeFileName<span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileName<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$charset<\/span> <span class=\"sy0\">=<\/span> <span class=\"st_h\">''<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">sanitizeFileName<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileName<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$charset<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Hashes a file identifier, taking the case sensitivity of the file system<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* into account. This helps mitigating problems with case-insensitive<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* databases.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $identifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return string<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> hashIdentifier<span class=\"br0\">&#40;<\/span><span class=\"re0\">$identifier<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">hashIdentifier<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$identifier<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Returns the identifier of the root level folder of the storage.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return string<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> getRootLevelFolder<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getRootLevelFolder<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Returns the identifier of the default folder new files should be put into.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return string<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> getDefaultFolder<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getDefaultFolder<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Returns the identifier of the folder the file resides in<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $fileIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return string<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> getParentFolderIdentifierOfIdentifier<span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getParentFolderIdentifierOfIdentifier<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Returns the public URL to a file.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Either fully qualified URL or relative to PATH_site (rawurlencoded).<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $identifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return string<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> getPublicUrl<span class=\"br0\">&#40;<\/span><span class=\"re0\">$identifier<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getPublicUrl<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$identifier<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Creates a folder, within a parent folder.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* If no parent folder is given, a root level folder will be created<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $newFolderName<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $parentFolderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param boolean $recursive<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return string the Identifier of the new folder<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> createFolder<span class=\"br0\">&#40;<\/span><span class=\"re0\">$newFolderName<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$parentFolderIdentifier<\/span> <span class=\"sy0\">=<\/span> <span class=\"st_h\">''<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$recursive<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw4\">FALSE<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">createFolder<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$newFolderName<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$parentFolderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$recursive<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Renames a folder in this storage.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $folderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $newName<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return array A map of old to new file identifiers of all affected resources<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> renameFolder<span class=\"br0\">&#40;<\/span><span class=\"re0\">$folderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$newName<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">renameFolder<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$folderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$newName<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Removes a folder in filesystem.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $folderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param boolean $deleteRecursively<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return boolean<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> deleteFolder<span class=\"br0\">&#40;<\/span><span class=\"re0\">$folderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$deleteRecursively<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw4\">FALSE<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">deleteFolder<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$folderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$deleteRecursively<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Checks if a folder contains files and (if supported) other folders.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $folderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return boolean TRUE if there are no files and folders within $folder<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> isFolderEmpty<span class=\"br0\">&#40;<\/span><span class=\"re0\">$folderIdentifier<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">isFolderEmpty<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$folderIdentifier<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Adds a file from the local server hard disk to a given path in TYPO3s<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* virtual file system. This assumes that the local file exists, so no<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* further check is done here! After a successful the original file must<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* not exist anymore.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $localFilePath (within PATH_site)<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $targetFolderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $newFileName optional, if not given original name is used<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param boolean $removeOriginal if set the original file will be removed<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;after successful operation<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return string the identifier of the new file<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> addFile<span class=\"br0\">&#40;<\/span><span class=\"re0\">$localFilePath<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$targetFolderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$newFileName<\/span> <span class=\"sy0\">=<\/span> <span class=\"st_h\">''<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$removeOriginal<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw4\">TRUE<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">addFile<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$localFilePath<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$targetFolderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$newFileName<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$removeOriginal<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Creates a new (empty) file and returns the identifier.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $fileName<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $parentFolderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return string<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> createFile<span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileName<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$parentFolderIdentifier<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">createFile<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileName<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$parentFolderIdentifier<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Copies a file *within* the current storage.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Note that this is only about an inner storage copy action,<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* where a file is just copied to another folder in the same storage.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $fileIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $targetFolderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $fileName<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return string the Identifier of the new file<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> copyFileWithinStorage<span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$targetFolderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$fileName<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">copyFileWithinStorage<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$targetFolderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$fileName<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Renames a file in this storage.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $fileIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $newName The target path (including the file name!)<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return string The identifier of the file after renaming<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> renameFile<span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$newName<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">renameFile<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$newName<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Replaces a file with file in local file system.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $fileIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $localFilePath<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return boolean TRUE if the operation succeeded<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> replaceFile<span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$localFilePath<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">replaceFile<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$localFilePath<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Removes a file from the filesystem. This does not check if the file is<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* still used or if it is a bad idea to delete it for some other reason<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* this has to be taken care of in the upper layers (e.g. the Storage)!<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $fileIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return boolean TRUE if deleting the file succeeded<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> deleteFile<span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">deleteFile<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Creates a hash for a file.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $fileIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $hashAlgorithm The hash algorithm to use<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return string<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> <a href=\"http:\/\/www.php.net\/hash\"><span class=\"kw3\">hash<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$hashAlgorithm<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">hash<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$hashAlgorithm<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Moves a file *within* the current storage.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Note that this is only about an inner-storage move action,<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* where a file is just moved to another folder in the same storage.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $fileIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $targetFolderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $newFileName<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return string<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> moveFileWithinStorage<span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$targetFolderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$newFileName<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">moveFileWithinStorage<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$targetFolderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$newFileName<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Folder equivalent to moveFileWithinStorage().<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $sourceFolderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $targetFolderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $newFolderName<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return array All files which are affected, map of old =&gt; new file identifiers<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> moveFolderWithinStorage<span class=\"br0\">&#40;<\/span><span class=\"re0\">$sourceFolderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$targetFolderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$newFolderName<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">moveFolderWithinStorage<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$sourceFolderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$targetFolderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$newFolderName<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Folder equivalent to copyFileWithinStorage().<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $sourceFolderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $targetFolderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $newFolderName<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return boolean<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> copyFolderWithinStorage<span class=\"br0\">&#40;<\/span><span class=\"re0\">$sourceFolderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$targetFolderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$newFolderName<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">copyFolderWithinStorage<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$sourceFolderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$targetFolderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$newFolderName<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Returns the contents of a file. Beware that this requires to load the<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* complete file into memory and also may require fetching the file from an<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* external location. So this might be an expensive operation (both in terms<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* of processing resources and money) for large files.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $fileIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return string The file contents<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> getFileContents<span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getFileContents<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Sets the contents of a file to the specified value.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $fileIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $contents<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return integer The number of bytes written to the file<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> setFileContents<span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$contents<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">setFileContents<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$contents<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Checks if a file inside a folder exists<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $fileName<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $folderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return boolean<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> fileExistsInFolder<span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileName<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$folderIdentifier<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">fileExistsInFolder<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileName<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$folderIdentifier<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Checks if a folder inside a folder exists.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $folderName<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $folderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return boolean<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> folderExistsInFolder<span class=\"br0\">&#40;<\/span><span class=\"re0\">$folderName<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$folderIdentifier<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">folderExistsInFolder<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$folderName<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$folderIdentifier<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Returns a path to a local copy of a file for processing it. When changing the<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* file, you have to take care of replacing the current version yourself!<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $fileIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param bool $writable Set this to FALSE if you only need the file for read<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; operations. This might speed up things, e.g. by using<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; a cached local version. Never modify the file if you<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; have set this flag!<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return string The path to the file on the local disk<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> getFileForLocalProcessing<span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$writable<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw4\">TRUE<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getFileForLocalProcessing<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$writable<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Directly output the contents of the file to the output<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* buffer. Should not take care of header files or flushing<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* buffer before. Will be taken care of by the Storage.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $identifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return void<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> dumpFileContents<span class=\"br0\">&#40;<\/span><span class=\"re0\">$identifier<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">dumpFileContents<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$identifier<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Checks if a given identifier is within a container, e.g. if<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* a file or folder is within another folder.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* This can e.g. be used to check for web-mounts.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Hint: this also needs to return TRUE if the given identifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* matches the container identifier to allow access to the root<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* folder of a filemount.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $folderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $identifier identifier to be checked against $folderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return boolean TRUE if $content is within or matches $folderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> isWithin<span class=\"br0\">&#40;<\/span><span class=\"re0\">$folderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$identifier<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">isWithin<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$folderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$identifier<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Returns information about a file.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $fileIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param array $propertiesToExtract Array of properties which are be extracted<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; If empty all will be extracted<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return array<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> getFileInfoByIdentifier<span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"sy0\">,<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a> <span class=\"re0\">$propertiesToExtract<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getFileInfoByIdentifier<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$fileIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$propertiesToExtract<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Returns information about a file.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $folderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return array<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> getFolderInfoByIdentifier<span class=\"br0\">&#40;<\/span><span class=\"re0\">$folderIdentifier<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getFolderInfoByIdentifier<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$folderIdentifier<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Returns a list of files inside the specified path<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $folderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param integer $start<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param integer $numberOfItems<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param boolean $recursive<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param array $filenameFilterCallbacks callbacks for filtering the items<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $sort Property name used to sort the items.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; Among them may be: '' (empty, no sorting), name,<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; fileext, size, tstamp and rw.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; If a driver does not support the given property, it<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; should fall back to &quot;name&quot;.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $sortRev TRUE to indicate reverse sorting (last to first)<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return array of FileIdentifiers<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> getFilesInFolder<span class=\"br0\">&#40;<\/span><span class=\"re0\">$folderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$start<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$numberOfItems<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$recursive<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw4\">FALSE<\/span><span class=\"sy0\">,<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a> <span class=\"re0\">$filenameFilterCallbacks<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$sort<\/span> <span class=\"sy0\">=<\/span> <span class=\"st_h\">''<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$sortRev<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw4\">FALSE<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getFilesInFolder<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$folderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$start<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$numberOfItems<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$recursive<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$filenameFilterCallbacks<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$sort<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$sortRev<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Returns a list of folders inside the specified path<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $folderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param integer $start<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param integer $numberOfItems<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param boolean $recursive<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param array $folderNameFilterCallbacks callbacks for filtering the items<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $sort Property name used to sort the items.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; Among them may be: '' (empty, no sorting), name,<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; fileext, size, tstamp and rw.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; If a driver does not support the given property, it<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; should fall back to &quot;name&quot;.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $sortRev TRUE to indicate reverse sorting (last to first)<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return array of Folder Identifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> getFoldersInFolder<span class=\"br0\">&#40;<\/span><span class=\"re0\">$folderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$start<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$numberOfItems<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$recursive<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw4\">FALSE<\/span><span class=\"sy0\">,<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a> <span class=\"re0\">$folderNameFilterCallbacks<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$sort<\/span> <span class=\"sy0\">=<\/span> <span class=\"st_h\">''<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$sortRev<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw4\">FALSE<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">getFoldersInFolder<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$folderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$start<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$numberOfItems<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$recursive<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$folderNameFilterCallbacks<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$sort<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$sortRev<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Returns the number of files inside the specified path<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string &#160;$folderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param boolean $recursive<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param array &#160; $filenameFilterCallbacks callbacks for filtering the items<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return integer Number of files in folder<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> countFilesInFolder<span class=\"br0\">&#40;<\/span><span class=\"re0\">$folderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$recursive<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw4\">FALSE<\/span><span class=\"sy0\">,<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a> <span class=\"re0\">$filenameFilterCallbacks<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">countFilesInFolder<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$folderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$recursive<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$filenameFilterCallbacks<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Returns the number of folders inside the specified path<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string &#160;$folderIdentifier<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param boolean $recursive<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param array &#160; $folderNameFilterCallbacks callbacks for filtering the items<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return integer Number of folders in folder<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> countFoldersInFolder<span class=\"br0\">&#40;<\/span><span class=\"re0\">$folderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$recursive<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw4\">FALSE<\/span><span class=\"sy0\">,<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a> <span class=\"re0\">$folderNameFilterCallbacks<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">driver<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">countFoldersInFolder<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$folderIdentifier<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$recursive<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$folderNameFilterCallbacks<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n<span class=\"br0\">&#125;<\/span>\n<span class=\"sy1\">?&gt;<\/span><\/pre><\/td><\/tr><\/tbody><\/table><\/div>\n <\/div>\n <div class=\"phork-meta\">\n  <a href=\"https:\/\/p.cweiske.de\/194\/rev-raw\/36ae457f61cc61b7d6f39633b17f8318f2ea282b\/cache.php\" style=\"float: right\">view raw source<\/a>\n  <a href=\"https:\/\/p.cweiske.de\/194#cache.php\">cache.php<\/a>\n <\/div>\n<\/div>\n<\/div>\n"}
