| #0 | PDO->__construct(mysql:adapter=Mysql;host=maria-gsssports.ile.mtl.qc.ca;dbname=gss_sports;charset=utf8, SecServ-MariaPrd-gss_sports, KtNtEnGaFaKl!McCkVxCdQnNpLjJeBp, Array([1002] => SET NAMES utf8, [3] => 2)) |
| #1 | Phalcon\Db\Adapter\Pdo->connect(Array([adapter] => Mysql, [host] => maria-gsssports.ile.mtl.qc.ca, [username] => SecServ-MariaPrd-gss_sports, [password] => KtNtEnGaFaKl!McCkVxCdQnNpLjJeBp, [dbname] => gss_sports, [charset] => utf8, [options] => Array([1002] => SET NAMES utf8))) |
| #2 | Phalcon\Db\Adapter\Pdo->__construct(Array([adapter] => Mysql, [host] => maria-gsssports.ile.mtl.qc.ca, [username] => SecServ-MariaPrd-gss_sports, [password] => KtNtEnGaFaKl!McCkVxCdQnNpLjJeBp, [dbname] => gss_sports, [charset] => utf8, [options] => Array([1002] => SET NAMES utf8))) /opt/rh/httpd24/root/var/www/html/gss-sports/app/config/Services.php (169) <?php
namespace GSS\Config;
// Phalcon defaults
use Phalcon\DI\FactoryDefault;
use Phalcon\Security;
use Phalcon\Mvc\Url;
use Phalcon\Mvc\Dispatcher;
use Phalcon\Mailer\Manager as MailerManager;
use Phalcon\Db\Adapter\Pdo\Mysql as DbAdapter;
use Phalcon\Session\Adapter\Files as SessionAdapter;
use Phalcon\Translate\Adapter\Database as TranslationAdapter;
// GSS Plugins & configs
use GSS\Models\Traduction;
use GSS\Plugins\Assets\Manager as AssetsManager;
use GSS\Plugins\Mvc\View;
use GSS\Plugins\Mvc\View\Error as ViewError;
use GSS\Plugins\Mvc\Dispatcher\Error as DispatchError;
use GSS\Plugins\Mvc\Dispatcher\Security as DispatchSecurity;
use GSS\Plugins\Mvc\Dispatcher\Camelize as DispatchCamelize;
use GSS\Plugins\Mvc\Dispatcher\Rest as DispatchRest;
use GSS\Plugins\Db\Profiler as DbProfiler;
use GSS\Plugins\Db\Logger as DbLogger;
use GSS\Plugins\Filter;
use GSS\Plugins\Tag;
use GSS\Plugins\GSS;
// Libs
use SwiftMailer\Loader as SwiftLoader;
class Services
{
public function __construct(FactoryDefault $di, Config $config = null)
{
/**
* Configuration objet pour récupérer certaines configuration
* @var \Phalcon\Config
*/
$di->setShared('config', $config);
/**
* Enregistre le service de route
* @var \GSS\Config\Router;
*/
$di->setShared('router', function() {
$router = new Router();
return $router;
});
/**
* URL component utilisé pour générer les URL dans l'application
* - Configuration du baseUri par défaut
* (au cas ou l'application serait dans un path spécifique /gss/sports/)
* @var \Phalcon\Mvc\Url
*/
$di->setShared('url', function() use ($config) {
$url = new Url();
$url->setBaseUri($config->application->baseUri);
return $url;
});
/**
* View component utilisé pour générer les vues dans l'application avec un engin spécifique
* @var \Phalcon\Mvc\View
*/
$di->setShared('view', function() use ($di, $config) {
// Get the events manager
$eventsManager = $di->getShared('eventsManager');
$error = new ViewError($di);
$eventsManager->attach('view', $error);
$view = new View();
$view->setMinify($config->minify);
$view->setViewsDir($config->application->viewsDir);
$view->registerEngines(array(
'.phtml' => 'Phalcon\Mvc\View\Engine\Php',
));
$view->setEventsManager($eventsManager);
return $view;
});
/**
* Enregistrement du dispatcher
* - Camelize l'action
* - Gestion de la Securité
* - Gestion des erreurs
* - Valeurs par défaut
*
* @var \Phalcon\Mvc\Dispatcher
*/
$di->setShared('dispatcher', function() use ($di, $config) {
// Get the events manager
$eventsManager = $di->getShared('eventsManager');
/**
* Camelize dispatcher
*/
$camelize = new DispatchCamelize($di);
$eventsManager->attach('dispatch', $camelize);
/**
* Security dispatcher
*/
$security = new DispatchSecurity($di);
$eventsManager->attach('dispatch', $security);
/**
* Rest dispatcher
*/
$rest = new DispatchRest($di);
$eventsManager->attach('dispatch', $rest);
/**
* Error dispatcher
*/
$error = new DispatchError($di);
$eventsManager->attach('dispatch', $error);
// Setup the dispatcher
$dispatcher = new Dispatcher();
// Attach the events manager
$dispatcher->setEventsManager($eventsManager);
// Setup the default namespace
$dispatcher->setDefaultNamespace('GSS\\Controllers');
return $dispatcher;
});
/**
* Profilage de certaines requêtes (SQL et APIs Google dans notre cas)
* @var \Phalcon\Db\Profiler
*/
$di->setShared('profiler', function() {
return new \Phalcon\Db\Profiler();
});
/**
* Enregistrement de l'adapteur de base de données
* @var Phalcon\Db\Adapter\Pdo\Mysql
*/
$di->setShared('db', function() use ($config, $di) {
// Récupère le gestionnaire d'évennement
$eventsManager = $di->getShared('eventsManager');
/**
* DB Profiler
*/
// $profiler = new DbProfiler();
// $eventsManager->attach('db', $profiler);
/**
* DB Logger
*/
// $logger = new DbLogger();
// $eventsManager->attach('db', $logger);
// Configure l'adapteur de la BD
$connection = new DbAdapter($config->database->toArray());
// Attache le gestionnaire d'évennement à l'adapteur de la BD
$connection->setEventsManager($eventsManager);
return $connection;
});
/**
* Session component pour gérer les sessions à partir de l'adapteur de session par fichier
* @var \Phalcon\Session\Adapter\Files
*/
$di->setShared('session', function() {
$session = new SessionAdapter();
if (!$session->isStarted()) {
$session->start();
}
return $session;
});
/**
* Enregistrer le service de filtres
* @var \GSS\Plugins\FilterBase
*/
$di->setShared('filter', function() {
return new Filter();
});
/**
* Enregistrer le service de tags
* @var \GSS\Plugins\Tag
*/
$di->setShared('tag', function() {
return new Tag();
});
/**
* Enregistre le service d'assets
* @var \GSS\Plugins\Assets\Manager
*/
$di->setShared('assets', function() {
return new AssetsManager();
});
/**
* Swift Mailer Manager
* @link http://swiftmailer.org/
*/
$di->setShared('mail', function() use ($config) {
new SwiftLoader();
return new MailerManager((array)$config->mail);;
});
/**
* Security service
*/
$di->setShared('security', function() use ($config) {
$security = new Security();
if (!empty($config->security->workfactor)) {
$security->setWorkFactor($config->security->workfactor);
}
return $security;
});
/**
* Translation service
*/
$di->setShared('translation', function() use ($di, $config) {
$translation = new TranslationAdapter(array(
'db' => $di->get('db'),
'table' => 'traduction',
'language' => $di->get('gss')->getLanguage(),
'useIcuMessageFormatter' => true,
));
return $translation;
});
/**
* GSS service
*/
$di->setShared('gss', function() {
$gss = new GSS();
return $gss;
});
}
} |
| #3 | GSS\Config\Services->GSS\Config\{closure}() |
| #4 | Phalcon\Di\Service->resolve(null, Object(Phalcon\Di\FactoryDefault)) |
| #5 | Phalcon\Di->get(db) /opt/rh/httpd24/root/var/www/html/gss-sports/app/config/Services.php (238) <?php
namespace GSS\Config;
// Phalcon defaults
use Phalcon\DI\FactoryDefault;
use Phalcon\Security;
use Phalcon\Mvc\Url;
use Phalcon\Mvc\Dispatcher;
use Phalcon\Mailer\Manager as MailerManager;
use Phalcon\Db\Adapter\Pdo\Mysql as DbAdapter;
use Phalcon\Session\Adapter\Files as SessionAdapter;
use Phalcon\Translate\Adapter\Database as TranslationAdapter;
// GSS Plugins & configs
use GSS\Models\Traduction;
use GSS\Plugins\Assets\Manager as AssetsManager;
use GSS\Plugins\Mvc\View;
use GSS\Plugins\Mvc\View\Error as ViewError;
use GSS\Plugins\Mvc\Dispatcher\Error as DispatchError;
use GSS\Plugins\Mvc\Dispatcher\Security as DispatchSecurity;
use GSS\Plugins\Mvc\Dispatcher\Camelize as DispatchCamelize;
use GSS\Plugins\Mvc\Dispatcher\Rest as DispatchRest;
use GSS\Plugins\Db\Profiler as DbProfiler;
use GSS\Plugins\Db\Logger as DbLogger;
use GSS\Plugins\Filter;
use GSS\Plugins\Tag;
use GSS\Plugins\GSS;
// Libs
use SwiftMailer\Loader as SwiftLoader;
class Services
{
public function __construct(FactoryDefault $di, Config $config = null)
{
/**
* Configuration objet pour récupérer certaines configuration
* @var \Phalcon\Config
*/
$di->setShared('config', $config);
/**
* Enregistre le service de route
* @var \GSS\Config\Router;
*/
$di->setShared('router', function() {
$router = new Router();
return $router;
});
/**
* URL component utilisé pour générer les URL dans l'application
* - Configuration du baseUri par défaut
* (au cas ou l'application serait dans un path spécifique /gss/sports/)
* @var \Phalcon\Mvc\Url
*/
$di->setShared('url', function() use ($config) {
$url = new Url();
$url->setBaseUri($config->application->baseUri);
return $url;
});
/**
* View component utilisé pour générer les vues dans l'application avec un engin spécifique
* @var \Phalcon\Mvc\View
*/
$di->setShared('view', function() use ($di, $config) {
// Get the events manager
$eventsManager = $di->getShared('eventsManager');
$error = new ViewError($di);
$eventsManager->attach('view', $error);
$view = new View();
$view->setMinify($config->minify);
$view->setViewsDir($config->application->viewsDir);
$view->registerEngines(array(
'.phtml' => 'Phalcon\Mvc\View\Engine\Php',
));
$view->setEventsManager($eventsManager);
return $view;
});
/**
* Enregistrement du dispatcher
* - Camelize l'action
* - Gestion de la Securité
* - Gestion des erreurs
* - Valeurs par défaut
*
* @var \Phalcon\Mvc\Dispatcher
*/
$di->setShared('dispatcher', function() use ($di, $config) {
// Get the events manager
$eventsManager = $di->getShared('eventsManager');
/**
* Camelize dispatcher
*/
$camelize = new DispatchCamelize($di);
$eventsManager->attach('dispatch', $camelize);
/**
* Security dispatcher
*/
$security = new DispatchSecurity($di);
$eventsManager->attach('dispatch', $security);
/**
* Rest dispatcher
*/
$rest = new DispatchRest($di);
$eventsManager->attach('dispatch', $rest);
/**
* Error dispatcher
*/
$error = new DispatchError($di);
$eventsManager->attach('dispatch', $error);
// Setup the dispatcher
$dispatcher = new Dispatcher();
// Attach the events manager
$dispatcher->setEventsManager($eventsManager);
// Setup the default namespace
$dispatcher->setDefaultNamespace('GSS\\Controllers');
return $dispatcher;
});
/**
* Profilage de certaines requêtes (SQL et APIs Google dans notre cas)
* @var \Phalcon\Db\Profiler
*/
$di->setShared('profiler', function() {
return new \Phalcon\Db\Profiler();
});
/**
* Enregistrement de l'adapteur de base de données
* @var Phalcon\Db\Adapter\Pdo\Mysql
*/
$di->setShared('db', function() use ($config, $di) {
// Récupère le gestionnaire d'évennement
$eventsManager = $di->getShared('eventsManager');
/**
* DB Profiler
*/
// $profiler = new DbProfiler();
// $eventsManager->attach('db', $profiler);
/**
* DB Logger
*/
// $logger = new DbLogger();
// $eventsManager->attach('db', $logger);
// Configure l'adapteur de la BD
$connection = new DbAdapter($config->database->toArray());
// Attache le gestionnaire d'évennement à l'adapteur de la BD
$connection->setEventsManager($eventsManager);
return $connection;
});
/**
* Session component pour gérer les sessions à partir de l'adapteur de session par fichier
* @var \Phalcon\Session\Adapter\Files
*/
$di->setShared('session', function() {
$session = new SessionAdapter();
if (!$session->isStarted()) {
$session->start();
}
return $session;
});
/**
* Enregistrer le service de filtres
* @var \GSS\Plugins\FilterBase
*/
$di->setShared('filter', function() {
return new Filter();
});
/**
* Enregistrer le service de tags
* @var \GSS\Plugins\Tag
*/
$di->setShared('tag', function() {
return new Tag();
});
/**
* Enregistre le service d'assets
* @var \GSS\Plugins\Assets\Manager
*/
$di->setShared('assets', function() {
return new AssetsManager();
});
/**
* Swift Mailer Manager
* @link http://swiftmailer.org/
*/
$di->setShared('mail', function() use ($config) {
new SwiftLoader();
return new MailerManager((array)$config->mail);;
});
/**
* Security service
*/
$di->setShared('security', function() use ($config) {
$security = new Security();
if (!empty($config->security->workfactor)) {
$security->setWorkFactor($config->security->workfactor);
}
return $security;
});
/**
* Translation service
*/
$di->setShared('translation', function() use ($di, $config) {
$translation = new TranslationAdapter(array(
'db' => $di->get('db'),
'table' => 'traduction',
'language' => $di->get('gss')->getLanguage(),
'useIcuMessageFormatter' => true,
));
return $translation;
});
/**
* GSS service
*/
$di->setShared('gss', function() {
$gss = new GSS();
return $gss;
});
}
} |
| #6 | GSS\Config\Services->GSS\Config\{closure}() |
| #7 | Phalcon\Di\Service->resolve(null, Object(Phalcon\Di\FactoryDefault)) |
| #8 | Phalcon\Di->get(translation) /opt/rh/httpd24/root/var/www/html/gss-sports/app/controllers/AbstractController.php (369) <?php
namespace GSS\Controllers;
use GSS\Models\AbstractModel;
use GSS\Models\Acteur;
use GSS\Models\Demandeur;
use GSS\Models\Erreur;
use GSS\Models\Liste;
use GSS\Models\Projet;
use GSS\Models\Traduction;
use Phalcon\Mvc\Controller;
use Phalcon\Tag;
use GSS\Models\Configuration;
use Phalcon\Assets\Filters\Cssmin;
use Phalcon\Assets\Filters\Jsmin;
/**
* Contrôleur parent de tous les contrôleur dans ce namespace
* GSS\Controllers
* @author Julien Turbide <jturbide@nuagerie.com>
* @version 1.0.0
* @abstract
*/
class AbstractController extends Controller {
public static $initialized = false;
public static $GSS;
public static $enum = array(
'deleted' => array(
AbstractModel::DELETED => 'Supprimé',
AbstractModel::NOT_DELETED => 'Actif',
),
'typeErreur' => array(
Erreur::TYPE_PHP => 'Php',
Erreur::TYPE_JS => 'JavaScript',
),
'typeDemandeur' => array(
Demandeur::TYPE_ARRONDISSEMENT => 'Arrondissement',
Demandeur::TYPE_ORGANISME => 'Organisme',
),
'typeProjet' => array(
Projet::TYPE_PSES_OBNL => 'OBNL - Programme de soutien aux événements sportifs internationaux, nationaux et métropolitaine (PSES)',
Projet::TYPE_PIL_OBNL => 'OBNL - Programme de soutien aux initiatives locales d\'activités de plein air liées au Plan de l\'eau (PIL)',
Projet::TYPE_PIL_ARRONDISSEMENT => 'Arrondissement - Programme de soutien aux initiatives locales d\'activités de plein air liées au Plan de l\'eau (PIL)',
),
'typeListe' => array(
Liste::TYPE_BASSIN_ACTIVITE => 'Bassins d\'activité',
Liste::TYPE_VOLET_PROGRAMME => 'Volets de programme',
Liste::TYPE_DATE_LIMITE_DEPOT => 'Date limite de dépôt',
Liste::TYPE_DESCRIPTION_ACTIVITE => 'Description de l\'événement / des activités',
Liste::TYPE_CONTRIBUTION_GLOBALE => 'Contribution globale de l\'Administration montréalaises',
Liste::TYPE_DOCUMENT => 'Document à remettre à la Ville de Montréal',
Liste::TYPE_DOCUMENT_AVANT => 'Document à remettre à la Ville de Montréal (Avant)',
Liste::TYPE_RECURRENCE_EVENEMENT =>'Récurrence de l\'événement',
Liste::TYPE_NIVEAU_SANCTION => 'Niveau de sanction',
Liste::TYPE_CALIBRE_ATHLETES => 'Calibre des athlètes',
Liste::TYPE_CALIBRE_COMPETITION => 'Calibre de la compétition',
Liste::TYPE_OBJECTIFS => 'Objectifs du Programme',
Liste::TYPE_TYPE_EVENEMENT => 'Type d\'événement',
Liste::TYPE_PAYS => 'Pays',
Liste::TYPE_ARRONDISSEMENT => 'Arrondissement',
Liste::TYPE_VILLE_LIEE => 'Ville liée',
Liste::TYPE_PROVINCE_TERRITOIRE => 'Province et territoire',
Liste::TYPE_OBJECTIF_SPECIFIQUE_MESURABLE => 'Objectifs spécifiques mesurables',
Liste::TYPE_STADE => 'Stade',
Liste::TYPE_ENGAGEMENT_ORGANISME => 'Engagement de l\'organisme',
Liste::TYPE_OBLIGATIONS_ENGAGEMENTS => 'Obligations et engagements',
Liste::TYPE_RESEIGNEMENTS => 'Renseignments',
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE => 'Contributions anticipées',
Liste::TYPE_REVENU_AUTONOME => 'Revenus autonomes',
Liste::TYPE_DEPENSE_ADMISSIBLE => 'dddDépenses admissibles',
Liste::TYPE_DEPENSE_NON_ADMISSIBLE => 'Dépenses non admissibles',
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_FEDERAL => 'Contributions anticipées fédéral',
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_PROVINCIAL => 'Contributions anticipées provincial',
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_MUNICIPAL => 'Contributions anticipées municipal',
Liste::TYPE_DOCUMENT_TITRE => 'Titre : Document à remettre à la Ville de Montréal',
Liste::TYPE_DOCUMENT_AVANT_TITRE => 'Titre : Document à remettre à la Ville de Montréal (Avant)',
Liste::TYPE_BUDGET_PREVISIONNEL => 'Budget prévisionnel',
Liste::TYPE_BUDGET_REGULIER => 'Budget',
),
'typesContributionsAnticipees' => array(
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_FEDERAL => 'Fédéral',
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_PROVINCIAL => 'Provincial',
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_MUNICIPAL => 'Municipal',
),
'statutProjet' => array(
Projet::STATUT_NOUVEAU => 'Nouveau',
Projet::STATUT_SOUMIS => 'Soumis',
Projet::STATUT_ACCEPTE => 'Accepté',
Projet::STATUT_REFUSE => 'Refusé',
Projet::STATUT_NONADMISSIBLE => 'Non-admissible',
),
'langues' => array(
Traduction::LANGUE_EN => 'Anglais',
Traduction::LANGUE_FR => 'Français',
)
);
/**
* Initialisation du contrôleur
* - Configure le titre
* - Configure les vues
* - Configure l'objet GSS
* - Configure les assets (JS / CSS)
*/
public function initialize() {
if (!self::$initialized) {
self::$initialized = true;
self::$enum = array(
'deleted' => array(
AbstractModel::DELETED => $this->_('supprime'),
AbstractModel::NOT_DELETED => $this->_('actif'),
),
'typeErreur' => array(
Erreur::TYPE_PHP => 'Php',
Erreur::TYPE_JS => 'JavaScript',
),
'typeDemandeur' => array(
Demandeur::TYPE_ARRONDISSEMENT => $this->_('arrondissement'),
Demandeur::TYPE_ORGANISME => $this->_('organisme'),
),
'typeProjet' => array(
Projet::TYPE_PSES_OBNL => $this->_('type_pses_obnl'), // garder à cette position du array
Projet::TYPE_PIL_OBNL => 'OBNL - Programme de soutien aux initiatives locales d\'activités de plein air liées au Plan de l\'eau (PIL)',
Projet::TYPE_PIL_ARRONDISSEMENT => 'Arrondissement - Programme de soutien aux initiatives locales d\'activités de plein air liées au Plan de l\'eau (PIL)',
),
'typeListe' => array(
Liste::TYPE_BASSIN_ACTIVITE => $this->_('bassins_activite'),
Liste::TYPE_VOLET_PROGRAMME => $this->_('volets_programme'),
Liste::TYPE_DATE_LIMITE_DEPOT => $this->_('date_limite_depot'),
Liste::TYPE_DESCRIPTION_ACTIVITE => $this->_('desc_evenement_acitvites'),
Liste::TYPE_CONTRIBUTION_GLOBALE => $this->_('contribution_global_mtl'),
Liste::TYPE_DOCUMENT => $this->_('documents_a_remettre'),
Liste::TYPE_DOCUMENT_AVANT => $this->_('documents_a_remettre_avant'),
Liste::TYPE_RECURRENCE_EVENEMENT => $this->_('recurrence_evenement'),
Liste::TYPE_NIVEAU_SANCTION => $this->_('niveau_sanction'),
Liste::TYPE_CALIBRE_ATHLETES => $this->_('calibre_athletes'),
Liste::TYPE_CALIBRE_COMPETITION => $this->_('calibre_competition'),
Liste::TYPE_OBJECTIFS => $this->_('objectifs_programme'),
Liste::TYPE_TYPE_EVENEMENT => $this->_('type_evenement'),
Liste::TYPE_PAYS => $this->_('pays'),
Liste::TYPE_ARRONDISSEMENT => $this->_('arrondissements'),
Liste::TYPE_VILLE_LIEE => $this->_('villes_liees'),
Liste::TYPE_PROVINCE_TERRITOIRE => $this->_('province_territoire'),
Liste::TYPE_OBJECTIF_SPECIFIQUE_MESURABLE => $this->_('objectifs_specifiques_mesurables'),
Liste::TYPE_STADE => $this->_('stade'),
Liste::TYPE_ENGAGEMENT_ORGANISME => $this->_('engagement_organisme'),
Liste::TYPE_OBLIGATIONS_ENGAGEMENTS => $this->_('obligaton_organisme'),
Liste::TYPE_RESEIGNEMENTS => $this->_('renseignements'),
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE => $this->_('contributions_anticipees'),
Liste::TYPE_REVENU_AUTONOME => $this->_('revenus_autonomes'),
Liste::TYPE_DEPENSE_ADMISSIBLE => $this->_('depenses_admissibles'),
Liste::TYPE_DEPENSE_NON_ADMISSIBLE => $this->_('depenses_non_admissibles'),
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_FEDERAL => $this->_('contributions_anticipees_federal'),
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_PROVINCIAL => $this->_('contributions_anticipees_provincial'),
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_MUNICIPAL => $this->_('contributions_anticipees_municipal'),
Liste::TYPE_DOCUMENT_TITRE => $this->_('titre_documents_a_remettre'),
Liste::TYPE_DOCUMENT_AVANT_TITRE => $this->_('titre_documents_a_remettre_avant'),
Liste::TYPE_BUDGET_PREVISIONNEL => $this->_('budget_previsionnel'),
Liste::TYPE_BUDGET_REGULIER => $this->_('budget_regulier')
),
'typesContributionsAnticipees' => array(
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_FEDERAL => $this->_('federal'),
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_PROVINCIAL => 'Provincial',
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_MUNICIPAL => 'Municipal',
),
'statutProjet' => array(
Projet::STATUT_NOUVEAU => $this->_('nouveau'),
Projet::STATUT_SOUMIS => $this->_('soumis'),
Projet::STATUT_ACCEPTE => $this->_('accepte'),
Projet::STATUT_REFUSE => $this->_('refuse'),
Projet::STATUT_NONADMISSIBLE => $this->_('Non-admissible'),
),
'langues' => array(
Traduction::LANGUE_EN => $this->_('anglais'),
Traduction::LANGUE_FR => $this->_('français'),
)
);
Tag::setTitleSeparator(' | ');
Tag::setTitle('GSS Sports');
Tag::prependTitle($this->_('ville_montreal'));
// default page content
$this->tag->setPageContent('layout/page');
$this->tag->setBodyClass('page-header-fixed page-sidebar-closed-hide-logo page-content-white');
// Prépare les assets JS & CSS
$this->_setupAssets();
$this->gss->setStaticBaseUri();
$this->gss->setEnum(self::$enum);
self::$GSS = new \stdClass();
self::$GSS->enum = self::$enum;
self::$GSS->language = $this->gss->getLanguage();
$this->config->frontend->language = self::$GSS->language;
$this->view->setVar('gss', self::$GSS);
$this->view->setVar('currentDemandeur', $this->gss->getDemandeur());
$this->view->setVar('currentActeur', $this->gss->getActeur());
}
}
/**
* Configure les assets pour le front-end (JS / CSS)
* @access protected
* @TODO fix relative path in minified CSS & JS with a super awesome .htaccess rule (maybe..)
* @TODO cache CSS with the current version
* @TODO remove remote static google content...
*/
protected function _setupAssets() {
// CSS Header Core
$cssHeaderCore = $this->assets->collection('css-header-core');
// $cssHeaderCore->addFilter(new Cssmin());
$cssHeaderCore->setTargetPath('minified/css-header-core.css');
$cssHeaderCore->setTargetUri('minified/css-header-core.css');
$cssHeaderCore->addCss('https://fonts.googleapis.com/css?family=Open+Sans:400,300,600,700&subset=all', false);
$cssHeaderCore->addCss('assets/global/plugins/font-awesome/css/font-awesome.min.css');
$cssHeaderCore->addCss('assets/global/plugins/simple-line-icons/simple-line-icons.min.css');
$cssHeaderCore->addCss('assets/global/plugins/bootstrap/css/bootstrap.min.css');
$cssHeaderCore->addCss('assets/global/plugins/uniform/css/uniform.default.css');
$cssHeaderCore->addCss('assets/global/plugins/bootstrap-switch/css/bootstrap-switch.min.css');
$cssHeaderCore->addCss('assets/global/plugins/pace/themes/pace-theme-flash.css');
// CSS Header Theme
$theme = empty($this->config->theme)? 'default' : $this->config->theme;
$cssHeaderTheme = $this->assets->collection('css-header-theme');
// $cssHeaderTheme->addFilter(new Cssmin());
$cssHeaderTheme->setTargetPath('minified/css-header-theme.css');
$cssHeaderTheme->setTargetUri('minified/css-header-theme.css');
$cssHeaderTheme->addCss('assets/global/css/components.min.css');
$cssHeaderTheme->addCss('assets/global/css/plugins.min.css');
$cssHeaderTheme->addCss('assets/layouts/layout/css/layout.min.css');
$cssHeaderTheme->addCss('assets/layouts/layout/css/themes/' . $theme . '.min.css');
$cssHeaderTheme->addCss('assets/layouts/layout/css/custom.min.css');
$cssHeaderTheme->addCss('css/theme-overrides.css');
// JS Header Core
$jsHeaderCore = $this->assets->collection('js-header-core');
// $jsHeaderCore->addFilter(new Jsmin());
$jsHeaderCore->setTargetPath('minified/js-header-core.js');
$jsHeaderCore->setTargetUri('minified/js-header-core.js');
$jsHeaderCore->addJs('assets/global/plugins/pace/pace.min.js');
$jsHeaderCore->addJs('assets/global/plugins/jquery.min.js');
$jsHeaderCore->addJs('assets/global/plugins/jquery-migrate.min.js');
$jsHeaderCore->addJs('assets/global/plugins/jquery-ui/jquery-ui.min.js');
$jsHeaderCore->addJs('assets/global/plugins/bootstrap/js/bootstrap.min.js');
// JS Footer Core (IE fixes)
$jsFooterCoreIE = $this->assets->collection('js-footer-core-ie');
// $jsFooterCoreIE->addFilter(new Jsmin());
$jsFooterCoreIE->setTargetPath('minified/js-footer-core-ie.js');
$jsFooterCoreIE->setTargetUri('minified/js-footer-core-ie.js');
$jsFooterCoreIE->addJs('assets/global/plugins/respond.min.js');
$jsFooterCoreIE->addJs('assets/global/plugins/excanvas.min.js');
$jsFooterCoreIE->addJs('assets/global/plugins/ie8.fix.min.js');
// JS Footer Core
$jsFooterCore = $this->assets->collection('js-footer-core');
// $jsFooterCore->addFilter(new Jsmin());
$jsFooterCore->setTargetPath('minified/js-footer-core.js');
$jsFooterCore->setTargetUri('minified/js-footer-core.js');
$jsFooterCore->addJs('assets/global/plugins/jquery-cookiebar/jquery.cookieBar.min.js');
$jsFooterCore->addJs('assets/global/plugins/js.cookie.min.js');
$jsFooterCore->addJs('assets/global/plugins/jquery-slimscroll/jquery.slimscroll.min.js');
$jsFooterCore->addJs('assets/global/plugins/jquery.blockui.min.js');
$jsFooterCore->addJs('assets/global/plugins/uniform/jquery.uniform.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-switch/js/bootstrap-switch.min.js');
$jsFooterCore->addJs('assets/global/plugins/select2/js/select2.full.min.js');
$jsFooterCore->addJs('assets/global/plugins/select2/js/i18n/fr.js');
$jsFooterCore->addJs('assets/global/plugins/select2/js/i18n/en.js');
//@TODO checker si on utilise tout les lib
$jsFooterCore->addJs('assets/global/scripts/datatable.js');
$jsFooterCore->addJs('assets/global/plugins/datatables/datatables.min.js');
$jsFooterCore->addJs('assets/global/plugins/datatables/plugins/bootstrap/datatables.bootstrap.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-toastr/toastr.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-sweetalert/sweetalert.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-summernote/summernote.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-summernote/lang/summernote-fr-FR.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-modal/js/bootstrap-modalmanager.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-modal/js/bootstrap-modal.js');
$jsFooterCore->addJs('assets/global/plugins/jquery-repeater/jquery.repeater.js');
$jsFooterCore->addJs('assets/global/plugins/jquery-inputmask/jquery.inputmask.bundle.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-wizard/jquery.bootstrap.wizard.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-fileinput/bootstrap-fileinput.js');
$jsFooterCore->addJs('assets/global/plugins/moment.min.js');
$jsFooterCore->addJs('assets/global/plugins/lodash.min.js');
$jsFooterCore->addJs('assets/global/plugins/simpleupload.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-daterangepicker/daterangepicker.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-timepicker/js/bootstrap-timepicker.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-editable/bootstrap-editable/js/bootstrap-editable.min.js');
// page
$jsFooterCore->addJs('assets/global/scripts/app.js');
// layout
$jsFooterCore->addJs('assets/layouts/layout/scripts/layout.min.js');
$jsFooterCore->addJs('assets/layouts/global/scripts/quick-sidebar.min.js');
$jsFooterCore->addJs('assets/layouts/global/scripts/quick-nav.min.js');
// Prépare la collection pour le CSS dans le header
$cssHeaderPage = $this->assets->collection('css-header-page');
$cssHeaderPage->setTargetPath('minified/css-header-page.css');
$cssHeaderPage->setTargetUri('minified/css-header-page.css');
//@TODO checker si on utilise tout les lib
$cssHeaderPage->addCss('assets/global/plugins/datatables/datatables.min.css');
$cssHeaderPage->addCss('assets/global/plugins/datatables/plugins/bootstrap/datatables.bootstrap.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-datepicker/css/bootstrap-datepicker3.min.css');
$cssHeaderPage->addCss('assets/global/plugins/select2/css/select2.min.css');
$cssHeaderPage->addCss('assets/global/plugins/select2/css/select2-bootstrap.min.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-toastr/toastr.min.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-sweetalert/sweetalert.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-summernote/summernote.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-modal/css/bootstrap-modal-bs3patch.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-modal/css/bootstrap-modal.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-fileinput/bootstrap-fileinput.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-daterangepicker/daterangepicker.min.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-datepicker/css/bootstrap-datepicker3.min.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-timepicker/css/bootstrap-timepicker.min.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-editable/bootstrap-editable/css/bootstrap-editable.css');
// Prépare la collection pour le JS dans le footer
$jsFooterPage = $this->assets->collection('js-footer-page');
$jsFooterPage->setTargetPath('minified/js-footer-page.js');
$jsFooterPage->setTargetUri('minified/js-footer-page.js');
$jsFooterPage->addJs('js/error.js');
$jsFooterPage->addJs('js/cookie.js');
$jsFooterPage->addJs('js/toastr.js');
$jsFooterPage->addJs('js/modal.js');
$jsFooterPage->addJs('js/summernote.js');
$jsFooterPage->addJs('js/datatable.js');
$jsFooterPage->addJs('js/select2.js');
$jsFooterPage->addJs('js/datepicker.js');
$jsFooterPage->addJs('js/inputmask.js');
$jsFooterPage->addJs('js/custom.js');
$jsFooterPage->addJs('js/file.js');
$jsFooterPage->addJs('js/ajax.js');
$jsFooterPage->addJs('js/condition.js');
$jsFooterPage->addJs('js/precision.js');
$jsFooterPage->addJs('js/repeater.js');
// Timeout feature
if (!in_array($this->dispatcher->getControllerName(), array('errors', 'connexion', 'legal'))) {
$jsFooterCore->addJs('assets/global/plugins/jquery-idle-timeout/jquery.idletimeout.js');
$jsFooterCore->addJs('assets/global/plugins/jquery-idle-timeout/jquery.idletimer.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-sessiontimeout/bootstrap-session-timeout.min.js');
$jsFooterPage->addJs('js/idle-timeout.js');
$jsFooterPage->addJs('js/session-timeout.js');
}
}
/**
* Permet de passer une étiquette afin de récupérer la traduction
*
* @param string $etiquette
*
* @return string
*/
public function _($etiquette) {
return $this->getDI()->get('translation')->t($etiquette);
}
}
|
| #9 | GSS\Controllers\AbstractController->_(supprime) /opt/rh/httpd24/root/var/www/html/gss-sports/app/controllers/AbstractController.php (114) <?php
namespace GSS\Controllers;
use GSS\Models\AbstractModel;
use GSS\Models\Acteur;
use GSS\Models\Demandeur;
use GSS\Models\Erreur;
use GSS\Models\Liste;
use GSS\Models\Projet;
use GSS\Models\Traduction;
use Phalcon\Mvc\Controller;
use Phalcon\Tag;
use GSS\Models\Configuration;
use Phalcon\Assets\Filters\Cssmin;
use Phalcon\Assets\Filters\Jsmin;
/**
* Contrôleur parent de tous les contrôleur dans ce namespace
* GSS\Controllers
* @author Julien Turbide <jturbide@nuagerie.com>
* @version 1.0.0
* @abstract
*/
class AbstractController extends Controller {
public static $initialized = false;
public static $GSS;
public static $enum = array(
'deleted' => array(
AbstractModel::DELETED => 'Supprimé',
AbstractModel::NOT_DELETED => 'Actif',
),
'typeErreur' => array(
Erreur::TYPE_PHP => 'Php',
Erreur::TYPE_JS => 'JavaScript',
),
'typeDemandeur' => array(
Demandeur::TYPE_ARRONDISSEMENT => 'Arrondissement',
Demandeur::TYPE_ORGANISME => 'Organisme',
),
'typeProjet' => array(
Projet::TYPE_PSES_OBNL => 'OBNL - Programme de soutien aux événements sportifs internationaux, nationaux et métropolitaine (PSES)',
Projet::TYPE_PIL_OBNL => 'OBNL - Programme de soutien aux initiatives locales d\'activités de plein air liées au Plan de l\'eau (PIL)',
Projet::TYPE_PIL_ARRONDISSEMENT => 'Arrondissement - Programme de soutien aux initiatives locales d\'activités de plein air liées au Plan de l\'eau (PIL)',
),
'typeListe' => array(
Liste::TYPE_BASSIN_ACTIVITE => 'Bassins d\'activité',
Liste::TYPE_VOLET_PROGRAMME => 'Volets de programme',
Liste::TYPE_DATE_LIMITE_DEPOT => 'Date limite de dépôt',
Liste::TYPE_DESCRIPTION_ACTIVITE => 'Description de l\'événement / des activités',
Liste::TYPE_CONTRIBUTION_GLOBALE => 'Contribution globale de l\'Administration montréalaises',
Liste::TYPE_DOCUMENT => 'Document à remettre à la Ville de Montréal',
Liste::TYPE_DOCUMENT_AVANT => 'Document à remettre à la Ville de Montréal (Avant)',
Liste::TYPE_RECURRENCE_EVENEMENT =>'Récurrence de l\'événement',
Liste::TYPE_NIVEAU_SANCTION => 'Niveau de sanction',
Liste::TYPE_CALIBRE_ATHLETES => 'Calibre des athlètes',
Liste::TYPE_CALIBRE_COMPETITION => 'Calibre de la compétition',
Liste::TYPE_OBJECTIFS => 'Objectifs du Programme',
Liste::TYPE_TYPE_EVENEMENT => 'Type d\'événement',
Liste::TYPE_PAYS => 'Pays',
Liste::TYPE_ARRONDISSEMENT => 'Arrondissement',
Liste::TYPE_VILLE_LIEE => 'Ville liée',
Liste::TYPE_PROVINCE_TERRITOIRE => 'Province et territoire',
Liste::TYPE_OBJECTIF_SPECIFIQUE_MESURABLE => 'Objectifs spécifiques mesurables',
Liste::TYPE_STADE => 'Stade',
Liste::TYPE_ENGAGEMENT_ORGANISME => 'Engagement de l\'organisme',
Liste::TYPE_OBLIGATIONS_ENGAGEMENTS => 'Obligations et engagements',
Liste::TYPE_RESEIGNEMENTS => 'Renseignments',
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE => 'Contributions anticipées',
Liste::TYPE_REVENU_AUTONOME => 'Revenus autonomes',
Liste::TYPE_DEPENSE_ADMISSIBLE => 'dddDépenses admissibles',
Liste::TYPE_DEPENSE_NON_ADMISSIBLE => 'Dépenses non admissibles',
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_FEDERAL => 'Contributions anticipées fédéral',
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_PROVINCIAL => 'Contributions anticipées provincial',
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_MUNICIPAL => 'Contributions anticipées municipal',
Liste::TYPE_DOCUMENT_TITRE => 'Titre : Document à remettre à la Ville de Montréal',
Liste::TYPE_DOCUMENT_AVANT_TITRE => 'Titre : Document à remettre à la Ville de Montréal (Avant)',
Liste::TYPE_BUDGET_PREVISIONNEL => 'Budget prévisionnel',
Liste::TYPE_BUDGET_REGULIER => 'Budget',
),
'typesContributionsAnticipees' => array(
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_FEDERAL => 'Fédéral',
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_PROVINCIAL => 'Provincial',
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_MUNICIPAL => 'Municipal',
),
'statutProjet' => array(
Projet::STATUT_NOUVEAU => 'Nouveau',
Projet::STATUT_SOUMIS => 'Soumis',
Projet::STATUT_ACCEPTE => 'Accepté',
Projet::STATUT_REFUSE => 'Refusé',
Projet::STATUT_NONADMISSIBLE => 'Non-admissible',
),
'langues' => array(
Traduction::LANGUE_EN => 'Anglais',
Traduction::LANGUE_FR => 'Français',
)
);
/**
* Initialisation du contrôleur
* - Configure le titre
* - Configure les vues
* - Configure l'objet GSS
* - Configure les assets (JS / CSS)
*/
public function initialize() {
if (!self::$initialized) {
self::$initialized = true;
self::$enum = array(
'deleted' => array(
AbstractModel::DELETED => $this->_('supprime'),
AbstractModel::NOT_DELETED => $this->_('actif'),
),
'typeErreur' => array(
Erreur::TYPE_PHP => 'Php',
Erreur::TYPE_JS => 'JavaScript',
),
'typeDemandeur' => array(
Demandeur::TYPE_ARRONDISSEMENT => $this->_('arrondissement'),
Demandeur::TYPE_ORGANISME => $this->_('organisme'),
),
'typeProjet' => array(
Projet::TYPE_PSES_OBNL => $this->_('type_pses_obnl'), // garder à cette position du array
Projet::TYPE_PIL_OBNL => 'OBNL - Programme de soutien aux initiatives locales d\'activités de plein air liées au Plan de l\'eau (PIL)',
Projet::TYPE_PIL_ARRONDISSEMENT => 'Arrondissement - Programme de soutien aux initiatives locales d\'activités de plein air liées au Plan de l\'eau (PIL)',
),
'typeListe' => array(
Liste::TYPE_BASSIN_ACTIVITE => $this->_('bassins_activite'),
Liste::TYPE_VOLET_PROGRAMME => $this->_('volets_programme'),
Liste::TYPE_DATE_LIMITE_DEPOT => $this->_('date_limite_depot'),
Liste::TYPE_DESCRIPTION_ACTIVITE => $this->_('desc_evenement_acitvites'),
Liste::TYPE_CONTRIBUTION_GLOBALE => $this->_('contribution_global_mtl'),
Liste::TYPE_DOCUMENT => $this->_('documents_a_remettre'),
Liste::TYPE_DOCUMENT_AVANT => $this->_('documents_a_remettre_avant'),
Liste::TYPE_RECURRENCE_EVENEMENT => $this->_('recurrence_evenement'),
Liste::TYPE_NIVEAU_SANCTION => $this->_('niveau_sanction'),
Liste::TYPE_CALIBRE_ATHLETES => $this->_('calibre_athletes'),
Liste::TYPE_CALIBRE_COMPETITION => $this->_('calibre_competition'),
Liste::TYPE_OBJECTIFS => $this->_('objectifs_programme'),
Liste::TYPE_TYPE_EVENEMENT => $this->_('type_evenement'),
Liste::TYPE_PAYS => $this->_('pays'),
Liste::TYPE_ARRONDISSEMENT => $this->_('arrondissements'),
Liste::TYPE_VILLE_LIEE => $this->_('villes_liees'),
Liste::TYPE_PROVINCE_TERRITOIRE => $this->_('province_territoire'),
Liste::TYPE_OBJECTIF_SPECIFIQUE_MESURABLE => $this->_('objectifs_specifiques_mesurables'),
Liste::TYPE_STADE => $this->_('stade'),
Liste::TYPE_ENGAGEMENT_ORGANISME => $this->_('engagement_organisme'),
Liste::TYPE_OBLIGATIONS_ENGAGEMENTS => $this->_('obligaton_organisme'),
Liste::TYPE_RESEIGNEMENTS => $this->_('renseignements'),
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE => $this->_('contributions_anticipees'),
Liste::TYPE_REVENU_AUTONOME => $this->_('revenus_autonomes'),
Liste::TYPE_DEPENSE_ADMISSIBLE => $this->_('depenses_admissibles'),
Liste::TYPE_DEPENSE_NON_ADMISSIBLE => $this->_('depenses_non_admissibles'),
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_FEDERAL => $this->_('contributions_anticipees_federal'),
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_PROVINCIAL => $this->_('contributions_anticipees_provincial'),
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_MUNICIPAL => $this->_('contributions_anticipees_municipal'),
Liste::TYPE_DOCUMENT_TITRE => $this->_('titre_documents_a_remettre'),
Liste::TYPE_DOCUMENT_AVANT_TITRE => $this->_('titre_documents_a_remettre_avant'),
Liste::TYPE_BUDGET_PREVISIONNEL => $this->_('budget_previsionnel'),
Liste::TYPE_BUDGET_REGULIER => $this->_('budget_regulier')
),
'typesContributionsAnticipees' => array(
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_FEDERAL => $this->_('federal'),
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_PROVINCIAL => 'Provincial',
Liste::TYPE_REVENU_CONTRIBUTION_ANTICIPEE_MUNICIPAL => 'Municipal',
),
'statutProjet' => array(
Projet::STATUT_NOUVEAU => $this->_('nouveau'),
Projet::STATUT_SOUMIS => $this->_('soumis'),
Projet::STATUT_ACCEPTE => $this->_('accepte'),
Projet::STATUT_REFUSE => $this->_('refuse'),
Projet::STATUT_NONADMISSIBLE => $this->_('Non-admissible'),
),
'langues' => array(
Traduction::LANGUE_EN => $this->_('anglais'),
Traduction::LANGUE_FR => $this->_('français'),
)
);
Tag::setTitleSeparator(' | ');
Tag::setTitle('GSS Sports');
Tag::prependTitle($this->_('ville_montreal'));
// default page content
$this->tag->setPageContent('layout/page');
$this->tag->setBodyClass('page-header-fixed page-sidebar-closed-hide-logo page-content-white');
// Prépare les assets JS & CSS
$this->_setupAssets();
$this->gss->setStaticBaseUri();
$this->gss->setEnum(self::$enum);
self::$GSS = new \stdClass();
self::$GSS->enum = self::$enum;
self::$GSS->language = $this->gss->getLanguage();
$this->config->frontend->language = self::$GSS->language;
$this->view->setVar('gss', self::$GSS);
$this->view->setVar('currentDemandeur', $this->gss->getDemandeur());
$this->view->setVar('currentActeur', $this->gss->getActeur());
}
}
/**
* Configure les assets pour le front-end (JS / CSS)
* @access protected
* @TODO fix relative path in minified CSS & JS with a super awesome .htaccess rule (maybe..)
* @TODO cache CSS with the current version
* @TODO remove remote static google content...
*/
protected function _setupAssets() {
// CSS Header Core
$cssHeaderCore = $this->assets->collection('css-header-core');
// $cssHeaderCore->addFilter(new Cssmin());
$cssHeaderCore->setTargetPath('minified/css-header-core.css');
$cssHeaderCore->setTargetUri('minified/css-header-core.css');
$cssHeaderCore->addCss('https://fonts.googleapis.com/css?family=Open+Sans:400,300,600,700&subset=all', false);
$cssHeaderCore->addCss('assets/global/plugins/font-awesome/css/font-awesome.min.css');
$cssHeaderCore->addCss('assets/global/plugins/simple-line-icons/simple-line-icons.min.css');
$cssHeaderCore->addCss('assets/global/plugins/bootstrap/css/bootstrap.min.css');
$cssHeaderCore->addCss('assets/global/plugins/uniform/css/uniform.default.css');
$cssHeaderCore->addCss('assets/global/plugins/bootstrap-switch/css/bootstrap-switch.min.css');
$cssHeaderCore->addCss('assets/global/plugins/pace/themes/pace-theme-flash.css');
// CSS Header Theme
$theme = empty($this->config->theme)? 'default' : $this->config->theme;
$cssHeaderTheme = $this->assets->collection('css-header-theme');
// $cssHeaderTheme->addFilter(new Cssmin());
$cssHeaderTheme->setTargetPath('minified/css-header-theme.css');
$cssHeaderTheme->setTargetUri('minified/css-header-theme.css');
$cssHeaderTheme->addCss('assets/global/css/components.min.css');
$cssHeaderTheme->addCss('assets/global/css/plugins.min.css');
$cssHeaderTheme->addCss('assets/layouts/layout/css/layout.min.css');
$cssHeaderTheme->addCss('assets/layouts/layout/css/themes/' . $theme . '.min.css');
$cssHeaderTheme->addCss('assets/layouts/layout/css/custom.min.css');
$cssHeaderTheme->addCss('css/theme-overrides.css');
// JS Header Core
$jsHeaderCore = $this->assets->collection('js-header-core');
// $jsHeaderCore->addFilter(new Jsmin());
$jsHeaderCore->setTargetPath('minified/js-header-core.js');
$jsHeaderCore->setTargetUri('minified/js-header-core.js');
$jsHeaderCore->addJs('assets/global/plugins/pace/pace.min.js');
$jsHeaderCore->addJs('assets/global/plugins/jquery.min.js');
$jsHeaderCore->addJs('assets/global/plugins/jquery-migrate.min.js');
$jsHeaderCore->addJs('assets/global/plugins/jquery-ui/jquery-ui.min.js');
$jsHeaderCore->addJs('assets/global/plugins/bootstrap/js/bootstrap.min.js');
// JS Footer Core (IE fixes)
$jsFooterCoreIE = $this->assets->collection('js-footer-core-ie');
// $jsFooterCoreIE->addFilter(new Jsmin());
$jsFooterCoreIE->setTargetPath('minified/js-footer-core-ie.js');
$jsFooterCoreIE->setTargetUri('minified/js-footer-core-ie.js');
$jsFooterCoreIE->addJs('assets/global/plugins/respond.min.js');
$jsFooterCoreIE->addJs('assets/global/plugins/excanvas.min.js');
$jsFooterCoreIE->addJs('assets/global/plugins/ie8.fix.min.js');
// JS Footer Core
$jsFooterCore = $this->assets->collection('js-footer-core');
// $jsFooterCore->addFilter(new Jsmin());
$jsFooterCore->setTargetPath('minified/js-footer-core.js');
$jsFooterCore->setTargetUri('minified/js-footer-core.js');
$jsFooterCore->addJs('assets/global/plugins/jquery-cookiebar/jquery.cookieBar.min.js');
$jsFooterCore->addJs('assets/global/plugins/js.cookie.min.js');
$jsFooterCore->addJs('assets/global/plugins/jquery-slimscroll/jquery.slimscroll.min.js');
$jsFooterCore->addJs('assets/global/plugins/jquery.blockui.min.js');
$jsFooterCore->addJs('assets/global/plugins/uniform/jquery.uniform.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-switch/js/bootstrap-switch.min.js');
$jsFooterCore->addJs('assets/global/plugins/select2/js/select2.full.min.js');
$jsFooterCore->addJs('assets/global/plugins/select2/js/i18n/fr.js');
$jsFooterCore->addJs('assets/global/plugins/select2/js/i18n/en.js');
//@TODO checker si on utilise tout les lib
$jsFooterCore->addJs('assets/global/scripts/datatable.js');
$jsFooterCore->addJs('assets/global/plugins/datatables/datatables.min.js');
$jsFooterCore->addJs('assets/global/plugins/datatables/plugins/bootstrap/datatables.bootstrap.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-toastr/toastr.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-sweetalert/sweetalert.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-summernote/summernote.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-summernote/lang/summernote-fr-FR.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-modal/js/bootstrap-modalmanager.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-modal/js/bootstrap-modal.js');
$jsFooterCore->addJs('assets/global/plugins/jquery-repeater/jquery.repeater.js');
$jsFooterCore->addJs('assets/global/plugins/jquery-inputmask/jquery.inputmask.bundle.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-wizard/jquery.bootstrap.wizard.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-fileinput/bootstrap-fileinput.js');
$jsFooterCore->addJs('assets/global/plugins/moment.min.js');
$jsFooterCore->addJs('assets/global/plugins/lodash.min.js');
$jsFooterCore->addJs('assets/global/plugins/simpleupload.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-daterangepicker/daterangepicker.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-timepicker/js/bootstrap-timepicker.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-editable/bootstrap-editable/js/bootstrap-editable.min.js');
// page
$jsFooterCore->addJs('assets/global/scripts/app.js');
// layout
$jsFooterCore->addJs('assets/layouts/layout/scripts/layout.min.js');
$jsFooterCore->addJs('assets/layouts/global/scripts/quick-sidebar.min.js');
$jsFooterCore->addJs('assets/layouts/global/scripts/quick-nav.min.js');
// Prépare la collection pour le CSS dans le header
$cssHeaderPage = $this->assets->collection('css-header-page');
$cssHeaderPage->setTargetPath('minified/css-header-page.css');
$cssHeaderPage->setTargetUri('minified/css-header-page.css');
//@TODO checker si on utilise tout les lib
$cssHeaderPage->addCss('assets/global/plugins/datatables/datatables.min.css');
$cssHeaderPage->addCss('assets/global/plugins/datatables/plugins/bootstrap/datatables.bootstrap.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-datepicker/css/bootstrap-datepicker3.min.css');
$cssHeaderPage->addCss('assets/global/plugins/select2/css/select2.min.css');
$cssHeaderPage->addCss('assets/global/plugins/select2/css/select2-bootstrap.min.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-toastr/toastr.min.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-sweetalert/sweetalert.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-summernote/summernote.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-modal/css/bootstrap-modal-bs3patch.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-modal/css/bootstrap-modal.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-fileinput/bootstrap-fileinput.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-daterangepicker/daterangepicker.min.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-datepicker/css/bootstrap-datepicker3.min.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-timepicker/css/bootstrap-timepicker.min.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css');
$cssHeaderPage->addCss('assets/global/plugins/bootstrap-editable/bootstrap-editable/css/bootstrap-editable.css');
// Prépare la collection pour le JS dans le footer
$jsFooterPage = $this->assets->collection('js-footer-page');
$jsFooterPage->setTargetPath('minified/js-footer-page.js');
$jsFooterPage->setTargetUri('minified/js-footer-page.js');
$jsFooterPage->addJs('js/error.js');
$jsFooterPage->addJs('js/cookie.js');
$jsFooterPage->addJs('js/toastr.js');
$jsFooterPage->addJs('js/modal.js');
$jsFooterPage->addJs('js/summernote.js');
$jsFooterPage->addJs('js/datatable.js');
$jsFooterPage->addJs('js/select2.js');
$jsFooterPage->addJs('js/datepicker.js');
$jsFooterPage->addJs('js/inputmask.js');
$jsFooterPage->addJs('js/custom.js');
$jsFooterPage->addJs('js/file.js');
$jsFooterPage->addJs('js/ajax.js');
$jsFooterPage->addJs('js/condition.js');
$jsFooterPage->addJs('js/precision.js');
$jsFooterPage->addJs('js/repeater.js');
// Timeout feature
if (!in_array($this->dispatcher->getControllerName(), array('errors', 'connexion', 'legal'))) {
$jsFooterCore->addJs('assets/global/plugins/jquery-idle-timeout/jquery.idletimeout.js');
$jsFooterCore->addJs('assets/global/plugins/jquery-idle-timeout/jquery.idletimer.js');
$jsFooterCore->addJs('assets/global/plugins/bootstrap-sessiontimeout/bootstrap-session-timeout.min.js');
$jsFooterPage->addJs('js/idle-timeout.js');
$jsFooterPage->addJs('js/session-timeout.js');
}
}
/**
* Permet de passer une étiquette afin de récupérer la traduction
*
* @param string $etiquette
*
* @return string
*/
public function _($etiquette) {
return $this->getDI()->get('translation')->t($etiquette);
}
}
|
| #10 | GSS\Controllers\AbstractController->initialize() /opt/rh/httpd24/root/var/www/html/gss-sports/app/controllers/ConnexionController.php (22) <?php
namespace GSS\Controllers;
use GSS\Models\Demandeur;
use GSS\Models\Acteur;
use GSS\Models\Courriel;
use Phalcon\Db\Column;
use Phalcon\Validation\Message;
use Phalcon\Validation;
/**
* Contrôleur pour les pages de connexion, inscription, réinitialisation
* @author Julien Turbide <jturbide@nuagerie.com>
* @version 1.0.0
*/
class ConnexionController extends AbstractController
{
public function initialize()
{
parent::initialize();
$this->assets
->collection('css-header-theme')
->addCss('assets/pages/css/login.min.css');
$this->tag->setBodyClass('login');
$this->tag->setPageContent('layout/login');
$acteur = $this->gss->getActeur();
$demandeur = $this->gss->getDemandeur();
if ($acteur || $demandeur) {
$this->response->redirect('/');
}
}
/**
* Page de connexion
*/
public function indexAction()
{
$validation = new Validation();
if ($this->request->isPost()) {
$login = false;
$courriel = $this->request->getPost('courriel', 'string');
$password = $this->request->getPost('password');
$validation->add('courriel', new Validation\Validator\PresenceOf(array(
'message' => $this->gss->_('courriel_obligatoire'),
)));
$validation->add('password', new Validation\Validator\PresenceOf(array(
'message' => $this->gss->_('mot_de_passe_obligatoire'),
)));
$messages = $validation->validate($this->request->getPost());
if (!count($messages)) {
$demandeur = Demandeur::findFirst(array(
'courriel = :courriel:',
'bind' => array(
'courriel' => $this->filter->sanitize($courriel, 'string'),
),
'bindTypes' => array(
'courriel' => Column::BIND_PARAM_STR
)
));
if ($demandeur && !$demandeur->confirmation) {
$validation->appendMessage(
new Message(
$this->gss->_('confirmation_courriel_obligatoire'),
'courriel',
'Unauthorized',
401
)
);
} else if ($demandeur && $this->security->checkHash($this->config->security->salt . $password, $demandeur->password)) {
$login = true;
$this->session->set('demandeur', $demandeur);
}
$acteur = Acteur::findFirst(array(
'courriel = :courriel:',
'bind' => array(
'courriel' => $this->filter->sanitize($courriel, 'string'),
),
'bindTypes' => array(
'courriel' => Column::BIND_PARAM_STR
)
));
if ($acteur && $this->security->checkHash($this->config->security->salt . $password, $acteur->password)) {
$login = true;
$this->session->set('acteur', $acteur);
}
if (empty($acteur) && empty($demandeur)) {
$validation->appendMessage(
new Message(
$this->gss->_('courriel_inexistant'),
'courriel',
'NotFound',
404
)
);
}
}
if ($login) {
$redirect = $this->request->get('redirect');
$path = parse_url($redirect, PHP_URL_PATH);
$query = parse_url($redirect, PHP_URL_QUERY);
$path = empty($path) ? null : $path;
return $this->response->redirect($path . (empty($query) ? null : '?' . $query));
// return $this->response->redirect(
// $this->url->get(trim($path, '/') . '/' //fix pour env de la ville
// . (empty($query)? null : '?' . $query))
// );
} else {
$validation->appendMessage(
new Message(
$this->gss->_('authentification_echouee'),
'connexion',
'BadRequest',
400
)
);
}
}
$this->view->setVar('validation', $validation);
}
/**
* Page d'inscription
* - Si inscription avec succès,
* -- Envois du courriel de confirmation,
* -- Redirection vers la page de confirmation
*/
public function inscriptionAction()
{
$demandeur = new Demandeur();
// Si tentative d'inscription
if ($this->request->isPost()) {
// Tentative d'inscription
$token = $demandeur->prepareToken();
if ($demandeur->save($this->request->getPost())) {
// Envois un courriel de confirmation
$courriel = new Courriel();
$courriel->save(array(
'gabarit' => 'courriel_confirmation_demandeur',
'meta' => array(
'demandeur' => $demandeur,
'lien' => $this->url->getStatic(array(
'for' => 'controller-action',
'controller' => 'connexion',
'action' => 'confirmation',
'params' =>
'?courriel=' . rawurlencode($demandeur->courriel)
. '&token=' . rawurlencode($token)
)),
'courriel' => $demandeur->courriel,
'token' => $token
),
));
// Inscription avec succès, redirection vers la page de confirmation
return $this->response->redirect(array(
'for' => 'controller-action',
'controller' => 'connexion',
'action' => 'confirmation',
'params' => '?courriel=' . rawurlencode($this->filter->sanitize($demandeur->courriel, 'string'))
));
}
}
// Met l'objet du demandeur par défaut ou l'objet de la tentative d'inscription
$this->view->setVar('demandeur', $demandeur);
}
/**
* Page de confirmation
* Si le courriel est récupéré, envois du courriel de confirmation
*/
public function confirmationAction()
{
$demandeur = new Demandeur();
$validation = new Validation();
$confirmationCourriel = $this->request->get('courriel', 'string');
$confirmationToken = $this->request->get('token', 'string');
if ($this->request->isPost() || (!empty($confirmationCourriel) && !empty($confirmationToken))) {
$validation->add('token', new Validation\Validator\PresenceOf(array(
'message' => $this->gss->_('jeton_confirmation_obligatoire'),
)));
$validation->add('courriel', new Validation\Validator\PresenceOf(array(
'message' => $this->gss->_('courriel_confirmation_obligatoire'),
)));
$messages = $validation->validate($this->request->get());
if (!count($messages)) {
$demandeur = Demandeur::findFirstByCourriel($confirmationCourriel);
if (!$demandeur) {
$validation->appendMessage(
new Message(
$this->gss->_('courriel_confirmation_introuvable'),
'courriel',
'notFound',
404
)
);
} else if (!$demandeur->confirmation) {
$this->_validationToken($demandeur, $confirmationToken, $validation, 'confirmation');
} else {
// no u, lil troll script kiddie
$validation->appendMessage(
new Message(
$this->gss->_('compte_demandeur_deja_confirme'),
'courriel',
'confirmed',
400
)
);
}
}
}
// Met l'objet du demandeur par défaut ou l'objet de la tentative d'inscription
$this->view->setVar('validation', $validation);
$this->view->setVar('demandeur', $demandeur);
}
/**
* Page de réinitialisation
*/
public function reinitialisationAction()
{
$courriel = new Courriel();
$demandeur = new Demandeur();
$validation = new Validation();
$validation->validate();
if ($this->request->isPost()) {
$reinitialisationCourriel = $this->request->getPost('courriel', 'string');
$reinitialisationToken = $this->request->getPost('token', 'string');
$validation->add('courriel', new Validation\Validator\PresenceOf(array(
'message' => $this->gss->_('courriel_obligatoire'),
)));
$messages = $validation->validate($this->request->getPost());
if (!count($messages)) {
$demandeur = Demandeur::findFirstByCourriel($reinitialisationCourriel);
if ($demandeur) {
if (empty($reinitialisationToken)) {
// reset token
$token = $demandeur->prepareToken();
if ($demandeur->save()) {
// Envois un courriel de confirmation
$courriel->save(array(
'gabarit' => 'courriel_reinitialisation',
'meta' => array(
'demandeur' => $demandeur,
'lien' => $this->url->getStatic(array(
'for' => 'controller-action',
'controller' => 'connexion',
'action' => 'reinitialisation',
'params' =>
'?courriel=' . rawurlencode($demandeur->courriel)
. '&token=' . rawurlencode($token)
)),
'courriel' => $demandeur->courriel,
'token' => $token
)
));
// Courriel de réinitialisation envoyé
return $this->response->redirect(array(
'for' => 'controller-action',
'controller' => 'connexion',
'action' => 'reinitialisation',
'params' =>
'?courriel=' . rawurlencode($demandeur->courriel)
. '&envoye=1'
));
}
} else {
$this->_validationToken($demandeur, $reinitialisationToken, $validation, 'reinitialisation');
}
} else {
// Courriel inexistant
$validation->appendMessage(
new Message(
$this->gss->_('courriel_inexistant'),
'courriel',
'NotFound',
404
)
);
}
}
}
// Met l'objet du demandeur par défaut ou l'objet de la tentative d'inscription
$this->view->setVar('courriel', $courriel);
$this->view->setVar('demandeur', $demandeur);
$this->view->setVar('validation', $validation);
}
public function deconnexionAction()
{
}
private function _validationToken($demandeur, $token, $validation, $type)
{
// Vérification du token du demandeur
if ($demandeur->checkToken($token)) {
// Expiration du token
$demandeur->confirmation = true;
$demandeur->token_hash = null;
// Le token est bon, permet les modifications au demandeur
if ($demandeur->save($this->request->get())) {
return $this->response->redirect(array(
'for' => 'controller',
'controller' => 'connexion',
'params' => '?' . $type . '=1'
));
}
} else {
// Mauvais token
if (empty($demandeur->token_hash)) {
// Token expiré car inexistant
$validation->appendMessage(
new Message(
$this->gss->_('jeton_expire'),
'token',
'Expired',
403
)
);
} else {
// Token invalide car ne concorde pas
$validation->appendMessage(
new Message(
$this->gss->_('jeton_invalide'),
'token',
'Invalid',
401
)
);
}
}
}
}
|
| #11 | GSS\Controllers\ConnexionController->initialize() |
| #12 | Phalcon\Dispatcher->dispatch() |
| #13 | Phalcon\Mvc\Application->handle() /opt/rh/httpd24/root/var/www/html/gss-sports/public/index.php (43) <?php
use Phalcon\Mvc\Application;
use Phalcon\DI\FactoryDefault;
use GSS\Config\App;
use GSS\Config\Config;
use GSS\Config\Loader;
use GSS\Config\Services;
class Bootstrap
{
public $app;
public $config;
public $loader;
public $di;
public $services;
public function __construct()
{
$appPath = realpath('../app/');
$appPath = empty($appPath) ? __DIR__ . '/../' : $appPath . '/';
$configPath = $appPath . 'config/';
require_once $configPath . 'App.php';
require_once $configPath . 'Config.php';
require_once $configPath . 'Loader.php';
require_once $configPath . 'Services.php';
$this->di = new FactoryDefault();
$this->app = new App();
$this->config = new Config();
$this->config->mergeEnvConfig();
$this->config->mergeFrontendConfig();
if (!$this->config->debug) {
ini_set('display_errors', 0);
}
$this->loader = new Loader($this->config);
$this->di->setShared('loader', $this->loader);
$this->services = new Services($this->di, $this->config);
}
public function run() {
echo (new Application($this->di))->handle()->getContent();
}
}
$bootstrap = new Bootstrap();
$bootstrap->run(); |
| #14 | Bootstrap->run() /opt/rh/httpd24/root/var/www/html/gss-sports/public/index.php (48) <?php
use Phalcon\Mvc\Application;
use Phalcon\DI\FactoryDefault;
use GSS\Config\App;
use GSS\Config\Config;
use GSS\Config\Loader;
use GSS\Config\Services;
class Bootstrap
{
public $app;
public $config;
public $loader;
public $di;
public $services;
public function __construct()
{
$appPath = realpath('../app/');
$appPath = empty($appPath) ? __DIR__ . '/../' : $appPath . '/';
$configPath = $appPath . 'config/';
require_once $configPath . 'App.php';
require_once $configPath . 'Config.php';
require_once $configPath . 'Loader.php';
require_once $configPath . 'Services.php';
$this->di = new FactoryDefault();
$this->app = new App();
$this->config = new Config();
$this->config->mergeEnvConfig();
$this->config->mergeFrontendConfig();
if (!$this->config->debug) {
ini_set('display_errors', 0);
}
$this->loader = new Loader($this->config);
$this->di->setShared('loader', $this->loader);
$this->services = new Services($this->di, $this->config);
}
public function run() {
echo (new Application($this->di))->handle()->getContent();
}
}
$bootstrap = new Bootstrap();
$bootstrap->run(); |
| Key | Value |
|---|---|
| _url | /connexion/inscription |
| Key | Value |
|---|---|
| REDIRECT_UNIQUE_ID | aXr7h6qB18X7yk3MlEJe6wAAAAY |
| REDIRECT_APPLICATION_ENV | vdm_production |
| REDIRECT_STATUS | 200 |
| UNIQUE_ID | aXr7h6qB18X7yk3MlEJe6wAAAAY |
| APPLICATION_ENV | vdm_production |
| HTTP_X_REAL_IP | 216.73.216.33 |
| HTTP_X_FORWARDED_FOR | 216.73.216.33, 216.73.216.33 |
| HTTP_HOST | servicesenligne2.ville.montreal.qc.ca |
| HTTP_WL_PROXY_SSL | true |
| HTTP_X_FORWARDED_PROTO | https |
| HTTP_CONNECTION | close |
| HTTP_CF_RAY | 9c569baecacc4af4-CMH |
| HTTP_ACCEPT | */* |
| HTTP_ACCEPT_ENCODING | gzip |
| HTTP_USER_AGENT | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com) |
| HTTP_CDN_LOOP | cloudflare; loops=1 |
| HTTP_CF_CONNECTING_IP | 216.73.216.33 |
| HTTP_CF_IPCOUNTRY | US |
| HTTP_CF_VISITOR | {"scheme":"https"} |
| PATH | /opt/rh/httpd24/root/usr/bin:/opt/rh/httpd24/root/usr/sbin:/sbin:/usr/sbin:/bin:/usr/bin |
| SERVER_SIGNATURE | |
| SERVER_SOFTWARE | Apache/2.4.6 (Oracle) PHP/5.5.21 |
| SERVER_NAME | servicesenligne2.ville.montreal.qc.ca |
| SERVER_ADDR | 10.145.1.76 |
| SERVER_PORT | 80 |
| REMOTE_ADDR | 10.17.1.133 |
| DOCUMENT_ROOT | /opt/rh/httpd24/root/var/www/html |
| REQUEST_SCHEME | http |
| CONTEXT_PREFIX | |
| CONTEXT_DOCUMENT_ROOT | /opt/rh/httpd24/root/var/www/html |
| SERVER_ADMIN | root@localhost |
| SCRIPT_FILENAME | /opt/rh/httpd24/root/var/www/html/gss-sports/public/index.php |
| REMOTE_PORT | 38290 |
| REDIRECT_QUERY_STRING | _url=/connexion/inscription |
| REDIRECT_URL | /gss/sports/connexion/inscription |
| GATEWAY_INTERFACE | CGI/1.1 |
| SERVER_PROTOCOL | HTTP/1.0 |
| REQUEST_METHOD | GET |
| QUERY_STRING | _url=/connexion/inscription |
| REQUEST_URI | /gss/sports/connexion/inscription |
| SCRIPT_NAME | /gss-sports/public/index.php |
| PHP_SELF | /gss-sports/public/index.php |
| REQUEST_TIME_FLOAT | 1769667463,509 |
| REQUEST_TIME | 1769667463 |
| HTTPS | on |
| # | Path |
|---|---|
| 0 | /opt/rh/httpd24/root/var/www/html/gss-sports/public/index.php |
| 1 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/config/App.php |
| 2 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/config/Config.php |
| 3 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/config/Loader.php |
| 4 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/config/Services.php |
| 5 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/config/env/config.vdm_production.php |
| 6 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/config/Router.php |
| 7 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/library/Phalcon/Utils/Slug.php |
| 8 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/plugins/Mvc/View/Error.php |
| 9 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/plugins/Mvc/View.php |
| 10 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/plugins/Mvc/Dispatcher/Camelize.php |
| 11 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/plugins/Mvc/Dispatcher/Security.php |
| 12 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/plugins/Mvc/Dispatcher/Rest.php |
| 13 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/plugins/Mvc/Dispatcher/Error.php |
| 14 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/plugins/GSS.php |
| 15 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/controllers/ConnexionController.php |
| 16 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/controllers/AbstractController.php |
| 17 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/models/AbstractModel.php |
| 18 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/library/jTurbide/Mvc/Model/Snapshots.php |
| 19 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/library/jTurbide/Mvc/Model/SoftDelete.php |
| 20 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/library/jTurbide/Mvc/Model/RawValue.php |
| 21 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/library/jTurbide/Mvc/Model/CreatedDate.php |
| 22 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/library/jTurbide/Mvc/Model/UpdatedDate.php |
| 23 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/library/jTurbide/Mvc/Model/Log.php |
| 24 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/library/jTurbide/Mvc/Model/User.php |
| 25 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/library/jTurbide/Mvc/Model/Relationship.php |
| 26 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/library/jTurbide/Mvc/Model/Eagerload.php |
| 27 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/library/Phalcon/Mvc/Model/EagerLoadingTrait.php |
| 28 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/library/jTurbide/Mvc/Model/Expose/Expose.php |
| 29 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/library/jTurbide/Mvc/Model/FindIn.php |
| 30 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/library/jTurbide/Mvc/Model/Utils.php |
| 31 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/library/jTurbide/Mvc/Model/Cache.php |
| 32 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/library/jTurbide/Mvc/Model/Slug.php |
| 33 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/models/Erreur.php |
| 34 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/models/Demandeur.php |
| 35 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/models/Projet.php |
| 36 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/models/Liste.php |
| 37 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/models/Traduction.php |
| 38 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/library/Phalcon/Translate/Adapter/Database.php |
| 39 | /opt/rh/httpd24/root/var/www/html/gss-sports/app/library/Phalcon/Translate/Adapter/Base.php |
| Memory | |
|---|---|
| Usage | 1572864 |