Skip to content
Snippets Groups Projects
CoreController.php 3.66 KiB
Newer Older
  • Learn to ignore specific revisions
  • <?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 Core Controller
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
     * @ingroup Core
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
    namespace SrcCore\controllers;
    
    use Group\models\ServiceModel;
    
    Damien's avatar
    Damien committed
    use Slim\Http\Request;
    use Slim\Http\Response;
    
    Damien's avatar
    Damien committed
    use SrcCore\models\CoreConfigModel;
    
    Damien's avatar
    Damien committed
    use User\models\UserModel;
    
    Damien's avatar
    Damien committed
    require_once 'core/class/Url.php';
    
    
    Damien's avatar
    Damien committed
        public function initialize(Request $request, Response $response)
    
        {
            $aInit = [];
            $aInit['coreUrl'] = str_replace('rest/', '', \Url::coreurl());
    
            $aInit['applicationName'] = CoreConfigModel::getApplicationName();
    
    Damien's avatar
    Damien committed
            $aInit['lang'] = CoreConfigModel::getLanguage();
    
            $aInit['user'] = UserModel::getByUserId(['userId' => $GLOBALS['userId'], 'select' => ['id', 'user_id', 'firstname', 'lastname']]);
            $aInit['user']['groups'] = UserModel::getGroupsByUserId(['userId' => $GLOBALS['userId']]);
    
    Damien's avatar
    Damien committed
            $aInit['user']['entities'] = UserModel::getEntitiesById(['userId' => $GLOBALS['userId']]);
    
    
            $aInit['scriptsToinject'] = [];
    
            $scriptsToInject = scandir('dist');
    
            foreach ($scriptsToInject as $key => $value) {
    
                if (strstr($value, 'inline.') !== false || strstr($value, 'main.') !== false || strstr($value, 'vendor.') !== false || strstr($value, 'scripts.') !== false) {
    
                    if (strstr($value, '.js.map') === false) {
                        $aInit['scriptsToinject'][] = $value;
    
            if (!empty($aInit['scriptsToinject'][3]) && strstr($aInit['scriptsToinject'][3], 'vendor.') !== false) {
    
                $tmp = $aInit['scriptsToinject'][1];
                $aInit['scriptsToinject'][1] = $aInit['scriptsToinject'][2];
                $aInit['scriptsToinject'][2] = $tmp;
            }
    
    
    Damien's avatar
    Damien committed
        public static function getAdministration(Request $request, Response $response)
    
    Damien's avatar
    Damien committed
        {
    
    Damien's avatar
    Damien committed
            if ($GLOBALS['userId'] == 'superadmin') {
    
                $administration                    = [];
                $administrationMenu                = ServiceModel::getApplicationAdministrationMenuByXML();
                $administrationApplication         = ServiceModel::getApplicationAdministrationServicesByXML();
                $administrationModule              = ServiceModel::getModulesAdministrationServicesByXML();
    
                $administration['administrations'] = array_merge_recursive($administrationApplication, $administrationModule);
    
                $administration                    = array_merge_recursive($administration, $administrationMenu);
    
    Damien's avatar
    Damien committed
            } else {
    
    Damien's avatar
    Damien committed
                $administration = ServiceModel::getAdministrationServicesByUserId(['userId' => $GLOBALS['userId']]);
    
    Damien's avatar
    Damien committed
            }
    
            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']);
    
    Damien's avatar
    Damien committed
            } 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');
        }