/trunk/projet.php |
---|
19,7 → 19,7 |
// | License along with this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: projet.php,v 1.14 2007-04-19 15:34:35 neiluj Exp $ |
// CVS : $Id: projet.php,v 1.15 2007-06-25 12:15:06 alexandre_tb Exp $ |
/** |
* Application projet |
* |
31,7 → 31,7 |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.14 $ |
*@version $Revision: 1.15 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
93,7 → 93,7 |
function afficherContenuMenu() |
{ |
$sortie = ''; |
// on fait de même pour id_projet |
// on fait de meme pour id_projet |
$id_projet = isset($_REQUEST[PROJET_VARIABLE_ID_PROJET]) ? $_REQUEST[PROJET_VARIABLE_ID_PROJET] : ''; |
// On recherche une action dans la variable $action, s'il n'y a pas, on envoie defaut |
116,7 → 116,7 |
$controleur->setPrive() ; |
} |
// Dans le cas de la présentation par arbre, on met les menus |
// Dans le cas de la presentation par arbre, on met les menus |
if (isset($GLOBALS['_GEN_commun']['info_application']->presentation)){ |
$sortie .= $controleur->menuGeneral() ; |
129,7 → 129,7 |
$controleur->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_NOUVEAU_FICHIER) ; |
$res = "<ul><li><a href=\"".$controleur->_url->getURL()."\">".PROJET_METTRE_FICHIER."</a></li>\n" ; |
// L'action créer un répertoire |
// L'action creer un repertoire |
$controleur->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_NOUVEAU_REPERTOIRE) ; |
$res .= "<li><a href=\"".$controleur->_url->getURL()."\">".PROJET_CREER_REP."</a></li>\n" ; |
$res .= '</ul></li>' ; |
180,7 → 180,7 |
$controleur->setIdDocument($id_document) ; |
} |
// récupération des paramètres de l'appli |
// recuperation des parametres de l'appli |
if (isset($GLOBALS['_GEN_commun']['info_application']->presentation)) { |
$controleur->setPresentation($GLOBALS['_GEN_commun']['info_application']->presentation) ; |
} |
205,7 → 205,7 |
$controleur->setIdProjet($GLOBALS['_GEN_commun']['info_application']->seulement) ; |
} |
// Si le parametre prive est passé, les inscriptions sont modérés |
// Si le parametre prive est passe, les inscriptions sont moderes |
// TODO : permettre la demande d'inscription |
if (isset ($GLOBALS['_GEN_commun']['info_application']->prive)) { |
$controleur->setPrive() ; |
228,6 → 228,9 |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: not supported by cvs2svn $ |
* Revision 1.14 2007/04/19 15:34:35 neiluj |
* préparration release (livraison) "Narmer" - v0.25 |
* |
* Revision 1.13 2007/04/19 09:18:46 alexandre_tb |
* ajout de la variable $service pour appeler les services (dans la cadre de liaisons asynchrones |
* |
/trunk/classes/projetControleur.class.php |
---|
20,7 → 20,7 |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: projetControleur.class.php,v 1.36 2007-04-19 15:34:35 neiluj Exp $ |
// CVS : $Id: projetControleur.class.php,v 1.37 2007-06-25 12:15:06 alexandre_tb Exp $ |
/** |
* Application projet |
33,7 → 33,7 |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.36 $ |
*@version $Revision: 1.37 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
48,7 → 48,7 |
include_once 'client/projet/langues/pro_langue_'.PROJET_LANGUE_DEFAUT.'.inc.php' ; |
} |
require_once GEN_CHEMIN_API.'sql/SQL_manipulation.fonct.php' ; |
require_once GEN_CHEMIN_API.'html/HTML_TableFragmenteur.php' ; |
// +------------------------------------------------------------------------------------------------------+ |
// | LISTE des constantes | |
101,7 → 101,7 |
define ("PROJETCONTROLEUR_ERREUR_CREATION_REPERTOIRE", -4) ; |
/** |
* Constantes pour définir les droits |
* Constantes pour definir les droits |
* |
*/ |
define ('PROJET_DROIT_ADMINISTRATEUR', 1) ; |
112,8 → 112,8 |
define ('PROJET_DROIT_EN_ATTENTE', 32); |
/** |
* class projetControleur |
* Cette classe sert à lancer les diverses applications du module projet, en |
* fonction des paramètre de l'URL GET ou POST. La méthode principale est run() |
* Cette classe sert a lancer les diverses applications du module projet, en |
* fonction des parametre de l'URL GET ou POST. La methode principale est run() |
*/ |
class projetControleur |
{ |
120,12 → 120,12 |
/*** Attributes: ***/ |
/** |
* Contient l'action du controleur, qui correspond à une action du module projet. |
* Contient l'action du controleur, qui correspond a une action du module projet. |
* @access private |
*/ |
var $_action; |
/** |
* Une connexion à une base de donnée DB. |
* Une connexion a une base de donnee DB. |
* @access private |
*/ |
var $_db; |
143,7 → 143,7 |
var $_url; |
/** |
* L'identifiant du projet sur lequel on travaille. Dans l'action par défaut, cet |
* L'identifiant du projet sur lequel on travaille. Dans l'action par defaut, cet |
* attribut n'a pas de valeur. |
* @access private |
*/ |
150,8 → 150,8 |
var $_id_projet; |
/** |
* L'identifiant du répertoire que l'on est en train d'observer. Il sera passé en |
* paramètre à la classe HTML_listeDocuments. |
* L'identifiant du repertoire que l'on est en train d'observer. Il sera passé en |
* parametre a la classe HTML_listeDocuments. |
* @access private |
*/ |
var $_id_repertoire; |
163,7 → 163,7 |
var $_id_document; |
/** |
* La présentation de la liste des projets, par défaut vide, signifie en liste. |
* La presentation de la liste des projets, par defaut vide, signifie en liste. |
* Valeurs possibles: arbre |
* @access private |
*/ |
170,7 → 170,7 |
var $_presentation; |
/** |
* Le type du projets, par défaut 0, signifie en pas de type particumier. |
* Le type du projets, par defaut 0, signifie en pas de type particumier. |
* Valeurs possibles: 0, 1, 2, 3 ... |
* @access private |
*/ |
177,7 → 177,7 |
var $_type ; |
/** |
* Le tableau des projets à ne pas afficher, ni dans l'arbre, ni dans les listes |
* Le tableau des projets a ne pas afficher, ni dans l'arbre, ni dans les listes |
* @access private |
*/ |
var $_projet_exclu = array(); |
195,7 → 195,7 |
var $_service ; |
/** |
* Méthode principale de la classe. Elle permet d'appeler les méthodes du modules |
* Methode principale de la classe. Elle permet d'appeler les methodes du modules |
* projet en fonction de l'action. |
* |
* @return string |
217,7 → 217,7 |
return $this->messageErreur(PROJETCONTROLEUR_ACTION_INVALIDE) ; |
} |
// Si il n'y a pas d'action mais un projet, on transmet par défaut l'action PROJET_VOIR |
// Si il n'y a pas d'action mais un projet, on transmet par defaut l'action PROJET_VOIR |
if ($this->_id_projet != "" && $this->_action == PROJET_DEFAUT) { |
$this->_action = PROJET_ACTION_VOIR_RESUME ; |
$this->_url->addQueryString (PROJET_VARIABLE_ID_PROJET, $this->_id_projet) ; |
337,7 → 337,7 |
/** |
* Permet de fixer la valeur de l'action pour l'objet projetControleur. Cette action |
* provient généralement de $_POST['action'] ou $_GET['action'] |
* provient generalement de $_POST['action'] ou $_GET['action'] |
* |
* @param int action L'action à passer provient de l'URL. |
* @return void |
393,7 → 393,7 |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$participant = new participe ($this->_db) ; |
// Les entête des tableaux |
// Les entetes des tableaux |
$tableau_label_statut_action = array (PROJET_GERER, PROJET_GERER, PROJET_GERER_FICHIER, PROJET_VOIR_FICHIER, "---") ; |
$auth = $this->_auth->getAuth() ; // Pour raccourcir le code |
404,7 → 404,7 |
} |
/** |
* Renvoie le menu général de l'application projet. Avec différents liens selon le |
* Renvoie le menu general de l'application projet. Avec differents liens selon le |
* statut de l'utilisateur. |
* |
* @return string |
425,7 → 425,7 |
$isAdm = 0 ; $isCoord = 0 ; $isContri = 0 ; |
} |
// Les menus spécifiques aux projets |
// Les menus specifiques aux projets |
if ($this->_id_projet != '') { |
if (!$isCoord) { |
$isCoord = $participant->isCoordinateur($this->_auth->getAuthData(PROJET_CHAMPS_ID), $this->_id_projet, $this->_db) ; |
475,7 → 475,7 |
if (!$isEnAttente) $res .= '<li class="projet_niv2"><a href="'. |
$this->_url->getURL().'">'.PROJET_S_INSCRIRE_AU_PROJET."</a></li>\n" ; |
} |
// L'action gérer les utilisateurs |
// L'action gerer les utilisateurs |
if ($isCoord || $isAdm) { |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_VOIR_PARTICIPANT) ; |
$res .= '<li class="projet_niv2"><a href="'.$this->_url->getURL().'">'.PROJET_GESTION_UTILISATEUR."</a></li>\n" ; |
484,22 → 484,26 |
//document |
if ($isContri || $isCoord || $isAdm) { |
// On ajoute l id d un repertoire s il existe |
if (isset($this->_id_repertoire)) $this->_url->addQueryString ('id_repertoire', $this->_id_repertoire); |
$res .= '<li class="projet_niv2">'.PROJET_DOCUMENT ; |
// L'action "Mettre un fichier en ligne" |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_NOUVEAU_FICHIER) ; |
$res .= '<ul><li class="projet_niv2"><a href="'.$this->_url->getURL().'">'.PROJET_METTRE_FICHIER."</a></li>\n" ; |
// L'action créer un répertoire |
// L'action creer un repertoire |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_NOUVEAU_REPERTOIRE) ; |
$res .= '<li class="projet_niv2"><a href="'.$this->_url->getURL().'">'.PROJET_CREER_REP."</a></li>\n" ; |
$res .= '</ul></li>' ; |
$this->_url->removeQueryString('id_repertoire'); |
// Forum |
$res .= '<li class="projet_niv1">'.PROJET_FORUM ; |
$res .= '<ul id="projet_groupe_niv2_for">' ; |
if ($projet->avoirListe()) { |
// On vérifie si l'utilisateur est inscrit ou non à la liste et on ajoute le lien |
// On verifie si l'utilisateur est inscrit ou non a la liste et on ajoute le lien |
//$projet->getListesAssociees(); |
include_once PROJET_CHEMIN_CLASSES.'inscription_liste.class.php'; |
592,7 → 596,7 |
} // end of member function menuGeneral |
/** |
* Renvoie le formulaire de création d'un projet. |
* Renvoie le formulaire de cretion d'un projet. |
* |
* @return string |
* @access public |
632,7 → 636,7 |
$res = PROJET_PROPOSER_PROJET ; |
return $res . $formulaire_projet->toHTML() ; |
} else { |
return 'Veuillez régler les permissions en écriture sur '.PROJET_CHEMIN_FICHIER ; |
return 'Veuillez régler les permissions en écriture sur '.PROJET_CHEMIN_FICHIER ; |
} |
} // end of member function nouveauProjet |
666,7 → 670,7 |
} else { |
return $formulaire_projet->toHTML() ; |
} |
} // end of member function nouveauProjetValidation |
} |
/** |
* Valide le formulaire et appelle la fonction de mise à jour. |
710,15 → 714,15 |
$formulaire_document = new HTML_formulaireDocument('formulaire_document', 'post',preg_replace ("/&/", "&", $this->_url->getURL())) ; |
$formulaire_document->construitFormulaire($action) ; |
if ($action == PROJET_ACTION_MODIFIER) { |
include_once PROJET_CHEMIN_CLASSES.'document.class.php' ; |
$document = new document($this->_id_document, $this->_db, PROJET_CHEMIN_FICHIER, PROJET_CHEMIN_ICONES) ; |
// On affecte dans un tableau les valeurs de chaque champs du formulaire avec le nom de chaque élément de formulaire |
// On affecte dans un tableau les valeurs de chaque champs du formulaire avec le nom de chaque element de formulaire |
// voir HTML_formulaireDocument |
$valeurs_par_defaut = array ('document_nom' => $document->getNomLong(), |
'document_description' => $document->getDescription(), |
'document_visibilite' => $document->getVisibilite()) ; |
// On rajoute un champs caché avec l'identifiant du document |
// On rajoute un champs cache avec l'identifiant du document |
$formulaire_document->addElement ('hidden', 'id_document', $this->_id_document) ; |
$formulaire_document->setDefaults($valeurs_par_defaut) ; |
} else { |
729,7 → 733,7 |
} // end of member function nouveauFichier |
/** |
* Présente un formulaire pour déplacer un fichier |
* Presente un formulaire pour deplacer un fichier |
* |
* |
*/ |
738,12 → 742,13 |
$projet = new projet ($this->_db, $this->_id_projet) ; |
$res = '<h1>'.PROJET_PROJET.' : '.$projet->getTitre().'</h1>' ; |
include_once PROJET_CHEMIN_CLASSES.'document.class.php' ; |
$document = new document($this->_id_document, $this->_db, PROJET_CHEMIN_FICHIER) ; |
// On traite le cas où l'on vient de déplacer un fichier |
// On traite le cas ou l'on vient de deplacer un fichier |
if (isset ($_POST['projet_repertoire'])) { |
if (!$document -> deplace ($_POST['projet_repertoire'], $projet->getNomRepertoire())) { |
echo 'echec du Déplacement' ; |
return 'echec du déplacement' ; |
} |
return ; |
} |
751,7 → 756,9 |
$this->_url->addQueryString(PROJET_VARIABLE_ACTION, PROJET_ACTION_COUPER) ; |
$HTML_formulaireCouperColler = new HTML_formulaireCouperColler('formulaire_couper_coller', 'post', str_replace('&', '&', $this->_url->getURL())) ; |
$HTML_formulaireCouperColler -> construitFormulaire($projet->getListeRepertoireHierarchisee()) ; |
return $res.$HTML_formulaireCouperColler->toHTML('<img src="'.PROJET_CHEMIN_ICONES.$document->getCheminIcone().'" /> '.$document->getNomLong()); |
$tab = $projet->getListeRepertoireHierarchisee(); |
//$res .= '<pre>'.print_r ($tab, true).'</pre>'; |
return $res .$HTML_formulaireCouperColler->toHTML('<img src="'.PROJET_CHEMIN_ICONES.$document->getCheminIcone().'" /> '.$document->getNomLong()); |
} |
/** |
* Supprime un fichier. |
778,7 → 785,7 |
} // end of member function nouveauFichier |
/** |
* Renvoie le formulaire de création d'un répertoire. |
* Renvoie le formulaire de creation d'un repertoire. |
* |
* @return void |
* @access public |
804,7 → 811,7 |
*/ |
function nouveauFichierValidation( ) |
{ |
// création de l'objet projet courant |
// creation de l'objet projet courant |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
if (isset($_SESSION['formulaire_document']) && $_SESSION['formulaire_document'] == 'valide') { |
815,24 → 822,31 |
$formulaire_document = new HTML_formulaireDocument('formulaire_document', 'post', preg_replace ("/&/", "&", $this->_url->getURL())) ; |
$formulaire_document->construitFormulaire() ; |
if ($formulaire_document->validate()) { |
// Création d'un objet document vide |
// Creation d'un objet document vide |
$document = new document ("", $this->_db) ; |
// avant d'appeler la méthode enregistrerSQL, il faut indiquer l'identifiant du projet et l'identifiant du propriétaire |
// avant d'appeler la methode enregistrerSQL, il faut indiquer l'identifiant du projet et l'identifiant du proprietaire |
$document->setIdProjet ($this->_id_projet) ; |
$document->setIdProprietaire ($this->_auth->getAuthData (PROJET_CHAMPS_ID)) ; |
// On passe aussi le numéro de répertoire s'il existe |
// On passe aussi le numero de repertoire s'il existe |
if ($this->_id_repertoire != '') $document->setIdRepertoire($this->_id_repertoire) ; |
if ($this->_id_repertoire == 0) $document->setIdRepertoire(0) ; |
//$GLOBALS['log'] .= '<br>this->_id_repertoire: '.$this->_id_repertoire.'<br>'; |
$chemin_upload = $document->calculeCheminUploaded($projet->getNomRepertoire()) ; |
if (!$document->upload (PROJET_CHEMIN_FICHIER.$projet->getNomRepertoire().'/'.$chemin_upload)) { |
echo 'Echec de l\'upload' ; |
trigger_error('echec d\'upload !', E_USER_ERROR) ; |
//$GLOBALS['log'] .= '<br>chemin_upload: '.$chemin_upload.'<br>'; |
//$GLOBALS['log'] .= 'projet->getRepertoire() : '.$projet->getNomRepertoire().'<br>'; |
$id_document = SQL_obtenirNouveauId($this->_db, 'projet_documents', 'pd_id') ; |
$nouveau_nom = $document->genereNouveauNom($projet->getNomRepertoire(), $_FILES['fichier']['name'], $id_document); |
if (!$document->upload (PROJET_CHEMIN_FICHIER.$chemin_upload.'/'.$nouveau_nom)) { |
return 'Echec de l\'upload<br />'. |
'Fichier source : '. $_FILES['fichier']['name']; |
'Fichier destination : '.PROJET_CHEMIN_FICHIER.$projet->getNomRepertoire().'/'.$chemin_upload.'/'.$nouveau_nom ; |
} |
$document->enregistrerSQL($formulaire_document->getSubmitValues(), $projet->getNomRepertoire().'/'.$chemin_upload) ; |
//$document->enregistrerSQL($formulaire_document->getSubmitValues(), $projet->getNomRepertoire().'/'.$chemin_upload) ; |
$retour = $document->enregistrerSQL($formulaire_document->getSubmitValues(), $nouveau_nom); |
// On place a 1 la colonne p_avoir_document |
if (!$projet->avoirDocument()) $projet->setAvoirDocument(true); |
841,6 → 855,7 |
} else { |
return $formulaire_document->toHTML() ; |
} |
return $retour; |
unset ($projet) ; |
} // end of member function nouveauFichierValidation |
852,7 → 867,7 |
*/ |
function modifierFichier( ) |
{ |
// création de l'objet projet courant |
// creation de l'objet projet courant |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
$this->_url->addQueryString (PROJET_VARIABLE_ACTION, PROJET_ACTION_MODIFIER_V) ; |
860,9 → 875,9 |
$formulaire_document = new HTML_formulaireDocument('formulaire_document', 'post',preg_replace ("/&/", "&", $this->_url->getURL())) ; |
$formulaire_document->construitFormulaire(PROJET_ACTION_MODIFIER_V) ; |
if ($formulaire_document->validate()) { |
// Création d'un objet document vide |
// Creation d'un objet document vide |
$document = new document ($this->_id_document, $this->_db) ; |
// On passe aussi le numéro de répertoire s'il existe |
// On passe aussi le numero de répertoire s'il existe |
if ($this->_id_repertoire != '') $document->setIdRepertoire($this->_id_repertoire) ; |
$document->majSQL($formulaire_document->getSubmitValues()) ; |
} else { |
879,7 → 894,7 |
*/ |
function nouveauRepertoireValidation( ) |
{ |
// création de l'objet projet courant |
// creation de l'objet projet courant |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
889,22 → 904,26 |
$formulaire_repertoire->setType ('repertoire') ; |
$formulaire_repertoire->construitFormulaire() ; |
if ($formulaire_repertoire->validate()) { |
// Création d'un objet |
// Creation d'un objet |
$document = new document ("", $this->_db) ; |
// avant d'appeler la méthode enregistrerSQL, il faut indiquer l'identifiant du projet et l'identifiant du propriétaire |
// avant d'appeler la methode enregistrerSQL, il faut indiquer l'identifiant du projet et l'identifiant du proprietaire |
$document->setIdProjet ($this->_id_projet) ; |
$document->setIdProprietaire ($this->_auth->getAuthData (PROJET_CHAMPS_ID)) ; |
// On passe aussi le numéro de répertoire s'il existe |
// On passe aussi le numero de repertoire s'il existe |
if ($this->_id_repertoire != '') $document->setIdRepertoire($this->_id_repertoire) ; |
if ($this->_id_repertoire == 0) $document->setIdRepertoire(0) ; |
$chemin_upload = $document->calculeCheminUploaded($projet->getNomRepertoire()) ; |
$nom_repertoire = $document->enregistrerSQL($formulaire_repertoire->getSubmitValues(), $projet->getNomRepertoire()) ; |
$lien = $document->enregistrerSQL($formulaire_repertoire->getSubmitValues(), $projet->getNomRepertoire()) ; |
// La creation du repertoire sur le disque, chemin / nom_repertoire_projet / id_repertoire |
$GLOBALS['log'] .= '<br />chemin_upload:'.$chemin_upload.'<br />'; |
$GLOBALS['log'] .= '<br />mkdir('.PROJET_CHEMIN_FICHIER.$chemin_upload.$nom_repertoire.')<br />'; |
if (!mkdir (PROJET_CHEMIN_FICHIER.$chemin_upload.'/'.$nom_repertoire)) { |
// La création du répertoire sur le disque, chemin / nom_repertoire_projet / id_repertoire |
if (!mkdir (PROJET_CHEMIN_FICHIER.$lien)) { |
$document->suppressionSQL() ; |
return $this->messageErreur(PROJETCONTROLEUR_ERREUR_CREATION_REPERTOIRE).'<br />'.PROJET_CHEMIN_FICHIER.$lien ; |
return $this->messageErreur(PROJETCONTROLEUR_ERREUR_CREATION_REPERTOIRE).'<br />'. |
PROJET_CHEMIN_FICHIER.$chemin_upload.'/'.$nom_repertoire; |
} |
// On place a 1 la colonne p_avoir_document |
if (!$projet->avoirDocument()) $projet->setAvoirDocument(true); |
911,11 → 930,11 |
} else { |
return $formulaire_repertoire->toHTML() ; |
} |
} // end of member function nouveauFichierValidation |
} |
/** |
* Permet de spécifier au controleur sur quel projet l'on travaille. |
* Permet de specifier au controleur sur quel projet l'on travaille. |
* |
* @param int id_projet L'identifiant du projet. |
* @return void |
936,11 → 955,11 |
function accueilProjet( ) |
{ |
$res = '' ; |
// création de l'objet projet courant |
// creation de l'objet projet courant |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
// récupération de la liste des documents associés |
// recuperation de la liste des documents associés |
$liste_documents = $projet->getListesDocuments(PROJET_CHEMIN_FICHIER, PROJET_CHEMIN_ICONES) ; |
// création de la vue liste de document, on nettoie l'url |
948,7 → 967,7 |
include_once PROJET_CHEMIN_CLASSES.'HTML_listeDocuments.class.php' ; |
$vue_liste_document = new HTML_listeDocuments($this->_url, false, $this->_id_repertoire) ; |
// réglage de paramètres de la vue |
// reglage de parametres de la vue |
$vue_liste_document->setAction (array ("couper" => PROJET_ACTION_COUPER, "modifier" => PROJET_ACTION_MODIFIER, "supprimer" => PROJET_SUPPRESSION_FICHIER)) ; |
$vue_liste_document->setCheminIcones(PROJET_CHEMIN_ICONES) ; |
956,7 → 975,7 |
$tableau_navigation = document::getCheminIdRepertoire($this->_id_repertoire, $this->_db) ; |
$vue_liste_document->setCheminNavigation ($tableau_navigation) ; |
// vérification des droits de l'utilisateur |
// verification des droits de l'utilisateur |
$entete_liste = array (PROJET_FICHIERS_NOM, PROJET_FICHIERS_TAILLE, PROJET_FICHIERS_CREE_LE) ; |
if ($this->_auth->getAuth()) { |
1131,10 → 1150,10 |
} // end of member function accueilProjet |
/** |
* Permet de spécifier quel répertoire, dans la vue de document afficher. Il sera |
* passé en paramètre à la classe HTML_listeDocuments. |
* Permet de specifier quel repertoire, dans la vue de document afficher. Il sera |
* passe en parametre a la classe HTML_listeDocuments. |
* |
* @param int id_repertoire L'identifiant du répertoire à afficher. |
* @param int id_repertoire L'identifiant du repertoire a afficher. |
* @return void |
* @access public |
*/ |
1141,7 → 1160,7 |
function setIdRepertoire( $id_repertoire ) |
{ |
$this->_id_repertoire = $id_repertoire ; |
} // end of member function setIdRepertoire |
} |
/** |
* Supprime un projet et tout ce qui va avec. |
1204,7 → 1223,7 |
*/ |
function envoyerUnMailValidation( ) |
{ |
// Vérifications |
// Verifications |
if (isset($_SESSION['formulaire_mail']) && $_SESSION['formulaire_mail'] == 'valide') { |
return include_once PROJET_CHEMIN_APPLI.'actions/forums.php' ; |
} |
1214,7 → 1233,7 |
$formulaire_mail = new HTML_formulaireMail('formulaire_mail', 'post', preg_replace ("/&/", "&", $this->_url->getURL())) ; |
$formulaire_mail->construitFormulaire() ; |
if ($formulaire_mail->validate()) { |
// création de l'objet projet courant |
// creation de l'objet projet courant |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ; |
$projet = new projet ($this->_db, $this->_id_projet) ; |
$info_liste = $projet->getListesAssociees() ; |
1229,7 → 1248,7 |
$entetes['Message-ID'] = md5(time()).'@'.$projet->_listes_associes[0]->getNom().'.'.$projet->_listes_associes[0]->getDomaine() ; |
$entetes['reply-to'] = $projet->_listes_associes[0]->getAdresseEnvoi() ; |
$entetes['Content-Type'] = 'text/plain' ; |
// Traitement de la reference s'il s'agit d'une réponse |
// Traitement de la reference s'il s'agit d'une reponse |
if (isset ($_POST['messageid'])) { |
$entetes['In-Reply-To'] = $_POST['messageid'] ; |
} |
1259,7 → 1278,7 |
$formulaire_liste->setDefaults(array('domaine_liste' => PROJET_DOMAINE_LISTE)) ; |
$formulaire_liste->updateElementAttr('domaine_liste', array('readonly' => 'readonly')) ; |
return $res.$formulaire_liste->toHTML() ; |
} // end of member function formulaireListe |
} |
/** |
* Transmet au serveur la demande de création d'une nouvelle liste. |
1269,13 → 1288,14 |
*/ |
function nouvelleListeValidation( ) |
{ |
// Vérifications |
// Verifications |
$this->_url->addQueryString (PROJET_VARIABLE_ACTION, PROJET_ACTION_NOUVELLE_LISTE_V ); |
include_once PROJET_CHEMIN_CLASSES.'HTML_formulaireListe.class.php' ; |
$formulaire_liste = new HTML_formulaireListe('formulaire_liste', 'post', preg_replace ("/&/", "&", $this->_url->getURL())) ; |
$formulaire_liste->construitFormulaire() ; |
if ($formulaire_liste->validate()) { |
// création de l'objet liste_discussion |
// creation de l'objet liste_discussion |
include_once PROJET_CHEMIN_CLASSES.'liste_discussion.class.php'; |
$liste = new liste_discussion('', $this->_db) ; |
// On vérifie que le nom de la liste soit unique |
1289,14 → 1309,14 |
$projet = new projet ($this->_db, $this->_id_projet) ; |
$projet->ajouterListe($liste) ; |
// Création de la liste |
// Creation de la liste |
$resultat_creation = file_get_contents (PROJET_SERVEUR_VPOPMAIL.'/creation_liste.php?domaine='. |
$liste->getDomaine().'&liste='.$liste->getNom().'¶metres=aBiud') ; |
// Ajout du modérateur |
// Ajout du moderateur |
$resultat_ajout_moderateur = file_get_contents (PROJET_SERVEUR_VPOPMAIL.'/ajout_moderateur.php?domaine='. |
$liste->getDomaine().'&liste='.$liste->getNom().'&mail='.$this->_auth->getUserName()) ; |
// Ajout du modérateur en tant qu'utilisateur |
// Ajout du moderateur en tant qu'utilisateur |
$resultat_ajout_utilisateur = file_get_contents (PROJET_SERVEUR_VPOPMAIL.'/ajout_abonne.php?domaine='. |
$liste->getDomaine().'&liste='.$liste->getNom().'&mail='.$this->_auth->getUserName()) ; |
1436,7 → 1456,7 |
} // end of member function voirParticipants |
/** |
* Inscrit un utilisateur à un projet avec le statut observateur |
* Inscrit un utilisateur a un projet avec le statut observateur |
* |
* @return void |
* @access public |
1481,7 → 1501,7 |
} else { |
$participant->setStatut(3, $this->_auth->getAuthData (PROJET_CHAMPS_ID), $this->_id_projet) ; |
$tableau_coordinateur = $participant->getCoordinateurs($this->_id_projet) ; |
#include_once PROJET_CHEMIN_API.'pear/Mail.php'; |
$entetes['From'] = $this->_auth->getUserName(); |
$entetes['To'] = ''; |
$entetes['Subject'] = PROJET_DEMANDE_INSCRIPTION ; |
1514,11 → 1534,12 |
} |
if ($this->_presentation != 'arbre') { |
return include_once PROJET_CHEMIN_APPLI.'actions/resume.php' ; |
return '<h1>'.$projet->getTitre().'</h1>'. |
str_replace ('nom_du_projet', $projet->getTitre(), PROJET_LAIUS_INSCRIPTION_MODERE); |
} else { |
$this->_action = PROJET_ACTION_VOIR_RESUME; |
} |
return ; |
return PROJET_LAIUS_INSCRIPTION_MODERE; |
} |
$res = '<h1>'.PROJET_INSCRIPTION_PROJET.' : '.$projet->getTitre().'</h1>'."\n" ; |
if ($projet->avoirListe()) $res .= '<h2>'.PROJET_MESSAGE_LISTE.'</h2>'."\n" ; |
1531,7 → 1552,7 |
} // end of member function inscriptionProjet |
/** |
* Inscrit l'utilisateur logué à la liste dont le paraître est en post. |
* Inscrit l'utilisateur loggue a la liste dont le parametre est en post. |
* |
* @return void |
* @access public |
1793,9 → 1814,9 |
{ |
$messageErreur = array ( |
PROJETCONTROLEUR_ACTION_INVALIDE => "Action non valide", |
PROJETCONTROLEUR_ERREUR_SUPPRESSION_REPERTOIRE => "Impossible de supprimer le répertoire", |
PROJETCONTROLEUR_PAS_DE_DOCUMENT_SELECTIONNE => 'Pas de fichier sélectionn°', |
PROJETCONTROLEUR_ERREUR_CREATION_REPERTOIRE => 'Impossible de créer le répertoire' |
PROJETCONTROLEUR_ERREUR_SUPPRESSION_REPERTOIRE => "Impossible de supprimer le répertoire", |
PROJETCONTROLEUR_PAS_DE_DOCUMENT_SELECTIONNE => 'Pas de fichier sélectionné', |
PROJETCONTROLEUR_ERREUR_CREATION_REPERTOIRE => 'Impossible de créer le répertoire' |
) ; |
return '<p class="erreur">'.$messageErreur[$valeur].'</p>' ; |
} // end of member function messageErreur |
/trunk/classes/ezmlmAccessObject.class.php |
---|
6,34 → 6,34 |
// Ce logiciel est un programme informatique servant à gérer du contenu et des |
// applications web. |
// Ce logiciel est régi par la licence CeCILL soumise au droit français et |
// Ce logiciel est regi par la licence CeCILL soumise au droit francais et |
// respectant les principes de diffusion des logiciels libres. Vous pouvez |
// utiliser, modifier et/ou redistribuer ce programme sous les conditions |
// de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA |
// de la licence CeCILL telle que diffusee par le CEA, le CNRS et l'INRIA |
// sur le site "http://www.cecill.info". |
// En contrepartie de l'accessibilité au code source et des droits de copie, |
// de modification et de redistribution accordés par cette licence, il n'est |
// offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, |
// seule une responsabilité restreinte pèse sur l'auteur du programme, le |
// titulaire des droits patrimoniaux et les concédants successifs. |
// En contrepartie de l'accessibilite au code source et des droits de copie, |
// de modification et de redistribution accordes par cette licence, il n'est |
// offert aux utilisateurs qu'une garantie limitee. Pour les memes raisons, |
// seule une responsabilite restreinte pese sur l'auteur du programme, le |
// titulaire des droits patrimoniaux et les concedants successifs. |
// A cet égard l'attention de l'utilisateur est attirée sur les risques |
// associés au chargement, à l'utilisation, à la modification et/ou au |
// développement et à la reproduction du logiciel par l'utilisateur étant |
// donné sa spécificité de logiciel libre, qui peut le rendre complexe à |
// manipuler et qui le réserve donc à des développeurs et des professionnels |
// avertis possédant des connaissances informatiques approfondies. Les |
// utilisateurs sont donc invités à charger et tester l'adéquation du |
// logiciel à leurs besoins dans des conditions permettant d'assurer la |
// sécurité de leurs systèmes et ou de leurs données et, plus généralement, |
// à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. |
// A cet egard l'attention de l'utilisateur est attiree sur les risques |
// associes au chargement, a l'utilisation, a la modification et/ou au |
// developpement et a la reproduction du logiciel par l'utilisateur etant |
// donne sa specificite de logiciel libre, qui peut le rendre complexe a |
// manipuler et qui le reserve donc a des developpeurs et des professionnels |
// avertis possedant des connaissances informatiques approfondies. Les |
// utilisateurs sont donc invites a charger et tester l'adequation du |
// logiciel a leurs besoins dans des conditions permettant d'assurer la |
// securite de leurs systemes et ou de leurs donnees et, plus generalement, |
// a l'utiliser et l'exploiter dans les memes conditions de securite. |
// Le fait que vous puissiez accéder à cet en-tête signifie que vous avez |
// pris connaissance de la licence CeCILL, et que vous en avez accepté les |
// Le fait que vous puissiez acceder a cet en-tete signifie que vous avez |
// pris connaissance de la licence CeCILL, et que vous en avez accepte les |
// termes. |
// ---- |
// CVS : $Id: ezmlmAccessObject.class.php,v 1.4 2007-04-19 15:34:35 neiluj Exp $ |
// CVS : $Id: ezmlmAccessObject.class.php,v 1.5 2007-06-25 12:15:06 alexandre_tb Exp $ |
/** |
* Application projet |
46,7 → 46,7 |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2006 |
*@version $Revision: 1.4 $ |
*@version $Revision: 1.5 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
91,10 → 91,11 |
'messages_auteur', |
'messages_mois', |
'messages_thread', |
'supprimer'); |
'supprimer', |
'liste_abonnes'); |
/** |
* l'action sélectionnée |
* l'action selectionnee |
*/ |
var $action ; |
109,7 → 110,7 |
var $url ; |
/** |
* L'identifiant du répertoire |
* L'identifiant du repertoire |
*/ |
var $identifiant_repertoire ; |
120,17 → 121,17 |
var $identifiant_message; |
/** |
* L'identifiant du répertoire |
* L'identifiant du repertoire |
*/ |
var $_numeroRepertoireSuivant ; |
/** |
* L'identifiant du répertoire |
* L'identifiant du repertoire |
*/ |
var $hash_auteur ; |
/** |
* Le mois à afficher |
* Le mois a afficher |
*/ |
var $mois ; |
147,9 → 148,8 |
var $chemin_fichier_xml; |
/** |
* Creation de l'objet d'accès |
* Creation de l'objet d'acces |
* |
* |
*/ |
function ezmlmAccessObject ($action, $domaine, $liste, $langue = 'fr', $url = '') { |
197,6 → 197,7 |
function handleElement_ezmlm_messages_thread ($name, $attribs, $data) { echo $data ; } |
function handleElement_ezmlm_liste_abonnes ($name, $attribs, $data) { echo $data ; } |
/** |
* Choix de l'action |
* |
204,11 → 205,11 |
* 'calendrier_messages' |
* |
* @access public |
* @param string une action qui doit être supporté |
* @param string une action qui doit etre supporté |
*/ |
function setAction($action) { |
// vérification de l'action |
// verification de l'action |
if (!in_array($action, $this->actions_supportees)) { |
return raiseError(EZMLM_ACCESS_OBJECT_ACTION_NON_SUPPORTEE) ; |
} |
217,6 → 218,9 |
// Libere les ressources (XML_Parser::free) |
$this->free(); |
// On vide l url |
//$this->url = ''; |
$this->chemin_fichier_xml = ''; |
// Charge la nouvelle action |
$this->load() ; |
} |
246,11 → 250,11 |
} |
/** |
* Précise un message à extraire |
* Precise un message a extraire |
* |
* On indique le numéro de répertoire ezmlm et le numéro du message |
* @param integer le numéro du répertoire |
* @param integer le numéro du message |
* On indique le numero de repertoire ezmlm et le numero du message |
* @param integer le numero du repertoire |
* @param integer le numero du message |
* |
*/ |
260,9 → 264,9 |
} |
/** |
* Précise un auteur |
* Precise un auteur |
* |
* On indique le numéro de répertoire ezmlm et le numéro du message |
* On indique le numero de repertoire ezmlm et le numero du message |
* @param string le hash d'un auteur |
* |
*/ |
271,9 → 275,9 |
$this->hash_auteur = $hash_auteur; |
} |
/** |
* Précise un mois |
* Precise un mois |
* |
* On indique le numéro de répertoire ezmlm et le numéro du message |
* On indique le numero de repertoire ezmlm et le numéro du message |
* @param string le hash d'un auteur |
* |
*/ |
298,17 → 302,30 |
function parse() |
{ |
if (substr(phpversion(), 0, 1) == '5') { |
$xml = new SimpleXMLElement(file_get_contents($this->chemin_fichier_xml)); |
echo utf8_decode ($xml); |
switch ($this->action) { |
case 'calendrier_messages' : echo utf8_decode($xml->ezmlm_calendrier_messages); |
//try { |
$xml = new SimpleXMLElement($this->chemin_fichier_xml, null, true); |
switch ($this->action) { |
case 'calendrier_messages' :echo utf8_decode($xml); |
echo utf8_decode($xml->ezmlm_calendrier_messages); |
break; |
case 'message': |
echo utf8_decode ($xml); |
$this->_numeroRepertoirePrecedent = $xml->message_precedent['numero_repertoire']; |
$this->_numeroRepertoireSuivant = $xml->message_suivant['numero_repertoire']; |
$this->_numeroFichierSuivant = $xml->message_suivant['numero']; |
$this->_numeroFichierPrecedent = $xml->message_precedent['numero']; |
break; |
case 'message': |
$this->_numeroRepertoirePrecedent = $xml->message_precedent['numero_repertoire']; |
$this->_numeroRepertoireSuivant = $xml->message_suivant['numero_repertoire']; |
$this->_numeroFichierSuivant = $xml->message_suivant['numero']; |
$this->_numeroFichierPrecedent = $xml->message_precedent['numero']; |
} |
default : |
echo utf8_decode($xml); |
} |
$error = 'Erreur dans l\'accès au fichier:<br />'.$this->chemin_fichier_xml.'<br />'; |
$error = ''; |
// throw new Exception($error); |
//} |
//catch (Exception $e) { |
// echo $e->getMessage(). "<br />"; |
//} |
} else { |
return parent::parse(); |
} |
/trunk/classes/projet.class.php |
---|
19,7 → 19,7 |
// | License along with this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: projet.class.php,v 1.8 2007-04-19 15:34:35 neiluj Exp $ |
// CVS : $Id: projet.class.php,v 1.9 2007-06-25 12:15:06 alexandre_tb Exp $ |
/** |
* Application projet |
* |
31,7 → 31,7 |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.8 $ |
*@version $Revision: 1.9 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
371,42 → 371,43 |
} |
/** |
* Renvoie la liste des documents associés sous forme d'un tableau, avec les |
* Renvoie la liste des documents associes sous forme d'un tableau, avec les |
* informations afférentes. 0 => "nom (cliquable)" |
"Taille" |
"Date |
* de création" "Proriàtaire" "Visibilità" "Action |
* de creation" "Prorietaire" "Visibilite" "Action |
* (cliquable)" |
* |
* @param visibilite visibilite Si visibilite est à prive, tous les fichiers sont renvoyés ainsi qu'une entrée |
* pour indiquer la visibilité du document. |
* @param visibilite visibilite Si visibilite est prive, tous les fichiers sont renvoyes ainsi qu'une entree |
* pour indiquer la visibilite du document. |
* @return Array |
* @access public |
*/ |
function getListesDocuments( $chemin, $chemin_icones = "icones/" ) |
function getListesDocuments( $chemin, $chemin_icones = "icones/", $id_repertoire = '' ) |
{ |
// On réalise une requete sur projet_documents avec une jointure sur l'annuaire |
// et sur gen_type_de_fichier pour envoyer un résultat complet. |
// On realise une requete sur projet_documents avec une jointure sur l'annuaire |
// et sur gen_type_de_fichier pour envoyer un resultat complet. |
// On exclue les fichiers racines cad pd_pere is null |
$requete = "select pd_id from projet_documents where pd_ce_projet=".$this->_id_projet.' order by pd_nom' ; |
$requete = "select pd_id from projet_documents where pd_ce_projet=".$this->_id_projet ; |
if ($id_repertoire != '') $requete .= ' and pd_pere='.$id_repertoire; |
if ($id_repertoire == 0) $requete .= ' and pd_pere=0'; |
$requete .= ' order by pd_nom' ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
return ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
$tableau_document = array() ; |
// Un compteur |
$i = 0 ; |
while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) { |
array_push ($tableau_document, new document ($ligne->pd_id, &$this->_db, $chemin, $chemin_icones)) ; |
} |
return $tableau_document ; |
} // end of member function getListesDocuments |
} |
/** |
* Renvoie un tableau avec tous les répertoires d'un projet, imbriqué. ['rep1'], |
* Renvoie un tableau avec tous les repertoires d'un projet, imbrique. ['rep1'], |
* ['rep2'] => array (['rep21'], ['rep22']), etc . |
* |
* @return Array |
414,21 → 415,56 |
*/ |
function getListeRepertoireHierarchisee( ) |
{ |
// On ne prend que les répertoires |
$requete = "select pd_id from projet_documents where pd_ce_projet=".$this->_id_projet.' and pd_ce_type=0 order by pd_nom' ; |
// On ne prend que les repertoires |
$requete = "select pd_id, pd_pere, pd_nom from projet_documents where pd_ce_projet=".$this->_id_projet.' and pd_ce_type=0 order by pd_nom' ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
$tableau_document = array() ; |
/* |
while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) { |
array_push ($tableau_document, new document ($ligne->pd_id, $this->_db)); |
} |
*/ |
$tableau = array(); |
$tab = array(); |
return $tableau_document ; |
while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) { |
array_push ($tableau, array ('id' => $ligne->pd_id, |
'id_pere' => $ligne->pd_pere, |
'fils' => array(), |
'label' => $ligne->pd_nom)); |
} |
// la $tableau reste un tableau de valeur a plat |
$i = 0; |
foreach ($tableau as $noeud) { |
// On teste si le noeud est racine si oui on l ajoute a l arbre sinon on ne l ajoute pas |
if ($noeud['id_pere'] == 0) { |
$tab[$i] = $noeud; |
$this->construireArbre($tab[$i], $tableau) ; |
} |
$i++; |
} |
return $tab; |
} // end of member function getListeRepertoireHierarchisee |
function construireArbre(&$noeud, $tableau) { |
$j = 0; |
foreach ($tableau as $element) { |
// pour chaque element on teste |
if ($element['id_pere'] == $noeud['id']) { |
$noeud['fils'][$j]= $element ; |
$this->construireArbre($noeud['fils'][$j],$tableau); |
} |
$j++; |
} |
} |
/** |
* Renvoie un tableau comprenant tous les objets projet de la base. |
440,7 → 476,7 |
function getTousLesProjets(&$objetDB, $exclu = '') |
{ |
$sql = ''; |
if (count($this->_projet_exclu)) { |
if (isset ($this->_projet_exclu) && count($this->_projet_exclu)) { |
$sql = 'where p_id not in ('; |
foreach ($this->_projet_exclu as $valeur) { |
$sql .= $valeur.',' ; |
/trunk/classes/HTML_formulaireCouperColler.class.php |
---|
19,7 → 19,7 |
// | License along with this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: HTML_formulaireCouperColler.class.php,v 1.2 2005-09-27 16:39:25 alexandre_tb Exp $ |
// CVS : $Id: HTML_formulaireCouperColler.class.php,v 1.3 2007-06-25 12:15:06 alexandre_tb Exp $ |
/** |
* Application projet |
* |
31,7 → 31,7 |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.2 $ |
*@version $Revision: 1.3 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
39,6 → 39,8 |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
require_once 'HTML/QuickForm.php' ; |
/** |
* class HTML_formulaireCouperColler |
* |
58,18 → 60,13 |
$squelette->setElementTemplate( '<li style="list-style-type: none;">'."\n".'{element}'."\n".'</li>'."\n"); |
$this->addElement('radio', 'projet_repertoire', '', PROJET_RACINE, 0) ; |
if (count ($tableau_repertoire)) { |
$this->addElement('html', '<ul>') ; |
foreach ($tableau_repertoire as $cle => $valeur) { |
if ($valeur->_id_pere ==0) { |
$this->addElement ('radio', 'projet_repertoire', '', $valeur->getNomLong(), $valeur->getIdDocument()) ; |
$sous_tableau = array() ; |
foreach ($tableau_repertoire as $valeur_fils) { |
if ($valeur_fils->_id_pere == $valeur->getIdDocument()) { |
array_push ($sous_tableau, $valeur_fils) ; |
} |
} |
if (count ($sous_tableau)) $this->construitLigneRepertoire($sous_tableau) ; |
foreach ($tableau_repertoire as $valeur) { |
if ($valeur['id_pere'] ==0) { |
$this->addElement ('radio', 'projet_repertoire', '', $valeur['label'], $valeur['id']) ; |
if (count ($valeur['fils'])) $this->construireArbreRadio ($valeur['fils']); |
} |
} |
$this->addElement('html', '</ul>') ; |
82,13 → 79,20 |
$buttons[] = &HTML_QuickForm::createElement('link', 'annuler', '', |
preg_replace ("/&/", "&", $url_annuler->getURL()), PROJET_FICHIER_ANNULER |
); // Le preg_replace contourne un pb de QuickForm et Net_URL |
// qui remplacent deux fois les & par des & |
// ce qui fait échouer le lien |
// qui remplacent deux fois les & par des & |
// ce qui fait échouer le lien |
$buttons[] = &HTML_QuickForm::createElement('submit', 'valider_inscription_projet', PROJET_FICHIER_VALIDER); |
$this->addGroup($buttons, null, null, ' '); |
} // end of member function construitFormulaire |
function construireArbreRadio(&$noeud) { |
foreach ($noeud as $val) { |
$this->addElement('html', '<ul>') ; |
$this->construitLigneRepertoire($val) ; |
if (count($val['fils'])) $this->construireArbreRadio ($val['fils']) ; |
$this->addElement('html', '</ul>') ; |
} |
} |
/** |
* |
* |
96,11 → 100,9 |
* |
*/ |
function construitLigneRepertoire($tableau) { |
function construitLigneRepertoire($noeud) { |
$this->addElement('html', '<ul>') ; |
foreach ($tableau as $valeur) { |
$this->addElement('radio', 'projet_repertoire', '', $valeur->getNomLong(), $valeur->getIdDocument()) ; |
} |
$this->addElement('radio', 'projet_repertoire', '', $noeud['label'], $noeud['id']) ; |
$this->addElement('html', '</ul>') ; |
} |
/** |
127,6 → 129,6 |
$res .= '<h2>'.PROJET_CHOISISSEZ_REPERTOIRE.'</h2>' ; |
$res .= HTML_QuickForm::toHTML() ; |
return $res ; |
} // end of member function toHTML |
} // end of HTML_formulaireCouperColler |
} |
} |
?> |
/trunk/classes/ezmlm-php-2.0/ezmlm-msgdisplay.php |
---|
1,5 → 1,5 |
<?php |
// $Id: ezmlm-msgdisplay.php,v 1.4 2007-04-19 15:34:35 neiluj Exp $ |
// $Id: ezmlm-msgdisplay.php,v 1.5 2007-06-25 12:15:07 alexandre_tb Exp $ |
// |
// ezmlm-msgdisplay.php - ezmlm-php v2.0 |
// -------------------------------------------------------------- |
148,7 → 148,7 |
$numero = substr($decimal, -2) ; |
$fichier_suivant = $numero ; |
} else { |
if ($fichier_suivant < 9)$fichier_suivant = '0'.$fichier_suivant; |
if ($fichier_suivant <= 9)$fichier_suivant = '0'.$fichier_suivant; |
} |
break; |
/trunk/classes/ezmlm-php-2.0/services_vpopmail/derniers_messages.php |
---|
13,7 → 13,11 |
ob_start() ; |
if (!$info->show_recentmsgs()) { |
if (!$info) return 'Les fichiers de la liste ne sont pas visible sur le serveur' ; |
if (!$info) { |
ob_end_clean() ; |
echo 'Les fichiers de la liste ne sont pas visible sur le serveur' ; |
exit(); |
} |
} |
$html = ob_get_contents() ; |
ob_end_clean() ; |
/trunk/classes/ezmlm-php-2.0/services_vpopmail/message.php |
---|
14,6 → 14,7 |
$num_message = $actionargs[1] ; |
if ($id_rep =='' || $num_message == '') exit(); |
$html = $message->display ($id_rep.'/'.$num_message) ; |
include_once 'XML/Util.php' ; |
20,6 → 21,17 |
$xml = XML_Util::getXMLDeclaration('1.0', 'ISO-8859-15', 'no') ; |
if (!$html) { |
$xml .= XML_Util::createStartElement ('erreur') ; |
$xml .= 'Le message n\'existe pas'; |
$xml .= XML_Util::createEndElement('erreur') ; |
header ('Content-type: text/xml'); |
echo $xml; |
exit(); |
} |
$xml .= XML_Util::createStartElement ('ezmlm_message', array('domaine' => $domaine, 'liste' => $liste, 'langue' => $langue)) ; |
$xml .= "\n".'<![CDATA[ '.$html.']]>'; |
/trunk/classes/ezmlm-php-2.0/services_vpopmail/liste_abonnes.php |
---|
1,17 → 1,78 |
<?php |
/*vim: set expandtab tabstop=4 shiftwidth=4: */ |
// +------------------------------------------------------------------------------------------------------+ |
// | PHP version 4.1 | |
// +------------------------------------------------------------------------------------------------------+ |
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) | |
// +------------------------------------------------------------------------------------------------------+ |
// | This library is free software; you can redistribute it and/or | |
// | modify it under the terms of the GNU General Public | |
// | License as published by the Free Software Foundation; either | |
// | version 2.1 of the License, or (at your option) any later version. | |
// | | |
// | This library is distributed in the hope that it will be useful, | |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
// | General Public License for more details. | |
// | | |
// | You should have received a copy of the GNU General Public | |
// | License along with this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: liste_abonnes.php,v 1.3 2007-06-25 12:15:06 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* Le service liste abonne |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.3 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
$repertoire = '/home/vpopmail/domains/'.$domaine.'/'.$liste ; |
exec ('ezmlm-list '.$repertoire, $output, $ret) ; |
/* Le service attend 2 parametres |
* domaine string le nom de domaine de la liste |
* liste string le nom de la liste |
* renvoie string une chaine xml avec la liste des mails des inscrits |
* |
* <ezmlm_liste_abonnes domaine="dom" liste="list"> |
* <email>toto@tsdd...</email> |
* <email>qsdf@fdsq ..</email> |
* ... |
* </ezmlm_liste_abonnes> |
*/ |
include_once 'XML/Util.php' ; |
$xml = XML_Util::getXMLDeclaration('1.0', 'ISO-8859-15', 'no') ; |
$xml .= XML_Util::createStartElement ('ezmlm_liste_abonnes', array('domaine' => $domaine, 'liste' => $liste)) ; |
// Les 2 parametres doivent etres present |
foreach ($output as $mail) $xml .= XML_Util::createTag('email', '', $mail) ; |
if (!isset($_GET['domaine']) || !isset($_GET['liste'])) { |
$xml .= XML_Util::createTag('erreur', 'Vous devez spécifier un domaine et une liste'); |
} else { |
$repertoire = '/home/vpopmail/domains/'.$domaine.'/'.$liste ; |
exec ('ezmlm-list '.$repertoire, $output, $ret) ; |
$xml .= XML_Util::createStartElement ('ezmlm_liste_abonnes', array('domaine' => $domaine, 'liste' => $liste)) ; |
foreach ($output as $mail) $xml .= XML_Util::createTag('email', '', $mail) ; |
$xml .= XML_Util::createEndElement('ezmlm_liste_abonnes') ; |
} |
$xml .= XML_Util::createEndElement('ezmlm_liste_abonnes') ; |
header ('Content-type: text/xml'); |
echo $xml ; |
?> |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* $Log: not supported by cvs2svn $ |
* Revision 1.2.2.1 2007-05-11 09:45:35 alexandre_tb |
* ajout de commentaire et de la gestion des erreurs |
* |
* +-- Fin du code ----------------------------------------------------------------------------------------+ |
*/ |
?> |
/trunk/classes/document.class.php |
---|
19,7 → 19,7 |
// | License along with this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: document.class.php,v 1.7 2007-04-19 09:22:29 alexandre_tb Exp $ |
// CVS : $Id: document.class.php,v 1.8 2007-06-25 12:15:06 alexandre_tb Exp $ |
/** |
* Application projet |
* |
31,7 → 31,7 |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.7 $ |
*@version $Revision: 1.8 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
116,6 → 116,8 |
* |
*/ |
var $_pd_lien ; |
var $nom_fichier ; |
/** |
* |
* |
128,6 → 130,7 |
{ |
$this->_db = $objetDB ; |
$this->_chemin_icone = $chemin_icones ; |
if ($id_document != "") { |
$requete = "select * from projet_documents where pd_id=".$id_document ; |
$resultat = $this->_db->query ($requete) ; |
136,8 → 139,11 |
} |
$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ; |
if ($resultat->numRows()>0) { |
fichier::fichier($chemin.$ligne->pd_lien, $this->_db) ; |
$this->nom_fichier = $ligne->pd_lien; |
$this->_id_projet = $ligne->pd_ce_projet; |
$this->_id = $ligne->pd_id ; |
fichier::fichier($chemin.$this->getChemin(), $this->_db) ; |
if (is_object ($this->_type_mime)) $this->_type_mime->setCheminIcone ($chemin_icones) ; |
$this->_id_proprietaire = $ligne->pd_ce_utilisateur ; |
$this->_nom_long = $ligne->pd_nom ; |
145,6 → 151,7 |
$this->_date_mise_a_jour = $ligne->pd_date_de_mise_a_jour ; |
$this->_description = $ligne->pd_description ; |
$this->_pd_lien = $ligne->pd_lien; |
if ($this->_isRacine($ligne->pd_pere)) { |
$this->_id_pere = 0 ; |
} else { |
237,7 → 244,7 |
if ($this->isRepertoire()) { |
return $this->_chemin_icone."repertoire.gif" ; |
} else { |
return $this->_type_mime->getCheminIcone() ; |
if (is_object ($this->_type_mime)) return $this->_type_mime->getCheminIcone() ; |
} |
} // end of member function getCheminIcone |
295,18 → 302,25 |
* @return string |
* @access public |
*/ |
function getChemin( ) |
function getChemin($prefixe = '') |
{ |
if ($this->isRepertoire()) { |
return $this->_id ; |
} else { |
return $this->_chemin ; |
$chemin_repertoire_entre_racine_et_fichier = ''; |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php'; |
$projet = new projet ($this->_db, $this->_id_projet); |
// l arborescence des repertoires |
$tableau_navigation = $this->getPath($this->_id) ; |
if (is_array ($tableau_navigation))$tableau_navigation = array_reverse($tableau_navigation); |
for ($i = 0; $i < count ($tableau_navigation); $i++) { |
$chemin_repertoire_entre_racine_et_fichier.= $tableau_navigation[$i]."/"; |
} |
} // end of member function getChemin |
return $projet->getNomRepertoire().'/'.$chemin_repertoire_entre_racine_et_fichier.$this->nom_fichier ; |
} |
/** |
* Renvoie pour le répertoire courant, les identifiants et les noms de tous les |
* Renvoie pour le repertoire ou le fichier courant, les identifiants et les noms de tous les |
* répertoires père jusqu'à la racine. 0 => ['id'], ['nom'] 1 => [id'], ['nom'] etc. |
* En commençant par la racine et en descendant. Pour la racine id vaut "" et nom |
* vaut "". |
315,11 → 329,12 |
* @return Array |
* @access public |
*/ |
function getCheminIdRepertoire( $id_repertoire, &$objetDB ) |
function getCheminIdRepertoire( $id_doc, &$objetDB ) |
{ |
if ($id_repertoire == "") $id_repertoire = 0; |
if ($id_doc == "") $id_doc = 0; |
// on commence par rechercher le répertoire père, dans la base de donnée |
$requete = "select pd_pere, pd_nom, pd_id from projet_documents where pd_id=$id_repertoire" ; |
$requete = 'select pd_pere, pd_nom, pd_id, pd_ce_type from projet_documents where pd_id='.$id_doc ; |
$resultat = $objetDB->query ($requete) ; |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
328,30 → 343,34 |
$chemin_rep_id_nom = array() ; |
if ($resultat->numRows()>0) { |
if ($ligne->pd_pere == 0) { |
$tab = array ($ligne->pd_id, $ligne->pd_nom) ; |
return $tab ; |
} |
else { |
$requete_pere = "select pd_id, pd_nom from projet_documents where pd_id=$ligne->pd_pere" ; |
$resultat_pere = $objetDB->query ($requete_pere) ; |
if (DB::isError($resultat_pere)) { |
die ("Echec de la requete<br />".$resultat_pere->getMessage()."<br />".$resultat_pere->getDebugInfo()) ; |
} |
$ligne_pere = $resultat_pere->fetchRow (DB_FETCHMODE_OBJECT) ; |
array_push ($chemin_rep_id_nom, $ligne->pd_id,$ligne->pd_nom) ; |
$tab = document::getCheminIdRepertoire($ligne_pere->pd_id, $objetDB) ; |
$chemin_rep_id_nom = array_merge ($chemin_rep_id_nom, $tab) ; |
return ; //array ($ligne->pd_pere); |
} |
array_push ($chemin_rep_id_nom, $ligne->pd_pere) ; |
$tab = document::getCheminIdRepertoire($ligne->pd_pere, $objetDB) ; |
$chemin_rep_id_nom = array_merge ($tab, $chemin_rep_id_nom) ; |
} |
$tabl_resultat = array() ; |
for ($i = 0; $i < count ($chemin_rep_id_nom); $i++) { |
$val1 = array_pop ($chemin_rep_id_nom) ; |
$val2 = array_pop ($chemin_rep_id_nom) ; |
array_push ($tabl_resultat, $val2, $val1) ; |
return array_reverse($chemin_rep_id_nom); |
} |
function getPath( $id_doc) |
{ |
if ($id_doc == "") $id_doc = 0; |
// on commence par rechercher le répertoire père, dans la base de donnée |
$requete = 'select pd_pere, pd_nom, pd_id, pd_ce_type from projet_documents where pd_id='.$id_doc ; |
$resultat = $GLOBALS['projet_db']->query ($requete) ; |
if (DB::isError($resultat)) { |
return ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
return $tabl_resultat ; |
} // end of member function getCheminIdRepertoire |
$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ; |
$chemin_rep_id_nom = array() ; |
if ($resultat->numRows()>0) { |
if ($ligne->pd_pere == 0) { |
return; |
} |
array_push ($chemin_rep_id_nom, $ligne->pd_pere) ; |
$chemin_rep_id_nom = array_merge ($chemin_rep_id_nom, document::getPath($ligne->pd_pere) ); |
} |
return $chemin_rep_id_nom; |
} |
/** |
* Calcule le chemin vers le fichier ou le répertoire uploadé |
* renvoie un chaine de la forme dir1/dir2/fichier.ext |
360,27 → 379,25 |
*/ |
function calculeCheminUploaded ($radical) { |
// On recherche le chemin vers le fichier, en fonction du répertoire |
// ici on renomme le fichier à partir du dernier ID de la table gen_voiraussi |
$requete_document = "select pd_id from projet_documents order by pd_id desc limit 1,1" ; |
$resultat_document = $this->_db->query($requete_document) ; |
$ligne_document = $resultat_document->fetchRow(DB_FETCHMODE_OBJECT) ; |
$nouveau_nom = $ligne_document->pd_id + 1 ; |
$extension = preg_replace("/^([^\.]+)\.(\w+$)/", "\\2", $_FILES['fichier']['name']) ; |
$nouveau_nom = $radical."_".$nouveau_nom.".".$extension ; |
if (isset($_FILES['fichier']['name'])) { |
$extension = preg_replace("/^([^\.]+)\.(\w+$)/", "\\2", $_FILES['fichier']['name']) ; |
} |
if ($this->_id_pere != '') { |
// On appelle la méthode getCheminIdRepertoire qui renvoie un tableau avec la liste |
// des répertoires jusqu'à la racine, on enlève la racine ($i = 0) et on concatène |
// toutes les entrées pour obtenir le chemin jusqu'au répertoire courant |
$chemin_repertoire_entre_racine_et_repertoire_a_cree = '' ; |
$tableau_navigation = $this->getCheminIdRepertoire($this->_id_pere, $this->_db) ; |
for ($i = 0; $i < count ($tableau_navigation); $i+=2) $chemin_repertoire_entre_racine_et_repertoire_a_cree.= $tableau_navigation[$i]."/"; |
$chemin = $chemin_repertoire_entre_racine_et_repertoire_a_cree.$nouveau_nom ; |
$doc_pere = new document ($this->_id_pere, $this->_db); |
return $doc_pere->getChemin(); |
$tableau_navigation = $this->getPath($this->_id_pere) ; |
for ($i = 0; $i < count ($tableau_navigation); $i++) $chemin_repertoire_entre_racine_et_repertoire_a_cree.= $tableau_navigation[$i]."/"; |
$chemin = $chemin_repertoire_entre_racine_et_repertoire_a_cree ; |
} else { |
// Si l'on est à la racine du projet, le chemin est le nom du fichier |
return $nouveau_nom ; |
// Si l'on est à la racine du projet, le chemin vide |
return $radical ; |
} |
return $chemin ; |
} |
423,7 → 440,8 |
for ($i = 0; $i < count ($tableau_navigation); $i+=2) $chemin_repertoire_entre_racine_et_repertoire_a_cree.= $tableau_navigation[$i]."/"; |
$pd_lien .= $chemin_repertoire_entre_racine_et_repertoire_a_cree ; |
} |
$pd_lien .= SQL_obtenirNouveauId($this->_db, 'projet_documents', 'pd_id')."/" ; |
//$pd_lien .= SQL_obtenirNouveauId($this->_db, 'projet_documents', 'pd_id')."/" ; |
$pd_lien = SQL_obtenirNouveauId($this->_db, 'projet_documents', 'pd_id')."/" ; |
} |
$id = SQL_obtenirNouveauId($this->_db, 'projet_documents', 'pd_id') ; |
441,6 → 459,11 |
return $pd_lien; |
} |
function genereNouveauNom ($radical, $ancien_nom, $id) { |
$extension = preg_replace("/^([^\.]+)\.(\w+$)/", "\\2", $ancien_nom) ; |
$nouveau_nom = $radical."_".$id.".".$extension ; |
return $nouveau_nom; |
} |
/** |
* Met à jour une ligne dans la table projet_document |
485,24 → 508,28 |
*/ |
function deplace( $repertoire_destination, $repertoire_projet ) |
{ |
// On récupère les informations du répertoire cible |
if ($repertoire_destination != 0) { |
$repertoire_cible = new document ($repertoire_destination, $this->_db) ; |
$rep = $repertoire_cible->_pd_lien ; |
$chemin_rep_cible = $repertoire_cible->getChemin(); |
} else { |
$rep = $repertoire_projet.'/' ; |
// Si le repertoire destination est la racine cad id =0 |
// on cree un document qui aura pour chemin le repertoire du projet |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php'; |
$projet = new projet ($this->_db, $this->_id_projet); |
$chemin_rep_cible = $projet->getNomRepertoire().'/'; |
} |
// On récupère le nom du fichier |
$decoupe = explode ('/', $this->_pd_lien) ; |
$nom_fichier = $decoupe[count($decoupe)-1] ; |
$requete = 'update projet_documents set pd_lien="'.$rep.$nom_fichier.'", pd_pere='.$repertoire_destination.' where pd_id='.$this->_id ; |
$nom_fichier = $this->_pd_lien ; |
$requete = 'update projet_documents set pd_pere='.$repertoire_destination.' where pd_id='.$this->_id ; |
$resultat = $this->_db->query ($requete) ; |
if (DB::isError($resultat)) { |
echo ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
return false ; |
} |
return fichier::deplace ($this->_chemin, PROJET_CHEMIN_FICHIER.$rep.$nom_fichier) ; |
//echo $this->_chemin.'<br>'.PROJET_CHEMIN_FICHIER.$chemin_rep_cible.$nom_fichier; |
return fichier::deplace ($this->_chemin, PROJET_CHEMIN_FICHIER.$chemin_rep_cible.$nom_fichier) ; |
} // end of member function deplace |
613,6 → 640,17 |
} |
return round ($taille / $diviseur, $precision).' '.$unite; |
} |
/** |
* Renvoie une liste de document, enfant du document courant |
* qui doit etre un repertoire bien sur |
* |
* @return mixed un tableau de document |
* @access public |
*/ |
function getDocumentsEnfant() { |
} |
} // end of document |
/trunk/classes/HTML_listeParticipants.class.php |
---|
19,7 → 19,7 |
// | License along with this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: HTML_listeParticipants.class.php,v 1.3 2006-01-11 10:32:09 alexandre_tb Exp $ |
// CVS : $Id: HTML_listeParticipants.class.php,v 1.4 2007-06-25 12:15:06 alexandre_tb Exp $ |
/** |
* Application projet |
* |
31,7 → 31,7 |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.3 $ |
*@version $Revision: 1.4 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
96,7 → 96,7 |
* @return void |
* @access public |
*/ |
function construitListe( $elements, $tableau_statut = '' ) |
function construitListe( $elements, $tableau_statut = '', &$projet ) |
{ |
for ($i = 0; $i < count ($elements) ; $i++) { |
// L'identifiant de l'utilisateur est le premier élément du tableau |
113,6 → 113,8 |
$this->_url->removeQueryString('statut') ; |
} |
// La colonne avec l inscription a la liste de discussion |
$this->addRow ($elements[$i]) ; |
// mise à jour du champs mail en l'entourant par la balise mailto |
/trunk/classes/HTML_listeDocuments.class.php |
---|
19,7 → 19,7 |
// | License along with this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: HTML_listeDocuments.class.php,v 1.8 2007-04-19 15:34:35 neiluj Exp $ |
// CVS : $Id: HTML_listeDocuments.class.php,v 1.9 2007-06-25 12:15:06 alexandre_tb Exp $ |
/** |
* Application projet |
* |
31,7 → 31,7 |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.8 $ |
*@version $Revision: 1.9 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
81,7 → 81,7 |
var $_chemin_icone = "icones/"; |
/** |
* L'identifiant du répertoire que l'on est en train d'observer. |
* L'identifiant du repertoire que l'on est en train d'observer. |
* @access private |
*/ |
var $_id_repertoire; |
98,7 → 98,13 |
* @access private |
*/ |
var $_auth ; |
/** |
* le style d affichage |
* @access private |
*/ |
var $_mode_affichage ; |
/** |
* |
* |
* @param bool utilise_pager Indique l'utilisation ou non du Pager. |
114,6 → 120,7 |
if (is_object($auth)) { |
$this->_auth = $auth ; |
} |
$this->_mode_affichage = 'standart'; |
} // end of member function HTML_listeDocuments |
/** |
123,7 → 130,7 |
* @return void |
* @access public |
*/ |
function __construct( &$url, $utilise_pager = false, $id_repertoire = 0, $auth = '' ) |
function __construct( &$url, $utilise_pager = false, $id_repertoire = 0, $auth = '', $id_projet = '' ) |
{ |
$this->HTML_listeDocuments($url, $utilise_pager, $id_repertoire, $auth); |
139,77 → 146,84 |
function construitEntete( $tableau_label ) |
{ |
$this->addRow ($tableau_label, NULL, 'TH') ; |
} // end of member function construitEntete |
} |
/** |
* |
* |
* @param Array tableau_label Un tableau à deux dimensions avec les labels à afficher dans le corps du |
* @param Array tableau_label Un tableau a deux dimensions avec les labels a afficher dans le corps du |
* tableau. |
* @return void |
* @access public |
*/ |
function construitListe( &$tableau_document, $droits, $mode = '', $objetDB = '') |
function construitListe( &$tableau_document, $droits, $mode = '', $objetDB = '', $id_projet = '') |
{ |
$compteur = 0 ;$class[0] = 'ligne_impaire'; $class[1] = 'ligne_paire' ; |
for ($i = 0; $i < count ($tableau_document) ; $i++) { |
// première condition : est-ce que le fichier a pour père le répertoire courant, si oui on l'affiche |
if ($tableau_document[$i]->_id_pere == $this->_id_repertoire || $mode == 'ignore_repertoire') { |
// d'abord l'image |
$icone = '<img src="'.$tableau_document[$i]->getCheminIcone().'" />' ; |
// Si le document est un répertoire, on ajoute id_repertoire au lien. |
if ($tableau_document[$i]->isRepertoire()) { |
$this->_url->addQueryString ('id_repertoire', $tableau_document[$i]->getChemin()) ; |
$lien = $this->_url->getURL() ; |
} else { // Si c'est un fichier, on fait un lien direct |
$lien = $tableau_document[$i]->getChemin() ; |
} |
// pour éviter des effets de bords, on enlève id_repertoire de l'url |
// dans le cas d'un répertoire, pour les fichiers on le laisse pour |
// qu'après une opération, on reste dans le répertoire où a eu lieu l'opération |
if ($tableau_document[$i]->isRepertoire()) $this->_url->removeQueryString('id_repertoire') ; |
// on insère le lien |
$lien_nom = '<a href="'.$lien.'">'.$icone.' '.$tableau_document[$i]->getNomLong()."</a>\n" ; |
// Pour la taille on divise par 1000 et on écrit Ko |
$taille = round($tableau_document[$i]->getTaille() / 1000).' Ko' ; |
// Récupération de l'auteur |
include_once PROJET_CHEMIN_CLASSES.'annuaire.class.php' ; |
$annuaire = new annuaire($objetDB, array('table' => PROJET_ANNUAIRE, 'identifiant' => PROJET_CHAMPS_ID, |
'nom' => PROJET_CHAMPS_NOM, 'prenom' => PROJET_CHAMPS_PRENOM)) ; |
$annuaire->setId($tableau_document[$i]->_id_proprietaire) ; |
$nom_prenom = $annuaire->getInfo('nom').' '.$annuaire->getInfo('prenom') ; |
// On rempli le tableau à donner en paramètre à HTML_Table avec toutes ces infos, une par colonne |
$ligne_tableau = array($lien_nom, $taille, $nom_prenom, $tableau_document[$i]->getDateMiseAJour()) ; |
if ($droits <= PROJET_DROIT_CONTRIBUTEUR) array_push ($ligne_tableau, $tableau_document[$i]->getVisibilite()) ; |
// On ajoute au tableau, les action couper / modifier / supprimer |
if ($droits <= PROJET_DROIT_COORDINATEUR || $this->_auth->getAuthData(PROJET_CHAMPS_ID) == $tableau_document[$i]->_id_proprietaire) |
array_push ($ligne_tableau, $this->_actions ($tableau_document[$i])) ; |
if ($tableau_document[$i]->getVisibilite() != 'prive' || $droits < PROJET_DROIT_AUCUN) { |
$this->addRow ($ligne_tableau, array('class' => $class[$compteur]), 'TD', true) ; |
// enfin , s'il y a une description, on l'ajoute, mais sur une ligne entière (colspan) |
if ($tableau_document[$i]->getDescription() != "") { |
$this->addRow (array ($tableau_document[$i]->getDescription()), |
array ('colspan' => $this->getColCount(), 'class' => $class[$compteur])) ; |
$this->updateRowAttributes ($this->getRowCount()-1, array ('class' => $class[$compteur]), true) ; |
if ($this->_mode_affichage == 'standart') { |
$compteur = 0 ;$class[0] = 'ligne_impaire'; $class[1] = 'ligne_paire' ; |
for ($i = 0; $i < count ($tableau_document) ; $i++) { |
// Premiere condition : est-ce que le fichier a pour pere le repertoire courant, si oui on l'affiche |
if ($tableau_document[$i]->_id_pere == $this->_id_repertoire || $mode == 'ignore_repertoire') { |
// d'abord l'image |
$icone = '<img src="'.$tableau_document[$i]->getCheminIcone().'" />' ; |
// Si le document est un repertoire, on ajoute id_repertoire au lien. |
if ($tableau_document[$i]->isRepertoire()) { |
$this->_url->addQueryString ('id_repertoire', $tableau_document[$i]->getIdDocument()) ; |
$lien = $this->_url->getURL() ; |
} else { // Si c'est un fichier, on fait un lien direct |
$this->_url->addQueryString('id_document', $tableau_document[$i]->getIdDocument()); |
$this->_url->addQueryString('service', 'telechargement'); |
$lien = $this->_url->getURL() ; |
$this->_url->removeQueryString('service'); |
} |
} |
$compteur++; |
} |
if ($compteur == 2) $compteur = 0 ; |
// pour eviter des effets de bords, on enleve id_repertoire de l'url |
// dans le cas d'un repertoire, pour les fichiers on le laisse pour |
// qu'apres une operation, on reste dans le repertoire ou a eu lieu l'operation |
if ($tableau_document[$i]->isRepertoire()) $this->_url->removeQueryString('id_repertoire') ; |
// on insere le lien |
$lien_nom = '<a href="'.$lien.'">'.$icone.' '.$tableau_document[$i]->getNomLong()."</a>\n" ; |
$taille = $tableau_document[$i]->getTailleFormatee(); |
// Recuperation de l'auteur |
include_once PROJET_CHEMIN_CLASSES.'annuaire.class.php' ; |
$annuaire = new annuaire($objetDB, array('table' => PROJET_ANNUAIRE, 'identifiant' => PROJET_CHAMPS_ID, |
'nom' => PROJET_CHAMPS_NOM, 'prenom' => PROJET_CHAMPS_PRENOM)) ; |
$annuaire->setId($tableau_document[$i]->_id_proprietaire) ; |
$nom_prenom = $annuaire->getInfo('nom').' '.$annuaire->getInfo('prenom') ; |
// On rempli le tableau a donner en parametre a HTML_Table avec toutes ces infos, une par colonne |
$ligne_tableau = array($lien_nom, $taille, $nom_prenom, $tableau_document[$i]->getDateMiseAJour()) ; |
if ($droits <= PROJET_DROIT_CONTRIBUTEUR) array_push ($ligne_tableau, $tableau_document[$i]->getVisibilite()) ; |
// On ajoute au tableau, les action couper / modifier / supprimer |
if ($droits <= PROJET_DROIT_COORDINATEUR || $this->_auth->getAuthData(PROJET_CHAMPS_ID) == $tableau_document[$i]->_id_proprietaire) |
array_push ($ligne_tableau, $this->_actions ($tableau_document[$i])) ; |
if ($tableau_document[$i]->getVisibilite() != 'prive' || $droits < PROJET_DROIT_AUCUN) { |
$this->addRow ($ligne_tableau, array('class' => $class[$compteur]), 'TD', true) ; |
// enfin , s'il y a une description, on l'ajoute, mais sur une ligne entière (colspan) |
if ($tableau_document[$i]->getDescription() != "") { |
$this->addRow (array ($tableau_document[$i]->getDescription()), |
array ('colspan' => $this->getColCount(), 'class' => $class[$compteur])) ; |
$this->updateRowAttributes ($this->getRowCount()-1, array ('class' => $class[$compteur]), true) ; |
} |
} |
$compteur++; |
} |
if ($compteur == 2) $compteur = 0 ; |
} |
$this->_url->removeQueryString('id_document'); |
$this->updateColAttributes(0, array ('class' => 'col1')) ; |
} else { |
} |
$this->updateColAttributes(0, array ('class' => 'col1')) ; |
} // end of member function construitListe |
/** |
* |
* |
* @param Array actions Un tableau avec les valeurs d'actions comme clé. "couper", modifier", |
* @param Array actions Un tableau avec les valeurs d'actions comme cle. "couper", modifier", |
* "supprimer". |
* @return void |
* @access public |
217,8 → 231,21 |
function setAction( $actions ) |
{ |
$this->_actions = $actions ; |
} // end of member function setAction |
} |
/** |
* |
* |
* @param string le mode, valeur possible standart ou ajax |
* @return void |
* @access public |
*/ |
function setModeAffichage( $mode ) |
{ |
$this->_mode_affichage = $mode ; |
} |
/** |
* |
* |
229,35 → 256,59 |
function setCheminIcones( $chemin ) |
{ |
$this->_chemin_icone = $chemin ; |
} // end of member function setCheminIcones |
} |
/** |
* Surcharge de l'opération de la classe mère. Ajoute la navigation dans les |
* répertoires. |
* Surcharge de l'operation de la classe mere. Ajoute la navigation dans les |
* repertoires. |
* |
* @return string |
* @access public |
*/ |
function toHTML( ) |
function toHTML($id_projet = '', $droits) |
{ |
$chemin_navig = "" ; |
if ($this->_id_repertoire != "") { |
$this->_url->removeQueryString(PROJET_VARIABLE_ID_REPERTOIRE) ; |
$chemin_navig = "<p>" ; |
$chemin_navig .= "<a href=\"".$this->_url->getURL()."\">".PROJET_RACINE."</a>\n" ; |
$this->_url->addQueryString(PROJET_VARIABLE_ID_REPERTOIRE, $this->_id_repertoire) ; |
for ($i = 0; $i < count ($this->_chemin_navigation); $i+=2) { |
$chemin_navig .= "> " ; |
$nom = $this->_chemin_navigation[$i+1] ; |
$this->_url->addQueryString ('id_repertoire', $this->_chemin_navigation[$i]) ; |
$chemin_navig .= "<a href=\"".$this->_url->getURL()."\">".$nom."</a>\n" ; |
} |
$chemin_navig .= "</p>\n" ; |
if ($this->_mode_affichage == 'standart') { |
$chemin_navig = "" ; |
if ($this->_id_repertoire != "") { |
$this->_url->removeQueryString(PROJET_VARIABLE_ID_REPERTOIRE) ; |
$chemin_navig = "<p>" ; |
$chemin_navig .= "<a href=\"".$this->_url->getURL()."\">".PROJET_RACINE."</a>\n" ; |
$this->_url->addQueryString(PROJET_VARIABLE_ID_REPERTOIRE, $this->_id_repertoire) ; |
for ($i = 0; $i < count ($this->_chemin_navigation); $i++) { |
$chemin_navig .= "> " ; |
$doc = new document ($this->_chemin_navigation[$i], $GLOBALS['projet_db']); |
$nom = $doc->getNomLong() ; |
$this->_url->addQueryString ('id_repertoire', $this->_chemin_navigation[$i]) ; |
$chemin_navig .= "<a href=\"".$this->_url->getURL()."\">".$nom."</a>\n" ; |
} |
$chemin_navig .= "</p>\n" ; |
} |
$res = $chemin_navig.HTML_Liste::toHTML() ; |
if ($this->getRowCount() == 1 && $this->_id_repertoire == '') { |
return '<div>'.PROJET_PAS_DE_DOCUMENTS.'</div>'."\n"; |
} |
} else { |
GEN_stockerFichierScript('dojo', 'api/js/dojo/dojo.js', 'text/javascript'); |
GEN_stockerFichierScript('dojoScriptProjet', 'client/projet/js/arbreDocument.js'); |
$res = '' ; |
$RCPUrl = PROJET_CHEMIN_APPLI.'services/ecouteArbreFichier.php?id_projet='.$id_projet; |
$this->_url->addQueryString(PROJET_VARIABLE_SERVICE, 'ecouteArbreFichier'); |
$RCPUrl = $this->_url->getURL(); |
// Le noeud racine |
if ($droits <= PROJET_DROIT_CONTRIBUTEUR) { |
$tree = '<div dojoType="Tree" DNDMode="between" selector="treeSelector" DNDAcceptTypes="bandTree" widgetId="bandTree" controller="treeController" eventNames="moveTo:nodeRemoved">'; |
} else { |
$tree = '<div dojoType="Tree" selector="treeSelector" DNDAcceptTypes="bandTree" widgetId="bandTree" controller="treeController">'; |
} |
$res .= '<div dojoType="TreeLoadingController" RPCUrl="'.$RCPUrl.'" widgetId="treeController" DNDController="create"></div> |
<div dojoType="TreeSelector" widgetId="treeSelector"></div>'.$tree. |
'<div dojoType="TreeNode" title="Racine" widgetId="rootNode" objectId="root" isFolder="true"></div></div>'; |
} |
$res = $chemin_navig.HTML_Liste::toHTML() ; |
if ($this->getRowCount() == 1 && $this->_id_repertoire == '') { |
return '<div>'.PROJET_PAS_DE_DOCUMENTS.'</div>'."\n"; |
} |
return $res ; |
} // end of member function toHTML |
264,7 → 315,7 |
/** |
* |
* |
* @param Array tableau_navigation Un tableau contenant les identifiants et les noms des répertoires. 0 => ["id"], |
* @param Array tableau_navigation Un tableau contenant les identifiants et les noms des repertoires. 0 => ["id"], |
* ["nom"] etc. |
* @return void |
* @access public |
275,7 → 326,7 |
} // end of member function setCheminNavigation |
/** |
* Affiche la légende des actions du module "documents" |
* Affiche la legende des actions du module "documents" |
* |
* @return string |
* @access public |
287,11 → 338,11 |
$res .= "<p><img src=\"".$this->_chemin_icone."/modif.png\" title=\"modifier\" alt=\"modifier\"> ".PROJET_LEGENDE_MODIFIE."</p>\n" ; |
$res .= "<p><img src=\"".$this->_chemin_icone."/trash.gif\" title=\"supprimer\" alt=\"supprimer\"> ".PROJET_LEGENDE_SUPPR."</p>\n" ; |
return $res ; |
} // end of member function affLegende |
} |
/** |
* Renvoie le chemin HTML, depuis le répertoire courant jusqu'à la racine. |
* Renvoie le chemin HTML, depuis le repertoire courant jusqu'a la racine. |
* |
* @return string |
* @access private |
301,13 → 352,11 |
$path = "" ; |
return $path ; |
} // end of member function _getCheminHTML |
} |
/** |
* Renvoie une chaine contenant le code html des icones des actions possibles sur un |
* fichier, c'est à dire couper, modifier, supprimer. |
* fichier, c'est a dire couper, modifier, supprimer. |
* |
* @return string |
* @access private |
318,7 → 367,7 |
$this->_url->addQueryString (PROJET_VARIABLE_ACTION, $this->_actions["couper"]) ; |
$couper = ' '.PROJET_FICHIER_COUPER ; |
if (!$document->isRepertoire()) $couper = '<a href="'.$this->_url->getURL().'">'.$couper.'</a>' ; |
$couper = '<a href="'.$this->_url->getURL().'">'.$couper.'</a>' ; |
$this->_url->addQueryString (PROJET_VARIABLE_ACTION, $this->_actions["modifier"]) ; |
$modifier = '<a href="'.$this->_url->getURL().'">'.PROJET_FICHIER_MODIFIER.'</a> ' ; |
/trunk/classes/fichier.class.php |
---|
19,7 → 19,7 |
// | License along with this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: fichier.class.php,v 1.6 2007-04-19 09:25:50 alexandre_tb Exp $ |
// CVS : $Id: fichier.class.php,v 1.7 2007-06-25 12:15:06 alexandre_tb Exp $ |
/** |
* Application projet |
* |
31,7 → 31,7 |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.6 $ |
*@version $Revision: 1.7 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
163,9 → 163,7 |
*/ |
function deplace( $origine, $destination ) |
{ |
if (copy ($origine, $destination )) { |
if (unlink($origine)) return true ; |
} |
if (rename ($origine, $destination )) return true ; |
return false ; |
} // end of member function deplace |
/trunk/langues/pro_langue_fr.inc.php |
---|
10,7 → 10,7 |
* | Auteur : Alexandre Granier <alexandre@tela-botanica.org> | |
* +-----------------------------------------------------------------------+ |
* $Id: pro_langue_fr.inc.php,v 1.15 2007-03-22 16:02:40 alexandre_tb Exp $ |
* $Id: pro_langue_fr.inc.php,v 1.16 2007-06-25 12:15:07 alexandre_tb Exp $ |
*/ |
if (file_exists(PROJET_CHEMIN_APPLI.'langues/pro_langue_fr.local.php')) { |
136,6 → 136,13 |
define ('PROJET_INSCRIPTION', 'Inscription') ; |
define ('PROJET_DEMANDE_INSCRIPTION', 'Demande d\'inscription au projet'); |
define ('PROJET_EN_ATTENTE', 'en attente de validation'); |
define ('PROJET_LAIUS_INSCRIPTION_MODERE', 'Votre demande d\'inscription au projet "nom_du_projet" a été enregistrée et |
est proposée pour acceptation au coordonnateur du projet"<br /><br /> |
Un accusé réception vous sera envoyé à votre courriel d\'inscription |
confirmant l\'acception de votre inscription.<br /><br /> |
Vous pourrez alors accéder à toutes les fonctions du projet "nom_du_projet"'); |
// ========== Partie concernant l'upload de fichier ================================= |
define ("PROJET_DOCUMENT_DU_PROJET", "Documents du projet") ; |
165,7 → 172,8 |
define ('PROJET_CHANGER_REPERTOIRE', 'CHANGER UN FICHIER DE REPERTOIRE') ; |
define ('PROJET_FICHIER_A_DEPLACER', 'Fichier à déplacer : ') ; |
define ('PROJET_DOCUMENT', 'Documents') ; |
define ('PROJET_AFFICHAGE_ARBORESCENT', 'Affichage arborescent'); |
define ('PROJET_AFFICHAGE_CLASSIQUE', 'Affichage classique'); |
// Création de répertoire |
define ("PROJET_REP", "Répertoire du projet") ; |
define ("PROJET_REP_CREER", "Création d'un nouveau répertoire") ; |
/trunk/actions/documents.php |
---|
19,7 → 19,7 |
// | License along with this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: documents.php,v 1.7 2007-04-19 15:34:35 neiluj Exp $ |
// CVS : $Id: documents.php,v 1.8 2007-06-25 12:15:06 alexandre_tb Exp $ |
/** |
* Application projet |
* |
31,7 → 31,7 |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2005 |
*@version $Revision: 1.7 $ |
*@version $Revision: 1.8 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
/trunk/actions/participants.php |
---|
19,7 → 19,7 |
// | License along with this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: participants.php,v 1.6 2007-04-19 15:34:35 neiluj Exp $ |
// CVS : $Id: participants.php,v 1.7 2007-06-25 12:15:06 alexandre_tb Exp $ |
/** |
* Application projet |
* |
31,7 → 31,7 |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2005 |
*@version $Revision: 1.6 $ |
*@version $Revision: 1.7 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
53,7 → 53,7 |
$titre = '<h2>'.PROJET_LISTE_PARTICIPANT.'</h2>'."\n" ; |
$participants = new participe($this->_db) ; |
// On teste ici s'il y a une mise à jour de statut |
// On teste ici s'il y a une mise a jour de statut |
if (isset($_REQUEST['statut'])) { |
$participants->setStatut($_REQUEST['statut'], $_GET['id_utilisateur'], $this->_id_projet) ; |
$projet->getListesAssociees() ; |
67,7 → 67,7 |
} |
} |
// Ce qui suit doit être amàliorà pour sortir la requête sur l'annuaire |
// Ce qui suit doit etre ameliore pour sortir la requete sur l'annuaire |
// On teste s'il y a un ajout d'utilisateur voir HTML_listeParticipants |
if (isset($_POST['mail_utilisateur'])) { |
$requete = 'select '.PROJET_CHAMPS_ID.' from '.PROJET_ANNUAIRE.' where '.PROJET_CHAMPS_MAIL.'="'.$_POST['mail_utilisateur'].'"'; |
86,8 → 86,9 |
if ($this->_auth->getAuth()) { |
$statut = participe::getStatutSurProjetCourant($this->_auth->getAuthData(PROJET_CHAMPS_ID), $this->_id_projet, $this->_db) ; |
if ($statut == 1) $droits = PROJET_DROIT_COORDINATEUR ; |
if ($statut == 2) $droits = PROJET_DROIT_CONTRIBUTEUR ; |
if ($statut == 1) $droits = PROJET_DROIT_COORDINATEUR ; |
if ($statut == 3) $droits = PROJET_DROIT_EN_ATTENTE; |
if ($statut == 4) $droits = PROJET_DROIT_AUCUN ; |
if (participe::isAdministrateur($this->_auth->getAuthData(PROJET_CHAMPS_ID), $this->_db)) $droits = PROJET_DROIT_ADMINISTRATEUR ; |
$HTML_listeParticipants = new HTML_listeParticipants(true) ; |
96,17 → 97,18 |
$this->_url->addQueryString (PROJET_VARIABLE_ACTION, PROJET_ACTION_VOIR_PARTICIPANT) ; |
$HTML_listeParticipants->setURL($this->_url) ; |
// Construction de l'entete |
$entete = array (PROJET_NOM, PROJET_PRENOM) ; |
$entete = array (PROJET_NOM, PROJET_PRENOM, PROJET_MAIL, PROJET_DATE_INSCRIPTION, PROJET_STATUT) ; |
if ($projet->avoirListe()) array_push ($entete, PROJET_LISTE_DE_DISCUSSION); |
$info_utilisateur = $participants->getInscrits($this->_id_projet, $droits); |
array_push ($entete, PROJET_MAIL) ; |
$info_utilisateur = $participants->getInscrits($this->_id_projet, $droits) ; |
array_push ($entete, PROJET_DATE_INSCRIPTION, PROJET_STATUT) ; |
$HTML_listeParticipants->construitEntete($entete) ; |
include_once PROJET_CHEMIN_CLASSES.'statut.class.php' ; |
if ($projet->avoirListe()) { |
$ezmlm = new ezmlmAccessObject('liste_abonnes', $projet->_liste_associes[0]->getDomaine(), |
$projet->_listes_associes[0]->getNom()); |
} |
$HTML_listeParticipants->construitListe($info_utilisateur, statut::getTousLesStatuts(PROJET_STATUT_SAUF_ADM, $this->_db), $projet) ; |
$HTML_listeParticipants->construitListe($info_utilisateur, statut::getTousLesStatuts(PROJET_STATUT_SAUF_ADM, $this->_db)) ; |
$res = $HTML_listeParticipants->toHTML() ; |
if ($droits <= PROJET_DROIT_COORDINATEUR || participe::isAdministrateur($this->_auth->getAuthData(PROJET_CHAMPS_ID), $this->_db)) { |
/trunk/actions/wikini.php |
---|
19,7 → 19,7 |
// | License along with this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: wikini.php,v 1.16 2007-04-19 15:34:35 neiluj Exp $ |
// CVS : $Id: wikini.php,v 1.17 2007-06-25 12:15:06 alexandre_tb Exp $ |
/** |
* Application projet |
* |
31,7 → 31,7 |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2005 |
*@version $Revision: 1.16 $ |
*@version $Revision: 1.17 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
50,7 → 50,7 |
$projet = new projet ($this->_db, $this->_id_projet) ; |
$wiki_res = '' ; |
$wiki_res.= '<h1>'.PROJET_PROJET.' : '.$projet->getTitre()."</h1>" ; |
$wiki_res.= '<h2>'.PROJET_PROJET.' : '.$projet->getTitre()."</h2>" ; |
// Les wikinis associés au projet |
if ($wiki=$projet->getWikini()) { |
if ($projet->isModere()) { |
/trunk/actions/forums.php |
---|
19,7 → 19,7 |
// | License along with this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: forums.php,v 1.11 2007-04-19 15:34:35 neiluj Exp $ |
// CVS : $Id: forums.php,v 1.12 2007-06-25 12:15:06 alexandre_tb Exp $ |
/** |
* Application projet |
* |
31,7 → 31,7 |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2005 |
*@version $Revision: 1.11 $ |
*@version $Revision: 1.12 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
/trunk/documentation/projet_v0.24.sql |
---|
173,7 → 173,5 |
# |
INSERT INTO `projet_template` VALUES (1, 'fr-FR', 'L\'utilisateur {nom} {prenom} souhaite être inscrit au projet {nom_projet} dont vous êtes modérateur.\r\nCliquez sur le lien suivant pour modérer son inscription.\r\n{lien}\r\n'); |
# Mise a jour performance |
ALTER TABLE `projet` ADD `p_avoir_document` TINYINT UNSIGNED DEFAULT '0' NOT NULL ; |
/trunk/documentation/projet_v0.25.sql |
---|
New file |
0,0 → 1,2 |
# Mise a jour performance |
ALTER TABLE `projet` ADD `p_avoir_document` TINYINT UNSIGNED DEFAULT '0' NOT NULL ; |
/trunk/presentation/liste.php |
---|
19,7 → 19,7 |
// | License along with this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: liste.php,v 1.7 2007-06-01 13:56:13 alexandre_tb Exp $ |
// CVS : $Id: liste.php,v 1.8 2007-06-25 12:15:07 alexandre_tb Exp $ |
/** |
* Application projet |
* |
31,7 → 31,7 |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.7 $ |
*@version $Revision: 1.8 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
51,7 → 51,7 |
// On inclue un fichier local |
if (file_exists(PROJET_CHEMIN_APPLI.'langues/pro_langue_'.$GLOBALS['lang'].'.local.inc.php')) |
include_once PROJET_CHEMIN_APPLI.'langues/pro_langue_'.$GLOBALS['lang'].'.local.inc.php' ; |
// On vérifie si l'utilisateur participe à des projets |
// On verifie si l'utilisateur participe a des projets |
//echo PROJET_CHEMIN_APPLI.'langues/pro_langue_'.$GLOBALS['lang'].'.local.inc.php'; |
// Entete de la liste, qu'on recupere dans un template |
69,7 → 69,7 |
if ($auth){ |
include_once PROJET_CHEMIN_CLASSES.'inscription_liste.class.php' ; |
$utilisateur_liste = new inscription_liste($this->_db) ; |
// On teste ici s'il y a une mise à jour de statut |
// On teste ici s'il y a une mise a jour de statut |
if (isset($_POST['statut'])) { |
// $_POST['statut'] et $_GET['identifiant_projet'] proviennent du formulaire voir HTML_listeProjet |
include_once PROJET_CHEMIN_CLASSES.'annuaire.class.php' ; |
144,8 → 144,8 |
$res .= '<p>'.PROJET_TEXTE_NON_IDENTIFIE.'</p>'."\n" ; |
} |
// Maintenant la liste des projets où l'utilisateur ne participe pas. |
// Et si pas logué tous les projets |
// Maintenant la liste des projets ou l'utilisateur ne participe pas. |
// Et si pas loggue tous les projets |
if ($auth) { |
$projetNonParticipantListe = $participant -> getProjetsNonParticipant($id_u) ; |
// Si certain projet sont à exclure, on les exclu |
227,6 → 227,9 |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: not supported by cvs2svn $ |
* Revision 1.7 2007-06-01 13:56:13 alexandre_tb |
* ajout d un include manquant |
* |
* Revision 1.6 2007/04/19 15:34:35 neiluj |
* préparration release (livraison) "Narmer" - v0.25 |
* |
/trunk/js/telechargement.js |
---|
1,3 → 1,36 |
/*vim: set expandtab tabstop=4 shiftwidth=4: */ |
// +------------------------------------------------------------------------------------------------------+ |
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) | |
// +------------------------------------------------------------------------------------------------------+ |
// | This library is free software; you can redistribute it and/or | |
// | modify it under the terms of the GNU General Public | |
// | License as published by the Free Software Foundation; either | |
// | version 2.1 of the License, or (at your option) any later version. | |
// | | |
// | This library is distributed in the hope that it will be useful, | |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
// | General Public License for more details. | |
// | | |
// | You should have received a copy of the GNU General Public | |
// | License along with this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: telechargement.js,v 1.2 2007-06-25 12:15:07 alexandre_tb Exp $ |
/** |
* Application projet |
* |
* La service de telechargement |
* |
*@package projet |
//Auteur original : |
*@author Alexandre Granier <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2007 |
*@version $Revision: 1.2 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
var dojoConfig = { |
isDebug: true |
}; |
20,8 → 53,8 |
// Si non on dirige vers le document |
if ( !isFolder) { |
var link = treeNode['link']; |
document.location.href= 'client/projet/fichiers/'+link; |
var link = treeNode['link']; |
document.location.href =link; |
} else { |
var repertoire = dojo.widget.manager.getWidgetById('treeController'); |
repertoire.expand(treeNode); |
34,10 → 67,10 |
// on connecte le select event a la fonction treeSelectFired() --> |
dojo.event.connect(treeSelector,'select','treeSelectFired'); |
var rootNode = dojo.widget.manager.getWidgetById('rootNode'); |
// On ouvre le noeud racine |
var rootNode = dojo.widget.manager.getWidgetById('rootNode'); |
rootNode.expand(); |
} |
dojo.addOnLoad(init); |
dojo.addOnLoad(init); |
/trunk/js/arbreDocument.js |
---|
10,7 → 10,6 |
dojo.require("dojo.event.*"); |
dojo.require("dojo.io.*"); |
function treeSelectFired() { |
// une reference vers treeSelector et vers le noeud selectionne |
23,7 → 22,10 |
// Si non on dirige vers le document |
if ( !isFolder) { |
var link = treeNode['link']; |
document.location.href= 'client/projet/fichiers/'+link; |
document.location.href= link; |
} else { |
var repertoire = dojo.widget.manager.getWidgetById('treeController'); |
repertoire.expand(treeNode); |
} |
} |
31,14 → 33,21 |
// une reference vers treeSelector |
var treeSelector = dojo.widget.manager.getWidgetById('treeSelector'); |
// on connecte le select event a la fonction treeSelectFired() --> |
// on connecte le select event a la fonction treeSelectFired() |
dojo.event.connect(treeSelector,'select','treeSelectFired'); |
//ajout d'un listener à la suppression d'un noeud |
var rootNode = dojo.widget.manager.getWidgetById('rootNode'); |
var loadingController = dojo.widget.manager.getWidgetById('treeController'); |
// L appel ci-dessous permet de charger les donnees du noeud racine |
loadingController.loadRemote(rootNode); |
// On ouvre le noeud racine |
rootNode.expand(); |
//ajout d'un listener a la suppression d'un noeud |
dojo.event.topic.subscribe("nodeRemoved", ioDeplaceFichier) ; |
} |
// envoie une requete asynchrone pour deplacer un fichier |
function ioDeplaceFichier (message) { |
52,10 → 61,5 |
}; |
//var treeLoadingController = dojo.widget.manager.getWidgetById('treeController'); |
dojo.io.bind (arguments) ; |
/* |
alert (message.child.title +" enlevé de "+ message.oldParent.title + |
" dans l'arbre " + message.oldTree.widgetId + " " + arguments.url + |
"\n " + treeLoadingController.getRPCUrl('')); |
*/ |
} |
dojo.addOnLoad(init); |
/trunk/projet_derniers_telechargements.php |
---|
10,10 → 10,10 |
* | Auteur : Alexandre Granier <alexandre@tela-botanica.org> | |
* +-----------------------------------------------------------------------+ |
* $Id: projet_derniers_telechargements.php,v 1.4 2007-04-19 09:17:35 alexandre_tb Exp $ |
* $Id: projet_derniers_telechargements.php,v 1.5 2007-06-25 12:15:06 alexandre_tb Exp $ |
*/ |
// Cette application affiche les derniers documents uploadé dans le module projet |
// Cette application affiche les derniers documents uploades dans le module projet |
// ainsi que tous les documents du module |
// =========================================================== |
21,19 → 21,18 |
// =========================================================== |
// Le nombre à afficher |
// Le nombre a afficher |
define ("PROJET_TELECHARGEMENT_NOMBRE", 8) ; |
//==================== Les labels ======================================= |
define ("PROJET_TELECHARGEMENT_TITRE", "Page de téléchargements rapides") ; |
define ("PROJET_TELECHARGEMENT_TITRE", "Page de téléchargements rapides") ; |
define ("PROJET_TELECHARGEMENT_DERNIERS", "Derniers documents mis en ligne") ; |
define ("PROJET_TELECHARGEMENT_TOUS", "Tous les documents, par projet") ; |
//=============bibliothèques PEAR =================================== |
//=============bibliotheques PEAR =================================== |
include_once 'HTML/Table.php' ; |
include_once 'HTML/TreeMenu.php' ; |
// ========== Bibliothèque Projet ==================================== |
// ========== Bibliotheque Projet ==================================== |
include_once 'configuration/projet.config.inc.php' ; |
include_once PROJET_CHEMIN_CLASSES.'projetControleur.class.php' ; |
include_once PROJET_CHEMIN_CLASSES.'document.class.php' ; |
42,9 → 41,16 |
function afficherContenuCorps() { |
global $id_projet, $repcourant, $baseURL, $projet ; |
global $G_ftpHost,$G_ftpUser,$G_ftpPwd,$G_ftpLocal, $PHP_SELF; |
// à remplacer par un div pour genesia |
if (isset($_GET['service'])) { |
if ($_GET['service'] == 'ecouteArbreFichier') { |
include_once PROJET_CHEMIN_APPLI.'/services/ecouteArbreFichier.php'; |
} |
if ($_GET['service'] == 'telechargement') { |
include_once PROJET_CHEMIN_APPLI.'/services/telechargement.php'; |
} |
} |
// a remplacer par un div pour genesia |
$res = "<h1>".PROJET_TELECHARGEMENT_TITRE."</h1>\n" ; |
$res .= "<h2>".PROJET_TELECHARGEMENT_DERNIERS."</h2>\n" ; |
60,13 → 66,11 |
$vue_liste_document->construitEntete($entete_liste) ; |
$vue_liste_document->construitListe ($liste_documents, $droits, 'ignore_repertoire', $GLOBALS['projet_db']) ; |
$res .= $vue_liste_document->toHTML() ; |
$res .= $vue_liste_document->toHTML('', PROJET_DROIT_AUCUN) ; |
$res .= "<h2>".PROJET_TELECHARGEMENT_TOUS."</h2>\n" ; |
// Création de l'objet TreeMenu |
//GEN_stockerFichierScript(1, "api/TreeMenu/TreeMenu.js") ; |
// Les noms des fichiers graphiques |
$icon = 'folder.gif'; |
$expandedIcon = 'folder-expanded.gif'; |
76,26 → 80,23 |
$requete = "SELECT p_titre, p_id FROM projet ORDER BY p_titre" ; |
$resultat = $GLOBALS['projet_db']->query ($requete) or die ("Echec <br />".mysql_error()."<br />$requete") ; |
// $menu = new HTML_TreeMenu() ; |
// $node = new HTML_TreeNode(array('text' => "Les projets de Tela Botanica", 'link' => "", 'icon' => $icon, 'expandedIcon' => $expandedIcon)); |
$noeudProjet = '' ; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) { |
$titre = $ligne->p_titre ; |
// $node_1[$i] = &$node->addItem (new HTML_TreeNode(array('text' => $titre, 'link' => "", 'icon' => $icon, 'expandedIcon' => $expandedIcon))); |
// projet_fichiers (&$node_1[$i], $ligne->p_id) ; |
$i++ ; |
$noeudProjet .= '<div dojoType="TreeNode" title="'.$ligne->p_titre.'" widgetId="projet_'. |
$ligne->p_id.'" objectId="projet_'.$ligne->p_id.'" isFolder="true"></div>'."\n"; |
} |
// $menu->addItem($node); |
// $treeMenu = &new HTML_TreeMenu_DHTML($menu, array('images' => 'api/TreeMenu/images', 'defaultClass' => 'text')); |
// $res .= "<p>".$treeMenu->toHTML()."</p>\n" ; |
GEN_stockerFichierScript('dojo', 'api/js/dojo/dojo.js', 'text/javascript'); |
GEN_stockerFichierScript('dojoScriptProjet', PROJET_CHEMIN_APPLI.'js/telechargement.js'); |
//$res .= '<p>' ; |
$RPCUrl = PROJET_CHEMIN_APPLI.'services/ecouteArbreFichier.php'; |
$res .= '<div dojoType="TreeLoadingController" RPCUrl="'.$RPCUrl.'" widgetId="treeController" DNDController="create"></div> |
$RCPUrl = PROJET_CHEMIN_APPLI.'services/ecouteArbreFichier.php?id_projet='.$id_projet; |
$GLOBALS['url']->addQueryString(PROJET_VARIABLE_SERVICE, 'ecouteArbreFichier'); |
$RCPUrl = $GLOBALS['url']->getURL(); |
$res .= '<div dojoType="TreeLoadingController" RPCUrl="'.$RCPUrl.'" widgetId="treeController" DNDController="create"></div> |
<div dojoType="TreeSelector" widgetId="treeSelector"></div> |
<div dojoType="Tree" DNDMode="between" selector="treeSelector" widgetId="bandTree" controller="treeController"> |
<div dojoType="TreeNode" title="Racine" widgetId="rootNode" objectId="root" isFolder="true">'."\n". |
106,10 → 107,10 |
return $res ; |
} |
/** fonction projet_fichiers() - Remplie un noeud avec les fichiers et répertoires |
/** fonction projet_fichiers() - Remplie un noeud avec les fichiers et repertoires |
* |
* Le noeud est passé en référence. Ainsi, cette fonction ne retourne rien mais modifie le tableau des |
* noeuds passé en référence. |
* Le noeud est passe en reference. Ainsi, cette fonction ne retourne rien mais modifie le tableau des |
* noeuds passe en reference. |
* |
* return void |
*/ |
116,10 → 117,10 |
function projet_fichiers ($noeud, $id_rep, $pere = 0) |
{ |
//Récupération de l'identifiant du répertoire courant |
//Recuperation de l'identifiant du repertoire courant |
//La fonction est appelé récursivement quand $pere ne vaut pas null |
//$id_rep prend donc la valeur de $pere transmise par l'appel précédent de la fonction. |
//La fonction est appele recursivement quand $pere ne vaut pas null |
//$id_rep prend donc la valeur de $pere transmise par l'appel precedent de la fonction. |
// Les noms des fichiers graphiques |
$icon = 'folder.gif'; |
166,7 → 167,7 |
$resultat_fichiers = $GLOBALS['projet_db']->query($requete_fichiers) ; |
if (DB::isError ($resultat_fichiers)) { |
die ('Echec de la requete : '.$requete.'<br />'.$resultat_fichiers->getMessage()) ; |
die ('Echec de la requete : '.$requete_fichiers.'<br />'.$resultat_fichiers->getMessage()) ; |
} |
//Stockage des informations sur les fichiers du répertoires courant pour affichage dans un arbre |
187,6 → 188,9 |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: not supported by cvs2svn $ |
* Revision 1.4 2007/04/19 09:17:35 alexandre_tb |
* utilisation de dojo pour afficher l arbre des derniers documents |
* |
* Revision 1.3 2005/10/06 08:23:48 alexandre_tb |
* Ajout de commentaires |
* |
/trunk/services/telechargement.php |
---|
19,7 → 19,7 |
// | License along with this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: telechargement.php,v 1.1 2007-04-19 09:37:50 alexandre_tb Exp $ |
// CVS : $Id: telechargement.php,v 1.2 2007-06-25 12:15:06 alexandre_tb Exp $ |
/** |
* Application projet |
* |
31,7 → 31,7 |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.1 $ |
*@version $Revision: 1.2 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
40,6 → 40,61 |
// +------------------------------------------------------------------------------------------------------+ |
if (is_object ($this) && $this->_id_document == '') { |
return 'aucun fichier demandé'; |
} else { |
if (!is_object($this) && isset ($_GET['id_document'])) { |
$id_document = $_GET['id_document']; |
} |
} |
if (is_object ($this)) { |
$id_document = $this->_id_document; |
} |
include_once PROJET_CHEMIN_CLASSES.'projet.class.php'; |
include_once PROJET_CHEMIN_CLASSES.'document.class.php'; |
$document = new document ($id_document, $GLOBALS['projet_db'], PROJET_CHEMIN_FICHIER, PROJET_CHEMIN_ICONES) ; |
$projet = new projet ($document->_id_projet); |
// Soit le document est public et on le renvoie, soit il est prive |
// et on teste les droits |
if ($document->getVisibilite() == 'prive') { |
// On teste le login |
if ($GLOBALS['projet_auth']->getAuth()) { |
include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ; |
$id_utilisateur = $GLOBALS['projet_auth']->getAuthData(PROJET_CHAMPS_ID); |
$participant = new participe($GLOBALS['projet_db']) ; |
if ($participant->isAdministrateur($id_utilisateur) || $participant->isCoordinateur($id_utilisateur) |
|| $participant->isContributeur($id_utilisateur)) { |
$ok = true ; |
} else { |
$ok = false ; |
return 'Vous devez participer à ce projet pour accéder à ce document'; |
} |
} |
} else { |
$ok = true ; |
} |
// Recherche de l extension |
$nom_de_fichier = pathinfo ($projet->getNomRepertoire().'/'.$document->getChemin()) ; |
$extension = $nom_de_fichier['extension']; |
header('Expires: Wen, 01 Dec 1999 01:00:00 GMT');// Date du passé |
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');// toujours modifié |
header('Cache-Control: Public, must-revalidate');// HTTP/1.1 |
header('Pragma: hack'); |
header ('Content-Type: '.$document->getTypeMime()) ; |
header('Content-Length: '.(string) $document->getTaille()); |
header ('Content-Disposition: attachment; filename="'.$document->getNomLong().'.'.$extension.'"'); |
header("Content-Transfer-Encoding: binary\n"); |
readfile (PROJET_CHEMIN_FICHIER.$document->getChemin()); |
exit(); |
?> |
/trunk/services/ecouteArbreFichier.php |
---|
19,7 → 19,7 |
// | License along with this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: ecouteArbreFichier.php,v 1.1 2007-04-19 09:37:50 alexandre_tb Exp $ |
// CVS : $Id: ecouteArbreFichier.php,v 1.2 2007-06-25 12:15:06 alexandre_tb Exp $ |
/** |
* Application projet |
* |
31,7 → 31,7 |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2005 |
*@version $Revision: 1.1 $ |
*@version $Revision: 1.2 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
43,39 → 43,8 |
// sinon l arbre dojo ne fonctionnera pas (ligne 117 $returnArray = array) |
set_include_path(get_include_path() . PATH_SEPARATOR . '/home/alex/www/api/pear'); |
include_once ('../../../papyrus/configuration/pap_config.inc.php'); |
include_once ('../../../api/pear/DB.php'); |
include_once ('../../../api/json/JSON.php'); |
include_once (GEN_CHEMIN_API.'json/JSON.php'); |
define ('PROJET_CHEMIN_APPLI','../'); |
define ('PROJET_CHEMIN_ICONES', "client/projet/icones/") ; |
define ('PROJET_CHEMIN_CLASSES', PROJET_CHEMIN_APPLI.'classes/');//le chemin vers les fichiers propre à GSITE |
define ('PROJET_CHEMIN_FONCTIONS', PROJET_CHEMIN_APPLI.'fonctions/') ; |
define ('PROJET_CHEMIN_LIBRAIRIE','bibliotheque/');//le chemin de la librairie de fichier php |
define ('PROJET_CHEMIN_FICHIER', PROJET_CHEMIN_APPLI.'fichiers/') ; // Chemin ou seront créer les dossiers |
if (file_exists(PROJET_CHEMIN_CLASSES.'document.class.php')) { |
include_once (PROJET_CHEMIN_CLASSES.'document.class.php') ; |
} else { |
echo 'impossible document_class'; |
} |
if (file_exists(PROJET_CHEMIN_APPLI.'langues/pro_langue_fr.inc.php')) { |
include_once PROJET_CHEMIN_APPLI.'langues/pro_langue_fr.inc.php' ; |
} else { |
echo 'impossible fichier de langue'; |
} |
$GLOBALS['db'] = & DB::connect(PAP_DSN); |
if (PEAR::isError($db)) { |
echo ($db->getMessage()); |
} |
// we're returning json |
//header('Content-type: text/json'); |
$action = $_REQUEST["action"]; |
$data = $_REQUEST["data"]; |
$cache = $_REQUEST["dojo.preventCache"]; |
82,7 → 51,7 |
$data = str_replace("\\\"","\"",$data); |
// instanciate a json-php instance |
// instanciation d un json-php |
$json = new services_JSON(); |
92,10 → 61,11 |
$node = $jsonData->node; |
} |
function getChildren($node) { |
// setup the database connction |
// get the parent node |
if ( $action == "getChildren") { |
$jsonData = $json->decode($data); |
// get the node object |
$node = $jsonData->node; |
// on recupere le noeud parent |
$parent = $node->objectId; |
if (isset($_REQUEST['id_projet'])) $id_projet = $_REQUEST['id_projet']; |
if (preg_match ('/projet_([0-9]+)/', $node->objectId, $match)) $id_projet = $match[1]; |
107,50 → 77,94 |
} |
$sql = 'select * from projet_documents where pd_pere='.$id_parent ; |
if (isset($id_projet)) $sql .= ' and pd_ce_projet='.$id_projet; |
// assemble the resulting rows into an array of node objects. |
// Each node object is represented in php by an associative array |
// the array of associative arrays will then be encoded in json and |
// returned back to the browser |
$resultat = $GLOBALS['db']->query($sql); |
$sql .= ' order by pd_nom'; |
$resultat = $GLOBALS['projet_db']->query($sql); |
if (DB::isError($resultat)) { |
die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ; |
} |
$returnArray = array(); |
$nodeArray = array(); |
$i = 0; |
include_once PROJET_CHEMIN_CLASSES.'document.class.php'; |
if ($GLOBALS['projet_auth']->getAuth() && is_object($this)) { |
include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ; |
$participant = new participe($GLOBALS['projet_db']) ; |
$id_u = $GLOBALS['projet_auth']->getAuthData(PROJET_CHAMPS_ID) ; |
$isCoord = $participant->isCoordinateur($id_u, $this->_id_projet, $GLOBALS['projet_db']) ; |
if ($isCoord) $droits = PROJET_DROIT_COORDINATEUR ; |
$isAdm = participe::isAdministrateur($GLOBALS['projet_auth']->getAuthData(PROJET_CHAMPS_ID), $GLOBALS['projet_db']) ; |
if ($isAdm) $droits = PROJET_DROIT_ADMINISTRATEUR ; |
if ($isAdm) $isCoord = true ; |
$isParticipant = $participant->isContributeur($id_u, $this->_id_projet, $GLOBALS['projet_db']); |
if ($isParticipant) $droits = PROJET_DROIT_CONTRIBUTEUR; |
$statut = participe::getStatutSurProjetCourant ($this->_auth->getAuthData(PROJET_CHAMPS_ID), $this->_id_projet, $this->_db) ; |
// si participant, on ajoute le champs visibilite |
} else { |
$droits = PROJET_DROIT_AUCUN; |
} |
// Recuperation de l'auteur |
include_once PROJET_CHEMIN_CLASSES.'annuaire.class.php' ; |
while ( $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$document = new document($ligne['pd_id'], $GLOBALS['db'], PROJET_CHEMIN_FICHIER, PROJET_CHEMIN_ICONES); |
$document = new document($ligne['pd_id'], $GLOBALS['projet_db'], PROJET_CHEMIN_FICHIER, PROJET_CHEMIN_ICONES); |
$GLOBALS['url']->addQueryString('id_projet', $id_projet); |
$GLOBALS['url']->addQueryString('id_document', $document->getIdDocument()); |
$GLOBALS['url']->addQueryString(PROJET_VARIABLE_SERVICE, 'telechargement'); |
// json attend de l utf8, en lui fournissant des donnees au format htmlentities, |
// ca passe |
$annuaire = new annuaire($objetDB, array('table' => PROJET_ANNUAIRE, 'identifiant' => PROJET_CHAMPS_ID, |
'nom' => PROJET_CHAMPS_NOM, 'prenom' => PROJET_CHAMPS_PRENOM)) ; |
$annuaire->setId($document->_id_proprietaire) ; |
$nom_prenom = $annuaire->getInfo('nom').' '.$annuaire->getInfo('prenom') ; |
// On regarde si l utilisateur a les droits pour deplacer |
if ($droits <= PROJET_DROIT_COORDINATEUR || |
$GLOBALS['projet_auth']->getAuthData(PROJET_CHAMPS_ID) == $document->_id_proprietaire) { |
$actions = 'MOVE,REMOVE,EDIT' ; |
if ($document->isRepertoire()) $actions .= ',ADDCHILD'; |
} |
else $actions = ''; |
$node = array( |
'title'=> htmlentities($document->getNomLong()), |
'title'=> iconv('ISO-8859-1', 'UTF-8', $document->getNomLong()), |
'widgetId' => 'document_'.$document->getIdDocument(), |
'objectId'=> $document->getIdDocument(), |
'isFolder'=> $document->isRepertoire(), |
'link' => $document->getChemin(), |
'link' => str_replace ('&', '&', $GLOBALS['url']->getURL()), |
'childIconSrc' => $document->getCheminIcone(), |
'expandIcon' => PROJET_CHEMIN_ICONES.'folder-expanded.gif', |
'afterLabel' => ' '.$document->getTailleFormatee() |
'afterLabel' => ' '.$document->getTailleFormatee().' '.iconv('ISO-8859-1', 'UTF-8',$nom_prenom), |
); |
$returnArray[$i] = $node; |
// On regarde si l utilisateur a les droits pour deplacer |
/* |
if ($droits <= PROJET_DROIT_COORDINATEUR || |
$GLOBALS['projet_auth']->getAuthData(PROJET_CHAMPS_ID) == $document->_id_proprietaire) { |
$actions = 'MOVE,REMOVE,EDIT' ; |
if ($document->isRepertoire()) $actions .= ',ADDCHILD'; |
$node['actions'] = $actions; |
} |
else { |
$node['actions'] = ''; |
}*/ |
$nodeArray[$i] = $node; |
$i++; |
unset ($document); |
} |
return $returnArray; |
if (!is_null($nodeArray)) { |
header ('Content-type: json'); |
print $json->encode($nodeArray); |
exit(); |
} |
} |
if ( $action == "getChildren") { |
$jsonData = $json->decode($data); |
// get the node object |
$node = $jsonData->node; |
$nodeArray = getChildren($node); |
if (!is_null($nodeArray)) print $json->encode($nodeArray); |
} |
?> |