diff --git a/public/main/install/install.lib.php b/public/main/install/install.lib.php index 96e7c03266..cf0906a0c1 100644 --- a/public/main/install/install.lib.php +++ b/public/main/install/install.lib.php @@ -8,6 +8,7 @@ use Chamilo\CoreBundle\Entity\Group; use Chamilo\CoreBundle\Entity\TicketCategory; use Chamilo\CoreBundle\Entity\TicketPriority; use Chamilo\CoreBundle\Entity\TicketProject; +use Chamilo\CoreBundle\Entity\User; use Chamilo\CoreBundle\Framework\Container; use Chamilo\CoreBundle\ToolChain; use Doctrine\ORM\EntityManager; @@ -287,8 +288,6 @@ function detect_browser_language() return 'english'; } -/* FILESYSTEM RELATED FUNCTIONS */ - /** * This function checks if the given folder is writable. * @@ -372,8 +371,6 @@ function write_system_config_file($path) global $dbUsernameForm; global $dbPassForm; global $dbNameForm; - global $urlForm; - global $pathForm; global $urlAppendPath; global $languageForm; global $encryptPassForm; @@ -552,8 +549,6 @@ function get_config_param($param, $updatePath = '') return null; } -/* DATABASE RELATED FUNCTIONS */ - /** * Gets a configuration parameter from the database. Returns returns null on failure. * @@ -609,8 +604,6 @@ function connectToDatabase( return $database; } -/* DISPLAY FUNCTIONS */ - /** * This function prints class=active_step $current_step=$param. * @@ -667,7 +660,6 @@ function display_language_selection_box( } // Displaying the box. - $html = Display::select( 'language_list', $language_list, @@ -1295,17 +1287,32 @@ function displayDatabaseParameter( echo ""; if (INSTALL_TYPE_UPDATE == $installType && $displayWhenUpdate) { - echo ''.$parameterValue; + echo ''.$parameterValue; } else { - $inputType = 'dbPassForm' == $formFieldName ? 'password' : 'text'; + $inputType = 'dbPassForm' === $formFieldName ? 'password' : 'text'; //Slightly limit the length of the database prefix to avoid having to cut down the databases names later on - $maxLength = 'dbPrefixForm' == $formFieldName ? '15' : MAX_FORM_FIELD_LENGTH; + $maxLength = 'dbPrefixForm' === $formFieldName ? '15' : MAX_FORM_FIELD_LENGTH; if (INSTALL_TYPE_UPDATE == $installType) { - echo ''; + echo ''; echo api_htmlentities($parameterValue); } else { - echo '
'; try { + $migration = new Doctrine\Migrations\Migrator($config); // Execute migration! $migratedSQL = $migration->migrate($to); @@ -2920,104 +2919,12 @@ function installGroups($container, $manager) $manager->flush(); } -/** - * @param SymfonyContainer $container - */ -function installPages($container) +function installTools($container, $manager, $upgrade = false) { - error_log('installPages'); - - //$siteManager = Container::getSiteManager(); - - // Create site - /** @var Chamilo\PageBundle\Entity\Site $site */ - /*$site = $siteManager->create(); - $site->setHost('localhost'); - $site->setEnabled(true); - $site->setName('localhost'); - $site->setEnabledFrom(new \DateTime('now')); - $site->setEnabledTo(new \DateTime('+20 years')); - $site->setRelativePath(''); - $site->setIsDefault(true); - $site->setLocale('en'); - $siteManager->save($site);*/ - - // Create home page - /** @var PageManager $pageManager */ - /*$pageManager = $container->get('sonata.page.manager.page'); - $page = $pageManager->create(); - $page->setSlug('homepage'); - $page->setUrl('/'); - $page->setName('homepage'); - $page->setTitle('home'); - $page->setEnabled(true); - $page->setDecorate(1); - $page->setRequestMethod('GET|POST|HEAD|DELETE|PUT'); - $page->setTemplateCode('default'); - $page->setRouteName('homepage'); - //$page->setParent($this->getReference('page-homepage')); - $page->setSite($site); - $pageManager->save($page); - - // Create welcome page - $pageWelcome = $pageManager->create(); - $pageWelcome->setSlug('welcome'); - $pageWelcome->setUrl('/welcome'); - $pageWelcome->setName('welcome'); - $pageWelcome->setTitle('welcome'); - $pageWelcome->setEnabled(true); - $pageWelcome->setDecorate(1); - $pageWelcome->setRequestMethod('GET'); - $pageWelcome->setTemplateCode('default'); - $pageWelcome->setRouteName('welcome'); - $pageWelcome->setParent($page); - $pageWelcome->setSite($site); - $pageManager->save($pageWelcome); - - // Creating page blocks - $templateManager = $container->get('sonata.page.template_manager'); - $template = $templateManager->get('default'); - $templateContainers = $template->getContainers(); - - $containers = []; - foreach ($templateContainers as $id => $area) { - $containers[$id] = [ - 'area' => $area, - 'block' => false, - ]; - } - - // Create blocks for this page - $blockInteractor = $container->get('sonata.page.block_interactor'); - $parentBlock = null; - foreach ($containers as $id => $area) { - if (false === $area['block'] && false === $templateContainers[$id]['shared']) { - $block = $blockInteractor->createNewContainer( - [ - 'page' => $pageWelcome, - 'name' => $templateContainers[$id]['name'], - 'code' => $id, - ] - ); - - if ('content' === $id && 'Main content' == $templateContainers[$id]['name']) { - $parentBlock = $block; - } - } - }*/ - - // Create block in main content - //$block = $container->get('sonata.page.manager.block'); - /** @var \Sonata\BlockBundle\Model\Block $myBlock */ - /*$myBlock = $block->create(); - $myBlock->setType('sonata.formatter.block.formatter'); - $myBlock->setSetting('format', 'richhtml'); - $myBlock->setSetting('content', ''); - $myBlock->setSetting('rawContent', ''); - $myBlock->setSetting('template', '@SonataFormatter/Block/block_formatter.html.twig'); - $myBlock->setParent($parentBlock); - $pageWelcome->addBlocks($myBlock); - $pageManager->save($pageWelcome);*/ + error_log('installTools'); + // Install course tools (table "tool") + $toolChain = $container->get(ToolChain::class); + $toolChain->createTools($manager); } /** @@ -3027,12 +2934,9 @@ function installPages($container) */ function installSchemas($container, $manager, $upgrade = false) { + error_log('installSchemas'); $settingsManager = $container->get('chamilo.settings.manager'); - // Install course tools (table "tool") - $toolChain = $container->get(ToolChain::class); - $toolChain->createTools($manager); - $urlRepo = $container->get('Chamilo\CoreBundle\Repository\AccessUrlRepository'); $accessUrl = $urlRepo->find(1); if (!$accessUrl) { @@ -3070,46 +2974,8 @@ function upgradeWithContainer($container) installGroups($container, $manager); error_log('installGroups'); // @todo check if adminId = 1 - installSchemas($container, $manager, 1, true); - installPages($container); - fixMedia($container); -} - -function fixMedia($container) -{ - return; - error_log('fix medias'); - $pool = $container->get('sonata.media.pool'); - $contextManager = $container->get('sonata.classification.manager.context'); - $categoryManager = $container->get('sonata.media.manager.category'); - - foreach ($pool->getContexts() as $context => $contextAttrs) { - /** @var ContextInterface $defaultContext */ - $defaultContext = $contextManager->findOneBy([ - 'id' => $context, - ]); - - if (!$defaultContext) { - $defaultContext = $contextManager->create(); - $defaultContext->setId($context); - $defaultContext->setName(ucfirst($context)); - $defaultContext->setEnabled(true); - - $contextManager->save($defaultContext); - } - - $defaultCategory = $categoryManager->getRootCategory($defaultContext); - - if (!$defaultCategory) { - $defaultCategory = $categoryManager->create(); - $defaultCategory->setContext($defaultContext); - $defaultCategory->setName(ucfirst($context)); - $defaultCategory->setEnabled(true); - $defaultCategory->setPosition(0); - - $categoryManager->save($defaultCategory); - } - } + installTools($container, $manager, true); + installSchemas($container, $manager, true); } /** @@ -3249,7 +3115,6 @@ function finishInstallationWithContainer( installGroups($container, $manager); - error_log('Inserting data.sql'); // Inserting default data $data = file_get_contents($sysPath.'public/main/install/data.sql'); @@ -3323,43 +3188,34 @@ function finishInstallationWithContainer( $userManager = $container->get('Chamilo\CoreBundle\Repository\UserRepository'); $urlRepo = $container->get('Chamilo\CoreBundle\Repository\AccessUrlRepository'); + installTools($container, $manager, false); + + /** @var User $admin */ $admin = $userManager->find($adminId); // Login as admin $token = new UsernamePasswordToken( $admin, $admin->getPassword(), - "public", + 'public', $admin->getRoles() ); $container->get('security.token_storage')->setToken($token); - /*$event = new \Symfony\Component\Security\Http\Event\InteractiveLoginEvent( - $container->get('request_stack'), $token - ); - $container->get('event_dispatcher')->dispatch('security.interactive_login', $event);*/ - + $userManager->addUserToResourceNode($adminId, $adminId); + $userManager->addUserToResourceNode($anonId, $adminId); + $manager->flush(); installSchemas($container, $manager, false); - - error_log('Adding access url as a node'); - $accessUrl = $urlRepo->find(1); + UrlManager::add_user_to_url($adminId, $adminId); + UrlManager::add_user_to_url($anonId, $adminId); + $branch = new BranchSync(); $branch->setBranchName('localhost'); $branch->setUrl($accessUrl); $manager->persist($branch); - - - $userManager->addUserToResourceNode($adminId, $adminId); - $userManager->addUserToResourceNode($anonId, $adminId); - - $urlRepo->addResourceNode($accessUrl, $admin); - - UrlManager::add_user_to_url($adminId, 1); - UrlManager::add_user_to_url($anonId, 1); - $manager->flush(); // Set default language @@ -3385,7 +3241,6 @@ function finishInstallationWithContainer( lockSettings(); updateDirAndFilesPermissions(); - //fixMedia($container); } /** diff --git a/src/CoreBundle/Entity/Listener/ResourceListener.php b/src/CoreBundle/Entity/Listener/ResourceListener.php index e0689fe972..de33050d8c 100644 --- a/src/CoreBundle/Entity/Listener/ResourceListener.php +++ b/src/CoreBundle/Entity/Listener/ResourceListener.php @@ -79,7 +79,7 @@ class ResourceListener public function prePersist(AbstractResource $resource, LifecycleEventArgs $event) { - error_log('resource listener prePersist'); + error_log('resource listener prePersist for obj: '.get_class($resource)); $em = $event->getEntityManager(); $request = $this->request; @@ -95,7 +95,7 @@ class ResourceListener $url = $this->getAccessUrl($em); $resource->getResourceNode()->setParent($url->getResourceNode()); } - + error_log('resource has already a resource node. Do nothing'); // Do not override resource node, it's already added. return true; } @@ -251,6 +251,7 @@ class ResourceListener } } + error_log('Listener end, adding resource node'); $resource->setResourceNode($resourceNode); return $resourceNode; @@ -306,8 +307,7 @@ class ResourceListener $originalBasename = \basename($resourceName, $originalExtension); $slug = sprintf('%s.%s', $this->slugify->slugify($originalBasename), $originalExtension); } - error_log($resourceName); - error_log($slug); + //error_log($resourceName); error_log($slug); $resourceNode ->setTitle($resourceName) diff --git a/src/CoreBundle/Migrations/AbstractMigrationChamilo.php b/src/CoreBundle/Migrations/AbstractMigrationChamilo.php index 40d08a8c3e..85b496f44c 100644 --- a/src/CoreBundle/Migrations/AbstractMigrationChamilo.php +++ b/src/CoreBundle/Migrations/AbstractMigrationChamilo.php @@ -6,7 +6,7 @@ namespace Chamilo\CoreBundle\Migrations; use Chamilo\CoreBundle\Entity\SettingsCurrent; use Chamilo\CoreBundle\Entity\SettingsOptions; -use Doctrine\DBAL\Migrations\AbstractMigration; +use Doctrine\Migrations\AbstractMigration; use Doctrine\ORM\EntityManager; /** diff --git a/src/CoreBundle/Repository/UserRepository.php b/src/CoreBundle/Repository/UserRepository.php index aa378b96a5..6d160e41a1 100644 --- a/src/CoreBundle/Repository/UserRepository.php +++ b/src/CoreBundle/Repository/UserRepository.php @@ -124,7 +124,8 @@ class UserRepository extends ResourceRepository implements UserLoaderInterface, // this code is only an example; the exact code will depend on // your own application needs $user->setPassword($newEncodedPassword); - $this->getEntityManager()->flush($user); + $this->getEntityManager()->persist($user); + $this->getEntityManager()->flush(); } public function getRootUser(): User @@ -183,10 +184,12 @@ class UserRepository extends ResourceRepository implements UserLoaderInterface, ->setTitle($user->getUsername()) ->setCreator($creator) ->setResourceType($this->getResourceType()) - // ->setParent($url->getResourceNode()) + //->setParent($resourceNode) ; - $this->getEntityManager()->persist($resourceNode); + $user->setResourceNode($resourceNode); + + $this->getEntityManager()->persist($resourceNode); $this->getEntityManager()->persist($user); return $resourceNode;