|
| | [wiki-pas-wiki] Projet de concensus en JdR | |
| | |
Auteur | Message |
---|
wyrmelin
Messages : 705 Date d'inscription : 13/06/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Jeu 30 Juin - 2:06 | |
| Le truc c'est que le terme "validé" sous-entend que l'information envoyée attend qu'un modérateur prenne le temps de la voir pour qu'elle soit enfin publiée. J'ose pas imaginer le drama le jour où le seul modérateur actif perd sa connexion. Pour l'hébergement, quelle quantité d'espace aurait-on besoin pour héberger ce site, en faisant large ? Des hébergeurs en vrac : http://www.1hebergement.com/http://www.hebergeur.pro/http://www.nuxit.com/ | |
| | | Amanzil
Messages : 58 Date d'inscription : 06/07/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Jeu 30 Juin - 12:21 | |
| Sur le compte de hosteur.com où j'ai pris le TS des Antihéros j'ai aussi une option d'hébergement avec un nom de domaine propre. (https://www.hosteur.com/hebergement-sites-internet/) Si ça peut aider | |
| | | Néadhora
Messages : 828 Date d'inscription : 11/05/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Jeu 30 Juin - 13:19 | |
| - Citation :
- Le truc c'est que le terme "validé" sous-entend que l'information envoyée attend qu'un modérateur prenne le temps de la voir pour qu'elle soit enfin publiée. J'ose pas imaginer le drama le jour où le seul modérateur actif perd sa connexion.
c'est totalement paramétrable. Sur un theme donné, tu peux dire qu'il y a pas besoin de modération. Sur un autre theme, tu peux dire qu'un groupe d'utilisateur ont les droits de modération. Sur un autre theme, tu peux donner les droits a un autre groupe, etc. - Citation :
- Pour l'hébergement, quelle quantité d'espace aurait-on besoin pour héberger ce site, en faisant large ?
ça dépend de la technologie utilisée, mais surtout des images. un site PHP, ça doit tenir en 5 mo. Après, le reste, ce sont les images. | |
| | | Néadhora
Messages : 828 Date d'inscription : 11/05/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Jeu 30 Juin - 13:21 | |
| j'a regardé vite fait les liens des sites que tu propose, mais j'ai pas vu si le serveur de base de données était inclus.
je sais par contre, que j'ai déjà utilisé OVH comme hebergement pour un site PHP avec une architecture mysql. Entre terme de perfomance / tarifs, c'est ce qu'il y avait de mieux à l'époque. | |
| | | wyrmelin
Messages : 705 Date d'inscription : 13/06/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Jeu 30 Juin - 19:22 | |
| Modération avant publication sur les fiches de PnJ. Le reste, peut être vérifié après publication. | |
| | | Néadhora
Messages : 828 Date d'inscription : 11/05/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Jeu 30 Juin - 23:36 | |
| c'est comme on le souhaite.
J'ai bossé toute la soirée sur le début du code, j'ai préparé mon environnement et j'ai créé mes premieres classes métier. le fait que je sois un peu rouillée en PHP n'aide pas a avancer vite :> | |
| | | Nox Invité
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Ven 1 Juil - 4:22 | |
| je suis d'accord avec Wyrmelin pour une fiche simple pour les guildes.
est-ce que je peut parler du projet à l"a dessinatrice" ou pas ? (et non ce n'est pas ma "chérie") |
| | | Néadhora
Messages : 828 Date d'inscription : 11/05/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Ven 1 Juil - 13:03 | |
| c'est pas un truc privé. Tu peux en parler a qui bon te semble.
| |
| | | Néadhora
Messages : 828 Date d'inscription : 11/05/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Ven 1 Juil - 16:47 | |
| Bon, ça avance. J'ai donc commencé à faire mes librairy en PHP/mysql. Voila ce que ça donne actuellement : - Personnage.php:
- Code:
-
<?php class Personnage{ //informations relatives au personnage private $intIdPersonnage; private $strPseudo; private $strNom; private $strPrenom; private $intTypePersonnage; private $strSexe; private $strStatut; private $txtAffiliations; private $boolValidation; private $strTypePistage; private $strLienArmurerie; //liaison à la table de race private $intIdRace; //propriétaire private $intIdUtilisateur; //serveur d'appartenance private $intIdServeur; //Reference pour les personnages basés sur d'autres personnages private $intIdReference; //psychologie TRP2 private $intAlignement; private $intEthique; private $intPieux; private $intImpulstif; private $intAscete; private $intCouard; private $intChaste; private $intEgoiste; private $intTrompeur; private $intIndulgent; private $intBrutal; private $intRenegat; //historique private $historique; /** * Initialise un personnage * @param <strong>Integer</strong> id - Idenfifiant numérique du personnage * @return Instance créée du personnage * @throws BadMethodCallException */ public function __construct($id) { if (is_numeric($id)) { $this->intIdPersonnage = (int)$id; } else { throw new InvalidArgumentException('Identifiant incorrect'); } } /** * Charge les informations du personnage depuis la Base de Données * @param <strong>Mysqli</strong> mysqli - Objet de connexion mysql instancié * @throws OutOfBoundsException, SQLiteException */ public function Charger(mysqli $mysqli){ $this->historique = array(); $query = 'SELECT ' .'PER.intIdPersonnage, ' .'PER.strPseudo, ' .'PER.strNom, ' .'PER.strPrenom, ' .'PER.intTypePersonnage, ' .'PER.strSexe, ' .'PER.strStatut, ' .'PER.txtAffiliations, ' .'PER.boolValidation, ' .'PER.strTypePistage, ' .'PER.strLienArmurerie, ' .'PER.intIdRace, ' .'PER.intIdUtilisateur, ' .'PER.intIdServeur, ' .'PER.intIdReference, ' .'PER.intAlignement, ' .'PER.intEthique, ' .'PER.intPieux, ' .'PER.intImpulstif, ' .'PER.intAscete, ' .'PER.intCouard, ' .'PER.intChaste, ' .'PER.intEgoiste, ' .'PER.intTrompeur, ' .'PER.intIndulgent, ' .'PER.intBrutal, ' .'PER.intRenegat ' .'FROM PER_Personnages WHERE intIdPersonnage = '.$this->intIdPersonnage.';'; $resultats = $mysqli->query($query); if ($resultats !== false){ $ligne = $resultats->fetch_assoc(); $this->intIdPersonnage = $ligne['intIdPersonnage']; $this->strPseudo = $ligne['strPseudo']; $this->strNom = $ligne['strNom']; $this->strPrenom = $ligne['strPrenom']; $this->intTypePersonnage = $ligne['intTypePersonnage']; $this->strSexe = $ligne['strSexe']; $this->strStatut = $ligne['strStatut']; $this->txtAffiliations = $ligne['txtAffiliations']; $this->boolValidation = $ligne['boolValidation']; $this->strTypePistage = $ligne['strTypePistage']; $this->strLienArmurerie = $ligne['strLienArmurerie']; $this->intIdRace = $ligne['intIdRace']; $this->intIdUtilisateur = $ligne['intIdUtilisateur']; $this->intIdServeur = $ligne['intIdServeur']; $this->intIdReference = $ligne['intIdReference']; $this->intAlignement = $ligne['intAlignement']; $this->intEthique = $ligne['intEthique']; $this->intPieux = $ligne['intPieux']; $this->intImpulstif = $ligne['intImpulstif']; $this->intAscete = $ligne['intAscete']; $this->intCouard = $ligne['intCouard']; $this->intChaste = $ligne['intChaste']; $this->intEgoiste = $ligne['intEgoiste']; $this->intTrompeur = $ligne['intTrompeur']; $this->intIndulgent = $ligne['intIndulgent']; $this->intBrutal = $ligne['intBrutal']; $this->intBrutal = $ligne['intBrutal']; $resultats->close(); }else{ throw new OutOfBoundsException('Impossible d\'assigner les informations du personnage'); } } /** * Charge les différentes périodes liés à un personnage * @param <strong>Mysqli</strong> mysqli - Objet de connexion mysql instancié */ public function chargerPeriodes(mysqli $mysqli){ $recursivite = ''; //on différencie le "true" des autres valeurs non nulles if($this->boolValidation === true){ $recursivite = 'OR PRD.intIdPersonnage = '.$this->intIdReference. ' '; } $query = 'SELECT PRD.intIdPeriode, ' .'PRD.intSaisonDebut, ' .'PRD.intAnneeDebut, ' .'PRD.intSaisonFin, ' .'PRD.intAnneeFin, ' .'PRD.strLienImage, ' .'PRD.txtDescription, ' .'PRD.intIdZone, ' .'PRD.intIdRegion, ' .'PRD.intIdContinent, ' .'ZON.strNomZone, ' .'ZON.strDescription, ' .'REG.strNomRegion, ' .'REG.strDescription AS strDescriptionRegion, ' .'CTN.strNomContinent, ' .'CTN.strDescription AS strDescriptionContinent ' .'FROM EVENT_Periodes PRD ' .'INNER JOIN LIEU_Zones ZON ON ZON.intIdZone = PRD.intIdZone ' .'INNER JOIN LIEU_Regions REG ON REG.intIdRegion = PRD.intIdRegion ' .'INNER JOIN LIEU_Continents CTN ON CTN.intIdContinent = PRD.intIdContinent ' .'WHERE PRD.intIdPersonnage = '.$this->intIdPersonnage.' '.$recursivite .'ORDER BY intIdAnneDebut ASC, intIdSaison ASC;'; //récupération des informations en base de données concernant les périodes $resultats = $mysqli->query($query); $listePeriodes = array(); if ($resultats !== false){ $ligne = $resultats->fetch_assoc(); while ($ligne !== null) { $dateDebut = new DateWow($ligne['intSaisonDebut'], $ligne['intAnneeDebut']); $dateFin = new DateWow($ligne['intSaisonFin'], $ligne['intAnneeFin']); $args1 = array ('nom' => $ligne['strNomContinent'], 'description' => $ligne['strDescriptionContient']); $continent = new Continent($ligne['intIdContinent'], $mysqli, $args1); $args2 = array ('nom' => $ligne['strNomRegion'], 'description' => $ligne['strDescriptionRegion'], 'continent' => $continent); $region = new Region($ligne['intIdContinent'], $mysqli, $args2); $args3 = array ('nom' => $ligne['strNomZone'], 'description' => $ligne['strDescription'], 'region' => $region); $zone = new Zone($ligne['intIdZone'], $mysqli, $args3); $periode = new Periode($ligne['intIdPeriode'], $dateDebut, $dateFin, $ligne['txtDescription'], $ligne['strLienImage'], $zone); $listePeriodes[] = $periode; $ligne = $resultats->fetch_assoc(); } }else{ throw new OutOfBoundsException('Impossible d\'assigner les informations de la periode'); } $resultats->close(); //chargement des evenements $query = 'SELECT PAR.intIdEvenement, PAR.txtDescription AS txtDescriptionPart, ' .'EVT.strNomEvenement, EVT.intSaisonEvenement, EVT.intAnneeEvenement, EVT.txtDescription, ' .'EVT.intIdZone, EVT.intIdRegion, EVT.intIdContinent, EVT.boolCoherent, EVT.intIdCreateur ' .'ZON.strNomZone, ' .'ZON.strDescription, ' .'REG.strNomRegion, ' .'REG.strDescription AS strDescriptionRegion, ' .'CTN.strNomContinent, ' .'CTN.strDescription AS strDescriptionContinent ' .'FROM EVENT_Participations PAR ' .'INNER JOIN EVENT_Evenements EVT ON EVT.intIdEvenement = PAR.intIdEvenement ' .'INNER JOIN LIEU_Zones ZON ON ZON.intIdZone = EVT.intIdZone ' .'INNER JOIN LIEU_Regions REG ON REG.intIdRegion = PRD.intIdRegion ' .'INNER JOIN LIEU_Continents CTN ON CTN.intIdContinent = PRD.intIdContinent ' .'WHERE PAR.intIdPersonnage = '.$this->intIdPersonnage.';'; $resultats = $mysqli->query($query); $listeEvents = array(); if ($resultats !== false){ $ligne = $resultats->fetch_assoc(); while ($ligne !== null) { $date = new DateWow($ligne['intSaisonEvenement'], $ligne['intAnneeEvenement']); //création de la zone géographique associée $args1 = array ('nom' => $ligne['strNomContinent'], 'description' => $ligne['strDescriptionContient']); $continent = new Continent($ligne['intIdContinent'], $mysqli, $args1); $args2 = array ('nom' => $ligne['strNomRegion'], 'description' => $ligne['strDescriptionRegion'], 'continent' => $continent); $region = new Region($ligne['intIdContinent'], $mysqli, $args2); $args3 = array ('nom' => $ligne['strNomZone'], 'description' => $ligne['strDescription'], 'region' => $region); $zone = new Zone($ligne['intIdZone'], $mysqli, $args3); //création de l'evenement et de la participation $args4 = array ('nom' => $ligne['strNomEvenement'], 'description' => $ligne['txtDescription'], 'date' => $date, 'zone' => $zone, 'coherent' => $ligne['boolCoherent'], 'createur' => $ligne['intIdCreateur']); $evenement = new Evenement($ligne['intIdEvenement'], $mysqli, $args4); $participation = new Participation($evenement, $ligne['strDescriptionParticipation']); //ajout à la liste des evenements $listeEvents[] = $participation; $ligne = $resultats->fetch_assoc(); } }else{ throw new OutOfBoundsException('Impossible d\'assigner les informations de la periode'); } //Préparation de l'historique final $this->historique = $this->FusionnerPeriodesEvenements($listePeriodes, $listeEvents); } /** * Permet de fusionner les événements et les périodes selon les dates * @param array $tabPeriodes - Tableau d'objets Periode * @param array $tabEvents - Tableau d'objets Participation * @return array $tabHistorique - Tableau d'objets Periode ou Participation classés par date */ private function FusionnerPeriodesEvenements(array $tabPeriodes, array $tabEvents){ $this->TrierHistorique($tabPeriodes); $this->TrierHistorique($tabEvents); $tabHistorique = array(); //Bouclage sur les périodes $i = 0; foreach ($tabPeriodes as $periode){ $depasser = false; while (!$depasser){ if ($periode->EstInclus($tabEvents[$i]->GetDate()) < 0){ $tabHistorique[] = $tabEvents[$i]; $i++; }else{ if ($periode->EstInclus($tabEvents[$i]->GetDate()) > 0){ $tabHistorique[] = $periode; $depasser = true; }else{ $periode->AjouterEvenement($tabEvents[$i]); $i++; } } } } //s'il reste des événements après la dernière période définie while ($i < count($tabEvents) -1 ){ $tabHistorique[] = $tabEvents[$i]; $i++; } return $tabHistorique; } /** * Tri les événements par date * @param REF array $tab - Tableau d'objet implementant les méthodes CompareTo() et GetDate() à trier * @param <strong>string</strong> $methode - Methode de tri (FUSION, INSERTION, BULLES) */ private function TrierHistorique(&$tab, $methode = 'FUSION'){ switch($methode){ case 'INSERTION': break; case 'BULLES' : break; default : //le tri fusion est l'algorithme le plus performant de tri, on le choisit donc par défaut $this->triFusion($tab); break; } } /** * fonction de tri fusion [complexité : O(n log n)] * @param REF <strong>Array</strong> $tab - Tableau de participations à trier */ private function triFusion ( &$tab ) { if( count( $tab ) <= 1 ){ return; } else { $tab1 = array(); $tab2 = array(); // Répartie les information dans 2 tableaux différent for( $i = 0; $i < count( $tab ); $i++) { if( $i < ( count( $tab ) ) / 2 ){ $tab1[] = $tab[ $i ]; }else{ $tab2[] = $tab[ $i ]; } } // Appel la fonction tri récursivement $this->triFusion( $tab1 ); $this->triFusion( $tab2 ); // Fusionne les petits tableaux en plus grand $this->fusionner( $tab1, $tab2, $tab ); } } private function fusionner ( $tab1, $tab2, &$tab ) { $i = 0; $i1 = $i2 = 0; // Fusionne les petits tableaux dans le plus grand while( $i1 < count( $tab1 ) && $i2 < count( $tab2 ) ) { if( $tab1[ $i1 ]->CompareTo($tab2[ $i2 ]->GetDate()) ){ // On compare ici $tab[ $i ] = $tab1[ $i1++ ]; }else{ $tab[ $i ] = $tab2[ $i2++ ]; } $i++; // S'il reste des éléments dans un des 2 tableaux mais pas dans l'autre while( $i1 < count( $tab1 ) ) { $tab[ $i ] = $tab1[ $i1++ ]; $i++; } while( $i2 < count( $tab2 ) ) { $tab[ $i ] = $tab2[ $i2++ ]; $i++; } } } }
- Evenement.php:
- Code:
-
<?php class Evenement{ private $intIdEvenement; private $strNomEvenement; private $dateEvenement; private $txtDescription; private $zone; private $boolCoherent; private $intIdCreateur; public function __construct($id = 0, mysqli $mysqli = null, array $args = null){ if(!is_numeric($id)){ throw new InvalidArgumentException('Identifiant non valide pour\'évenement'); }else{ //Ne pas confondre null, 0 et "" qui sont équivalents avec un opérateur binaire if ($args === null){ if ($mysqli !== null){ $this->InitFromId($id, $mysqli); }else{ $this->intIdEvenement = (int)$id; } }else{ $this->InitFromValeurs($id, $args['date'], $args['nom'], $args['description'], $args['zone'], $args['coherent'], $args['createur']); } } } public function InitFromId($id, Mysqli $mysqli){ if(!is_numeric($id)){ throw new InvalidArgumentException('Identifiant non valide pour\'évenement'); } //chargement en base de données } public function InitFromValeurs($id, DateWow $date, $nom, $description, Zone $zone, $coherent, $idProprietaire){ if(!is_numeric($id)){ throw new InvalidArgumentException('Identifiant non valide pour\'évenement'); } $this->intIdEvenement = (int)$id; $this->strNomEvenement = $nom; $this->dateEvenement = $date; $this->txtDescription = $description; $this->zone = $zone; $this->boolCoherent = $coherent; $this->intIdCreateur = $idProprietaire; } public function InitFromFormulaire(){ } /** * Retourne la date de l'événement * @return DateWow - Date de l'événement */ public function GetDate(){ return $this->dateEvenement; } /** * Permet de convertir l'objet sous un format d'affichage HTML * @param <strong>string</strong> $mode - Autorisation de modification (SELF ou ADMIN) */ public function ToXhtml($mode = 'SELF'){ } public function ToString(){ } public function ToFormulaire(){ }
}
- DateWow.php:
- Code:
-
<?php class DateWow{ private $intSaison; private $intAnnee; private $nomSaison; /** * Fournit une structure de gestion de date selon un format specifique * @param <strong>Integer</strong> $idSaison - Identifiant de la saison * @param <strong>Integer</strong> $annee - Annee de référence */ public function __construct($idSaison, $annee){ $nomsSaisons = array( 1 => 'Hiver', 2 => 'Printemps', 3 => 'Eacute;teacute;', 4 => 'Automne'); $this->intSaison = $idSaison; $this->intAnnee = $annee; $this->nomSaison = $nomsSaisons[$idSaison]; } public function ToFormulaire(){ } public function ToString(){ } public function ToTable(){ } /** * Permet de comparer deux dates entre elles * @param <strong>DateWow</strong> $date - Date à comparer * @return 1 si la date comparée est supérieure, 0 si égale et -1 si inférieure */ public function CompareTo(DateWow $date){ (int)$comparaison = 0; if ($this->intAnnee < $date->GetAnnee()){ $comparaison = 1; }else{ if ($this->intAnnee === $date->GetAnnee()){ if ($this->intSaison < $date->GetSaison()){ $comparaison = 1; }else{ if ($this->intSaison > $date->GetAnnee()){ $comparaison = -1; } } }else{ $comparaison = -1; } } return $comparaison; } public function GetAnnee(){ return $this->intAnnee; } public function GetSaison(){ return $this->intSaison; } }
- Periode.php:
- Code:
-
<?php class Periode{ private $intIdPeriode; private $dateDebut; private $dateFin; private $txtDescription; private $strLienImage; private $zone; private $events; public function __construct($id, DateWow $dateDeDebut, DateWow $dateDeFin, $description, $lienImage, Zone $zone){ if(!is_numeric($id)){ throw new InvalidArgumentException('Identifiant non valide pour la période'); } $this->intIdPeriode = (int)$id; $this->dateDebut = $dateDeDebut; $this->dateFin = $dateDeFin; $this->txtDescription = $description; $this->strLienImage = $lienImage; $this->zone = $zone; $this->events = array(); } public function ToFormulaire(){ } public function ToXhtml(){ } /** * Détermine si une date est incluse dans une période * @param DateWow $date * @return 0 si la date est incluse, -1 si la date est antérieure, 1 si elle dépasse */ public function EstInclus(DateWow $date){ $comparaison = 0; if ($this->dateDebut->CompareTo($date) >= 0){ if ($this->dateFin->CompareTo($date) >= 0){ $comparaison = 1; } }else{ $comparaison = -1; } return $comparaison; } /** * Fonction de substitution à la fonction de DateWow pour simuler une interface icomparable * @param DateWow $date - Date à comparer */ public function CompareTo(DateWow $date){ return $this->dateDebut->CompareTo($date); } /** * Fonction de substitution à la fonction de DateWow pour polymorphisme * $return DateWow - Date de début de la période */ public function GetDate(){ return $this->dateDebut; } /** * * Ajoute un événement inclus dans la période * @param <strong>Participation</strong> $participation - Participation à un événement à inclure */ public function AjouterEvenement(Participation $participation){ $this->event[] = $participation; } }
- Participation.php:
- Code:
-
<?php class Participation{ private $event; private $txtDescription; public function __construct(Evenement $event, $description){ $this->event = $event; $this->txtDescription = $description; } /** * Renvoie l'événement associé à la participation * @return Evenement - Evenement associé à la participation */ public function GetEvenement(){ return $this->event; } public function GetDate(){ return $this->event->GetDate(); } public function CompareTo(DateWow $date){ return $this->event->GetDate()->CompareTo($date); } }
- Lieu.php:
- Code:
-
<?php /** * Classe abstraite permettant de factoriser le code */ abstract class Lieu{ protected $strDescrption; protected $strNom; public function ToString(){ } public function ToFormulaire(){ } /** * Methode abstraite pour générer le lien cliquable dans la methode ToString() */ abstract protected function CreerLien(){ } }
/** * Classe servant à gérer les Zones géographiques */ class Zone extends Lieu{ private $intIdZone; private $region; private $continent; public function __construct($id, mysqli $mysqli, array $args = null){ //simulation d'une surcharge du constructeur if(!is_numeric($id)){ throw new InvalidArgumentException('Identifiant de l\'objet incorrect'); } //Ne pas confondre null, 0 et "" qui sont équivalents avec un opérateur binaire if ($args === null){ $this->InitFromId((int)$id, $mysqli); }else{ $this->InitFromValeurs((int)$id, $args['nom'], $args['description'], $args['region']); } } public function CreerLien(){
} /** * Initialise l'objet à partir de la base de données * @param <strong>integer</strong> $id - Identifiant en base de données de la zone * @param <strong>mysqli</strong> $mysqli - Objet mysql pour l'interrogation */ private function InitFromId($id, mysqli $mysqli){ $requete = 'SELECT ZON.intIdZone, ZON.intIdRegion, ZON.intIdContinent,' .'ZON.strNomZone ' .'ZON.strDescription ' .'REG.strNomRegion' .'REG.strDescription AS strDescriptionRegion' .'CTN.strNomContinent ' .'CTN.strDescription AS strDescriptionContinent' .'FROM LIEU_Zones ZON ' .'INNER JOIN LIEU_Regions REG ON ZON.intIdRegion = REG.intIdRegion ' .'INNER JOIN LIEU_Continents CTN ON CTN.intIdContinent = CTN.intIdContinent ' .'WHERE ZON.intIdZone = '.$id.';'; $resultats = $mysqli->query($requete); if ($resultats !== false){ $ligne = $resultats->fetch_assoc(); $args1 = array ('nom' => $ligne['strNomContinent'], 'description' => $ligne['strDescriptionContient']); $continent = new Continent($ligne['intIdContinent'], $mysqli, $args1); $args2 = array ('nom' => $ligne['strNomRegion'], 'description' => $ligne['strDescriptionRegion'], 'continent' => $continent); $region = new Region($ligne['intIdContinent'], $mysqli, $args2); $this->InitFromValeurs($ligne['intIdZone'], $ligne['strNomZone'], $ligne['strDescription'], $region); }else{ throw new SQLiteException('Impossible d\'executer la requête SQL'); } } /** * Initialise les informations de l'objet depuis des valeurs * @param <strong>integer</strong> $id - Identifiant de la zone * @param <strong>string</strong> $nom - Nom de la zone * @param <strong>string</strong> $description - Description de la zone * @param <strong>Region<strong> $region - Région à laquelle appartient la zone */ private function InitFromValeurs($id, $nom, $description, Region $region){ $this->strNom = $nom; $this->intIdZone = $id; $this->strDescrption = $description; $this->region = $region; $this->continent = $region->GetContinent(); } /** * Renvoie le continent auquel appartient la zone * @return <strong>Continent</strong> Continent - Le continent de la zone */ public function GetContinent(){ return $this->Continent; } /** * Renvoie la région à laquelle appartient la zone * @return <strong>Region</strong> Region - La région de la zone */ public function GetRegion(){ return $this->region; } } /** * Classe servant à gérer les Régions */ class Region extends Lieu{ private $intIdRegion; private $continent; public function __construct($id, mysqli $mysqli, array $args = null){ //simulation d'une surcharge du constructeur if(!is_numeric($id)){ throw new InvalidArgumentException('Identifiant de l\'objet incorrect'); } //Ne pas confondre null, 0 et "" qui sont équivalents avec un opérateur binaire if ($args === null){ $this->InitFromId((int)$id, $mysqli); }else{ $this->InitFromValeurs((int)$id, $args['nom'], $args['description'], $args['continent']); } } public function CreerLien(){
} /** * Initialise l'objet à partir de la base de données * @param <strong>integer</strong> $id - Identifiant en base de données du continent * @param <strong>mysqli</strong> $mysqli - Objet mysql pour l'interrogation */ private function InitFromId($id, mysqli $mysqli){ } /** * Initialise les informations de l'objet depuis des valeurs * @param <strong>integer</strong> $id - Identifiant de la région * @param <strong>string</strong> $nom - Nom de la région * @param <strong>string</strong> $description - Description de la région * @param <strong>Continent<strong> $continent - continent à laquelle appartient la région */ private function InitFromValeurs($id, $nom, $description, Continent $continent){ $this->strNom = $nom; $this->intIdZone = $id; $this->strDescrption = $description; $this->continent = $continent; } /** * Renvoie le continent auquel appartient la région * @return <strong>Continent</strong> Continent - Le continent de la zone */ public function GetContinent(){ return $this->continent; } } /** * Classe servant à gérer les continents */ class Continent extends Lieu{ private $intIdContinent; public function __construct($id, mysqli $mysqli, array $args = null){ //simulation d'une surcharge du constructeur de classe if(!is_numeric($id)){ throw new InvalidArgumentException('Identifiant de l\'objet incorrect'); } //Ne pas confondre null, 0 et "" qui sont équivalents avec un opérateur binaire if ($args === null){ $this->InitFromId((int)$id, $mysqli); }else{ $this->InitFromValeurs((int)$id, $args['nom'], $args['description']); } } public function CreerLien(){
} /** * Initialise l'objet à partir de la base de données * @param <strong>integer</strong> $id - Identifiant en base de données de la région * @param <strong>mysqli</strong> $mysqli - Objet mysql pour l'interrogation */ private function InitFromId($id, mysqli $mysqli){ } /** * Initialise les informations de l'objet depuis des valeurs * @param <strong>integer</strong> $id - Identifiant du continent * @param <strong>string</strong> $nom - Nom du continent * @param <strong>string</strong> $description - Description du continent */ private function InitFromValeurs($id, $nom, $description){ $this->strNom = $nom; $this->intIdZone = $id; $this->strDescrption = $description; } }
Si y'en a qui sont branchés sur la prog en PHP | |
| | | wyrmelin
Messages : 705 Date d'inscription : 13/06/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Ven 1 Juil - 17:13 | |
| Voilà ce que me propose mon FAI : Donc, c'est de la merde, c'est bien cela ? | |
| | | Néadhora
Messages : 828 Date d'inscription : 11/05/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Ven 1 Juil - 17:18 | |
| Fonctions de script limitées + Pas de base de données, je vois pas ce que tu peux faire comme "vrai site". | |
| | | wyrmelin
Messages : 705 Date d'inscription : 13/06/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Mar 5 Juil - 2:31 | |
| - Néadhora a écrit:
- Explique un peu ce que serait ce module de calendrier et ce qu'il fait.
Un calendrier qui a pour but de bien faire comprendre aux gens la datation azerothienne. Je souhaite que l'utilisateur puisse sélectionner quel type de calendrier il souhaite (Le calendrier humain, le calendrier basé sur l'ouverture de la porte des ténèbres...) Avec un peu de chance, ça pourra faire comprendre aux gens que selon la culture du personnage la datation c'est comme parler en ancien franc pour certains, en Franc pour d'autres, voir en euro. Dans tous les cas ce sera un moyen simple pour tous de voir rapidement la date RP pour choisir une date lors de la création d'un évènement passé. Selon le système de calendrier sélectionné, l'ensemble des dates affichées seraient converties. Un peu comme si sur un site internet tu avais des dates du calendrier Républicain et qu'en un clic toutes les dates deviendraient celles correspondantes sur le calendrier juif. (sauf que nous ça ne serait que l'année, sauf si on définit les mois et les saisons) | |
| | | Néadhora
Messages : 828 Date d'inscription : 11/05/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Mar 5 Juil - 9:30 | |
| - Citation :
- Un calendrier qui a pour but de bien faire comprendre aux gens la datation azerothienne.
Je souhaite que l'utilisateur puisse sélectionner quel type de calendrier il souhaite (Le calendrier humain, le calendrier basé sur l'ouverture de la porte des ténèbres...) J'avais pas prévu cela, mais j'ai fait suffisamment proprement ma classe "DateWow" pour intégrer facilement une conversion à l'affichage. Par contre, il va me falloir les règles de conversion de chaque système de date par rapport à la date de référence (celle de l'ouverture de la porte des ténèbres). Ensuite, pourrais tu m'expliquer ce que son tes boutons "année" "periode" et "mois" ? | |
| | | Néadhora
Messages : 828 Date d'inscription : 11/05/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Mar 5 Juil - 12:30 | |
| Voici un peu l’arborescence du projet, histoire de montrer que ça avance. | |
| | | wyrmelin
Messages : 705 Date d'inscription : 13/06/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Mar 5 Juil - 15:07 | |
| L'année je n'ai rien de plus à dire, c'est pas des liens c'est juste un affichage d'information.
Pour les mois/saisons tant qu'on n'a pas autre chose que le nom des mois/saisons du calendrier grégorien autant faire avec. Mais je pensai au cas où nous découvririons que certains peuples attribuent des noms particuliers aux périodes. Et si on découvre qu'il n'y a que dalle, on peut tenter de trouver des noms de mois qui ne sont pas attribués aux noms de l'antiquité romaine. M'enfin tout ça sera pour plus tard. | |
| | | Néadhora
Messages : 828 Date d'inscription : 11/05/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Mar 5 Juil - 18:18 | |
| - Citation :
- L'année je n'ai rien de plus à dire, c'est pas des liens c'est juste un affichage d'information.
Et quelle information, précisément ? | |
| | | wyrmelin
Messages : 705 Date d'inscription : 13/06/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Mar 5 Juil - 19:41 | |
| l'année est une information en soit. | |
| | | Néadhora
Messages : 828 Date d'inscription : 11/05/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Mer 6 Juil - 11:24 | |
| donc simplement afficher la date actuelle avec un bouton sur les préférences de format ? | |
| | | wyrmelin
Messages : 705 Date d'inscription : 13/06/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Jeu 7 Juil - 4:08 | |
| Oui. Remarque qu'on peut aussi renvoyer à une page expliquant/exposant la datation/chronologie. Mais je préfère laisser cette idée de coté, jusqu'à ce que cela puisse être pertinent. Exemple :
☻ Si on se met à définir les mois de façon RP, une page expliquant les origines de ce choix. ☻ Période > Une liste des évènements saisonniers en rapport avec le mois en question. ☻ Année > Une page expliquant l'origine du calendrier dont il est question.
Peut-être qu'on pourrait remonter dans le calendrier par saison et cliquer sur un lien "voir les évènements recensés liés à cette période" Techniquement ce serait un doublon du système de recherche de base si on ne sélectionne aucune région (c'est prévu d'en avoir un j'imagine) Autant faire un lien qui ferait atterrir l'utilisateur sur la page recherche. Je pense que cela permettrait aux moins futés d'entre nous de découvrir une fonction primordiale du site. | |
| | | Néadhora
Messages : 828 Date d'inscription : 11/05/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Jeu 7 Juil - 10:09 | |
| - Citation :
- Si on se met à définir les mois de façon RP, une page expliquant les origines de ce choix.
J'imagine mal comment on pourrait le définir, nous, à notre modeste niveau. Au besoin, je pourrais effectivement mettre une redirection adéquate. - Citation :
- Peut-être qu'on pourrait remonter dans le calendrier par saison et cliquer sur un lien "voir les évènements recensés liés à cette période"
Techniquement ce serait un doublon du système de recherche de base si on ne sélectionne aucune région (c'est prévu d'en avoir un j'imagine) Autant faire un lien qui ferait atterrir l'utilisateur sur la page recherche. Je pense que cela permettrait aux moins futés d'entre nous de découvrir une fonction primordiale du site. C'est effectivement une fonctionnalité prévue. Pour le moment j'aimerais qu'on se concentre sur les fonctionnalités, plus que sur les raccourcis d'ergonomie. Ce qui sera possible de faire, c'est de mettre un lien vers le module de recherche, avec des paramètres prédéfinis pour correspondre à une recherche par période sur tous les serveurs et dans tous les lieux. | |
| | | wyrmelin
Messages : 705 Date d'inscription : 13/06/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Ven 8 Juil - 5:49 | |
| - Néadhora a écrit:
- j'aimerais qu'on se concentre sur les fonctionnalités
Un générateur de scénario RPQ ! | |
| | | Néadhora
Messages : 828 Date d'inscription : 11/05/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Ven 8 Juil - 9:38 | |
| | |
| | | Nox Invité
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Sam 9 Juil - 1:14 | |
| un lien vers le malargothon ... |
| | | wyrmelin
Messages : 705 Date d'inscription : 13/06/2010
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Sam 9 Juil - 4:47 | |
| La possibilité de diffuser un message défilant * en haut du site pendant quelques jours. Histoire que les utilisateurs puissent faire un peu de promo pour leur RP. A propos du calendrier, peut-être ajouter une fonction horoscope (une page pour décrire l'horoscope, pas pour donner des prédictions mensuelles) Pour les taurens ça sera facile, y a un horoscope amérindien. Pour les kaldorei je propose l'horoscope chinois. Le tout avec des équivalents azerothiens. | |
| | | Nox Invité
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR Jeu 14 Juil - 16:28 | |
| j'avais tenté de "diffuser" une transcription simple de jour de la semaine fut un temps, sur un autre serveur que les clairvoyants.
Lundi, jour de la lune ou d'elune (férié chez les Kaldorei ?) Mardi, jour de la guerre (traditionnel pour déclarer des guerres,) Mercredi, jour de marché ou de magie (férié gob' ou haut elfe ?) Jeudi, jour du roi ou des tempêtes (pas inspirant) Vendredi, jour de l'amour ou de la fête (traditionnellement mariage et premiers rendez-vous) Samedi, jour des secrets (traditionnellelment initiations magiques ou religieuses) Dimanche, jour du maître ou du chef (pas inspirant)
on pourrait proposer un truc du même genre pour les mois ? ça reste assez "flou" pour que chacun y mette des symboles ou ai son interpétation d'un secret, de l'amour ou de la guerre mais ça colle assez avec le sens premier des veritables jours pour qu'on s'y retrouve tous ? |
| | | Contenu sponsorisé
| Sujet: Re: [wiki-pas-wiki] Projet de concensus en JdR | |
| |
| | | | [wiki-pas-wiki] Projet de concensus en JdR | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |
|