Exemplo n.º 1
0
 /**
  * Save the library settings which have been done on the overview page
  * @param \Cx\Core\View\Model\Entity\Theme $theme the template object
  */
 protected function saveLibrarySettings($theme)
 {
     global $_ARRAYLANG;
     $libraries = \JS::getConfigurableLibraries();
     // create dependencies array with provided data from form
     $dependencies = array();
     foreach ($_POST['libraryVersion'] as $libraryName => $version) {
         if (empty($version)) {
             continue;
         }
         $dependencies[$libraryName] = array('name' => $libraryName, 'type' => 'lib', 'minimumVersionNumber' => $version, 'maximumVersionNumber' => $version);
     }
     $automaticallyModifiedDependencySettings = array();
     // check for dependencies of configured libraries
     foreach ($dependencies as $dependency) {
         $dependencyIssue = false;
         $libraryInfo = $libraries[$dependency['name']]['versions'][$dependency['minimumVersionNumber']];
         if (isset($libraryInfo['dependencies'])) {
             // loop through dependencies which are required for the activated library
             foreach ($libraryInfo['dependencies'] as $dependencyName => $dependencyVersionRegex) {
                 // dependency not configured or needed version not matching regex
                 if (!isset($dependencies[$dependencyName]) || !preg_match('/' . $dependencyVersionRegex . '/', $dependencies[$dependencyName]['minimumVersionNumber'])) {
                     $dependencyIssue = true;
                 }
                 if ($dependencyIssue) {
                     // find matching library version
                     foreach ($libraries[$dependencyName]['versions'] as $version => $files) {
                         if (preg_match('/' . $dependencyVersionRegex . '/', $version)) {
                             $dependencies[$dependencyName] = array('name' => $dependencyName, 'type' => 'lib', 'minimumVersionNumber' => $version, 'maximumVersionNumber' => $version);
                             $automaticallyModifiedDependencySettings[] = $dependencyName;
                             break;
                         }
                     }
                 }
             }
         }
     }
     if (!empty($automaticallyModifiedDependencySettings)) {
         \Message::add(sprintf($_ARRAYLANG['TXT_THEME_LIBRARY_AUTOMATICALLY_ADJUSTED'], implode(', ', $automaticallyModifiedDependencySettings)), \Message::CLASS_ERROR);
     }
     // save component.yaml file
     $theme->setDependencies($dependencies);
     try {
         $this->themeRepository->saveComponentData($theme);
     } catch (\Cx\Lib\FileSystem\FileSystemException $e) {
         \Message::add($_ARRAYLANG['TXT_COULD_NOT_WRITE_TO_FILE'] . ': ' . '/' . $theme->getFoldername() . '/component.yml', \Message::CLASS_ERROR);
     }
 }