public function getScriptsForProfile(KalFunction $function, EiProfil $profile) { if ($function == null || $profile == null) { return null; } return $this->getInstance()->createQuery('s')->select('s.script_id')->where('KalFunction.function_id=s.function_id And KalFunction.function_ref=s.function_ref')->AndWhere('KalFunction.function_id=? And KalFunction.function_ref=? ', array($function->getFunctionId(), $function->getFunctionRef()))->AndWhere('EiScriptVersion.script_id=s.script_id And EiScriptVersion.profile_id=? And EiScriptVersion.profile_ref=?', array($profile->getProfileId(), $profile->getProfileRef()))->AndWhere('EiFunctionHasCommande.script_id=s.script_id')->fetchArray(); }
public static function createOrUpdateDistantParams(EiProjet $ei_project, EiProfil $ei_profile, KalFunction $kal_function, $data, Doctrine_Connection $conn = null) { if ($conn == null) { $conn = Doctrine_Manager::connection(); } try { $conn->beginTransaction(); //Début de la transaction //Appel du webservice $result_update = MyFunction::loadResultOfWebServiceByPostJson(MyFunction::getPrefixPath(null) . "/serviceweb/project/parameter/createOrUpdate.json", array('project_id' => $ei_project->getProjectId(), 'project_ref' => $ei_project->getRefId(), 'profile_id' => $ei_profile->getProfileId(), 'profile_ref' => $ei_profile->getProfileRef(), 'function_id' => $kal_function->getFunctionId(), 'function_ref' => $kal_function->getFunctionRef(), 'data' => $data)); $array_result = json_decode(html_entity_decode($result_update), true); //Récupération du paramètre pour traitement if (count($array_result) == 0) { return false; } if (array_key_exists("error", $array_result)) { return false; } if (!$array_result[0]) { return false; } //Rechargement d'un paramètre self::reload($array_result, $conn); $conn->commit(); return $array_result[0]['fp_id']; } catch (Exception $e) { $conn->rollback(); return false; throw $e; } }
public function checkLogicBetweenProjectAndProfile(EiProjet $ei_project, EiProfil $ei_profile) { //On vérifie si le profil appartient bien au projet if ($ei_project->getProjectId() != $ei_profile->getProjectId() || $ei_project->getRefId() != $ei_profile->getProjectRef()) { $this->forward404('Environment don\'t belong to project'); } }
/** * @param EiProjet $project * @param EiProfil $profile * * @return EiActiveIteration */ public function getActiveIteration(EiProjet $project = null, EiProfil $profile = null) { if ($project == null || $profile == null) { return null; } else { return $this->findOneByProjectRefAndProjectIdAndProfileRefAndProfileId($project->getRefId(), $project->getProjectId(), $profile->getProfileRef(), $profile->getProfileId()); } }
public function saveActiveIteration($iteration_id, EiProjet $ei_project, EiProfil $ei_profile, Doctrine_Connection $conn = null) { if ($conn == null) { $conn = Doctrine_Manager::connection(); } $itLink = new EiActiveIteration(); $itLink->setProjectId($ei_project->getProjectId()); $itLink->setProjectRef($ei_project->getRefId()); $itLink->setProfileId($ei_profile->getProfileId()); $itLink->setProfileRef($ei_profile->getProfileRef()); $itLink->setIterationId($iteration_id); $itLink->save($conn); }
public function getVersionNoticeByProfil(EiProfil $profil, EiProjet $ei_project, $lang) { $notice = $this->getKalFonction()->getNotice(); $result = Doctrine_Core::getTable('EiVersionNotice')->createQuery('v')->where('EiNoticeProfil.notice_id=v.notice_id And EiNoticeProfil.notice_ref=v.notice_ref And EiNoticeProfil.version_notice_id=v.version_notice_id ')->andWhere("EiNoticeProfil.profile_id=? And EiNoticeProfil.profile_ref=?", array($profil->getProfileId(), $profil->getProfileRef()))->andWhere("v.notice_id=? And v.notice_ref=?", array($notice->getNoticeId(), $notice->getNoticeRef()))->andWhere('v.lang=?', array($lang))->execute(); if ($result->getFirst()) { return $result->getFirst(); } //Si la version de notice n'est pas spécifiée pour la langue donnée, // on retourne celle definie avec la langue definie par défaut sur le projet $result2 = Doctrine_Core::getTable('EiVersionNotice')->createQuery('v')->where('EiNoticeProfil.notice_id=v.notice_id And EiNoticeProfil.notice_ref=v.notice_ref And EiNoticeProfil.version_notice_id=v.version_notice_id ')->andWhere("EiNoticeProfil.profile_id=? And EiNoticeProfil.profile_ref=?", array($profil->getProfileId(), $profil->getProfileRef()))->andWhere("v.notice_id=? And v.notice_ref=?", array($notice->getNoticeId(), $notice->getNoticeRef()))->andWhere('v.lang=? ', array($ei_project->getDefaultNoticeLang()))->execute(); if ($result2->getFirst()) { return $result2->getFirst(); } //Si aucune version de notice est trouvé on retourne null return null; }
public static function getScriptUpdateResult(EiProjet $ei_project, EiProfil $kal_profil, EiTicket $ei_ticket, $json_string, KalFunction $kal_function, EiUser $ei_user, $script_id = 0, Doctrine_Connection $conn = null) { if ($conn == null) { $conn = Doctrine_Manager::connection(); } $ei_subject = Doctrine_Core::getTable("EiSubject")->findOneByPackageIdAndPackageRef($ei_ticket->getTicketId(), $ei_ticket->getTicketRef()); if ($ei_subject == null) { return array("success" => false, "message" => "Intervention not found ... "); } //Intervention non trouvée //Appel du webservice $result_update = MyFunction::loadResultOfWebServiceByPostJson(MyFunction::getPrefixPath(null) . "serviceweb/project/script/update.json", array('project_id' => $ei_project->getProjectId(), 'project_ref' => $ei_project->getRefId(), 'ticket_id' => $ei_ticket->getTicketId(), 'ticket_ref' => $ei_ticket->getTicketRef(), 'profile_id' => $kal_profil->getProfileId(), 'profile_ref' => $kal_profil->getProfileRef(), 'function_id' => $kal_function->getFunctionId(), 'function_ref' => $kal_function->getFunctionRef(), 'script_id' => $script_id, 'user_id' => $ei_user->getUserId(), 'user_ref' => $ei_user->getRefId(), 'package_name' => "Package_S" . $ei_subject->getId(), 'json_string' => rawurlencode($json_string))); //Récupération du projet pour traitement // if ($result_update == null) return null; // $result_file->loadXML($result_update); // $result_file->save('result_update.xml'); /* sauvegarde du fichier pour vérifier le bon fonctionnement du web service */ // $result_item=$result_file->documentElement; // if ($result_item->getElementsByTagName("error")->item(0)): // return -1; // endif; // if ($result_item->getElementsByTagName("process_error")->item(0)): // return 0; // endif; // if ($result_item->getElementsByTagName("process_ok")->item(0)): // return 1; // endif; try { $conn->beginTransaction(); //Récupération du ticket pour traitement $array_result = json_decode(html_entity_decode($result_update), true); //Récupération du projet pour traitement if (count($array_result) == 0) { return array("success" => false, "message" => "Error on transaction"); } if (array_key_exists("error", $array_result)) { return array("success" => false, "message" => $array_result["error"]); } if (array_key_exists("process_error", $array_result)) { return array("success" => false, "message" => $array_result["process_error"]); } if (!$array_result[0]) { return array("success" => false, "message" => "Empty result content"); } self::reload($array_result, $conn); $conn->commit(); return array("success" => true, "message" => "Transaction maded successfully"); } catch (Exception $e) { throw new Exception($e); $conn->rollback(); return array("success" => false, "message" => "Error on reload process ..."); } }
public function getCurrentNoticeVersion(EiProjet $ei_project, EiProfil $ei_profile, KalFunction $kal_function, Doctrine_Connection $conn = null) { if ($conn == null) { $conn = Doctrine_Manager::connection(); } $q = $conn->fetchAll("select vn.*, np.* from ei_version_notice vn \n left join ei_notice n on n.notice_id=vn.notice_id and n.notice_ref=vn.notice_ref \n left join kal_function k on k.function_id=n.function_id and k.function_ref= n.function_ref\n left join ei_notice_profil np on vn.notice_id=np.notice_id and np.notice_ref=vn.notice_ref and np.version_notice_id=vn.version_notice_id \n\n where k.function_id=" . $kal_function->getFunctionId() . " and k.function_ref=" . $kal_function->getFunctionRef() . "\n and np.profile_id=" . $ei_profile->getProfileId() . " and np.profile_ref=" . $ei_profile->getProfileRef() . " and vn.lang='" . $ei_project->getDefaultNoticeLang() . "'"); if (count($q) > 0) { return $q[0]; } return array(); }
<ul class="nav marge-none"> <li class="divider-vertical"> </li> <li class="dropdown"> <button id="scenarios_menu" class="btn dropdown-toggle" data-toggle="dropdown" role="button" data-target="#"> <img src="/images/boutons/engrenage_small.png" alt="" class="pull-left" title="Scenarios menu"/> Test Suites <span class="caret"></span> </button> <ul class="dropdown-menu"> <li class="save_test_suit" ><a href="#" alt="Save"><img src="/images/boutons/save_scenery.png" alt="Save" /> Save </a></li> <li class="create_scenario_clone"> <a href="#" alt="Save as" title="Copy the scenario"> <img src="/images/boutons/save_scenery.png" alt="Save as"/> Save as </a> </li> <li> <a href="<?php echo url_for2('projet_eiscenario', array('project_id' => $ei_project->getProjectId(), 'project_ref' => $ei_project->getRefId(), 'action' => 'delete', 'profile_id' => $ei_profile->getProfileId(), 'profile_ref' => $ei_profile->getProfileRef(), 'profile_name' => EiProfil::slugifyProfileName($ei_profile->getName()), 'id' => $ei_scenario->getId()), array('confirm' => "Sure about deleting test suite? this involve deleting all versions and functions ")); ?> " alt="Delete" title="Delete the scenario"> <img src="/images/boutons/delete_test_suite.png" alt="Delete" /> Delete</a> </li> <?php if (isset($ei_version) && $ei_version != null) { ?> <?php } else { ?> <?php $profil_scenario = Doctrine_Core::getTable("EiProfilScenario")->findOneByEiScenarioIdAndProfileIdAndProfileRef($ei_scenario->getId(), $ei_profile->getProfileId(), $ei_profile->getProfileRef());
/** * Méthode permettant de récupérer la version associée * au profil passé en paramètres. * @param type $profile_id * @return type * @throws Exception */ public function getVersionForProfil(EiProfil $ei_profile) { $versions = Doctrine_Query::create()->from('EiVersion v ')->where('EiProfilScenario.ei_scenario_id=v.ei_scenario_id And EiProfilScenario.ei_version_id=v.id')->AndWhere('EiProfilScenario.ei_scenario_id=? And EiProfilScenario.profile_id=? And EiProfilScenario.profile_ref=?', array($this->getId(), $ei_profile->getProfileId(), $ei_profile->getProfileRef()))->execute(); if (!$versions->getFirst()) { return null; } return $versions->getFirst(); }
<?php } ?> </td> <td> <?php if ($isTs) { ?> <?php echo link_to2(ei_icon('ei_show'), 'eitestset_oracle', array('project_id' => $project_id, 'project_ref' => $project_ref, 'ei_scenario_id' => $graph->getEiScenario()->getId(), 'ei_test_set_id' => $graph->getEiTestSet()->getId(), 'profile_name' => EiProfil::slugifyProfileName($profile_name), 'profile_id' => $profile_id, 'profile_ref' => $profile_ref), array('target' => '_blank', 'title' => 'Oracle')); ?> <?php echo link_to2('<i class="fa fa-code fa-lg"></i>', "eitestset_oracle_download", array('project_id' => $project_id, 'project_ref' => $project_ref, 'ei_scenario_id' => $graph->getEiScenario()->getId(), 'ei_test_set_id' => $graph->getEiTestSet()->getId(), 'sf_format' => "xml", 'profile_name' => EiProfil::slugifyProfileName($profile_name), 'profile_id' => $profile_id, 'profile_ref' => $profile_ref), array('target' => '_blank', 'title' => 'XML logs')); ?> <a href="<?php echo $urlExcelRequest; ?> " data-id="<?php echo $graph->getEiTestSet()->getId(); ?> " title="Excel" class="excel-open-logs excelIcon"> <img src="<?php echo sfConfig::get("app_icone_excel_24x24_path"); ?> " alt="" width="20" title="Open logs in Excel" class="excel-icon-img disabledOracle" /> <?php echo sfConfig::get("app_loader_excel_button");
public function setEiProfile(EiProfil $ei_profile) { $this->setProfileId($ei_profile->getProfileId()); $this->setProfileRef($ei_profile->getProfileRef()); }
public function MigrateManyFunctions(EiProjet $ei_project, EiProfil $ei_profile, sfGuardUser $guard, $tab_functions) { $result_file = new DOMDocument(); //Appel du webservice $result_update = self::loadResultOfWebServiceForMigration(MyFunction::getPrefixPath(null) . "/serviceweb/bug/migrateMany.xml", array('project_id' => $ei_project->getProjectId(), 'project_ref' => $ei_project->getRefId(), 'profile_id' => $ei_profile->getProfileId(), 'profile_ref' => $ei_profile->getProfileRef(), 'guard_id' => $guard->getId(), 'tab_functions' => $tab_functions)); //Récupération du projet pour traitement if ($result_update == null) { return null; } $result_file->loadXML($result_update); $result_file->save('result_migrate_many_bug.xml'); /* sauvegarde du fichier pour vérifier le bon fonctionnement du web service */ $result_item = $result_file->documentElement; if ($result_item->getElementsByTagName("process_error")->item(0)) { return 0; } if ($result_item->getElementsByTagName("process_ok")->item(0)) { return true; } }
public function getAndParseFunctionAndProjectParametersToArray(EiProfil $ei_profile, EiFonction $ei_fonction) { $this->kal_fonction = $ei_fonction->getKalFonction(); //Récupération de la fonction de la plate forme centrale (script) $this->InFunctionsParameters = $this->kal_fonction->getInKalParams(); //Récupération des paramètres d'entrée de la fonction $this->OutFunctionsParameters = $this->kal_fonction->getOutKalParams(); //Récupération des paramètres de sortie de la fonction $this->ei_project = $ei_profile->getProject(); $this->projectParams = $this->ei_project->getGlobalParams(); //Paramètres du projet /* Transformation des resultats en tableaux pour le json */ $this->parseFunctionAndProjectParamsToArray($this->InFunctionsParameters, $this->OutFunctionsParameters, $this->projectParams); }
<a href="#delete_eiscenario_modal" data-toggle="modal"> <i class="icon-trash"></i> Delete </a> </li> </ul> <div id="delete_eiscenario_modal" class="modal hide" role="dialog"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h3>Delete <?php echo $ei_scenario->getNomScenario(); ?> </h3> </div> <div class="modal-body modal-body-visible-overflow"> <?php echo "You are about to delete scenario <strong>" . $ei_scenario->getNomScenario() . "</strong>. All its versions will be deleted as well as data sets.<br/> Do you really want to delete " . $ei_scenario->getNomScenario() . " ?"; ?> </div> <div class="modal-footer"> <a href="#!" class="btn" data-dismiss="modal">Cancel</a> <a id="delete_scenario" href="<?php echo url_for2("projet_eiscenario_action", array('project_id' => $sf_request->getParameter('project_id'), 'project_ref' => $sf_request->getParameter('project_ref'), 'profile_name' => EiProfil::slugifyProfileName($sf_request->getParameter('profile_name')), 'profile_id' => $sf_request->getParameter('profile_id'), 'profile_ref' => $sf_request->getParameter('profile_ref'), 'ei_scenario_id' => $ei_scenario->getId(), 'action' => 'delete')); ?> " class="btn btn-danger"> Delete </a> </div> </div> <?php }
/** * Génère le XML d'une fonction pour le jeu de test. * Elle diffère de la fonction generateXMLForPHP dans la mesure où * generateXMLFromTestSet n'utilise que des tableaux pour la fonction. * * @param type $ei_fonction * @param EiProfil $profile * @return type */ public function generateXMLFromTestSet($ei_fonction, EiProfil $profile) { $prefix = MyFunction::getPrefixPath(); // On définit le document. $dom = new DomDocument("1.0", "utf-8"); $dom->formatOutput = true; //Génération de l'url du xsl associé à la fonction $user = $dom->createElement('user'); //$user->setAttribute("xsl", $urlxsl); $dom->appendChild($user); $nom_balise_fonction = $dom->createElement('fonction-' . $ei_fonction['function_id'] . '_' . $ei_fonction['function_ref']); $nom_balise_fonction->setAttribute("name", $ei_fonction['name']); $user->appendChild($nom_balise_fonction); //paramètre de la fonction foreach ($ei_fonction['params'] as $p => $param) { $nom_balise_param = $dom->createElement($param['name']); $param_value = $dom->createTextNode($param['valeur']); $nom_balise_param->appendChild($param_value); $nom_balise_fonction->appendChild($nom_balise_param); } //paramètres de profil foreach ($profile->getParams() as $param) { $nom_balise_param = $dom->createElement($param->getStringName()); $param_value = $dom->createTextNode($param->getValue()); $nom_balise_param->appendChild($param_value); $nom_balise_fonction->appendChild($nom_balise_param); } $dom->normalizeDocument(); // renvoie du fichier XML sous forme de chaine de caractères. return $dom->saveXML(); }
public function getProfilsScenarioForUser(EiUser $user, $scenarioId) { // On définit la liste qui sera retournée à null. $liste = null; // On définit la requête SQL qui va interroger la base de données afin de récupérer les scénarios visibles par // l'utilisateur. $query = "\n SELECT *\n FROM ei_profil\n WHERE (profile_ref, profile_id) IN (\n SELECT profile_ref, profile_id\n FROM ei_profil_scenario\n WHERE ei_scenario_id = " . $scenarioId . "\n AND ei_scenario_id IN (\n SELECT id\n FROM ei_scenario\n WHERE (project_ref, project_id) IN (\n SELECT project_ref, project_id\n FROM ei_project_user\n WHERE user_ref = " . $user->getRefId() . "\n AND user_id = " . $user->getUserId() . "\n )\n )\n );\n "; // On récupère sous forme de tableau les scénarios. $profils = Doctrine_Manager::getInstance()->getCurrentConnection()->fetchAll($query); // Si le nombre de scénarios est supérieur à zéro, on crée les objets associés. if (count($profils) > 0) { /** @var EiProfil $profilArray */ foreach ($profils as $profilArray) { $temp = new EiProfil(); $temp->setArray($profilArray); $liste[] = $temp; } } return $liste; }
<?php if (isset($ei_function) && isset($ei_project) && isset($ei_profile) && isset($ei_tree)) { $urlParams = array('project_id' => $project_id, 'project_ref' => $project_ref, 'profile_name' => EiProfil::slugifyProfileName($profile_name), 'profile_id' => $profile_id, 'profile_ref' => $profile_ref, "function_id" => $ei_function->getFunctionId(), "function_ref" => $ei_function->getFunctionRef()); ?> <table class="table table-bordered table-striped dataTable"> <tbody> <tr> <th>Title</th> <td><?php echo $ei_tree->getName(); ?> </td> </tr> <tr> <th>Criticity</th> <td> <?php $criticity_tab = $urlParams; $criticity_tab['action'] = 'changeCriticity'; ?> <?php $criticity = $ei_function->getCriticity() == null ? "Blank" : $ei_function->getCriticity(); ?> <a class="<?php echo 'btn criticity criticity-' . $criticity; ?> " id="changeFunctionCriticity" title="Change function criticity ?"
} ?> </td> <td> <span style="background-color:<?php echo $execution->getStatusColor(); ?> " class="label"> <?php echo $execution->getStatusName(); ?> </span> </td> <td> <?php echo link_to2(ei_icon('ei_show'), 'showCampaignExecutions', array('project_id' => $project_id, 'project_ref' => $project_ref, 'profile_name' => EiProfil::slugifyProfileName($profile_name), 'profile_id' => $profile_id, 'profile_ref' => $profile_ref, 'campaign_id' => $ei_campaign->getId(), 'campaign_execution_id' => $execution->getId()), array('target' => '_blank', 'title' => 'Show details')); ?> <?php $statistics = $url_params; ?> <?php $statistics['campaign_id'] = $ei_campaign->getId(); ?> <?php $statistics['campaign_execution_id'] = $execution->getId(); $statistics['action'] = "statistics"; ?> <a href="<?php echo url_for2("execution_stats", $statistics);
/** * Création des fichiers .xsl & .xml pour une fonction ou une tâche donnée. * * @param EiEnvironnementEiProfil $environnement Environnement sur lequel se base la tâche et/ou la fonction. * @param EiProfil $profil Profil utilisé. * @param array $commands Liste des séquences/fonctions à inclure. * @param EiTache|EiFunction $objet Fonction ou Tâche à exporter. */ public static function creerXSL(sfWebRequest $request, EiProjet $ei_project, EiUser $ei_user, EiProfil $profil = null, $commands = null) { //Récupération des paramètres de profil $profileParams = $profil->getParamsWithName($ei_user); /*************************************/ /***** Définition du XSL *****/ /*************************************/ // On définit le document. $dom = new DomDocument("1.0", "UTF-8"); $dom->formatOutput = true; // On définit les spécificités xsl. //-> Feuille de Style $css = $dom->createElement('xsl:stylesheet'); $css->setAttribute("xmlns:xsl", "http://www.w3.org/1999/XSL/Transform"); $css->setAttribute("version", "1.0"); $dom->appendChild($css); //-> Fichier de sortie $ps = $dom->createElement('xsl:preserve-space'); $ps->setAttribute("elements", "xsl:text"); $css->appendChild($ps); //-> Fichier de sortie $pi = $dom->createElement('xsl:output'); $pi->setAttribute("method", "xml"); $css->appendChild($pi); //-> Template à matcher. $tpl = $dom->createElement('xsl:template'); $tpl->setAttribute("match", "/"); $css = $css->appendChild($tpl); // On définit le jeu de test. $test = $dom->createElement("TestCase"); $test->setAttribute("seleniumIDEVersion", sfConfig::get("app_xml_seleniumIDEVersion")); if ($profil != null) { $test->setAttribute("baseURL", $profil->getBaseUrl()); } else { $test->setAttribute("baseURL", "default"); } // Puis on l'ajoute. $tpl = $tpl->appendChild($test); /************************************************ */ /***** Séquences/Fonctions/Commandes **** */ /************************************************ */ if ($commands != null) { foreach ($commands as $index => $command) { /******************************************** */ /***** Chargement des paramètres **** */ /******************************************** */ // en créant la racine selense. $o = $dom->createElement("selenese"); // Puis ses trois noeuds: commande, target, value. $cmd = $o->appendChild($dom->createElement("command")); $texte = $cmd->appendChild($dom->createTextNode($command->getName())); // Cible dynamique/statique $cible = $o->appendChild($dom->createElement("target")); $pattern = "#(?<!\\#)\\#\\{[\\w./]*}#"; /* On commence par interpréter tous les paramètres de profil sur la cible de la commande */ //$ch1=self::parseAndExtractProfileParamsValue($command->getCommandTarget(), $profileParams); $ch1 = self::replaceProfileParamWithValue($command->getCommandTarget(), $profileParams); $nbMatched = preg_match_all($pattern, $ch1, $matches); if (isset($matches) && $nbMatched > 0) { $toReplace = array(); //$ch1 = $command->getCommandTarget(); // pour chaque élément qui a matché le pattern foreach ($matches[0] as $m => $param) { //on protège notre expression afin que celle-ci ne soit pas considérer comme un pattern de regex $matches[0][$m] = '#\\' . preg_quote($param) . '#'; //puis l'on créer la chaine de remplacement correspondante $dompar = $dom->createElement("xsl:value-of"); $dompar->setAttribute("select", "user/fonction-" . $command->getFunctionId() . "_" . $command->getFunctionRef() . "/parameter[@name='" . substr($param, 2, -1) . "']/value"); //On récupère la sous chaine de $ch à partir de $param $sous_chaine_restante = strstr($ch1, $param); $cible->appendChild($dom->createCDATASection(substr($ch1, 0, stripos($ch1, $sous_chaine_restante)))); //stripos recherche la première occurence de $sous_chaine_restante dans $ch $cible->appendChild($dompar); //on ajoute la section <xsl:value-of> au CDATA //On extrait à la sous chaine restante le paramètre variable trouvé $ch1 = substr($sous_chaine_restante, strlen($param)); } /* Si c'est le dernier paramètre à interpreter ou si on trouvé aucun paramètre à interpreter alors on ajoute le reste de texte */ $cible->appendChild($dom->createCDATASection($ch1)); } else { $cible->appendChild($dom->createCDATASection($ch1)); } //Interprétation de la valeur de la commande $valeur = $o->appendChild($dom->createElement("value")); /* On commence par interpréter tous les paramètres de profil sur la valeur de la commande */ //$ch2=self::parseAndExtractProfileParamsValue($command->getCommandValue(), $profileParams); $ch2 = self::replaceProfileParamWithValue($command->getCommandValue(), $profileParams); $nbMatched = preg_match_all($pattern, $ch2, $matches); if (isset($matches) && $nbMatched > 0) { $toReplace = array(); //$ch = $command->getCommandValue(); // pour chaque élément qui a matché le pattern foreach ($matches[0] as $m => $param) { //on protège notre expression afin que celle-ci ne soit pas considérer comme un pattern de regex $matches[0][$m] = '#\\' . preg_quote($param) . '#'; //puis l'on créer la chaine de remplacement correspondante $dompar = $dom->createElement("xsl:value-of"); $dompar->setAttribute("select", "user/fonction-" . $command->getFunctionId() . "_" . $command->getFunctionRef() . "/parameter[@name='" . substr($param, 2, -1) . "']/value"); //$toReplace[$m]=$dompar; //Méthode 2 $sous_chaine_restante = strstr($ch2, $param); $sous_chaine_restante_debut = substr($ch2, 0, stripos($ch2, $sous_chaine_restante)); // Si que des caractères vides, on place cela dans une balise texte. if (preg_match("/^([[:space:]]+)\$/", $sous_chaine_restante_debut)) { $valeur->appendChild($dom->createElement("xsl:text", "" . $sous_chaine_restante_debut . "")); } else { $valeur->appendChild($dom->createCDATASection($sous_chaine_restante_debut)); } $valeur->appendChild($dompar); // //On extrait à la sous chaine restante le paramètre variable trouvé $ch2 = substr($sous_chaine_restante, strlen($param)); } /* Si c'est le dernier paramètre à interpreter ou si on trouvé aucun paramètre à interpreter alors on ajoute le reste de texte */ $valeur->appendChild($dom->createCDATASection($ch2)); } else { $valeur->appendChild($dom->createCDATASection($ch2)); } $tpl->appendChild($o); } } return $dom->saveXML(); }
<td>Description</td> <td>Expected</td> <td>Result</td> <td>Selenium Logs</td> <td>Selenium Status</td> </tr> </thead> <tbody> <?php foreach ($oracle as $key => $notice) { ?> <?php //Recherche des paramètres de la fonction pour interpréter celles variables dans le jeu de test $params = Doctrine_Core::getTable('EiTestSetParam')->getParamForTestSetAndEiTestFunction($ei_test_set_id, $notice['ei_test_set_function_id']); $paramsOut = Doctrine_Core::getTable('EiTestSetParam')->getParamForLogAndEiTestSetFunction($ei_test_set_id, $notice['ei_test_set_function_id']); $urlFuncSubjects = url_for2("subjectFunction", array("function_id" => $notice['function_id'], "function_ref" => $notice['function_ref'], "action" => "functionSubjects", 'profile_name' => EiProfil::slugifyProfileName($profile_name), 'profile_id' => $profile_id, 'profile_ref' => $profile_ref, 'project_id' => $project_id, 'project_ref' => $project_ref)); ?> <tr class="state-<?php echo strtolower($notice["statut_func_name"]); ?> "> <td><?php echo $notice['position']; //.'/'.count($params).'/'.count($profileParams) ?> </td> <td> <a href="<?php echo $urlFuncSubjects; ?> " target="_blank">
public function getLastIterationForProfile(EiProfil $ei_profile, Doctrine_Connection $conn = null) { if ($conn == null) { $conn = Doctrine_Manager::connection(); } return Doctrine_core::getTable("EiIteration")->getLastIterationForProfile($this->getProjectId(), $this->getProjectRef(), $this->getId(), $ei_profile->getProfileId(), $ei_profile->getProfileRef(), $conn); }