From 9cda8abdedd6cd688392041a31750285577de9d1 Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Tue, 12 Jun 2018 18:13:16 +0200 Subject: [PATCH] FEAT #7737 Jnlp Controller --- composer.json | 51 +-- modules/content_management/js/functions.js | 142 -------- rest/index.php | 5 +- .../controllers/JnlpController.php | 310 ++++++++++++++++++ src/core/controllers/CoreController.php | 21 -- vendor/composer/ClassLoader.php | 10 +- vendor/composer/LICENSE | 2 +- vendor/composer/autoload_psr4.php | 1 + vendor/composer/autoload_static.php | 5 + 9 files changed, 353 insertions(+), 194 deletions(-) create mode 100644 src/app/contentManagement/controllers/JnlpController.php diff --git a/composer.json b/composer.json index 30c4f6de8d9..472a3267a22 100755 --- a/composer.json +++ b/composer.json @@ -1,32 +1,33 @@ { "autoload": { "psr-4": { - "SrcCore\\" : "src/core/", - "Action\\" : "src/app/action/", - "Attachment\\" : "src/app/attachment/", - "Basket\\" : "src/app/basket/", - "Contact\\" : "src/app/contact/", - "Docserver\\" : "src/app/docserver/", - "Doctype\\" : "src/app/doctype/", - "Entity\\" : "src/app/entity/", - "Folder\\" : "src/app/folder/", - "Group\\" : "src/app/group/", - "History\\" : "src/app/history/", - "Link\\" : "src/app/link/", - "Note\\" : "src/app/note/", - "Notification\\" : "src/app/notification/", - "Parameter\\" : "src/app/parameter/", - "Priority\\" : "src/app/priority/", - "Report\\" : "src/app/report/", - "Resource\\" : "src/app/resource/", - "SignatureBook\\" : "src/app/signatureBook/", - "Status\\" : "src/app/status/", - "Template\\" : "src/app/template/", - "User\\" : "src/app/user/", - "VersionUpdate\\" : "src/app/versionUpdate/", + "SrcCore\\" : "src/core/", + "Action\\" : "src/app/action/", + "Attachment\\" : "src/app/attachment/", + "Basket\\" : "src/app/basket/", + "Contact\\" : "src/app/contact/", + "ContentManagement\\" : "src/app/contentManagement/", + "Docserver\\" : "src/app/docserver/", + "Doctype\\" : "src/app/doctype/", + "Entity\\" : "src/app/entity/", + "Folder\\" : "src/app/folder/", + "Group\\" : "src/app/group/", + "History\\" : "src/app/history/", + "Link\\" : "src/app/link/", + "Note\\" : "src/app/note/", + "Notification\\" : "src/app/notification/", + "Parameter\\" : "src/app/parameter/", + "Priority\\" : "src/app/priority/", + "Report\\" : "src/app/report/", + "Resource\\" : "src/app/resource/", + "SignatureBook\\" : "src/app/signatureBook/", + "Status\\" : "src/app/status/", + "Template\\" : "src/app/template/", + "User\\" : "src/app/user/", + "VersionUpdate\\" : "src/app/versionUpdate/", - "Convert\\" : "modules/convert/", - "Sendmail\\" : "modules/sendmail/" + "Convert\\" : "modules/convert/", + "Sendmail\\" : "modules/sendmail/" } }, "require": { diff --git a/modules/content_management/js/functions.js b/modules/content_management/js/functions.js index 7d266e22f9d..3e948303a54 100755 --- a/modules/content_management/js/functions.js +++ b/modules/content_management/js/functions.js @@ -13,153 +13,11 @@ function loadApplet(url, value) } } -//applet send a message (error) to Maarch -function sendAppletMsg(theMsg) -{ - //theMsg = 'erreur!'; - //console.log(window.opener.$('divErrorAttachment')); - - var error = /^ERREUR/.test(theMsg); - if (window.opener.$('divErrorAttachment')) { - if(error){ - window.opener.$('divErrorAttachment').innerHTML = theMsg; - window.opener.$('divInfoAttachment').setStyle({display: 'none'}); - window.opener.$('divErrorAttachment').setStyle({display: 'inline'}); - window.close(); - }else{ - window.opener.$('divInfoAttachment').innerHTML = theMsg; - window.opener.$('divInfoAttachment').setStyle({display: 'inline'}); - window.opener.$('divErrorAttachment').setStyle({display: 'none'}); - } - }else{ - if(error){ - window.opener.$('main_info').setStyle({display: 'none'}); - window.opener.$('main_error').setStyle({display: 'inline'}); - window.opener.$('main_error').innerHTML = theMsg; - window.close(); - }else{ - window.opener.$('main_info').setStyle({display: 'inline'}); - window.opener.$('main_error').setStyle({display: 'none'}); - window.opener.$('main_info').innerHTML = theMsg; - } - } - //$('divError').innerHTML = theMsg; - //$('divError').setStyle({display: 'inline'}); - //window.close(); - /*if (theMsg != '' && theMsg != ' ') { - if (window.opener.$('divError')) { - window.opener.$('divError').innerHTML = theMsg; - } else if ($('divError')) { - $('divError').innerHTML = theMsg; - } - }*/ -} - -//destroy the modal of the applet and launch an ajax script -function endOfApplet(objectType, theMsg) -{ - console.log('endOfAppletendOfAppletendOfApplet'); - if (window.opener.$('add')) { - window.opener.$('add').setStyle({display: 'inline'}); - } else if (window.opener.$('edit')) { - window.opener.$('edit').setStyle({display: 'inline'}); - } - - //if (window.opener.$('edit') && objectType != 'transmission') { - // window.opener.$('edit').setStyle({display: 'inline'}); - //} - - $('divError').innerHTML = theMsg; - if (objectType == 'template' || objectType == 'templateStyle' || objectType == 'attachmentVersion' || objectType == 'attachmentUpVersion' || objectType == 'transmission') { - endTemplate(); - } else if (objectType == 'resource') { - endResource(); - } else if (objectType == 'attachmentFromTemplate') { - endAttachmentFromTemplate(); - } else if (objectType == 'attachment') { - endAttachment(); - } else if (objectType == 'outgoingMail') { - endAttachmentOutgoing(); - } - //destroyModal('CMApplet'); -} - -function endAttachmentFromTemplate() -{ - //window.alert('template ?'); - if(window.opener.$('list_attach')) { - window.opener.$('list_attach').src = window.opener.$('list_attach').src; - } - window.close(); -} - function endAttachment() { window.close(); } -function endTemplate() -{ - //window.alert('template ?'); - window.close(); -} - -function endAttachmentOutgoing() -{ - console.log('Fin nouveau spontane'); - - - window.close(); - -} - -//reload the list div and the document if necessary -function endResource() -{ - //window.alert('resource ?'); - showDivEnd( - 'loadVersions', - 'nbVersions', - 'createVersion', - 'index.php?display=false&module=content_management&page=list_versions' - ); - if (window.opener.$('viewframe')) { - window.opener.$('viewframe').src = window.opener.$('viewframe').src; - } else if (window.opener.$('viewframevalid')) { - window.opener.$('viewframevalid').src = window.opener.$('viewframevalid').src; - } - - //window.close(); -} - -function showDivEnd(divName, spanNb, divCreate, path_manage_script) -{ - new Ajax.Request(path_manage_script, - { - method:'post', - parameters: {res_id : 'test'}, - onSuccess: function(answer){ - eval("response = "+answer.responseText); - if(response.status == 0 || response.status == 1) { - if(response.status == 0) { - window.opener.$(divName).innerHTML = response.list; - window.opener.$(spanNb).innerHTML = response.nb; - window.opener.$(divCreate).innerHTML = response.create; - window.close(); - } else { - window.opener.$(divName).innerHTML = 'error = 1 : ' . response.error_txt; - } - } else { - window.opener.$(divName).innerHTML = 'error > 1 : ' . response.error_txt; - try { - //window.opener.$(divName).innerHTML = response.error_txt; - } - catch(e){} - } - } - }); -} - function showDiv(divName, spanNb, divCreate, path_manage_script) { new Ajax.Request(path_manage_script, diff --git a/rest/index.php b/rest/index.php index fb1bb15cbeb..977cedbc734 100755 --- a/rest/index.php +++ b/rest/index.php @@ -154,8 +154,9 @@ $app->get('/histories', \History\controllers\HistoryController::class . ':get'); $app->get('/histories/users/{userSerialId}', \History\controllers\HistoryController::class . ':getByUserId'); //Jnlp -$app->post('/jnlp', \SrcCore\controllers\CoreController::class . ':generateJnlp'); -$app->get('/jnlp', \SrcCore\controllers\CoreController::class . ':renderJnlp'); +$app->post('/jnlp', \ContentManagement\controllers\JnlpController::class . ':generateJnlp'); +$app->get('/jnlp', \ContentManagement\controllers\JnlpController::class . ':renderJnlp'); +$app->post('/jnlp/{userUniqueId}', \ContentManagement\controllers\JnlpController::class . ':processJnlp'); //Links $app->get('/links/resId/{resId}', \Link\controllers\LinkController::class . ':getByResId'); diff --git a/src/app/contentManagement/controllers/JnlpController.php b/src/app/contentManagement/controllers/JnlpController.php new file mode 100644 index 00000000000..bc8b951a95d --- /dev/null +++ b/src/app/contentManagement/controllers/JnlpController.php @@ -0,0 +1,310 @@ +<?php + +/** + * Copyright Maarch since 2008 under licence GPLv3. + * See LICENCE.txt file at the root folder for more details. + * This file is part of Maarch software. + */ + +/** + * @brief Jnlp Controller + * + * @author dev@maarch.org + */ + +namespace ContentManagement\controllers; + + +use Docserver\models\DocserverModel; +use Slim\Http\Request; +use Slim\Http\Response; +use SrcCore\models\CoreConfigModel; +use SrcCore\models\DatabaseModel; +use SrcCore\models\ValidatorModel; +use Template\models\TemplateModel; + +require_once 'core/class/Url.php'; + +class JnlpController +{ + public function generateJnlp(Request $request, Response $response) + { + $data = $request->getParams(); + + $coreUrl = str_replace('rest/', '', \Url::coreurl()); + $tmpPath = CoreConfigModel::getTmpPath(); + $appName = CoreConfigModel::getApplicationName(); + $userUniqueId = DatabaseModel::uniqueId(); + $jnlpFileName = $GLOBALS['userId'] . '_maarchCM_' . $userUniqueId; + $jnlpFileNameExt = $jnlpFileName . '.jnlp'; + + $allCookies = ''; + foreach($_COOKIE as $key => $value) { + if (!empty($allCookies)) { + $allCookies .= '; '; + } + $allCookies .= $key . '=' . str_replace(' ', '+', $value); + } + + $loadedXml = CoreConfigModel::getXmlLoaded(['path' => 'modules/content_management/xml/config.xml']); + $jarPath = $coreUrl; + if ($loadedXml && !empty((string)$loadedXml->CONFIG[0]->jar_path)) { + $jarPath = (string)$loadedXml->CONFIG[0]->jar_path; + } + + $jnlpDocument = new \DomDocument('1.0', 'UTF-8'); + + $tagJnlp = $jnlpDocument->createElement('jnlp'); + + $newAttribute = $jnlpDocument->createAttribute('spec'); + $newAttribute->value = '6.0+'; + $tagJnlp->appendChild($newAttribute); + + $newAttribute = $jnlpDocument->createAttribute('codebase'); + $newAttribute->value = $tmpPath; + $tagJnlp->appendChild($newAttribute); + + $tagInformation = $jnlpDocument->createElement('information'); + $tagTitle = $jnlpDocument->createElement('title', 'Editeur de modèle de document'); + $tagVendor = $jnlpDocument->createElement('vendor', 'MAARCH'); + $tagOffline = $jnlpDocument->createElement('offline-allowed'); + $tagSecurity = $jnlpDocument->createElement('security'); + $tagPermissions = $jnlpDocument->createElement('all-permissions'); + $tagResources = $jnlpDocument->createElement('resources'); + $tagJ2se = $jnlpDocument->createElement('j2se'); + + $newAttribute = $jnlpDocument->createAttribute('version'); + $newAttribute->value = '1.6+'; + $tagJ2se->appendChild($newAttribute); + + $tagJar1 = $jnlpDocument->createElement('jar'); + $newAttribute = $jnlpDocument->createAttribute('href'); + $newAttribute->value = $coreUrl . '/modules/content_management/dist/maarchCM.jar'; + $tagJar1->appendChild($newAttribute); + $newAttribute = $jnlpDocument->createAttribute('main'); + $newAttribute->value = 'true'; + $tagJar1->appendChild($newAttribute); + + $tagJar2 = $jnlpDocument->createElement('jar'); + $newAttribute = $jnlpDocument->createAttribute('href'); + $newAttribute->value = $jarPath . '/modules/content_management/dist/lib/httpclient-4.5.2.jar'; + $tagJar2->appendChild($newAttribute); + + $tagJar3 = $jnlpDocument->createElement('jar'); + $newAttribute = $jnlpDocument->createAttribute('href'); + $newAttribute->value = $jarPath . '/modules/content_management/dist/lib/httpclient-cache-4.5.2.jar'; + $tagJar3->appendChild($newAttribute); + + $tagJar4 = $jnlpDocument->createElement('jar'); + $newAttribute = $jnlpDocument->createAttribute('href'); + $newAttribute->value = $jarPath . '/modules/content_management/dist/lib/httpclient-win-4.5.2.jar'; + $tagJar4->appendChild($newAttribute); + + $tagJar5 = $jnlpDocument->createElement('jar'); + $newAttribute = $jnlpDocument->createAttribute('href'); + $newAttribute->value = $jarPath . '/modules/content_management/dist/lib/httpcore-4.4.4.jar'; + $tagJar5->appendChild($newAttribute); + + $tagJar6 = $jnlpDocument->createElement('jar'); + $newAttribute = $jnlpDocument->createAttribute('href'); + $newAttribute->value = $jarPath . '/modules/content_management/dist/lib/plugin.jar'; + $tagJar6->appendChild($newAttribute); + + $tagJar7 = $jnlpDocument->createElement('jar'); + $newAttribute = $jnlpDocument->createAttribute('href'); + $newAttribute->value = $jarPath . '/modules/content_management/dist/lib/commons-logging-1.2.jar'; + $tagJar7->appendChild($newAttribute); + + + $tagApplication = $jnlpDocument->createElement('application-desc'); + $newAttribute = $jnlpDocument->createAttribute('main-class'); + $newAttribute->value = 'com.maarch.MaarchCM'; + $tagApplication->appendChild($newAttribute); + + $tagArg1 = $jnlpDocument->createElement('argument', $coreUrl . 'rest/jnlp/' . $userUniqueId); + $tagArg2 = $jnlpDocument->createElement('argument', $data['objectType']); + $tagArg3 = $jnlpDocument->createElement('argument', $data['table']); + $tagArg4 = $jnlpDocument->createElement('argument', $data['objectId']); + $tagArg5 = $jnlpDocument->createElement('argument', $data['uniqueId']); + + $tagArg6 = $jnlpDocument->createElement('argument', "{$appName}={$_COOKIE[$appName]}"); + $tagArg7 = $jnlpDocument->createElement('argument', htmlentities($allCookies)); + $tagArg8 = $jnlpDocument->createElement('argument', $jnlpFileName); + $tagArg9 = $jnlpDocument->createElement('argument', $GLOBALS['userId']); + $tagArg10 = $jnlpDocument->createElement('argument', 'false'); + $tagArg11 = $jnlpDocument->createElement('argument', 'false'); + + + $tagJnlp->appendChild($tagInformation); + $tagInformation->appendChild($tagTitle); + $tagInformation->appendChild($tagVendor); + $tagInformation->appendChild($tagOffline); + + $tagJnlp->appendChild($tagSecurity); + $tagSecurity->appendChild($tagPermissions); + + $tagJnlp->appendChild($tagResources); + $tagResources->appendChild($tagJ2se); + $tagResources->appendChild($tagJar1); + $tagResources->appendChild($tagJar2); + $tagResources->appendChild($tagJar3); + $tagResources->appendChild($tagJar4); + $tagResources->appendChild($tagJar5); + $tagResources->appendChild($tagJar6); + $tagResources->appendChild($tagJar7); + + $tagJnlp->appendChild($tagApplication); + $tagApplication->appendChild($tagArg1); + $tagApplication->appendChild($tagArg2); + $tagApplication->appendChild($tagArg3); + $tagApplication->appendChild($tagArg4); + $tagApplication->appendChild($tagArg5); + $tagApplication->appendChild($tagArg6); + $tagApplication->appendChild($tagArg7); + $tagApplication->appendChild($tagArg8); + $tagApplication->appendChild($tagArg9); + $tagApplication->appendChild($tagArg10); + $tagApplication->appendChild($tagArg11); + + $jnlpDocument->appendChild($tagJnlp); + + $jnlpDocument->save($tmpPath . $jnlpFileNameExt); + + fopen($tmpPath . $jnlpFileName . '.lck', 'w+'); + + return $response->withJson(['generatedJnlp' => $jnlpFileNameExt, 'userUniqueId' => $userUniqueId]); + } + + public function renderJnlp(Request $request, Response $response) + { + $data = $request->getQueryParams(); + + if (explode('.', $data['fileName'])[1] != 'jnlp') { + return $response->withStatus(403)->withJson(['errors' => 'File extension forbidden']); + } elseif (strpos($data['fileName'], "{$GLOBALS['userId']}_maarchCM_") === false) { + return $response->withStatus(403)->withJson(['errors' => 'File name forbidden']); + } + + $tmpPath = CoreConfigModel::getTmpPath(); + $jnlp = file_get_contents($tmpPath . $data['fileName']); + if ($jnlp === false) { + return $response->withStatus(404)->withJson(['errors' => 'Jnlp file not found on ' . $tmpPath]); + } + + $response->write($jnlp); + + return $response->withHeader('Content-Type', 'application/x-java-jnlp-file'); + } + + public function processJnlp(Request $request, Response $response, array $aArgs) + { + $data = $request->getParams(); + + $tmpPath = CoreConfigModel::getTmpPath(); + + if ($data['action'] == 'editObject') { + if ($data['objectType'] == 'templateStyle') { + $explodeFile = explode('.', $data['objectId']); + $ext = $explodeFile[count($explodeFile) - 1]; + $newFileOnTmp = "tmp_file_{$GLOBALS['userId']}_{$aArgs['userUniqueId']}.{$ext}"; + + $pathToCopy = $data['objectId']; + } elseif ($data['objectType'] == 'template') { + $docserver = DocserverModel::getCurrentDocserver(['typeId' => 'TEMPLATES', 'collId' => 'templates', 'select' => ['path_template']]); + $template = TemplateModel::getById(['id' => $data['objectId'], 'select' => ['template_path', 'template_file_name']]); + + $explodeFile = explode('.', $template['template_file_name']); + $ext = $explodeFile[count($explodeFile) - 1]; + $newFileOnTmp = "tmp_file_{$GLOBALS['userId']}_{$aArgs['userUniqueId']}.{$ext}"; + + $pathToCopy = $docserver['path_template'] . str_replace('#', DIRECTORY_SEPARATOR, $template['template_path']) . $template['template_file_name']; + } else { + $xmlResponse = JnlpController::generateResponse(['type' => 'ERROR', 'data' => ['ERROR' => 'Wrong objectType']]); + $response->write($xmlResponse); + return $response->withHeader('Content-Type', 'application/xml'); + } + + if (!copy($pathToCopy, $tmpPath . $newFileOnTmp)) { + $xmlResponse = JnlpController::generateResponse(['type' => 'ERROR', 'data' => ['ERROR' => "Failed to copy on {$tmpPath} : {$pathToCopy}"]]); + $response->write($xmlResponse); + return $response->withHeader('Content-Type', 'application/xml'); + } + + $fileContent = file_get_contents($tmpPath . $newFileOnTmp, FILE_BINARY); + + $result = [ + 'STATUS' => 'ok', + 'OBJECT_TYPE' => $data['objectType'], + 'OBJECT_TABLE' => $data['objectTable'], + 'OBJECT_ID' => $data['objectId'], + 'UNIQUE_ID' => $data['uniqueId'], + 'APP_PATH' => 'start', + 'FILE_CONTENT' => base64_encode($fileContent), + 'FILE_EXTENSION' => $ext, + 'ERROR' => '', + 'END_MESSAGE' => '' + ]; + $xmlResponse = JnlpController::generateResponse(['type' => 'SUCCESS', 'data' => $result]); + + } elseif ($data['action'] == 'saveObject') { + if (empty($data['fileContent']) || empty($data['fileExtension'])) { + $xmlResponse = JnlpController::generateResponse(['type' => 'ERROR', 'data' => ['ERROR' => 'File content or file extension empty']]); + $response->write($xmlResponse); + return $response->withHeader('Content-Type', 'application/xml'); + } + + $encodedFileContent = str_replace(' ', '+', $data['fileContent']); + $ext = str_replace(["\\", "/", '..'], '', $data['fileExtension']); + $fileContent = base64_decode($encodedFileContent); + $fileOnTmp = "tmp_file_{$GLOBALS['userId']}_{$aArgs['userUniqueId']}.{$ext}"; + + $file = fopen($tmpPath . $fileOnTmp, 'w'); + fwrite($file, $fileContent); + fclose($file); + + if (!empty($data['step']) && $data['step'] == 'end') { + unlink($tmpPath . $GLOBALS['userId'] . '_maarchCM_' . $aArgs['userUniqueId'] . '.lck'); + } + + $result = ['END_MESSAGE' => 'Update ok']; + $xmlResponse = JnlpController::generateResponse(['type' => 'SUCCESS', 'data' => $result]); + } else { + $result = [ + 'STATUS' => 'ko', + 'OBJECT_TYPE' => $data['objectType'], + 'OBJECT_TABLE' => $data['objectTable'], + 'OBJECT_ID' => $data['objectId'], + 'UNIQUE_ID' => $data['uniqueId'], + 'APP_PATH' => 'start', + 'FILE_CONTENT' => '', + 'FILE_EXTENSION' => '', + 'ERROR' => 'Missing parameters', + 'END_MESSAGE' => '' + ]; + $xmlResponse = JnlpController::generateResponse(['type' => 'ERROR', 'data' => $result]); + } + + $response->write($xmlResponse); + + return $response->withHeader('Content-Type', 'application/xml'); + } + + private static function generateResponse(array $aArgs) + { + ValidatorModel::notEmpty($aArgs, ['type', 'data']); + ValidatorModel::stringType($aArgs, ['type']); + ValidatorModel::arrayType($aArgs, ['data']); + + $response = new \DomDocument('1.0', 'UTF-8'); + + $tagRoot = $response->createElement($aArgs['type']); + $response->appendChild($tagRoot); + + foreach ($aArgs['data'] as $key => $value) { + $tag = $response->createElement($key, $value); + $tagRoot->appendChild($tag); + } + + return $response->saveXML(); + } +} diff --git a/src/core/controllers/CoreController.php b/src/core/controllers/CoreController.php index 0d3c26a644a..b69475ed116 100644 --- a/src/core/controllers/CoreController.php +++ b/src/core/controllers/CoreController.php @@ -73,25 +73,4 @@ class CoreController return $response->withJson($administration); } - - public function renderJnlp(Request $request, Response $response) - { - $data = $request->getQueryParams(); - - if (explode('.', $data['fileName'])[1] != 'jnlp') { - return $response->withStatus(403)->withJson(['errors' => 'File extension forbidden']); - } elseif (strpos($data['fileName'], "{$GLOBALS['userId']}_maarchCM_") === false) { - return $response->withStatus(403)->withJson(['errors' => 'File name forbidden']); - } - - $tmpPath = CoreConfigModel::getTmpPath(); - $jnlp = file_get_contents($tmpPath . $data['fileName']); - if ($jnlp === false) { - return $response->withStatus(404)->withJson(['errors' => 'Jnlp file not found on ' . $tmpPath]); - } - - $response->write($jnlp); - - return $response->withHeader('Content-Type', 'application/x-java-jnlp-file'); - } } diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php index 4626994fd4d..2c72175e772 100644 --- a/vendor/composer/ClassLoader.php +++ b/vendor/composer/ClassLoader.php @@ -374,9 +374,13 @@ class ClassLoader $first = $class[0]; if (isset($this->prefixLengthsPsr4[$first])) { - foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) { - if (0 === strpos($class, $prefix)) { - foreach ($this->prefixDirsPsr4[$prefix] as $dir) { + $subPath = $class; + while (false !== $lastPos = strrpos($subPath, '\\')) { + $subPath = substr($subPath, 0, $lastPos); + $search = $subPath.'\\'; + if (isset($this->prefixDirsPsr4[$search])) { + foreach ($this->prefixDirsPsr4[$search] as $dir) { + $length = $this->prefixLengthsPsr4[$first][$search]; if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) { return $file; } diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE index 1a28124886d..f27399a042d 100644 --- a/vendor/composer/LICENSE +++ b/vendor/composer/LICENSE @@ -1,5 +1,5 @@ -Copyright (c) 2016 Nils Adermann, Jordi Boggiano +Copyright (c) Nils Adermann, Jordi Boggiano Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index 97cb3fbc2e6..fe1aa85c5ac 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -41,6 +41,7 @@ return array( 'Doctype\\' => array($baseDir . '/src/app/doctype'), 'Docserver\\' => array($baseDir . '/src/app/docserver'), 'Convert\\' => array($baseDir . '/modules/convert'), + 'ContentManagement\\' => array($baseDir . '/src/app/contentManagement'), 'Contact\\' => array($baseDir . '/src/app/contact'), 'Clue\\StreamFilter\\' => array($vendorDir . '/clue/stream-filter/src'), 'Buzz\\' => array($vendorDir . '/kriswallsmith/buzz/lib/Buzz'), diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 27fa9de5a0a..b6e744d4669 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -97,6 +97,7 @@ class ComposerStaticInit3cf41326f2ce1ccc88c4676c4e39ea47 'C' => array ( 'Convert\\' => 8, + 'ContentManagement\\' => 18, 'Contact\\' => 8, 'Clue\\StreamFilter\\' => 18, ), @@ -254,6 +255,10 @@ class ComposerStaticInit3cf41326f2ce1ccc88c4676c4e39ea47 array ( 0 => __DIR__ . '/../..' . '/modules/convert', ), + 'ContentManagement\\' => + array ( + 0 => __DIR__ . '/../..' . '/src/app/contentManagement', + ), 'Contact\\' => array ( 0 => __DIR__ . '/../..' . '/src/app/contact', -- GitLab