/*
Retourne le nom du controller a partir de son alias
978855
protected function _reverseAlias($alias)
    {
        $config = $this->getServiceManager()->get('Config');
        $aliases = $config['controllers']['invokables'];
        if (array_key_exists($alias, $aliases)) {
            return $aliases[$alias];
        }
        return $alias;
    }
63058
protected function _controllerName()
    {
        $inflections = [
            'underscore',
            'humanize',
        ];

        if ($this->_action()->scope() === 'entity') {
            $inflections[] = 'singularize';
        }

        $baseName = $this->_controller()->getName();
        foreach ($inflections as $inflection) {
            $baseName = Inflector::$inflection($baseName);
        }

        return $baseName;
    }
25980
def controller_dirs
			parts = @controller.class.underscore.split('/').map do |part|
				%w[_controller _ctrl]
					.find { |suffix| part.chomp! suffix }
				part
				## Alternative, but slower by ~50%:
				# part.sub(/_(controller|ctrl)$/, '')
			end
			combine_parts(parts).map! { |path| path.join('/') }
		end
1142883
protected function alias(String & $controller, String $namespace = NULL)
    {
        if( ! empty($this->settings['alias']) )
        {
            $controller .= EOL.EOL.'class_alias("'.Base::suffix($namespace, '\\').$name.'", "'.$this->settings['alias'].'");';
        }
    }
694334
public function getControllerName($type = 'plural')
    {
        if ($type == 'singular') {
            // auto calc if not already set
            if ($this->singularName == null) {
                $className = get_called_class();
                $config = $this->getDI()->get('config');
                $className = str_replace($config['namespaces']['controllers'], '', $className);
                $className = str_replace('Controller', '', $className);
                $this->singularName = $className;
            }
            return $this->singularName;
        } elseif ($type == 'plural') {
            // auto calc most common plural
            if ($this->pluralName == null) {
                // this could be better, just adding an s by default
                $this->pluralName = $this->getControllerName('singular') . 's';
            }
            return $this->pluralName;
        }

        // todo throw error here
        return false;
    }
219651
public function changePasswordAction ($username)
    {
        if (false === $this->get('security.context')->isGranted('ROLE_SUPER_ADMIN')) {
            throw new AccessDeniedException();
        }
        
        // Récupération de l'objet User
        $manager = $this->container->get('fos_user.user_manager');
        $user = $manager->findUserByUsername($username);
        
        // Création du formulaire
        $form = $this->createForm(
            new UserChangePwdFormType($manager->getClass()),
            $user
        );
        
        // Validation du formulaire
        $request = $this->getRequest();
        if ($request->getMethod() == 'POST') {
            $form->bind($request);
            if ($form->isValid()) {
                
                $manager->updateUser($user);
                
                $this->get('session')->getFlashBag()->set('success', "Le mot de passe de <strong>".$user->getUsername()."</strong> a été initialisé avec succès");
                return $this->redirect($this->generateUrl('olix_security_manager_user_list'));
            }
            $form->addError(new FormError('Tous les champs ne sont pas complètement remplis'));
        }
        
        // Affichage du formulaire
        return $this->container->get('olix.admin')->render('OlixSecurityBundle:UserManager:changepwd.html.twig', 'olix_security_users', array(
            'user'   => $user,
            'form'   => $form->createView(),
        ));
    }
1305157
function(req, res, next) {
			req.controller = controllerName;
			req.action = actionName || 'index';
			next();
		}
5870
public function getControllerName()
        {
            if (null === $this->_controller) {
                $this->_controller = $this->getParam($this->getControllerKey());
            }

            return $this->_controller;
        }
6424
public function addTel($name, $label = '', $is_mandatory = true)
    {
        $e = new \FrenchFrogs\Form\Element\Tel($name, $label);
        $this->addElement($e);
        $e->addRule('laravel','laravel', ['regex:/^[+]{0,1}[0-9]{9,13}$/'],['regex' => 'Le champ doit être un numero valide . Il peut commencer par un + et ne doit contenir que des chiffres (Au moins 10)']);

        if ($is_mandatory) {
            $e->addRule('required');
        } else {
            $e->addFilter('nullable');
        }

        return $e;
    }
1223686
function setUpStates(pages, routeNameParent, parentDirectory) {
            pages.forEach(function (page) {
                if (!page.isBlock && (!page.isStateRef || page.stateRef)) {
                    var routeName = routeNameParent + '.' + page.name;
                    var dirState = routeName.replace('winlassie.', '').split('.');
                    var templateUrl = null;
                    var pageNameReplace = replaceAll(page.name, '_', '-');
                    var state = {url: '/' + pageNameReplace, data: {haveTemplate: false}};

                    // Page cachée ou pas
                    if (typeof page.hidden !== 'undefined') {
                        state.data.hidden = page.hidden;
                    } else {
                        state.data.hidden = false;
                    }

                    // C'est une route d'action (view, create, edit...)
                    if (page.niveauAction) {
                        dirState.pop();
                        state.data.action = page.niveauAction;
                    }

                    // C'est page contient un paramètre requireLogin pour définir si l'utilisateur doit être authentifié
                    if (page.requireLogin) {
                        state.data.requireLogin = page.requireLogin;
                    } else {
                        state.data.requireLogin = true;
                    }

                    // C'est page contient un paramètre requireLogin pour définir si l'utilisateur doit être authentifié
                    if (page.redirectTo) {
                        state.redirectTo = 'winlassie.' + page.redirectTo;
                        state.data.haveTemplate = true;
                    }

                    // Construction du répertoire
                    if (!parentDirectory || isEmpty(parentDirectory) || (page.stateRef && !isEmpty(page.stateRef))) {
                        // Soit on fait référence à une route différente, une sorte d'inclusion, soit on a un fonctionnement normal
                        if (page.stateRef && !isEmpty(page.stateRef)) {
                            dirState = page.stateRef;
                        } else {
                            dirState = dirState.join('/');
                        }
                    } else {
                        dirState = parentDirectory;

                        // Ce n'est pas un niveau, alors on peut concaténé le nom de la page
                        if (!page.niveauAction) {
                            dirState = dirState + '/' + page.name;
                        }
                    }

                    // Titre de la page
                    if (page.title) {
                        state.data.pageTitle = page.title;
                    }

                    // Données suplémentaire pour la route
                    if (page.data) {
                        state.data = Object.assign({}, state.data, page.data);
                    }

                    // Définition de la vue html
                    if (page.views && typeof page.views === 'object') {
                        // On fait référence à une vue qui est le dossier "common"
                        if (page.views.contentCommon) {
                            templateUrl = {templateUrl: 'views/w17_template/common/' + page.views.contentCommon};
                        } else {
                            if (page.views.content && typeof page.views.content === 'object') {
                                templateUrl = Object.assign({}, page.views.content);
                            } else if (typeof page.views.content === 'string') {
                                templateUrl = {templateUrl: 'views/w17_template/' + dirState + '/' + page.views.content};
                            }
                        }

                        // Définition de la vue dans la route pour le conteneur "content" de la route "winlassie"
                        state.views = {
                            'content@winlassie': templateUrl
                        };

                        state.data.haveTemplate = true;

                        // Paramètres de la vue
                        if (page.views.params && Array.isArray(page.views.params) && 0 < page.views.params.length) {
                            var paramsUrl = [];
                            var paramsSearch = [];

                            page.views.params.forEach(function (value) {
                                if (value.startsWith('?')) {
                                    paramsSearch.push(value.substring(1));
                                } else {
                                    paramsUrl.push(value);
                                }
                            });

                            if (0 < paramsUrl.length) {
                                state.url += '/:' + paramsUrl.join('/:');
                            }

                            if (0 < paramsSearch.length) {
                                state.url += '?' + paramsSearch.join('?')
                            }
                        }
                    }

                    states[routeName] = state;

                    if (Array.isArray(page.pages) && 0 < page.pages.length) {
                        setUpStates(page.pages, routeName, dirState);
                    }
                }
            });
        }
607456
protected function findNamespaceInController(&$controller)
    {
        if (strstr($controller, '\\')) {
            $namespace = explode('\\', $controller);
            $controller = end($namespace);
            $namespace = rtrim(join('\\', array_slice($namespace, 0, count($namespace) - 1)), '\\');
        } else {
            $namespace = isset($this->group['_namespace']) ? $this->group['namespace'] : null;
        }

        return $namespace;
    }
1056229
function(sControllerName, vObject) {
				var oResultConfig;
				findConfig(CONFIG_CONTROLLER_REPLACEMENTS, vObject, function(oConfig) {
					oResultConfig = oConfig[sControllerName];
					return !!oResultConfig;
				});
				return oResultConfig;
			}
1325359
public function getControllerName()
    {
        $controllerObjectName = $this->getControllerObjectName();
        if ($controllerObjectName !== '') {

            // Extract the controller name from the controller object name to assure that the case is correct.
            // Note: Controller name can also contain sub structure like "Foo\Bar\Baz"
            return substr($controllerObjectName, -(strlen($this->controllerName) + 10), - 10);
        } else {
            return $this->controllerName;
        }
    }
121080
public function onCoreController(FilterControllerEvent $event)
    {
        // ici on vérifie que la requête est une "MASTER_REQUEST" pour que les sous-requêtes soient ingorées (par exemple si on fait un render() dans notre template)
        if ($event->getRequestType() !== HttpKernel::MASTER_REQUEST) {
            return;
        }
        
        // On vérifie qu'un token d'autentification est bien présent avant d'essayer manipuler l'utilisateur courant.
        if ($this->context->getToken()) {
            $user = $this->context->getToken()->getUser();
            
            // On utilise un délai pendant lequel on considère que l'utilisateur est toujours actif et qu'il n'est pas nécessaire de refaire de mise à jour
            $delay = new \DateTime();
            $strDelay = sprintf('%s minutes ago', $this->delay);
            $delay->setTimestamp(strtotime($strDelay));
            
            // On vérifie que l'utilisateur est bien du bon type pour ne pas appeler getLastActivity() sur un objet autre objet User
            if ($user instanceof User && $user->getLastActivity() < $delay) {
                $user->setOnline();
                $this->em->flush($user);
            }
        }
    }
893307
private function createControllerFiles() {
        $moduleName = ucfirst($this->getModule());
        $moduleNameLower = strtolower($this->getModule());

        $controllerName = ucfirst($this->getController());
        $controllerNameLower = strtolower($this->getController());
        $controllerNameUpper = strtoupper($this->getController());

        /* Criação do arquivo de principal do controlador */
        $src_module_controller = file_get_contents($this->srcTemplateDirectory . 'Src_Module_Controller.tmpl');
        $srcModuleController = str_replace("%controllerNameUpper%", $controllerNameUpper, str_replace("%controllerNameLower%", $controllerNameLower, str_replace("%controllerName%", $controllerName, str_replace("%moduleName%", $moduleName, str_replace("%moduleNameLower%", $moduleNameLower, $src_module_controller)))));
        file_put_contents($this->dstControllerDirectory . ucfirst($this->getController()) . 'Controller.php', $srcModuleController);
        chmod($this->dstControllerDirectory . ucfirst($this->getController()) . 'Controller.php', 0644);

        /* Criação do arquivo de VIEW do controlador */
        file_put_contents($this->dstViewDirectory . 'index.phtml', '');
        chmod($this->dstViewDirectory . 'index.phtml', 0644);

        /* Criação do arquivo de TRANSLATE do controlador */
        file_put_contents($this->dstTranslateDirectory . 'index.php', "<?php\n\nreturn Array();");
        chmod($this->dstTranslateDirectory . 'index.php', 0644);
    }
975972
function (req, res, next) {
            if (!req.miajs.controllerDebugInfo) {
                req.miajs.controllerDebugInfo = {};
            }
            if (controller.name && controller.version) {
                req.miajs.controllerDebugInfo[controller.name + '_' + controller.version] = {'runtime': Date.now() - req.miajs.controllerStart};
            }
            next();
        }
820562
public function getActualites($params = array()){
		$tActualites = new Template($this->getCheminPhysique().$this->cheminTemplates);
		$tActualites->set_filenames(array('encartActualites'=>'encartAccueil.tpl'));

		$tActualites->assign_vars(array('titre'=>_("Actualités"), "type"=>"actualites"));
		$i=0;

		if (count($params['actualites'])>0) {
			$tActualites->assign_vars(array('lienVersTout'=>"<a href='".$this->creerUrl('', 'toutesLesActualites', array())."'>"._("Toutes les actualités")."</a>"));
		}


		// s'il y a un parcours plus récent que la derniere actu ,  on affiche le parcours comme une actualité ( ...je sais mais bon ,  va comprendre....)
		$reqDateDerniereActualite = "SELECT max(date) as maxDate FROM actualites WHERE desactive<>'1'";
		$resDateDerniereActualite = $this->connexionBdd->requete($reqDateDerniereActualite);

		$indiceGlobalNbActu = 0;
		$isParcoursToDisplay = false; // est ce que l'on va afficher un parcours plutot qu'une actu en place principale sur l'encars des actus
		if (mysql_num_rows($resDateDerniereActualite)>0) {
				
				
			$fetchDateDerniereActualite = mysql_fetch_assoc($resDateDerniereActualite);
			$dateActu = $fetchDateDerniereActualite['maxDate'];
			// voyons maintenant s'il y a un parcours ajouté actif plus recent
			$reqParcoursActif = "SELECT idParcours,  dateAjoutParcours, libelleParcours, commentaireParcours FROM parcoursArt WHERE dateAjoutParcours>'".$dateActu."' AND isActif='1' ORDER BY dateAjoutParcours DESC,  idParcours DESC LIMIT 1";
			$resParcoursActif = $this->connexionBdd->requete($reqParcoursActif);
				
			if (mysql_num_rows($resParcoursActif)>0) {
				$isParcoursToDisplay = true;
				$fetchParcoursActif = mysql_fetch_assoc($resParcoursActif);

				// recuperation d'une photo appartenant a une adresse du parcours (en principe dans le meilleur des cas la premiere photo de la premiere etape)
				$reqEtapes = "SELECT idEtape, commentaireEtape FROM etapesParcoursArt WHERE idParcours = '".$fetchParcoursActif['idParcours']."'";
				$resEtapes = $this->connexionBdd->requete($reqEtapes);
				if (mysql_num_rows($resEtapes)>0) {
					$trouvePhoto = false;
						
					while (!$trouvePhoto && $fetchEtape = mysql_fetch_assoc($resEtapes)) {
						$arrayPhoto = $adresse->getPhotoFromEtape(array('idEtape'=>$fetchEtape['idEtape'], 'format'=>'moyen'));
						$trouvePhoto = $arrayPhoto['trouve'];
					}
						
					mysql_data_seek($resEtapes, 0);
						
					$commentaire = "";
					if ($fetchParcoursActif['commentaireParcours']!='') {
						$bbCode = new bbCodeObject();
						$trouveCommentaire = true;
						$commentaire = $bbCode->convertToDisplay(array('text'=>$fetchParcoursActif['commentaireParcours']));
					} else {
						$trouveCommentaire = false;
					}
						
					while (!$trouveCommentaire && $fetchEtape = mysql_fetch_assoc($resEtapes)) {
						if ($fetchEtape['commentaireEtape']!='') {
							$trouveCommentaire = true;
							$commentaire = $fetchEtape['commentaireEtape'];
						}
					}
						
						
					if ($trouvePhoto) {
						$s = new stringObject();

						// si une photo pour le dernier parcours a ete trouvee ,  alors on affiche le parcours en actu principale
						$i=1; // pour que la boucle des actus commence a 1 et ne remplace pas l'actu principale
						$indiceGlobalNbActu = 1; // pour que l'on affiche pas la derniere actu ramenee par la fonction sinon il y en aurait une de plus que dans les autres encars


						$urlImage = $arrayPhoto['url'];

						$url = $this->creerUrl('', 'detailParcours', array('archiIdParcours'=>$fetchParcoursActif['idParcours']));


						$dimensionImage = "";

						$tActualites->assign_block_vars("premiereAdresseAvecPhoto", array());
						$tActualites->assign_vars(
								array(
										"photoAdresse1"=>"<a href='".$url."'><img alt='' style='border:1px #000000 solid;margin-right:2px;float:left;'  src='".$urlImage."' $dimensionImage ></a>",
										"descriptionAdresse1"=>"<a href='".$url."'>".$d->toFrenchAffichage($fetchParcoursActif['dateAjoutParcours'])." ".stripslashes($fetchParcoursActif['libelleParcours'])."</a><br>".$s->coupureTexte($s->sansBalisesHtml(stripslashes($commentaire)), 10)."<br>".mysql_num_rows($resEtapes)." étapes... <a href='".$url."' style='font-size:11px;'>lire la suite</a>"
								)
						);

					}
				}
			}
		}



		foreach ($params['actualites'] as $indice => $value) {
			if ($indiceGlobalNbActu<5) {
				if ($i==0) {
					// premiere actualite
					@list($w, $h) = getimagesize($this->getCheminPhysique()."images/actualites/".$value['idActualite']."/".$value['photoIllustration']);
						
					if ($w>$h) {
						$dimensionImage = "width=130";    // modif par fabien pour que l'image soit au même format que les autres rubriques (01/02/2013)
					} else {
						$dimensionImage = "height=130";
					}
						
					$urlImage = $this->getUrlRacine()."images/actualites/".$value['idActualite']."/".$value['photoIllustration'];
						
					if ($value['urlFichier']!='')
						$url = $value['urlFichier'];
					else
						$url = $this->creerUrl('', 'afficherActualite', array('archiIdActualite'=>$value['idActualite']));
						
					$tActualites->assign_block_vars("premiereAdresseAvecPhoto", array());
					$tActualites->assign_vars(
							array(
									"photoAdresse1"=>"<a href='".$url."'><img alt='' style='border:1px #000000 solid;margin-right:2px;float:left;' src='".$urlImage."' $dimensionImage></a>",
									"descriptionAdresse1"=>"<a href='".$url."'>".$d->toFrenchAffichage($value['date'])." ".stripslashes($value['titre'])."</a><br>".stripslashes($string->coupureTexte($string->sansBalisesHtml($value['texte']), 20))." <a href='".$url."' style='font-size:11px;'>lire la suite</a>"
							)
					);
						
				} else {
					if ($value['urlFichier']!='')
						$url = $value['urlFichier'];
					else
						$url = $this->creerUrl('', 'afficherActualite', array('archiIdActualite'=>$value['idActualite']));
						
					// by fabien le 23/03/2012 : ajout de stripslashes pour virer les \ sur la page d'acceuil
						
					$tActualites->assign_block_vars('listeAdressesSuivantes', array('lien'=>"<a style='font-size:12px;' href='".$url."'><span class='date'>".$d->toFrenchAffichage($value['date'])."</span> ".stripslashes($value['titre'])."</a>"));
				}

				$i++;
			}
			$indiceGlobalNbActu++;
		}

		ob_start();
		$tActualites->pparse('encartActualites');
		$htmlActualites = ob_get_contents();
		ob_end_clean();
		return $htmlActualites;
	}