/** * 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'))); }
/** * Recupère la ressource * * @throws CopixResourceForbiddenException si l'accès à la ressource est interdit, * CopixResourceNotFoundException si la ressource n'a pas été trouvée. */ public function fetch() { // Vérifie qu'on ait pas de "backward" $unescapedPath = utf8_decode($this->_path); // Pas de blague avec l'UTF8 if (preg_match('@\\.\\.[/\\\\]@', $unescapedPath)) { throw new CopixResourceForbiddenException($this->_path); } // Vérifie l'existence du theme if (!$this->_theme || !is_dir('themes/' . $this->_theme)) { throw new CopixResourceNotFoundException($this->_theme); } $arModules = $this->_getArModules(); // Si on a bien un module if ($this->_module) { // Vérifie l'existence du module if (isset($arModules[$this->_module])) { $this->_modulePath = $arModules[$this->_module] . $this->_module . '/'; } else { throw new CopixResourceNotFoundException($this->_module); } // Vérifie l'existence du chemin 'www' du module if (!is_dir($this->_modulePath . "www")) { throw new CopixResourceNotFoundException($this->_module); } } // Récupère la config $config = $this->_getCopixConfig(); // Recherche le fichier if (!($filePath = CopixResource::findResourcePath($this->_path, $this->_module, $this->_modulePath, $this->_theme, $config->i18n_path_enabled, $this->_lang, $this->_country))) { throw new CopixResourceNotFoundException($this->_path); } // Récupère le type MIME $mimeType = CopixMIMETypes::getFromFileName($filePath); // La substitution ne touche que les fichiers des modules if ($this->_modulePath && substr($filePath, 0, strlen($this->_modulePath)) == $this->_modulePath) { $filePath = $this->_processModuleFile($filePath, $mimeType); } // Mode DEBUG ? if (isset($_REQUEST['DEBUG'])) { _dump(array('this' => $this, 'filePath' => $filePath, 'mimeType' => $mimeType, 'included_files' => get_included_files())); exit; } // Envoie le fichier $this->_sendFile($filePath, $mimeType); }
/** * Lancement d'une requête * * @param CopixHTTPClientRequest $pRequest * @return unknown */ private function _launchRequest(CopixHTTPClientRequest $pRequest) { if (CopixConfig::get('default|proxyEnabled')) { //proxy_host, proxy_port, proxy_login et proxy_password curl_setopt($this->_curl, CURLOPT_HTTPPROXYTUNNEL, true); if (CopixConfig::get('default|proxyHost') != null) { curl_setopt($this->_curl, CURLOPT_PROXY, str_replace('http://', '', CopixConfig::get('default|proxyHost'))); } if (CopixConfig::get('default|proxyPort') != null) { curl_setopt($this->_curl, CURLOPT_PROXYPORT, intval(CopixConfig::get('default|proxyPort'))); } if (CopixConfig::get('default|proxyUser') != null) { $proxyUserPass = CopixConfig::get('default|proxyUser'); if (CopixConfig::get('default|proxyPass') != null) { $proxyUserPass .= ':' . CopixConfig::get('default|proxyPass'); } curl_setopt($this->_curl, CURLOPT_PROXYUSERPWD, $proxyUserPass); } } curl_setopt($this->_curl, CURLOPT_TIMEOUT, $pRequest->getTimeout()); // Choix de l'interface à utiliser $interfaceUsed = $pRequest->getInterface(); // Si pas d'interface on récupère celle en configuration if ($interfaceUsed !== '') { $interfaceUsed = CopixConfig::get('default|webservicesInterface'); } // Mise en place de l'interface if (isset($interfaceUsed)) { curl_setopt($this->_curl, CURLOPT_INTERFACE, $interfaceUsed); } if ($pRequest->getIgnoreCertificate()) { curl_setopt($this->_curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($this->_curl, CURLOPT_SSL_VERIFYHOST, false); } curl_setopt($this->_curl, CURLOPT_URL, $pRequest->getUrl()); curl_setopt($this->_curl, CURLOPT_VERBOSE, 1); if ($pRequest->getHeader()) { curl_setopt($this->_curl, CURLOPT_HTTPHEADER, $pRequest->getHeader()); } if ($pRequest->getCookie()) { curl_setopt($this->_curl, CURLOPT_COOKIE, $pRequest->getCookie()); } if (count($pRequest->getPost())) { if ($pRequest->getFile()) { $boundary = uniqid('------------------'); $MPboundary = '--' . $boundary; $endMPboundary = $MPboundary . '--'; $postBody = 'Content-type: multipart/form-data, boundary=' . $boundary . "\r\n\r\n"; foreach ($pRequest->getPost() as $name => $content) { $postBody .= $MPboundary . "\r\n"; $postBody .= 'content-disposition: form-data; name="' . $name . '"' . "\r\n\r\n"; $postBody .= $content . "\r\n"; } $file = $pRequest->getFile(); $fileContent = file_get_contents($file); $postBody .= $MPboundary . "\r\n"; $postBody .= 'Content-Disposition: form-data; name="file"; filename="' . basename($file) . '"' . "\r\n"; $postBody .= 'Content-Type: ' . CopixMIMETypes::getFromFileName($file) . "\r\n"; $postBody .= 'Content-Transfer-Encoding: binary' . "\r\n\r\n"; $postBody .= $fileContent; $postBody .= "\r\n" . $endMPboundary; curl_setopt($this->_curl, CURLOPT_POST, true); curl_setopt($this->_curl, CURLOPT_POSTFIELDS, $postBody); curl_setopt($this->_curl, CURLOPT_HTTPHEADER, array("Content-Type: multipart/form-data; boundary={$boundary}")); curl_setopt($this->_curl, CURLOPT_RETURNTRANSFER, true); } else { curl_setopt($this->_curl, CURLOPT_POST, true); curl_setopt($this->_curl, CURLOPT_POSTFIELDS, CopixUrl::valueToUrl(null, $pRequest->getPost())); } } if ($pRequest->getFollowRedirect()) { curl_setopt($this->_curl, CURLOPT_FOLLOWLOCATION, 1); } else { curl_setopt($this->_curl, CURLOPT_FOLLOWLOCATION, 0); } return new CopixHTTPRequestResult($pRequest, $this->_curl); }
/** * 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') . " » " . 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, ' » '); $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'))); }
/** * Réalise les derniers traitements (généralement d'affichage ou de redirection). * * En fonction du code retour de l'action CopixActionReturn::CONST, Copix réalise * un certain nombre de traitements pour terminer la requête en cours. * * @param CopixActionReturn $pToProcess Ce qui a été retourné par CopixActionGroup::process () * @see CopixActionGroup */ protected function _processResult($toProcess) { $config = CopixConfig::instance(); //appel les plugins de post-processing. foreach (CopixPluginRegistry::getRegistered() as $name => $plugin) { $plugin->afterProcess($toProcess); } //Analyse du résultat du process switch ($toProcess->code) { case CopixActionReturn::ERROR: //erreur header("Content-Type: text/html"); $tpl = new CopixTpl(); if (($assignedTitlePage = $tpl->getAssigned('TITLE_PAGE')) !== null) { $tpl->assign('TITLE_PAGE', '[' . _i18n('copix:common.messages.error') . ']' . $assignedTitlePage); } else { $tpl->assign('TITLE_PAGE', '[' . _i18n('copix:common.messages.error') . ']'); } $this->_processStandard($tpl); $tpl->assign('HTML_HEAD', '<$HTML_HEAD />'); $tpl->assign('MAIN', $toProcess->data); $content = $tpl->fetch('|error.tpl'); CopixContext::clear(); $this->_beforeDisplay($content); echo $content; break; case CopixActionReturn::DISPLAY: $charset = CopixI18N::getCharset(); header("Content-Type: text/html;charset=" . $charset); $this->_processStandard($toProcess->data); //appel de la méthode de préparation de la page standard. $toProcess->data->assign('HTML_HEAD', '<$HTML_HEAD />'); //Par ex, bandeaux de pub, menus dynamiques, ... (propres aux projets.) CopixContext::clear(); $content = $toProcess->data->fetch($config->mainTemplate); $this->_beforeDisplay($content); echo $content; break; case CopixActionReturn::DISPLAY_IN: $charset = CopixI18N::getCharset(); header("Content-Type: text/html;charset=" . $charset); $this->_processStandard($toProcess->data); //appel de la méthode de préparation de la page standard. $toProcess->data->assign('HTML_HEAD', '<$HTML_HEAD />'); //Par ex, bandeaux de pub, menus dynamiques, ... (propres aux projets.) $content = $toProcess->data->fetch($toProcess->more); $this->_beforeDisplay($content); echo $content; break; case CopixActionReturn::FILE: case CopixActionReturn::CONTENT: $contentDisposition = 'inline'; $contentTransfertEnconding = 'binary'; $contentType = null; $fileNameOnly = null; if ($toProcess->code == CopixActionReturn::FILE) { $fileName = $toProcess->data; $fileNameOnly = explode('/', str_replace('\\', '/', $fileName)); $fileNameOnly = $fileNameOnly[count($fileNameOnly) - 1]; } if (is_array($toProcess->more)) { if (isset($toProcess->more['content-disposition'])) { $contentDisposition = $toProcess->more['content-disposition']; } if (isset($toProcess->more['filename'])) { $fileNameOnly = $toProcess->more['filename']; } if (isset($toProcess->more['content-type'])) { $contentType = $toProcess->more['content-type']; } if (isset($toProcess->more['content-transfer-encoding'])) { $contentTransfertEnconding = $toProcess->more['content-transfer-encoding']; } } elseif (strlen(trim($toProcess->more))) { $contentType = $toProcess->more; } if ($contentType === null) { $contentType = CopixMIMETypes::getFromFileName($fileNameOnly); } header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: protected", false); header("Content-Type: " . $contentType); header("Content-Disposition: " . $contentDisposition . "; filename=\"" . $fileNameOnly . "\";"); header("Content-Transfer-Encoding: " . $contentTransfertEnconding); header("Content-Length: " . ($toProcess->code == CopixActionReturn::FILE ? filesize($fileName) : strlen($toProcess->data))); if ($toProcess->code == CopixActionReturn::FILE) { readfile($fileName); } else { echo $toProcess->data; } flush(); break; case CopixActionReturn::PPO: $contentType = 'text/html'; $cacheControl = false; $mainTemplate = $config->mainTemplate; $charset = CopixI18N::getCharset(); if (is_array($toProcess->more)) { $template = $toProcess->more['template']; if (isset($toProcess->more['content-type'])) { $contentType = $toProcess->more['content-type']; } if (array_key_exists('mainTemplate', $toProcess->more)) { $mainTemplate = $toProcess->more['mainTemplate']; } if (isset($toProcess->more['charset'])) { $charset = $toProcess->more['charset']; } if (isset($toProcess->more['cache-control'])) { $cacheControl = $toProcess->more['cache-control']; } } else { $template = $toProcess->more; } $tplContent = new CopixTpl(); $tplContent->assign('ppo', $toProcess->data); header("Content-Type: " . $contentType . ";charset=" . $charset); if ($cacheControl !== false) { header('Cache-Control: ' . $cacheControl); } if ($mainTemplate !== null) { $tplMain = new CopixTpl(); $tplMain->assign('TITLE_PAGE', isset($toProcess->data->TITLE_PAGE) ? $toProcess->data->TITLE_PAGE : null); $tplMain->assign('TITLE_BAR', isset($toProcess->data->TITLE_BAR) ? $toProcess->data->TITLE_BAR : null); $tplMain->assign('POPUP', isset($toProcess->data->POPUP) ? $toProcess->data->POPUP : null); $tplMain->assign('MENU', isset($toProcess->data->MENU) ? $toProcess->data->MENU : null); $tplMain->assign('CAN_CLOSE', isset($toProcess->data->CAN_CLOSE) ? $toProcess->data->CAN_CLOSE : null); $tplMain->assign('BODY_ON_LOAD', isset($toProcess->data->BODY_ON_LOAD) ? $toProcess->data->BODY_ON_LOAD : null); $tplMain->assign('BODY_ON_UNLOAD', isset($toProcess->data->BODY_ON_UNLOAD) ? $toProcess->data->BODY_ON_UNLOAD : null); $tplMain->assign('MAIN', $tplContent->fetch($template)); $tplContent = null; //on libère la mémoire $tplMain->assign('ppo', $toProcess->data); $this->_processStandard($tplMain); $tplMain->assign('HTML_HEAD', '<$HTML_HEAD />'); $content = $tplMain->fetch($mainTemplate); } else { $tplContent->assign('TITLE_PAGE', isset($toProcess->data->TITLE_PAGE) ? $toProcess->data->TITLE_PAGE : null); $tplContent->assign('TITLE_BAR', isset($toProcess->data->TITLE_BAR) ? $toProcess->data->TITLE_BAR : null); $tplContent->assign('BODY_ON_LOAD', isset($toProcess->data->BODY_ON_LOAD) ? $toProcess->data->BODY_ON_LOAD : null); $tplContent->assign('BODY_ON_UNLOAD', isset($toProcess->data->BODY_ON_UNLOAD) ? $toProcess->data->BODY_ON_UNLOAD : null); $this->_processStandard($tplContent); $tplContent->assign('HTML_HEAD', '<$HTML_HEAD />'); $content = $tplContent->fetch($template); } CopixContext::clear(); $this->_beforeDisplay($content); echo $content; break; case CopixActionReturn::REDIRECT: //redirection standard, message http. header('location: ' . $toProcess->data); break; case CopixActionReturn::HTTPCODE: foreach ($toProcess->data as $code) { header($code); } echo $toProcess->more; break; case CopixActionReturn::NONE: break; } //Appel des méthodes afterDisplay des plugins foreach (CopixPluginRegistry::getRegistered() as $name => $plugin) { $plugin->afterDisplay(); } session_write_close(); }