Skip to content
Snippets Groups Projects
CoreController.php 6.59 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
    namespace SrcCore\controllers;
    
    Damien's avatar
    Damien committed
    use Group\controllers\ServiceController;
    
    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;
    
    use SrcCore\models\ValidatorModel;
    
    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['coreUrl']            = str_replace('rest/', '', \Url::coreurl());
            $aInit['applicationName']    = CoreConfigModel::getApplicationName();
    
            $aInit['applicationVersion'] = CoreConfigModel::getApplicationVersion();
    
            $aInit['lang']               = CoreConfigModel::getLanguage();
            $aInit['user']               = UserModel::getByLogin(['login' => $GLOBALS['userId'], 'select' => ['id', 'user_id', 'firstname', 'lastname']]);
            $aInit['customLanguage']     = CoreConfigModel::getCustomLanguage(['lang' => $aInit['lang']]);
    
            $aInit['scriptsToinject'] = [];
    
            $aInit['scriptsInjected'] = [];
    
    
            $scriptsToInject = [];
            $scripts = scandir('dist');
            foreach ($scripts as $value) {
    
    Damien's avatar
    Damien committed
                if (strstr($value, 'runtime.') !== false || strstr($value, 'main.') !== false || strstr($value, 'vendor.') !== false || strstr($value, 'scripts.') !== false) {
    
                    if (strstr($value, '.js.map') === false) {
    
                        $scriptName          = explode(".", $value);
                        $modificationDate    = filemtime(realpath("dist/" . $value));
                        $idArrayTime         = $scriptName[0] . "." . pathinfo($value, PATHINFO_EXTENSION);
    
                        if (!isset($aInit['scriptsInjected'][$idArrayTime]) || $modificationDate > $aInit['scriptsInjected'][$idArrayTime][0]) {
                            if (isset($aInit['scriptsInjected'][$idArrayTime])) {
                                array_pop($scriptsToInject);
                            }
                            $aInit['scriptsInjected'][$idArrayTime][0] = filemtime(realpath("dist/" . $value));
                            $aInit['scriptsInjected'][$idArrayTime][1] = $value;
    
                            $scriptsToInject[] = $value;
                        }
    
            unset($aInit['scriptsInjected']);
    
            for ($i = 0; $i < count($scriptsToInject); $i++) {
                foreach ($scriptsToInject as $value) {
                    if ($i == 0 && strstr($value, 'scripts.') !== false) {
                        $aInit['scriptsToinject'][] = $value;
    
                    } elseif ($i == 1 && strstr($value, 'main.') !== false) {
    
                        $aInit['scriptsToinject'][] = $value;
    
                    } elseif ($i == 2 && strstr($value, 'runtime.') !== false) {
    
                        $aInit['scriptsToinject'][] = $value;
    
                    } elseif ($i == 3 && strstr($value, 'vendor.') !== false) {
    
                        $aInit['scriptsToinject'][] = $value;
                    }
                }
    
    Damien's avatar
    Damien committed
        public function getHeader(Request $request, Response $response)
        {
    
    Damien's avatar
    Damien committed
            $user = UserModel::getByLogin(['login' => $GLOBALS['userId'], 'select' => ['id', 'user_id', 'firstname', 'lastname']]);
    
            $user['groups'] = UserModel::getGroupsByLogin(['login' => $GLOBALS['userId']]);
    
            $user['entities'] = UserModel::getEntitiesByLogin(['login' => $GLOBALS['userId']]);
    
    //        if ($GLOBALS['userId'] == 'superadmin') {
    //            $menu = ServiceController::getServicesMenu();
    //        } else {
    //            $menu = ServiceController::getMenuServicesByUserId(['userId' => $GLOBALS['userId']]);
    //        }
    
    
    Damien's avatar
    Damien committed
            if ($GLOBALS['userId'] == 'superadmin') {
                $menu = ServiceModel::getApplicationServicesByXML(['type' => 'menu']);
                $menuModules = ServiceModel::getModulesServicesByXML(['type' => 'menu']);
                $menu = array_merge($menu, $menuModules);
            } else {
    
                $menu = ServiceController::getMenuServicesByUserIdByXml(['userId' => $GLOBALS['userId']]);
    
            return $response->withJson([
                'user'      => $user,
                'menu'      => $menu
            ]);
        }
    
        public function getShortcuts(Request $request, Response $response)
        {
            $shortcuts = [
                ['id' => 'home']
            ];
    
    
            if (ServiceModel::hasService2(['serviceId' => 'admin', 'userId' => $GLOBALS['id']])) {
    
                $shortcuts[] = ['id' => 'administration'];
    
            if (ServiceModel::hasService2(['serviceId' => 'adv_search_mlb', 'userId' => $GLOBALS['id']])) {
    
                $shortcuts[] = ['id' => 'search'];
    
            $userGroups = UserModel::getGroupsByLogin(['login' => $GLOBALS['userId']]);
    
            foreach ($userGroups as $group) {
    
                if ($group['can_index']) {
    
                    $indexingGroups[] = ['id' => $group['id'], 'label' => $group['group_desc']];
    
    Damien's avatar
    Damien committed
            }
    
            if (!empty($indexingGroups)) {
                $shortcuts[] = [
                    'id'        => 'indexing',
                    'groups'    => $indexingGroups
                ];
            }
    
    Damien's avatar
    Damien committed
    
    
            return $response->withJson(['shortcuts' => $shortcuts]);
    
    Damien's avatar
    Damien committed
        }
    
    
        public function getAdministration(Request $request, Response $response)
    
    Damien's avatar
    Damien committed
            if (!ServiceModel::hasService(['id' => 'admin', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'menu'])) {
                return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']);
            }
    
    
    Damien's avatar
    Damien committed
            if ($GLOBALS['userId'] == 'superadmin') {
    
                $administration                    = [];
    
    Damien's avatar
    Damien committed
                $administrationApplication         = ServiceModel::getApplicationServicesByXML(['type' => 'admin']);
                $administrationModule              = ServiceModel::getModulesServicesByXML(['type' => 'admin']);
    
                $administration['administrations'] = array_merge_recursive($administrationApplication, $administrationModule);
    
    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 static function setGlobals(array $args)
        {
            ValidatorModel::notEmpty($args, ['login']);
    
            ValidatorModel::stringType($args, ['login']);
    
    
            $user = UserModel::getByLogin(['login' => $args['login'], 'select' => ['id']]);
            $GLOBALS['userId'] = $args['login'];
            $GLOBALS['id'] = $user['id'];
        }