/**
  * Détermine si un fichier est une image.
  * Se base sur le mime type du fichier
  *
  * @return bool True s'il s'agit d'une image / false sinon
  */
 public function estUneImage()
 {
     $mimeType = CopixMIMETypes::getFromExtension($this->type);
     if (in_array($mimeType, $this->imgTypes)) {
         return true;
     }
     return false;
 }
 public function testSeveralExt()
 {
     $types = array('jpg', 'pdf', 'doc', 'rtf', 'latex', 'aif', 'wav', 'gif', 'zip', 'gz', 'txt', 'htm', 'ogg', 'xhtml', 'xml', 'ppt', 'pps', 'chm', 'js', 'exe', 'bat', 'mp3', 'wma');
     foreach ($types as $name) {
         if (CopixMIMETypes::getFromExtension('.' . $name) == 'application/octet-stream') {
             $this->fail($name);
         }
     }
 }
 /**
  * Fonction appelée lorsque l'on clique sur le bouton 'import'
  * Appel la méthode privée _validFromFormImportParams
  * vérifie les infos saisies dans le formulaire
  * stock l'objet en session
  * @author Audrey Vassal <*****@*****.**>
  */
 public function doExport()
 {
     $serviceAuth = new AgendaAuth();
     $serviceExport = new ExportService();
     $agendaService = new AgendaService();
     $dateService = new DateService();
     //demande de mettre l'objet à jour en fonction des valeurs saisies dans le formulaire
     if (!($exportParams = $this->_getSessionExport())) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('agenda.error.cannotFindSession'), 'back' => CopixUrl::get('agenda|agenda|vueSemaine')));
     }
     //on vérifie les droits des utilisateurs sur la liste des agendas sélectionnés
     foreach ((array) $this->getRequest('agenda') as $id_agenda) {
         //on vérifie si l'utilisateur a les droits d'écriture sur un des agendas affiché
         if ($serviceAuth->getCapability($id_agenda) < $serviceAuth->getRead()) {
             return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('agenda.error.enableToWrite'), 'back' => CopixUrl::get('agenda|agenda|vueSemaine')));
         }
     }
     $this->_validFromFormExportParams($exportParams);
     $errors = $this->_checkExport($exportParams);
     if (count($errors) > 0) {
         $this->_setSessionExport($exportParams);
         return CopixActionGroup::process('agenda|ImportExport::getPrepareExport', array('e' => 1, 'errors' => $errors));
     } else {
         //var_dump($exportParams);
         //die();
         //on récupère tous les évènements des agendas cochés dans la période demandée
         foreach ((array) _request('agenda') as $idAgenda) {
             $arEventsPeriode[$idAgenda] = $agendaService->checkEventOfAgendaInBdd($idAgenda, CopixDateTime::dateToYYYYMMDD($exportParams->datedeb_export), CopixDateTime::dateToYYYYMMDD($exportParams->datefin_export));
         }
         //on classe ces évènements par jour
         $arEventByDay = $agendaService->getEventsByDay($arEventsPeriode, CopixDateTime::dateToYYYYMMDD($exportParams->datedeb_export), CopixDateTime::dateToYYYYMMDD($exportParams->datefin_export));
         //on ordonne les évènements par ordre croissant d'heure de début d'évènement dans la journée
         //var_dump($arEventByDay);
         $arEventByDay = $agendaService->getEventsInOrderByDay($arEventByDay);
         $content = $serviceExport->getFileICal($arEventByDay, CopixDateTime::dateToTimestamp($exportParams->datedeb_export), CopixDateTime::dateToTimestamp($exportParams->datefin_export));
     }
     //on vide la session
     $this->_setSessionExport(null);
     return _arContent($content, array('filename' => 'agenda.ics', 'content-disposition' => 'attachement', 'content-type' => CopixMIMETypes::getFromExtension('.ics')));
 }
 /**
  * getLoginResult
  *
  * Affiche le résultat de la création de comptes (login, passwd) dans différents formats (html, txt, csv, etc.).
  * @author	Frédéric Mossmann
  */
 public function getLoginResult()
 {
     $inSession = _sessionGet('modules|comptes|doLoginCreate|success');
     if (!$inSession || !is_array($inSession) || !sizeof($inSession)) {
         $urlReturn = CopixUrl::get('comptes||getNode');
         return new CopixActionReturn(COPIX_AR_REDIRECT, $urlReturn);
     }
     //print_r($inSession);
     $tpl = new CopixTpl();
     $tplLoginResult = new CopixTpl();
     $tpl->assign('TITLE_PAGE', CopixI18N::get('comptes.moduleDescription') . " &raquo; " . CopixI18N::get('comptes.title.getloginresult'));
     $menu = array();
     $menu[] = array('txt' => CopixI18N::get('comptes.menu.export_html'), 'url' => CopixUrl::get('comptes||getLoginResult', array('type' => _request('type'), 'id' => _request('id'), 'format' => 'html')));
     $menu[] = array('txt' => CopixI18N::get('comptes.menu.export_txt'), 'url' => CopixUrl::get('comptes||getLoginResult', array('type' => _request('type'), 'id' => _request('id'), 'format' => 'text')));
     $menu[] = array('txt' => CopixI18N::get('comptes.menu.export_cvs'), 'url' => CopixUrl::get('comptes||getLoginResult', array('type' => _request('type'), 'id' => _request('id'), 'format' => 'csv')));
     $menu[] = array('txt' => CopixI18N::get('comptes.menu.export_xml'), 'url' => CopixUrl::get('comptes||getLoginResult', array('type' => _request('type'), 'id' => _request('id'), 'format' => 'xml')));
     // $menu[] = array( 'txt' => CopixI18N::get ('comptes.menu.export_pdf'), 'url' => CopixUrl::get ('comptes||getLoginResult', array('type'=>_request('type'),'id'=>_request('id'),'format'=>'pdf')) );
     $menu[] = array('txt' => CopixI18N::get('comptes.menu.export_purge'), 'url' => CopixUrl::get('comptes||getPurgeResult', array('type' => _request('type'), 'id' => _request('id'))), 'color' => 'red');
     // $menu[] = array( 'txt' => CopixI18N::get ('comptes.menu.export_return'), 'url' => CopixUrl::get ('comptes||getNode', array('type'=>_request('type'),'id'=>_request('id'))) );
     $tplLoginResult->assign('MENU', $menu);
     $logins = $inSession;
     if (!_request('format') || trim(_request('format')) == '') {
         $format = "default";
     } else {
         $format = _request('format');
     }
     $tplLoginResult->assign('logins', $logins);
     switch ($format) {
         case 'default':
             $main = $tplLoginResult->fetch('loginresult.tpl');
             break;
         case 'html':
             $main = $tplLoginResult->fetch('loginresult-html.tpl');
             return _arContent($main, array('filename' => 'Logins-' . date('YmdHi') . '.html', 'content-disposition' => 'attachement', 'content-type' => CopixMIMETypes::getFromExtension('.html')));
             break;
         case 'text':
             $main = $tplLoginResult->fetch('loginresult-text.tpl');
             return _arContent($main, array('filename' => 'Logins-' . date('YmdHi') . '.txt', 'content-disposition' => 'attachement', 'content-type' => CopixMIMETypes::getFromExtension('.txt')));
             break;
         case 'csv':
             $main = $tplLoginResult->fetch('loginresult-csv.tpl');
             return _arContent($main, array('filename' => 'Logins-' . date('YmdHi') . '.csv', 'content-disposition' => 'attachement', 'content-type' => CopixMIMETypes::getFromExtension('.csv')));
             break;
         case 'xml':
             $main = $tplLoginResult->fetch('loginresult-xml.tpl');
             return _arContent($main, array('filename' => 'Logins-' . date('YmdHi') . '.xml', 'content-disposition' => 'attachement', 'content-type' => CopixMIMETypes::getFromExtension('.xml')));
             break;
             /*
             case 'pdf':
                 break;
             */
         /*
         case 'pdf':
             break;
         */
         case 'session':
             // DEBUG
             $main = '<pre>' . print_r($inSession, true) . '</pre>';
             break;
         default:
             break;
     }
     $tpl->assign('MAIN', $main);
     $tpl->assign('MENU', $this->menu);
     return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
 }
 /**
  * Affichage du flux RSS d'un blog (flux sortant)
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2006/11/28
  * @param string $blog Url_blog du blog
  */
 public function getBlogRss()
 {
     $blog = $this->getRequest('blog', null);
     if ($blog != null) {
         $blogDAO =& CopixDAOFactory::create('blog|blog');
         if ($blog = $blogDAO->getBlogByName($blog)) {
             $rss = CopixZone::process('ListArticleRss', array('blog' => $blog));
             return _arContent($rss, array('content-type' => CopixMIMETypes::getFromExtension('xml')));
         }
     }
     return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('blog.error.unableToFindBlog'), 'back' => CopixUrl::get('')));
 }
 public function processShowMultipleAccountsListing()
 {
     $ppo = new CopixPPO();
     // Récupération des informations des comptes créés
     $ppo->accounts = _sessionGet('gestionautonome|addMultipleStudents|success');
     // Récupérations des informations des modifications apportées
     $accountsInSession = _sessionGet('modules|gestionautonome|passwordsList');
     if (!is_array($accountsInSession)) {
         $accountsInSession = array();
     } else {
         $toDisplay = array();
         foreach ($accountsInSession as $lines) {
             foreach ($lines as $data) {
                 $toDisplay[] = $data;
             }
         }
         $ppo->accountsInSession = $toDisplay;
     }
     // Récupération du format de sortie demandé
     if (!_request('format') || trim(_request('format')) == '') {
         $format = "default";
     } else {
         $format = _request('format');
     }
     // Breadcrumbs
     $nodeInfos = Kernel::getNodeInfo($ppo->nodeType, $ppo->nodeId, true);
     // Get vocabulary catalog to use
     $nodeVocabularyCatalogDAO = _ioDAO('kernel|kernel_i18n_node_vocabularycatalog');
     $ppo->vocabularyCatalog = $nodeVocabularyCatalogDAO->getCatalogForNode($ppo->nodeType, $ppo->nodeId);
     $breadcrumbs = Kernel::generateBreadcrumbs($nodeInfos);
     $breadcrumbs[] = array('txt' => CopixCustomI18N::get('gestionautonome|gestionautonome.message.add%%structure_element_persons%%list', array('catalog' => $ppo->vocabularyCatalog->id_vc)));
     $ppo->breadcrumbs = Kernel::PetitPoucet($breadcrumbs, ' &raquo; ');
     $ppo->TITLE_PAGE = CopixConfig::get('gestionautonome|moduleTitle');
     $ppo->title = 'Importer ' . CopixCustomI18N::get('gestionautonome|gestionautonome.message.%%structure_element_persons%%', array('catalog' => $ppo->vocabularyCatalog->id_vc));
     $ppo->msgSuccess = CopixCustomI18N::get('gestionautonome|gestionautonome.message.%%structure_element_Persons%%', array('catalog' => $ppo->vocabularyCatalog->id_vc)) . ' ajoutés !';
     $ppo->subTitle = 'Liste ' . CopixCustomI18N::get('gestionautonome|gestionautonome.message.%%indefinite__structure_element_persons%%', array('catalog' => $ppo->vocabularyCatalog->id_vc)) . ' ajoutés';
     // Sortie suivant le format demandé
     $tplResult = new CopixTpl();
     $tplResult->assign('accounts', $ppo->accounts);
     switch ($format) {
         case 'default':
             return _arPPO($ppo, 'account_listing.tpl');
         case 'html':
             $result = $tplResult->fetch('account_listing_html.tpl');
             return _arContent($result, array('filename' => 'Logins-' . date('YmdHi') . '.html', 'content-disposition' => 'inline', 'content-type' => CopixMIMETypes::getFromExtension('.html')));
             break;
         case 'csv':
             $result = $tplResult->fetch('account_listing_csv.tpl');
             return _arContent($result, array('filename' => 'Logins-' . date('YmdHi') . '.csv', 'content-disposition' => 'attachement', 'content-type' => CopixMIMETypes::getFromExtension('.csv')));
             break;
     }
 }
 /**
  * A partir d'un nom de fichier, renvoie son type MIME
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2010/09/24
  * @param string $iFilename Nom (ou chemin) du fichier
  * @return
  */
 public function getMimeType($iFilename)
 {
     $point = strrpos($iFilename, ".");
     if ($point !== false) {
         $ext = substr($iFilename, $point + 1);
         $ext = strtolower($ext);
     } else {
         $ext = $iFilename;
     }
     $oMimeType = CopixMIMETypes::getFromExtension($ext);
     // On regarde si on veut pas ecraser le type mime
     if ($oMimeType == 'application/octet-stream') {
         $tmp = MalleService::getTypeInfos($ext);
         if ($tmp && isset($tmp['type_mime'])) {
             $oMimeType = $tmp['type_mime'];
         }
     }
     return $oMimeType;
 }
 private function doExportAlbum($destfolder, $data)
 {
     foreach ($data->files as $file) {
         $file_from = $this->path_old . "/album/" . $file->album_id . "_" . $file->album_cle . "/" . $file->photo_id . "_" . $file->photo_cle . "." . $file->photo_ext;
         $destfile = _record('malle|malle_files', $this->connection_name_new);
         $destfile->malle = $destfolder->malle;
         $destfile->malle_cle = $destfolder->malle_cle;
         $destfile->folder = $destfolder->id;
         $destfile->nom = $file->photo_nom;
         $destfile->fichier = "archive_album_" . $file->photo_id . "_" . $file->photo_cle . "." . $file->photo_ext;
         $destfile->taille = filesize($file_from);
         $destfile->type = CopixMIMETypes::getFromExtension($file->photo_ext);
         $destfile->cle = substr(md5(microtime()), 0, 10);
         $destfile->date_upload = $destfolder->date_creation;
         _dao('malle|malle_files', $this->connection_name_new)->insert($destfile);
         $file_dest = $this->path_new . "/malle/" . $destfolder->malle . "_" . $destfolder->malle_cle . "/" . $destfile->id . "_archive_album_" . $file->photo_id . "_" . $file->photo_cle . "." . $file->photo_ext;
         copy($file_from, $file_dest);
     }
     foreach ($data->folders as $folder) {
         $destsubfolders = _record('malle|malle_folders', $this->connection_name_new);
         $destsubfolders->malle = $destfolder->malle;
         $destsubfolders->malle_cle = $destfolder->malle_cle;
         $destsubfolders->parent = $destfolder->id;
         $destsubfolders->nb_folders = 0;
         $destsubfolders->nb_files = 0;
         $destsubfolders->taille = 0;
         $destsubfolders->date_creation = date("Y-m-d H:i:s");
         $destsubfolders->nom = $folder->dossier_nom;
         _dao('malle|malle_folders', $this->connection_name_new)->insert($destsubfolders);
         $this->doExportAlbum($destsubfolders, $folder);
     }
 }
 /**
  * Renvoie le type MIME d'un fichier
  *
  * @param  string $filename Nom du fichier
  *
  * @return string
  */
 public static function getMimeType($filename)
 {
     $point = strrpos($filename, '.');
     if ($point !== false) {
         $ext = substr($filename, $point + 1);
         $ext = strtolower($ext);
     } else {
         $ext = $filename;
     }
     return CopixMIMETypes::getFromExtension($ext);
 }
 /**
  * Flux RSS des blogs de tout Iconito
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2007/11/27
  */
 public function processRss()
 {
     $rss = CopixZone::process('Rss');
     //echo "rss=$rss<p></p>";
     return _arContent($rss, array('content-type' => CopixMIMETypes::getFromExtension('xml')));
 }