Exemple #1
0
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];
}
Exemple #2
0
 /**
  * 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;
 }
Exemple #3
0
 /**
  * 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;
 }
Exemple #4
0
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');
Exemple #5
0
<?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();
}
Exemple #6
0
 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;
 }
Exemple #7
0
                $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');