+++ /dev/null
-<?php
-
- require_once('protected/required.php');
-
- class PdoInstanceManager extends AbstractPdoManager {
-
- public function createInstance($instance) {
-
- $query = $this -> pdo -> prepare(
- 'INSERT INTO instances (
- nom,
- exploitant,
- reference,
- version,
- historique,
- maintenu,
- fqdn_interne,
- fqdn_externe,
- systeme,
- disques,
- canal
- ) VALUES (
- :nom,
- :exploitant,
- :reference,
- :version,
- :historique,
- :maintenu,
- :fqdn_interne,
- :fqdn_externe,
- :systeme,
- :disques,
- :canal
- )'
- );
- $query -> bindValue(':nom', $instance -> getNom());
- $query -> bindValue(':exploitant', $instance -> getExploitant());
- $query -> bindValue(':reference', $instance -> getReference());
- $query -> bindValue(':version', $instance -> getVersion());
- $query -> bindValue(':historique', $instance -> getHistorique());
- $query -> bindValue(':maintenu', $instance -> estMaintenu());
- $query -> bindValue(':fqdn_interne', $instance -> getFqdnInterne());
- $query -> bindValue(':fqdn_externe', $instance -> getFqdnExterne());
- $query -> bindValue(':systeme', $instance -> getSysteme());
- $query -> bindValue(':disques', $instance -> getDisques());
- $query -> bindValue(':canal', $instance -> getCanal());
- $query -> execute();
- $query -> closeCursor();
-
- }
-
- public function updateInstance($instance) {
-
- $query = $this -> pdo -> prepare(
- 'UPDATE instances
- SET nom = :nom,
- exploitant = :exploitant,
- reference = :reference,
- version = :version,
- historique = :historique,
- maintenu = :maintenu,
- fqdn_interne = :fqdn_interne,
- fqdn_externe = :fqdn_externe,
- systeme = :systeme,
- disques = :disques,
- canal = :canal
- WHERE id = :id'
- );
- $query -> bindValue(':id', $instance -> getId());
- $query -> bindValue(':nom', $instance -> getNom());
- $query -> bindValue(':exploitant', $instance -> getExploitant());
- $query -> bindValue(':reference', $instance -> getReference());
- $query -> bindValue(':version', $instance -> getVersion());
- $query -> bindValue(':historique', $instance -> getHistorique());
- $query -> bindValue(':maintenu', $instance -> estMaintenu());
- $query -> bindValue(':fqdn_interne', $instance -> getFqdnInterne());
- $query -> bindValue(':fqdn_externe', $instance -> getFqdnExterne());
- $query -> bindValue(':systeme', $instance -> getSysteme());
- $query -> bindValue(':disques', $instance -> getDisques());
- $query -> bindValue(':canal', $instance -> getCanal());
- $query -> execute();
- $query -> closeCursor();
- }
-
- public function updateInstanceInfos($array) {
- $instance = $this -> getInstanceByReference($array['reference']);
-
- // IF APPLIANCE EXISTS
- if($instance -> getId() > 0) {
-
- // IF APPLIANCE IS MAINTAINED
- if(!$instance -> estMaintenu()) {
- echo "Votre application n'est plus maintenue par nos services, merci de vous renseigner auprès de votre contact ADULLACT Projet pour plus d'informations.";
- } else {
-
- // IN CASE OF MANAGER
- if($array['usager_type'] === "exploitant") {
-
- // GETTING MANAGER OF APPLIANCE
- $exploitantManager = new PdoExploitantManager();
- $exploitant = $exploitantManager -> getExploitantByReference($instance -> getExploitant());
-
- // UPDATING ALL APPLIANCES OF THIS MANAGER
- $array['usager_type'] = "client";
- $instances_id = $exploitant -> getInstances();
- foreach ($instances_id as $instance_id) {
- $array['reference'] = $this -> getInstance($instance_id) -> getReference();
- $this -> updateInstanceInfos($array);
- }
-
- // IN CASE OF CLIENT
- } else if($array['usager_type'] === "client") {
-
- // CHECKING APPLIANCE NAME
- if ($array['produit'] === $instance -> getNom()) {
-
- // IF VERSION DIFFERS FROM DB
- if($array['version'] != $instance -> getVersion()) {
-
- // GETTING PDO MANAGERS
- $versionManager = new PdoVersionManager();
- $produitManager = new PdoProduitManager();
- $alerteManager = new PdoAlerteManager();
-
- // GETTING VERSION ID
- $version_id = $versionManager->getIdByValeurAndProduitId($array['version'], $produitManager->getProduitByNom($array['produit'])->getId());
-
- // NEW WARNING CREATION, VERSION TYPE
- $alerte = new Alerte(null, null, "version",
- "Version declaree ".$array['version']." differente de l'actuelle : ".$instance -> getVersion(), $version_id);
- $alerteManager -> createAlerte($alerte);
-
- // GETTING CHANGELOG OF APPLIANCE
- $historiqueManager = new PdoHistoriqueManager();
- $historique = $historiqueManager -> getHistorique($instance -> getHistorique());
-
- // IF CHANGELOG EXISTS, ADDING NEW WARNING TO IT
- if($historique -> getId() > 0) {
- $alertes = $historique -> getAlertes();
- if((array_search("", $alertes)) !== false) {
- $alertes = array($alerteManager -> getLastAlerte() -> getId());
- } else {
- $alertes[] = $alerteManager -> getLastAlerte() -> getId();
- }
- $historique -> setAlertes($alertes);
- $historiqueManager -> updateHistorique($historique);
-
- // IF CHANGELOG DOES NOT EXIST, CREATING NEW ONE
- } else {
- $historique = new Historique(null, null, array($alerteManager -> getLastAlerte() -> getId()), array($alerte -> getVersion()));
- $historiqueManager -> createHistorique($historique);
- $instance -> setHistorique($historiqueManager -> getLastHistorique() -> getId());
- $this -> updateInstance($instance);
- }
- }
-
- // UPDATING APPLIANCE INFORMATION
- $query = $this -> pdo -> prepare(
- 'UPDATE instances SET version = :version WHERE reference = :reference'
- );
- $query -> bindValue(':reference', $array['reference']);
- $query -> bindValue(':version', $array['version']);
- $query -> execute();
- } else {
- echo "Le nom de l'instance est incorrect";
- }
- } else {
- echo "Le type d'usager est inconnu, merci de corriger la configuration.";
- }
- }
-
- // IF APPLIANCE DOES NOT EXISTS
- } else {
-
- // GETTING PDO MANAGERS
- $versionManager = new PdoVersionManager();
- $produitManager = new PdoProduitManager();
- $alerteManager = new PdoAlerteManager();
-
- // GETTING VERSION ID
- $version_id = $versionManager->getIdByValeurAndProduitId($array['version'], $produitManager->getProduitByNom($array['produit'])->getId());
-
- // NEW WARNING CREATION, CREATION TYPE
- $alerteManager = new PdoAlerteManager();
- $alerte = new Alerte(null, null, "creation",
- "Nouvelle instance declaree : ".$array['produit']." ; version : ".$array['version'], $version_id);
- $alerteManager -> createAlerte($alerte);
-
- // NEW CHANGELOG CREATION
- $historiqueManager = new PdoHistoriqueManager();
- $historique = new Historique(null, null, array($alerteManager -> getLastAlerte() -> getId()), array($alerte -> getVersion()));
- $historiqueManager -> createHistorique($historique);
-
- // NEW APPLIANCE CREATION
- // TO-DO : MANAGE APPLIANCE CREATION WITH MANAGER TYPE
- $instance = new Instance(
- // ID
- null,
- // PRODUCT
- $array['produit'],
- // MANAGER
- null,
- // REFERENCE
- $array['reference'],
- // VERSION
- $array['version'],
- // CHANGELOG
- $historiqueManager -> getLastHistorique() -> getId(),
- // IS MAINTAINED
- true,
- // FQDNs
- $array['fqdn_interne'],
- $array['fqdn_externe'],
- // OS
- $array['systeme'],
- // UUIDs
- $array['disques'],
- // CHANNEL
- $array['canal']
- );
- $this->createInstance($instance);
- }
-
-
- }
-
- public function getInstance($id) {
-
- $query = $this -> pdo -> prepare('SELECT * FROM instances WHERE id = :id');
- $query -> bindValue(':id', $id);
- $query -> execute();
-
- $result = $query -> fetch(PDO::FETCH_ASSOC);
- $instance = new Instance(
- $result['id'],
- $result['nom'],
- $result['exploitant'],
- $result['reference'],
- $result['version'],
- $result['historique'],
- $result['maintenu'],
- $result['fqdn_interne'],
- $result['fqdn_externe'],
- $result['systeme'],
- $result['disques'],
- $result['canal']
- );
-
- $query->closeCursor();
-
- return $instance;
- }
-
- public function getInstanceByReference($reference) {
-
- $query = $this -> pdo -> prepare('SELECT * FROM instances WHERE reference = :reference');
- $query -> bindValue(':reference', $reference);
- $query -> execute();
-
- $result = $query -> fetch(PDO::FETCH_ASSOC);
- $instance = new Instance(
- $result['id'],
- $result['nom'],
- $result['exploitant'],
- $result['reference'],
- $result['version'],
- $result['historique'],
- $result['maintenu'],
- $result['fqdn_interne'],
- $result['fqdn_externe'],
- $result['systeme'],
- $result['disques'],
- $result['canal']
- );
-
- $query->closeCursor();
-
- return $instance;
- }
-
- public function getInstances() {
-
- $query = $this -> pdo -> prepare('SELECT * FROM instances');
- $query -> execute();
-
- $results = $query -> fetchAll(PDO::FETCH_ASSOC);
- $instances = array();
- foreach ($results as $result) {
- $instances[] = new Instance(
- $result['id'],
- $result['nom'],
- $result['exploitant'],
- $result['reference'],
- $result['version'],
- $result['historique'],
- $result['maintenu'],
- $result['fqdn_interne'],
- $result['fqdn_externe'],
- $result['systeme'],
- $result['disques'],
- $result['canal']
- );
- }
-
- $query->closeCursor();
-
- return $instances;
- }
-
- public function removeInstance($instance) {
-
- $query = $this -> pdo -> prepare('DELETE FROM instances WHERE id = :id');
- $query -> bindValue('id', $instance -> getId());
- $query -> execute();
-
- }
-
- public function testInformationsAvantUpload($array) {
-
- // CHECKING REFERENCE FORMAT
- $regex = '#^[A-Z]{2}/[A-Z0-9]+_[0-9]{5}_[0-9]{10}$#';
- if (preg_match($regex, $array['reference'])) {
-
- // CHECKING PRODUCT EXISTENCE
- $produitManager = new PdoProduitManager();
- $produits = $produitManager -> getNomsOfProduits();
- if(in_array($array['produit'], $produits)) {
-
- // CHECKING VERSION VALIDITY
- $versionManager = new PdoVersionManager();
- $versions = $versionManager->findValeursOfVersionsByProduitId($produitManager->getProduitByNom($array['produit'])->getId());
- if(in_array($array['version'], $versions)) {
- $retour = "ok";
- } else {
- $retour = "Cette version n'est pas disponible pour ce produit";
- }
- } else {
- $retour = "Le produit n'est pas valide";
- }
- } else {
- $retour = 'Le format de la référence est incorrect.';
- }
- return $retour;
- }
-
- public function desactiverMaintienById($id) {
- $query = $this -> pdo -> prepare(
- 'UPDATE instances SET maintenu = :maintenu WHERE id = :id'
- );
- $query -> bindValue(':id', $id);
- $query -> bindValue(':maintenu', false);
- $query -> execute();
- $query -> closeCursor();
- }
- }
-
-?>