<?php
header( 'Content-Type: text/html; charset: UTF-8' );
include_once( '../../../includes/prepend.php' );
//recuperation de l'action
$sAction = $_REQUEST[ 'action' ];
if( is_null( $sAction ) || $sAction == '' )
exit();
$oData = NULL;
//connexion à la base de données du projet
if( isset( $_REQUEST[ 'tag' ] ) && $_REQUEST[ 'tag' ] != '' ){
$oData = $oFramework->oProjets->getData( $_REQUEST[ 'tag' ] );
$oFramework->oProjets->sChaineConnexion = "mysql:host=".$oData->bddServer.";port=3306;dbname=".$oData->bddBdd;
$oFramework->oProjets->sUser = $oData->bddUser;
$oFramework->oProjets->sPass = $oData->bddPass;
}
if( $sAction == 'genTables' ){
//generation ou regeneration de la base des objects
//recuperation des tables
$oTables = array();
if( $_REQUEST[ 'tables' ] == '::all-tables::' )
$oTables = $oFramework->oProjets->getAllTables();
else
$oTables = explode( ';', rtrim( $_REQUEST[ 'tables' ], ';' ) );
//recuperation des objects du projet si il y en a
$oObjectsPrj = $oFramework->oObjects->getObjects( $_REQUEST[ 'tag' ] );
//recuperation des données des tables pour les stocker dans les objets associés
//generation de la nouvelle liste d'objects
$oNewListesObjects = array();
$oDeletePrjs = array();
foreach( $oTables as $sTable ){
$oObjectBDD = $oFramework->oObjects->getObjectFromTable( $sTable );
//recherche si il existe un object similaire dans le projet
$bObjectExist = false;
foreach( $oObjectsPrj as $oObjectPrj ){
if( $oObjectPrj->sTable == $oObjectBDD->sTable ){
//pour tous les champs du projet existant
//si il n'existe pas dans le projet bdd alors ajout dans le projet bdd
foreach( $oObjectPrj->oFields as $oFieldPrj ){
$bFieldExist = false;
foreach( $oObjectBDD->oFields as $oFieldBDD )
if( $oFieldPrj->sName == $oFieldBDD->sName ){
$bFieldExist = true;
break;
}
if( !$bFieldExist )
$oObjectBDD->oFields[] = $oFieldPrj;
}
//marque l'objet comme supprime
$oDeletePrjs[] = $oObjectPrj->sTable;
break;
}
}
$oNewListesObjects[] = $oObjectBDD;
}
foreach( $oObjectsPrj as $oObjectPrj )
if( !in_array( $oObjectPrj->sTable, $oDeletePrjs ) )
$oNewListesObjects[] = $oObjectPrj;
//enregistrement du nouveau fichier d'objets
$oFramework->oObjects->setObjects( $_REQUEST[ 'tag' ], $oNewListesObjects );
}else if( $sAction == 'deleteObject' ){
//supprime un objet du projet
$oFramework->oObjects->deleteObject( $_REQUEST[ 'tag' ], $_REQUEST[ 'object' ] );
}else if( $sAction == 'deleteAllObjects' ){
//supprime tous les objets d'un projet
$oFramework->oObjects->deleteAllObjects( $_REQUEST[ 'tag' ] );
}else if( $sAction == 'getObjects' ){
//recuperation des objects du projet si il y en a
$oObjectsPrj = $oFramework->oObjects->getObjects( $_REQUEST[ 'tag' ] );
$oTpl_list_objects = new smarty_site();
$oTpl_list_objects->assign( 'oAllObjects', $oObjectsPrj );
$oTemplate->clear_cache( 'app/projet/projet-div-list-objects.html' );
echo $oTpl_list_objects->fetch( 'app/projet/projet-div-list-objects.html' );
}else if( $sAction == 'getDataObject' ){
$oObject = $oFramework->oObjects->getObject( $_REQUEST[ 'object' ], $_REQUEST[ 'tag' ] );
$oTpl_object = new smarty_site();
$oTpl_object->assign( 'table', $oObject->sTable );
$oTpl_object->assign( 'desc', $oObject->sDesc );
$oTpl_object->assign( 'oFields', $oObject->oFields );
$oTemplate->clear_cache( 'app/projet/projet-div-object-data.html' );
echo $oTpl_object->fetch( 'app/projet/projet-div-object-data.html' );
}else if( $sAction == 'getFields' ){
$oField = $oFramework->oObjects->getFieldByObjectProject( $_REQUEST[ 'tag' ], $_REQUEST[ 'object' ], $_REQUEST[ 'field' ] );
$oTpl_field = new smarty_site();
$oTpl_field->assign( 'typefield', $oField->sTypeField );
$oTpl_field->assign( 'name', $oField->sName );
$oTpl_field->assign( 'type', $oField->sType );
$oTpl_field->assign( 'interclassement', $oField->sInterclassement );
$oTpl_field->assign( 'attributs', $oField->sAttributs );
$oTpl_field->assign( 'null', $oField->sNull );
$oTpl_field->assign( 'key', $oField->sKey );
$oTpl_field->assign( 'defaut', $oField->sDefaut );
$oTpl_field->assign( 'extra', $oField->sExtra );
if( $oField->sTypeField == 'object' ){
//recupere tous les objets possedant un id
$oObjects = $oFramework->oObjects->getObjectsGUID( $_REQUEST[ 'tag' ] );
$oTpl_field->assign( 'oAllObjects', $oObjects );
$oTpl_field->assign( 'sSelectObject', $oField->sLinkObject );
}
$oTemplate->clear_cache( 'app/projet/projet-div-detail-field.html' );
echo $oTpl_field->fetch( 'app/projet/projet-div-detail-field.html' );
}else if( $sAction == 'updateObjectDetail' ){
$oDetail = array( 'sDesc'=>$_REQUEST[ 'desc' ] );
$oFramework->oObjects->updateObjectDetail( $_REQUEST[ 'tag' ], $_REQUEST[ 'object' ], $oDetail );
}else if( $sAction == 'getObjectsGUID' ){
//recupere tous les objets possedant un id
$oObjects = $oFramework->oObjects->getObjectsGUID( $_REQUEST[ 'tag' ] );
$oTpl_list_objects = new smarty_site();
$oTpl_list_objects->assign( 'oAllObjects', $oObjects );
$oTemplate->clear_cache( 'app/projet/projet-div-field-list-objects.html' );
echo $oTpl_list_objects->fetch( 'app/projet/projet-div-field-list-objects.html' );
}else if( $sAction == 'updateFieldType' ){
//mise a jour du type de champ d'un objet
$oDetail = array( 'sTypeField'=>$_REQUEST[ 'typefield' ],
'sLinkObject'=>$_REQUEST[ 'value' ] );
$oFramework->oObjects->updateFieldObject( $_REQUEST[ 'tag' ], $_REQUEST[ 'object' ], $_REQUEST[ 'field' ], $oDetail );
}
?>