toArray() as $section => $params ){ $this->serviceVersions[$section] = $params; } } public function preDispatch() { $auth = Zend_Auth::getInstance(); if (!$auth->hasIdentity()){ $this->_redirect('/user/login'); } } /** * Affichage de la documentation des webservices */ public function indexAction() { $request = $this->getRequest(); $ws = $request->getParam('ws','WsEntreprise'); $version = $request->getParam('version', '0.2'); //Liste de webservice protégé $protectedWs = array( 'WsInterne' => array('mricois', 'ylenaour', 'sbeaugrand') ); //On vérifie que l'utilisateur peut accèder à la documentation if ( array_key_exists($ws, $protectedWs) ) { $auth = Zend_Auth::getInstance(); $username = $auth->getIdentity()->username; if ( !in_array($username, $protectedWs[$ws]) ) { $this->renderScript('documentation/nodoc.phtml'); exit; } } //Charger les classes et les types pour le service suivant la version $pathClassService = 'WsScore/'; if ($ws == 'WsEntreprise'){ $pathClassService.= 'v'.$version.'/'; } $wsConfig = new Zend_Config_Ini($pathClassService.$ws.'.ini'); foreach($wsConfig->Type->toArray() as $Type){ $this->classmap[$Type] = $Type; } //Définir l'url d'accès au WSDL $wsdl_url = $this->view->baseUrl(); switch($ws){ case 'WsInterne': $wsdl_url.= '/sinterne?wsdl'; break; case 'WsEntreprise': if (APPLICATION_ENV == 'production'){ $wsdl_url.= '/entreprise/v'.$version.'?wsdl'; } else { $wsdl_url.= '/entreprise/v'.$version.'?wsdl-auto'; } break; } //Affichage de la documentation require_once 'Web/WebClassDoc.php'; $doc = new WebClassDoc($ws, $this->classmap, $pathClassService); $tabServiceMethods = $doc->getServiceMethods(); // Tri des méthodes par ordre alphabétique $tabServiceMethodsK = array(); foreach($tabServiceMethods as $method) { $tabServiceMethodsK[$method['name']] = $method; } ksort($tabServiceMethodsK); $tabServiceTypes = $doc->getServiceTypes(); $this->view->assign('wsdl', $wsdl_url); $this->view->assign('serviceMethods', $tabServiceMethodsK); $this->view->assign('serviceTypes', $tabServiceTypes); } /** * Liste les exemples de code disponible pour chaque méthode */ public function exemplesAction() { } /** * Affichage exemple de code avec coloration syntaxique * Le code doit être placé dans public/code et doit être nommé * [nom de la méthode]-langage.txt */ public function codeAction() { $langage = strtolower($this->_getParam('langage','')); $element = $this->_getParam('element',''); $fichier = APPLICATION_PATH . '/../public/code/' . $element . '-' . $langage . '.txt'; if (file_exists($fichier)){ $sourceCode = file_get_contents($fichier); require_once 'geshi/geshi.php'; $geshi = new GeSHi($sourceCode, $langage); $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS); $sourceHighlight = $geshi->parse_code(); $this->view->assign('langage', strtoupper($langage)); $this->view->assign('code', $sourceHighlight); } else { $this->view->assign('langage', 'Element non traités, Vous pouvez aussi nous fournir des exemples.'); } } /** * Affichage de la liste des erreurs avec leur code */ public function erreurAction() { require_once 'WsScore/WsScore.php'; $ws = new WsScore(); $erreurs = $ws->listError; $this->view->assign('erreurs', $erreurs); } }