public function _createContent(&$toReturn)
 {
     $ppo = new CopixPPO();
     // Récupération des paramètres
     $ppo->classeurId = $this->getParam('classeurId');
     $ppo->dossierId = $this->getParam('dossierId', null);
     $ppo->dossierCourant = $this->getParam('dossierCourant');
     // Paramètres pour la vue popup
     $ppo->field = $this->getParam('field');
     $ppo->format = $this->getParam('format');
     $ppo->withPersonal = $this->getParam('withPersonal', true);
     $ppo->moduleType = $this->getParam('moduleType', null);
     $ppo->moduleId = $this->getParam('moduleId', null);
     $ppo->estAdmin = Kernel::getLevel('MOD_CLASSEUR', $ppo->classeurId) >= PROFILE_CCV_PUBLISH;
     $ppo->withLockers = $ppo->estAdmin || is_null($ppo->dossierId);
     // Récupération des dossiers
     $dossierDAO = _ioDAO('classeur|classeurdossier');
     $ppo->dossiers = $dossierDAO->getEnfantsDirects($ppo->classeurId, $ppo->dossierId, $ppo->withLockers);
     _classInclude('classeurservice');
     $ppo->dossiersOuverts = ClasseurService::getFoldersTreeState();
     if (!is_array($ppo->dossiersOuverts)) {
         $ppo->dossiersOuverts = array();
     }
     $toReturn = $this->_usePPO($ppo, '_arborescence_dossiers.tpl');
 }
 public function _createContent(&$toReturn)
 {
     $ppo = new CopixPPO();
     _classInclude('classeur|ClasseurService');
     // Récupération des paramètres
     $ppo->classeurId = $this->getParam('classeurId');
     $ppo->dossierId = $this->getParam('dossierId');
     // Gestion des droits
     $ppo->niveauUtilisateur = Kernel::getLevel('MOD_CLASSEUR', $ppo->classeurId);
     $ppo->typeUtilisateur = _currentUser()->getExtra('type');
     $ppo->idUtilisateur = _currentUser()->getExtra('id');
     // Récupération des paramètres d'affichages
     $ppo->tri = ClasseurService::getContentSort();
     // Récupération des dossiers & des fichiers / favoris
     $dossierDAO = _ioDAO('classeur|classeurdossier');
     if ($ppo->dossier = $dossierDAO->get($ppo->dossierId)) {
         if ($ppo->dossier->parent_id != 0) {
             $ppo->dossierParent = $dossierDAO->get($ppo->dossier->parent_id);
         } else {
             $classeurDAO = _ioDAO('classeur|classeur');
             $ppo->classeurParent = $classeurDAO->get($ppo->classeurId);
             $ppo->classeurParent->isPersonnel = ClasseurService::getClasseurPersonnelId() == $ppo->classeurParent->id;
         }
     }
     if (!$ppo->dossier->casier || $ppo->niveauUtilisateur >= PROFILE_CCV_MODERATE) {
         $ppo->contenus = $dossierDAO->getContenus($ppo->classeurId, $ppo->dossierId, $ppo->tri);
         foreach ($ppo->contenus as $contenu) {
             if ($ppo->dossier->casier) {
                 $user = Kernel::getUserInfo($contenu->user_type, $contenu->user_id);
                 $contenu->user = $user['prenom'] . ' ' . $user['nom'];
             }
         }
     }
     $toReturn = $this->_usePPO($ppo, '_vue_liste.tpl');
 }
 public function _createContent(&$toReturn)
 {
     $ppo = new CopixPPO();
     // Récupération des paramètres
     $ppo->classeurId = $this->getParam('classeurId');
     $ppo->dossierCourant = $this->getParam('dossierCourant');
     // Paramètres pour la vue popup
     $ppo->field = $this->getParam('field');
     $ppo->format = $this->getParam('format');
     $ppo->withPersonal = _sessionGet('user_animateur') ? false : $this->getParam('withPersonal', true);
     $ppo->moduleType = $this->getParam('moduleType', null);
     $ppo->moduleId = $this->getParam('moduleId', null);
     // Récupération des classeurs accessibles à l'utilisateur
     $classeurIds = array();
     // Récupération de ses ressources (obligatoire pour récupérer le classeur personnel)
     $nodes = Kernel::getMyNodes(_currentUser()->getExtra('type'), _currentUser()->getExtra('id'));
     foreach ($nodes as $node) {
         $modules = Kernel::getModEnabled($node->type, $node->id, _currentUser()->getExtra('type'), _currentUser()->getExtra('id'));
         foreach ($modules as $module) {
             if ($module->module_type == 'MOD_CLASSEUR' && Kernel::getLevel('MOD_CLASSEUR', $module->module_id) >= PROFILE_CCV_READ) {
                 // Le module correspond-il au classeur personnel
                 if ($ppo->withPersonal && strpos($module->node_type, 'USER_') !== false && ($module->node_type == _currentUser()->getExtra('type') && $module->node_id == _currentUser()->getExtra('id'))) {
                     $ppo->classeurPersonnel = $module->module_id;
                     $classeurIds[] = $module->module_id;
                 } elseif (null === $ppo->moduleType) {
                     $classeurIds[] = $module->module_id;
                 }
             }
         }
     }
     // Récupération des ressources
     if (null !== $ppo->moduleType) {
         $node = Kernel::getModParentInfo($ppo->moduleType, $ppo->moduleId);
         $modules = Kernel::getModEnabled($node['type'], $node['id'], _currentUser()->getExtra('type'), _currentUser()->getExtra('id'));
         foreach ($modules as $module) {
             if ($module->module_type == 'MOD_CLASSEUR' && Kernel::getLevel('MOD_CLASSEUR', $module->module_id) >= PROFILE_CCV_READ) {
                 $classeurIds[] = $module->module_id;
             }
         }
     }
     // Dédoublonnage des classeurs (responsables avec plusieurs enfants)
     $classeurIds = array_unique($classeurIds);
     $ppo->classeurs = array();
     $classeurDAO = _dao("classeur|classeur");
     foreach ($classeurIds as $classeurId) {
         $classeur = $classeurDAO->get($classeurId);
         $classeur->titre = $classeur->realName();
         $ppo->classeurs[] = $classeur;
     }
     _classInclude('classeurservice');
     $ppo->classeursOuverts = ClasseurService::getClasseursTreeState();
     if (!is_array($ppo->classeursOuverts)) {
         $ppo->classeursOuverts = array();
     }
     $this->flash->addCycle();
     $toReturn = $this->_usePPO($ppo, '_arborescence_classeurs.tpl');
 }
 public function _createContent(&$toReturn)
 {
     $ppo = new CopixPPO();
     _classInclude('classeur|ClasseurService');
     // Récupération des paramètres
     $ppo->classeurId = $this->getParam('classeurId');
     $ppo->dossierId = $this->getParam('dossierId');
     // Gestion des droits
     $ppo->niveauUtilisateur = Kernel::getLevel('MOD_CLASSEUR', $ppo->classeurId);
     $ppo->typeUtilisateur = _currentUser()->getExtra('type');
     $ppo->idUtilisateur = _currentUser()->getExtra('id');
     // Récupération des paramètres d'affichages
     $ppo->tri = ClasseurService::getContentSort();
     // Récupération des dossiers & des fichiers / favoris
     $fichierDAO = _ioDAO('classeur|classeurfichier');
     $dossierDAO = _ioDAO('classeur|classeurdossier');
     if ($ppo->dossier = $dossierDAO->get($ppo->dossierId)) {
         if ($ppo->dossier->parent_id != 0) {
             $ppo->dossierParent = $dossierDAO->get($ppo->dossier->parent_id);
         } else {
             $classeurDAO = _ioDAO('classeur|classeur');
             $ppo->classeurParent = $classeurDAO->get($ppo->classeurId);
             $ppo->classeurParent->isPersonnel = ClasseurService::getClasseurPersonnelId() == $ppo->classeurParent->id;
         }
     }
     if (!$ppo->dossier->casier || $ppo->niveauUtilisateur >= PROFILE_CCV_MODERATE) {
         $imgTypes = array('PNG', 'GIF', 'JPG', 'JPEG', 'png', 'gif', 'jpg', 'jpeg');
         $ppo->contenus = $dossierDAO->getContenus($ppo->classeurId, $ppo->dossierId, $ppo->tri);
         foreach ($ppo->contenus as $contenu) {
             if ($contenu->content_type == 'fichier' && in_array($contenu->type, $imgTypes)) {
                 $fichier = $fichierDAO->get($contenu->id);
                 $contenu->lienMiniature = $fichier->getLienMiniature(90);
             }
             if ($ppo->dossier->casier) {
                 $user = Kernel::getUserInfo($contenu->user_type, $contenu->user_id);
                 $contenu->user = $user['prenom'] . ' ' . $user['nom'];
             }
         }
         $ppo->fileExtensionAllowed = array('ai', 'avi', 'bmp', 'css', 'csv', 'doc', 'docx', 'eps', 'gif', 'html', 'ico', 'jpg', 'jpeg', 'js', 'json', 'mov', 'mp3', 'odp', 'ods', 'odt', 'pdf', 'png', 'ppt', 'pptx', 'psd', 'svg', 'swf', 'tiff', 'ttf', 'txt', 'wav', 'xls', 'xlsx', 'xml', 'zip');
     }
     $toReturn = $this->_usePPO($ppo, '_vue_vignette.tpl');
 }
 public function _createContent(&$toReturn)
 {
     $ppo = new CopixPPO();
     // Récupération des paramètres
     $ppo->classeurId = $this->getParam('classeurId');
     $ppo->targetType = $this->getParam('targetType');
     $ppo->targetId = $this->getParam('targetId');
     $ppo->withMainLocker = $this->getParam('withMainLocker', true);
     $ppo->withSubLockers = $this->getParam('withSubLockers', Kernel::getLevel('MOD_CLASSEUR', $ppo->classeurId) >= PROFILE_CCV_PUBLISH ? true : false);
     // Récupération des classeurs accessibles à l'utilisateur pour les actions de masse (copie / déplacement)
     $classeurIds = array();
     $nodes = Kernel::getMyNodes(_currentUser()->getExtra('type'), _currentUser()->getExtra('id'));
     foreach ($nodes as $node) {
         $modules = Kernel::getModEnabled($node->type, $node->id, _currentUser()->getExtra('type'), _currentUser()->getExtra('id'));
         foreach ($modules as $module) {
             if ($module->module_type == "MOD_CLASSEUR") {
                 // Identification du classeur personnel de l'utilisateur
                 if (strpos($module->node_type, 'USER_') !== false && ($module->node_type == _currentUser()->getExtra('type') && $module->node_id == _currentUser()->getExtra('id'))) {
                     $ppo->classeurPersonnel = $module->module_id;
                     $classeurIds[] = $module->module_id;
                 } elseif (strpos($module->node_type, 'USER_') == false && Kernel::getLevel('MOD_CLASSEUR', $module->module_id) >= PROFILE_CCV_MEMBER) {
                     $classeurIds[] = $module->module_id;
                 }
             }
         }
     }
     // Dédoublonnage des classeurs (responsables avec plusieurs enfants)
     $classeurIds = array_unique($classeurIds);
     $ppo->classeurs = array();
     $classeurDAO = _dao("classeur|classeur");
     foreach ($classeurIds as $classeurId) {
         $classeur = $classeurDAO->get($classeurId);
         $ppo->classeurs[] = $classeur;
     }
     _classInclude('classeurservice');
     $ppo->classeursOuverts = ClasseurService::getClasseursTreeState();
     if (!is_array($ppo->classeursOuverts)) {
         $ppo->classeursOuverts = array();
     }
     $toReturn = $this->_usePPO($ppo, '_selection_classeurs.tpl');
 }
 /**
  * Crée un classeur
  *
  * @param array  $infos (option) Infos sur le module. [title], [subtitle], [node_type], [node_id]
  *
  * @return ID du classeur ou NULL si erreur
  */
 public function create($infos = array())
 {
     $return = null;
     _classInclude('classeur|classeurservice');
     $classeurDAO = _dao('classeur|classeur');
     $classeur = _record('classeur|classeur');
     $classeur->titre = $infos['title'] ? $infos['title'] : CopixI18N::get('classeur|classeur.moduleDescription');
     $classeur->cle = ClasseurService::createKey();
     $classeur->date_creation = date('Y-m-d H:i:s');
     $classeurDAO->insert($classeur);
     // Si l'insertion en base du classeur s'est bien passée, création du dossier physique
     if (!is_null($classeur->id)) {
         $path2data = realpath('./static/classeur');
         $folder = $path2data . '/' . $classeur->id . '-' . $classeur->cle;
         if ($mkdir = mkdir($folder, 0777)) {
             chmod($folder, 0777);
             // Création d'un casier s'il s'agit d'un classeur de classe
             if ('BU_CLASSE' == $infos['node_type']) {
                 $dossierDAO = _ioDAO('classeur|classeurdossier');
                 $casier = _record('classeur|classeurdossier');
                 $casier->classeur_id = $classeur->id;
                 $casier->parent_id = 0;
                 $casier->nom = CopixI18N::get('classeur|classeur.casierNom');
                 $casier->nb_dossiers = 0;
                 $casier->nb_fichiers = 0;
                 $casier->taille = 0;
                 $casier->cle = classeurService::createKey();
                 $casier->casier = 1;
                 $casier->date_creation = date('Y-m-d H:i:s');
                 $dossierDAO->insert($casier);
             }
             $return = $classeur->id;
         }
         if (!$return) {
             $classeurDAO->delete($classeur->id);
         }
     }
     return $return;
 }
 public function _createContent(&$toReturn)
 {
     $ppo = new CopixPPO();
     // Récupération des paramètres
     $ppo->classeurId = $this->getParam('classeurId');
     $ppo->dossierId = $this->getParam('dossierId');
     $ppo->targetType = $this->getParam('targetType');
     $ppo->targetId = $this->getParam('targetId');
     $ppo->alwaysOpen = $this->getParam('alwaysOpen');
     $ppo->withLocker = $this->getParam('withLocker', true);
     $ppo->estAdmin = Kernel::getLevel('MOD_CLASSEUR', $ppo->classeurId) >= PROFILE_CCV_PUBLISH;
     $ppo->withLockers = $ppo->estAdmin || is_null($ppo->dossierId);
     // Récupération des dossiers
     $dossierDAO = _ioDAO('classeur|classeurdossier');
     $ppo->dossiers = $dossierDAO->getEnfantsDirects($ppo->classeurId, $ppo->dossierId, $ppo->withLockers);
     _classInclude('classeurservice');
     $ppo->dossiersOuverts = ClasseurService::getFoldersTreeState();
     if (!is_array($ppo->dossiersOuverts)) {
         $ppo->dossiersOuverts = array();
     }
     $toReturn = $this->_usePPO($ppo, '_selection_dossiers.tpl');
 }
 /**
  * Retourne les contenus (dossiers / fichiers) d'un classeur / dossier
  *
  * @param int     $idClasseur Identifiant du classeur
  * @param int     $idDossier  Identifiant du dossier
  * @param array   $tri        Paramètres du tri
  *
  * @return array
  */
 public function getContenus($idClasseur, $idDossier = null, $tri = array())
 {
     $toReturn = array();
     $sql = 'SELECT id, id AS dossier_id, parent_id AS parent_id, D.nom AS titre, D.nom AS fichier, nb_dossiers, nb_fichiers, taille, "---" AS type, casier, date_creation AS date, D.user_type, D.user_id, "" AS origine, "dossier" AS content_type' . ' FROM module_classeur_dossier D' . ' WHERE module_classeur_id = :idClasseur';
     if (!is_null($idDossier)) {
         $sql .= ' AND parent_id = :idDossier';
     }
     $sql .= ' UNION';
     $sql .= ' SELECT F.id, module_classeur_dossier_id AS dossier_id, module_classeur_dossier_id AS parent_id, titre, fichier, "" AS nb_dossiers, "" AS nb_fichiers, taille, type, "" AS casier, date_upload AS date, F.user_type, F.user_id,' . ' CASE F.user_type
             WHEN "USER_ELE" THEN CONCAT(kernel_bu_eleve.prenom1, " ", kernel_bu_eleve.nom)
             WHEN "USER_RES" THEN CONCAT(kernel_bu_responsable.prenom1, " ", kernel_bu_responsable.nom)
             WHEN "USER_ENS" THEN CONCAT(kernel_bu_personnel.prenom1, " ", kernel_bu_personnel.nom)
             WHEN "USER_VIL" THEN CONCAT(kernel_bu_personnel.prenom1, " ", kernel_bu_personnel.nom)
             WHEN "USER_EXT" THEN CONCAT(kernel_ext_user.prenom, " ", kernel_ext_user.nom)
             ELSE "inconnu"
         END AS origine,' . ' "fichier" AS content_type' . ' FROM module_classeur_fichier F' . ' LEFT JOIN kernel_bu_eleve ON kernel_bu_eleve.idEleve=F.user_id' . ' LEFT JOIN kernel_bu_responsable ON kernel_bu_responsable.numero=F.user_id' . ' LEFT JOIN kernel_bu_personnel ON kernel_bu_personnel.numero=F.user_id' . ' LEFT JOIN kernel_ext_user ON kernel_ext_user.id=F.user_id' . ' WHERE module_classeur_id = :idClasseur';
     if (!is_null($idDossier)) {
         $sql .= ' AND module_classeur_dossier_id = :idDossier';
     }
     if (!empty($tri)) {
         $sql .= ' ORDER BY ' . $tri['colonne'] . ' ' . $tri['direction'];
     } else {
         $sql .= ' ORDER BY titre ASC';
     }
     // Ajout d'un champ lien pour les favoris
     $results = _doQuery($sql, array(':idClasseur' => $idClasseur, ':idDossier' => $idDossier));
     foreach ($results as $key => $result) {
         if ($result->content_type == 'fichier' && substr($result->fichier, -4) == '.web') {
             $result->lien = ClasseurService::getFavoriteLink($result->id);
         }
         $toReturn[] = $result;
     }
     return $toReturn;
 }
 /**
  * Upload d'un fichier dans un classeur
  *
  * @param string                    $file       Path du fichier uploadé
  * @param string                    $name       Nom du fichier uploadé
  * @param DAORecordClasseur         $classeur   Classeur ou envoyer le fichier
  * @param DAORecordClasseurDossier  $dossier    Dossier ou envoyer le fichier
  *
  * @return DAORecordClasseurFichier
  */
 public function uploadFile($file, $name, DAORecordClasseur $classeur, $dossier = null)
 {
     $dir = realpath('./static/classeur') . '/' . $classeur->id . '-' . $classeur->cle . '/';
     $extension = strtolower(strrchr($name, '.'));
     $fichierDAO = _ioDAO('classeur|classeurfichier');
     $fichier = _record('classeur|classeurfichier');
     $fichier->classeur_id = $classeur->id;
     $fichier->dossier_id = $dossier ? $dossier->id : 0;
     $fichier->titre = _request('fichier_titre', substr(substr($name, 0, strrpos($name, '.')), 0, 63));
     $fichier->commentaire = _request('fichier_commentaire', '');
     $fichier->taille = filesize($file);
     $fichier->type = strtoupper(substr(strrchr($name, '.'), 1));
     $fichier->cle = self::createKey();
     $fichier->date_upload = date('Y-m-d H:i:s');
     $fichier->user_type = _currentUser()->getExtra('type');
     $fichier->user_id = _currentUser()->getExtra('id');
     if (isset($dossier) && $dossier->casier) {
         $fichier->fichier = $fichier->titre . '_' . _currentUser()->getExtra('prenom') . '_' . _currentUser()->getExtra('nom') . $extension;
     } else {
         $fichier->fichier = $name;
     }
     $fichierDAO->insert($fichier);
     copy($file, $dir . $fichier->id . '-' . $fichier->cle . $extension);
     ClasseurService::doAutoRotateJpegByOrientation($dir . $fichier->id . '-' . $fichier->cle . $extension, $extension);
     return $fichier;
 }
 /**
  * AJAX - Met à jour l'état de l'arbre des dossiers
  */
 public function processSauvegardeEtatArbreDossiers()
 {
     if (is_null($id = _request('id', null))) {
         return new CopixActionReturn(CopixActionReturn::HTTPCODE, array('Content-Type: text/plain; charset=utf-8', 'HTTP/1.1 404 Not found'), CopixI18N::get('kernel|kernel.error.errorOccurred'));
     }
     _classInclude('classeur|classeurservice');
     ClasseurService::setFoldersTreeState($id);
     $this->flash->addCycle();
     return new CopixActionReturn(CopixActionReturn::HTTPCODE, array('Content-Type: text/html; charset=utf-8', 'HTTP/1.1 200 OK'), CopixI18N::get('classeur|classeur.message.stateChanged'));
 }