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')); }