function GetNightVersions($returnarray = 0) { $f = new Fichiers(); $h = $f->DirListTable('/home/www/445063d0c9bf877fb052052271f883f2/web/nightbuilds', true); if (is_array($h)) { while (list($num, $val) = each($h)) { if (preg_match('#artica-([0-9\\.]+)\\.tgz#i', $val, $r)) { if (strpos($r[1], '.') > 0) { $key = $r[1]; $key = str_replace('.', '', $key); $arr[$key] = $r[1]; } } } } ksort($arr); while (list($num, $val) = each($arr)) { $v[] = $val; } if ($returnarray == 1) { return $v; } return $v[count($v) - 1]; }
/** * Transforme un texte SkrivML en HTML * @param string $str Texte SkrivML * @return string Texte HTML */ public static function SkrivToHTML($str) { if (!self::$skriv) { self::$skriv = new \KD2\SkrivLite(); self::$skriv->registerExtension('fichier', ['\\Garradin\\Fichiers', 'SkrivFichier']); self::$skriv->registerExtension('image', ['\\Garradin\\Fichiers', 'SkrivImage']); } $skriv =& self::$skriv; $str = preg_replace_callback('/(fichier|image):\\/\\/(\\d+)/', function ($match) use($skriv) { try { $file = new Fichiers((int) $match[2]); } catch (\InvalidArgumentException $e) { return $skriv->parseError('/!\\ Lien fichier : ' . $e->getMessage()); } return $file->getURL(); }, $str); $str = self::$skriv->render($str); return $str; }
/** * Callback utilisé pour l'extension <<image>> dans le wiki-texte * @param array $args Arguments passés à l'extension * @param string $content Contenu éventuel (en mode bloc) * @param object $skriv Objet SkrivLite */ public static function SkrivImage($args, $content, $skriv) { $_args = []; $_align_values = ['droite', 'gauche', 'centre']; foreach ($args as $value) { if (preg_match('/^\\d+$/', $value)) { $_args['id'] = (int) $value; } else { if (in_array($value, $_align_values)) { $_args['align'] = $value; } else { $_args['caption'] = $value; } } } if (empty($_args['id'])) { return $skriv->parseError('/!\\ Tag image : aucun numéro de fichier indiqué.'); } try { $file = new Fichiers($_args['id']); } catch (\InvalidArgumentException $e) { return $skriv->parseError('/!\\ Tag image : ' . $e->getMessage()); } if (!$file->image) { return $skriv->parseError('/!\\ Tag image : ce fichier n\'est pas une image.'); } if (empty($_args['caption'])) { $_args['caption'] = false; } $out = '<a href="' . $file->getURL() . '" class="internal-image">'; $out .= '<img src="' . $file->getURL($_args['align'] == 'centre' ? 500 : 200) . '" alt="'; if ($_args['caption']) { $out .= htmlspecialchars($_args['caption'], ENT_QUOTES, 'UTF-8'); } $out .= '" /></a>'; if (!empty($_args['align'])) { $out = '<figure class="image ' . $_args['align'] . '">' . $out; if ($_args['caption']) { $out .= '<figcaption>' . htmlspecialchars($_args['caption'], ENT_QUOTES, 'UTF-8') . '</figcaption>'; } $out .= '</figure>'; } return $out; }
if (!empty($_SERVER['QUERY_STRING'])) { $page_uri = Wiki::transformTitleToURI(rawurldecode($_SERVER['QUERY_STRING'])); $page = $wiki->getByURI($page_uri); } else { $page = $wiki->getByURI($config->get('accueil_wiki')); $page_uri = ''; } if (!$page) { $tpl->assign('uri', $page_uri); $tpl->assign('can_edit', $wiki->canWritePage(Wiki::ECRITURE_NORMAL)); $tpl->assign('can_read', true); } else { $tpl->assign('can_read', $wiki->canReadPage($page['droit_lecture'])); $tpl->assign('can_edit', $wiki->canWritePage($page['droit_ecriture'])); $tpl->assign('children', $wiki->getList($page['uri'] == $config->get('accueil_wiki') ? 0 : $page['id'], true)); $tpl->assign('breadcrumbs', $wiki->listBackBreadCrumbs($page['id'])); $tpl->assign('auteur', $membres->getNom($page['contenu']['id_auteur'])); $images = Fichiers::listLinkedFiles(Fichiers::LIEN_WIKI, $page['id'], true); if ($images && !$page['contenu']['chiffrement']) { $images = Fichiers::filterFilesUsedInText($images, $page['contenu']['contenu']); } $fichiers = Fichiers::listLinkedFiles(Fichiers::LIEN_WIKI, $page['id'], false); if ($fichiers && !$page['contenu']['chiffrement']) { $fichiers = Fichiers::filterFilesUsedInText($fichiers, $page['contenu']['contenu']); } $tpl->assign('images', $images); $tpl->assign('fichiers', $fichiers); } $tpl->assign('page', $page); $tpl->assign('custom_js', ['wiki_gallery.js']); $tpl->display('admin/wiki/page.tpl');
<?php namespace Garradin; require __DIR__ . '/_inc.php'; $id = isset($_GET['id']) ? $_GET['id'] : false; $filename = !empty($_GET['file']) ? $_GET['file'] : false; $size = false; if (empty($id)) { throw new UserException('Fichier inconnu.'); } foreach ($_GET as $key => $value) { if (substr($key, -2) == 'px') { $size = (int) substr($key, 0, -2); break; } } $id = base_convert($id, 36, 10); $file = new Fichiers((int) $id); $membres = new Membres(); $is_logged = $membres->isLogged(); if (!$file->checkAccess($membres->getLoggedUser())) { header('HTTP/1.1 403 Forbidden', true, 403); throw new UserException('Vous n\'avez pas accès à ce fichier.'); } if ($size) { $file->serveThumbnail($size); } else { $file->serve(); }
public function delete($id) { $db = DB::getInstance(); if ($db->simpleQuerySingle('SELECT COUNT(*) FROM wiki_pages WHERE parent = ?;', false, (int) $id)) { return false; } // Suppression des fichiers liés $files = Fichiers::listLinkedFiles(Fichiers::LIEN_WIKI, $id, null); foreach ($files as $file) { $file = new Fichiers($file['id'], $file); $file->remove(); } $db->simpleExec('DELETE FROM wiki_revisions WHERE id_page = ?;', (int) $id); //$db->simpleExec('DELETE FROM wiki_suivi WHERE id_page = ?;', (int)$id); FIXME $db->simpleExec('DELETE FROM wiki_recherche WHERE id = ?;', (int) $id); $db->simpleExec('DELETE FROM wiki_pages WHERE id = ?;', (int) $id); return true; }
$fichier = Fichiers::upload($_FILES['fichier']); } // Lier le fichier à la page wiki $fichier->linkTo(Fichiers::LIEN_WIKI, $page['id']); $uri = '/admin/wiki/_fichiers.php?page=' . $page['id'] . '&sent'; if (isset($_POST['uploadHelper_status'])) { echo json_encode(['redirect' => WWW_URL . $uri, 'callback' => 'insertHelper', 'file' => ['image' => (int) $fichier->image, 'id' => (int) $fichier->id, 'nom' => $fichier->nom, 'thumb' => $fichier->image ? $fichier->getURL(200) : false]]); exit; } Utils::redirect($uri); } catch (UserException $e) { $error = $e->getMessage(); } } else { $error = 'Aucun fichier envoyé.'; } if (isset($_POST['uploadHelper_status'])) { echo json_encode(['error' => $error]); exit; } } $tpl->assign('fichiers', Fichiers::listLinkedFiles(Fichiers::LIEN_WIKI, $page['id'], false)); $tpl->assign('images', Fichiers::listLinkedFiles(Fichiers::LIEN_WIKI, $page['id'], true)); $tpl->assign('max_size', Utils::getMaxUploadSize()); $tpl->assign('error', $error); $tpl->assign('page', $page); $tpl->assign('sent', isset($_GET['sent']) ? true : false); $tpl->assign('custom_js', ['upload_helper.min.js', 'wiki_fichiers.js']); $tpl->assign('csrf_field_name', Utils::CSRF_field_name('wiki_files_' . $page['id'])); $tpl->assign('csrf_value', Utils::CSRF_create('wiki_files_' . $page['id'])); $tpl->display('admin/wiki/_fichiers.tpl');