本文整理汇总了PHP中get_spip_doc函数的典型用法代码示例。如果您正苦于以下问题:PHP get_spip_doc函数的具体用法?PHP get_spip_doc怎么用?PHP get_spip_doc使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了get_spip_doc函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的PHP代码示例。
示例1: urls_generer_url_document_dist
/**
* Generer l'url d'un document dans l'espace public,
* fonction du statut du document
*
* @param int $id
* @param string $args
* @param string $ancre
* @param string $public
* @param string $connect
* @return string
*
* http://doc.spip.org/@generer_url_ecrire_document
*/
function urls_generer_url_document_dist($id, $args = '', $ancre = '', $public = null, $connect = '')
{
include_spip('inc/autoriser');
include_spip('inc/documents');
if (!autoriser('voir', 'document', $id)) {
return '';
}
$r = sql_fetsel("fichier,distant", "spip_documents", "id_document=" . intval($id));
if (!$r) {
return '';
}
$f = $r['fichier'];
if ($r['distant'] == 'oui') {
return $f;
}
// Si droit de voir tous les docs, pas seulement celui-ci
// il est inutilement couteux de rajouter une protection
$r = autoriser('voir', 'document');
if ($r and $r !== 'htaccess') {
return get_spip_doc($f);
}
include_spip('inc/securiser_action');
// cette url doit etre publique !
$cle = calculer_cle_action($id . ',' . $f);
// renvoyer une url plus ou moins jolie
if ($GLOBALS['meta']['creer_htaccess']) {
return _DIR_RACINE . "docrestreint.api/{$id}/{$cle}/{$f}";
} else {
return get_spip_doc($f) . "?{$id}/{$cle}";
}
}
开发者ID:loorenzooo,项目名称:aslfc,代码行数:44,代码来源:generer_url_document.php
示例2: cfg_pre_traiter_cfg_fichier
/**
* Pré-traitement du fichier $nom
*
* @param string $nom
* @param Object $cfg
* @return Object
*/
function cfg_pre_traiter_cfg_fichier($nom, &$cfg){
include_spip('inc/flock');
// enlever <OLD>
$cfg->val[$nom] = str_replace('<OLD>','', $cfg->val[$nom]);
// effacement
if (_request('_cfg_delete')){
$supprimer_fichier = _COMPAT_CFG_192 ? 'cfg_supprimer_fichier' : 'supprimer_fichier';
if (!$supprimer_fichier(get_spip_doc($cfg->val[$nom]))) {
$cfg->messages['erreurs'][$nom] = _T('cfg:erreur_suppression_fichier', array('fichier'=>get_spip_doc($cfg->val[$nom])));
}
// ajout ou modification
} else {
$f = cfg_get_info_fichier_upload($nom);
if ($f['tmp_name']) {
// suppression de l'ancien fichier
$supprimer_fichier = _COMPAT_CFG_192 ? 'cfg_supprimer_fichier' : 'supprimer_fichier';
if ($cfg->val[$nom] && !$supprimer_fichier(get_spip_doc($cfg->val[$nom]))) {
$cfg->messages['erreurs'][$nom] = _T('cfg:erreur_suppression_fichier', array('fichier'=>get_spip_doc($cfg->val[$nom])));
} else {
if (!$fichier = cfg_ajoute_un_document($f['tmp_name'],$f['name'],$nom, 'config/'.$cfg->vue)){
$cfg->messages['erreurs'][$nom] = _T('cfg:erreur_copie_fichier', array('fichier'=>'config/'.$cfg->vue . '/' . $f['name']));
} else {
$cfg->val[$nom] = set_spip_doc($fichier);
}
}
}
}
return $cfg;
}
开发者ID:rhertzog,项目名称:lcs,代码行数:39,代码来源:cfg_fichier.php
示例3: action_tourner_post
/**
* Tourner un document
*
* http://code.spip.net/@action_tourner_post
*
* @param int $id_document
* @param int $angle
* angle de rotation en degre>0
* @return
*/
function action_tourner_post($id_document, $angle)
{
$row = sql_fetsel("fichier,extension", "spip_documents", "id_document=" . intval($id_document));
if (!$row) {
return;
}
include_spip('inc/charsets');
# pour le nom de fichier
include_spip('inc/documents');
// Fichier destination : on essaie toujours de repartir de l'original
$var_rot = $angle;
$effacer = false;
include_spip('inc/distant');
# pour copie_locale
$src = _DIR_RACINE . copie_locale(get_spip_doc($row['fichier']));
if (preg_match(',^(.*)-r(90|180|270)\\.([^.]+)$,', $src, $match)) {
$effacer = $src;
$src = $match[1] . '.' . $match[3];
$var_rot += intval($match[2]);
}
$var_rot = (360 + $var_rot) % 360;
// 0, 90, 180 ou 270
if ($var_rot > 0) {
$dest = preg_replace(',\\.[^.]+$,', '-r' . $var_rot . '$0', $src);
spip_log("rotation {$var_rot} {$src} : {$dest}");
include_spip('inc/filtres');
include_spip('public/parametrer');
// charger les fichiers fonctions #bugfix spip 2.1.0
$res = filtrer('image_rotation', $src, $var_rot);
$res = filtrer('image_format', $res, $row['extension']);
list($hauteur, $largeur) = taille_image($res);
$res = extraire_attribut($res, 'src');
include_spip('inc/getdocument');
deplacer_fichier_upload($res, $dest);
} else {
$dest = $src;
$size_image = @getimagesize($dest);
$largeur = $size_image[0];
$hauteur = $size_image[1];
}
// succes !
if ($largeur > 0 and $hauteur > 0) {
$set = array('fichier' => set_spip_doc($dest), 'largeur' => $largeur, 'hauteur' => $hauteur, 'distant' => 'non');
if ($taille = @filesize($dest)) {
$set['taille'] = $taille;
}
sql_updateq('spip_documents', $set, "id_document=" . intval($id_document));
if ($effacer) {
spip_log("rotation : j'efface {$effacer}");
spip_unlink($effacer);
}
// pipeline pour les plugins
pipeline('post_edition', array('args' => array('table' => 'spip_documents', 'table_objet' => 'documents', 'spip_table_objet' => 'spip_documents', 'type' => 'document', 'id_objet' => $id_document, 'champs' => array('rotation' => $angle, 'orientation' => $var_rot, 'fichier' => $row['fichier']), 'action' => 'tourner'), 'data' => $set));
}
}
开发者ID:xablen,项目名称:Semaine14_SPIP_test,代码行数:65,代码来源:tourner.php
示例4: BOUCLE_documents_portfoliohtml_4dc0f36e18dd7a26ebc382429cbc9835
function BOUCLE_documents_portfoliohtml_4dc0f36e18dd7a26ebc382429cbc9835(&$Cache, &$Pile, &$doublons, &$Numrows, $SP)
{
static $command = array();
static $connect;
$command['connect'] = $connect = '';
$doublons_index = array();
$in = array();
$in[] = 'png';
$in[] = 'jpg';
$in[] = 'gif';
// Initialise le(s) critère(s) doublons
if (!isset($doublons[$d = 'documents'])) {
$doublons[$d] = '';
}
if (!isset($command['table'])) {
$command['table'] = 'documents';
$command['id'] = '_documents_portfolio';
$command['from'] = array('documents' => 'spip_documents', 'L1' => 'spip_documents_liens', 'L2' => 'spip_types_documents');
$command['type'] = array();
$command['groupby'] = array();
$command['select'] = array("0+documents.titre AS num", "documents.date", "documents.id_document", "L2.mime_type", "L1.id_objet AS id_rubrique", "documents.titre", "documents.fichier");
$command['orderby'] = array('num', 'documents.date');
$command['join'] = array('L1' => array('documents', 'id_document'), 'L2' => array('documents', 'extension'));
$command['limit'] = '';
$command['having'] = array();
}
$command['where'] = array(quete_condition_statut('documents.statut', 'publie,prop,prepa', 'publie', ''), array('(documents.taille > 0 OR documents.distant=\'oui\')'), array('=', 'L1.id_objet', sql_quote(@$Pile[0]['id_rubrique'], '', 'bigint(21) NOT NULL DEFAULT \'0\'')), array('=', 'L1.objet', sql_quote('rubrique')), array('=', 'documents.mode', "'document'"), sql_in('documents.extension', sql_quote($in)), array('=', 'L1.vu', "'non'"), array(sql_in('documents.id_document', $doublons[$doublons_index[] = 'documents'], 'NOT')));
if (defined("_BOUCLE_PROFILER")) {
$timer = time() + microtime();
}
$t0 = "";
// REQUETE
$iter = IterFactory::create("SQL", $command, array('squelettes/inc/inc-rub-documents.html', 'html_4dc0f36e18dd7a26ebc382429cbc9835', '_documents_portfolio', 2, $GLOBALS['spip_lang']));
if (!$iter->err()) {
$SP++;
// RESULTATS
while ($Pile[$SP] = $iter->fetch()) {
foreach ($doublons_index as $k) {
$doublons[$k] .= "," . $Pile[$SP]['id_document'];
}
// doublons
$t0 .= ($t1 = strval(vider_url(urlencode_1738(generer_url_entite($Pile[$SP]['id_document'], 'document', '', '', true))))) !== '' ? '
<a href="' . $t1 . ('" type="' . interdire_scripts($Pile[$SP]['mime_type']) . '" onclick="location.href=\'' . parametre_url(vider_url(urlencode_1738(generer_url_entite($Pile[$SP]['id_rubrique'], 'rubrique', '', '', true))), 'id_document', $Pile[$SP]['id_document']) . '#documents_portfolio\';return false;"' . (($t2 = strval(interdire_scripts(@$Pile[0]['exposer']))) !== '' ? ' class="' . $t2 . '"' : '') . (($t2 = strval(interdire_scripts(couper(attribut_html(traiter_doublons_documents($doublons, typo(supprimer_numero($Pile[$SP]['titre']), "TYPO", $connect, $Pile[0]))), '80')))) !== '' ? ' title="' . $t2 . '"' : '') . '>' . interdire_scripts(inserer_attribut(inserer_attribut(filtrer('image_graver', filtrer('image_reduire', copie_locale(get_spip_doc($Pile[$SP]['fichier'])), '0', '100')), 'class', 'spip_vignette_portfolio'), 'alt', interdire_scripts(couper(attribut_html(traiter_doublons_documents($doublons, typo(supprimer_numero($Pile[$SP]['titre']), "TYPO", $connect, $Pile[0]))), '80')))) . '</a>
') : '';
}
$iter->free();
}
if (defined("_BOUCLE_PROFILER") and 1000 * ($timer = time() + microtime() - $timer) > _BOUCLE_PROFILER) {
spip_log(intval(1000 * $timer) . "ms BOUCLE_documents_portfolio @ squelettes/inc/inc-rub-documents.html", "profiler" . _LOG_AVERTISSEMENT);
}
return $t0;
}
开发者ID:xablen,项目名称:Semaine14_SPIP_test,代码行数:52,代码来源:html_4dc0f36e18dd7a26ebc382429cbc9835.php
示例5: action_supprimer_document_dist
function action_supprimer_document_dist($id_document = 0)
{
if (!$id_document) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$id_document = $securiser_action();
}
include_spip('inc/autoriser');
if (!autoriser('supprimer', 'document', $id_document)) {
spip_log("Echec : Suppression document {$id_document} interdite", _LOG_ERREUR);
return false;
}
// si c'etait une vignette, modifier le document source !
if ($source = sql_getfetsel('id_document', 'spip_documents', 'id_vignette=' . intval($id_document))) {
include_spip('action/editer_document');
document_modifier($source, array("id_vignette" => 0));
}
include_spip('inc/documents');
if (!($doc = sql_fetsel('*', 'spip_documents', 'id_document=' . intval($id_document)))) {
spip_log("Echec : Suppression document {$id_document} : le document n'existe pas en base", _LOG_ERREUR);
return false;
}
spip_log("Suppression du document {$id_document} (" . $doc['fichier'] . ")");
include_spip('action/editer_liens');
// Si c'est un document ayant une vignette, supprimer aussi la vignette
if ($doc['id_vignette']) {
action_supprimer_document_dist($doc['id_vignette']);
objet_dissocier(array('document' => $doc['id_vignette']), '*');
}
// Si c'est un document ayant des documents annexes (sous-titre, ...)
// les supprimer aussi
$annexes = array_map('reset', sql_allfetsel("id_document", "spip_documents_liens", "objet='document' AND id_objet=" . intval($id_document)));
foreach ($annexes as $id) {
action_supprimer_document_dist($id);
}
// dereferencer dans la base
objet_dissocier(array('document' => $id_document), '*', array('role' => '*'));
sql_delete('spip_documents', 'id_document=' . intval($id_document));
// Supprimer le fichier si le doc est local,
// et la copie locale si le doc est distant
if ($doc['distant'] == 'oui') {
include_spip('inc/distant');
if ($local = _DIR_RACINE . copie_locale($doc['fichier'], 'test')) {
spip_unlink($local);
}
} else {
spip_unlink(get_spip_doc($doc['fichier']));
}
pipeline('post_edition', array('args' => array('operation' => 'supprimer_document', 'action' => 'supprimer_document', 'table' => 'spip_documents', 'id_objet' => $id_document, 'document' => $doc), 'data' => null));
return true;
}
开发者ID:RadioCanut,项目名称:site-radiocanut,代码行数:50,代码来源:supprimer_document.php
示例6: action_verifier_documents_brises_dist
/**
* Verifier tous les fichiers brises
*
*/
function action_verifier_documents_brises_dist()
{
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
include_spip('inc/autoriser');
if (autoriser('administrer', 'mediatheque')) {
include_spip('inc/documents');
$res = sql_select('fichier,brise,id_document', 'spip_documents', "distant='non'");
while ($row = sql_fetch($res)) {
if (($brise = !@file_exists(get_spip_doc($row['fichier']))) != $row['brise']) {
sql_updateq('spip_documents', array('brise' => $brise), 'id_document=' . intval($row['id_document']));
}
}
}
}
开发者ID:genma,项目名称:spip_ynh,代码行数:19,代码来源:verifier_documents_brises.php
示例7: action_elix_sansson_reencode_dist
function action_elix_sansson_reencode_dist($arg = false)
{
if (!intval($arg)) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
}
$ps_ffmpeg = exec('ps -C ffmpeg', $retour, $retour_int);
if ($retour_int == 1 && count($retour) >= 3) {
return false;
}
include_spip('inc/documents');
$source = sql_fetsel('*', 'spip_documents', 'id_document=' . intval($arg));
if (isset($source['fichier'])) {
$chemin = get_spip_doc($source['fichier']);
$dest = _DIR_TMP . basename($source['fichier']);
$commande = 'ffmpeg -i ' . escapeshellarg($chemin) . ' -an -vcodec copy ' . escapeshellarg($dest);
$encodage = exec($commande, $retour, $retour_int);
if (file_exists($dest) && filesize($dest) > 0) {
@rename($chemin, "{$chemin}--.old");
$id_article = sql_getfetsel('id_objet', 'spip_documents_liens', 'id_document=' . intval($arg) . ' AND objet="article"');
$ajouter_doc = charger_fonction('ajouter_documents', 'action');
$objet = 'article';
$id_objet = $id_article;
$mode = 'document';
$files = array();
$filename = basename($dest);
$files[0]['tmp_name'] = $dest;
$files[0]['name'] = $filename;
$id_document_new = $ajouter_doc($arg, $files, $objet, $id_objet, $mode);
if (intval(reset($id_document_new)) > 0) {
// retablir le fichier !
if ($chemin) {
@rename("{$chemin}--.old", $chemin);
}
} else {
// supprimer vraiment le fichier initial
spip_unlink("{$chemin}--.old");
}
}
if (file_exists($dest)) {
spip_unlink($dest);
}
}
}
开发者ID:kent1D,项目名称:elix_sans_son,代码行数:44,代码来源:elix_sansson_reencode.php
示例8: formulaires_illustrer_document_charger_dist
function formulaires_illustrer_document_charger_dist($id_document)
{
include_spip('inc/documents');
$valeurs = sql_fetsel('id_document,mode,id_vignette,extension,media', 'spip_documents', 'id_document=' . intval($id_document));
if (!$valeurs) {
return array('editable' => false, 'id' => $id_document);
}
$valeurs['id'] = $id_document;
$valeurs['_hidden'] = "<input name='id_document' value='{$id_document}' type='hidden' />";
$valeurs['mode'] = 'vignette';
// pour les id dans le dom
$vignette = sql_fetsel('fichier,largeur,hauteur,id_document', 'spip_documents', 'id_document=' . $valeurs['id_vignette']);
$valeurs['vignette'] = get_spip_doc($vignette['fichier']);
$valeurs['hauteur'] = $vignette['hauteur'];
$valeurs['largeur'] = $vignette['largeur'];
$valeurs['id_vignette'] = $vignette['id_document'];
$valeurs['_pipeline'] = array('editer_contenu_objet', array('type' => 'illustrer_document', 'id' => $id_document));
return $valeurs;
}
开发者ID:xablen,项目名称:Semaine14_SPIP_test,代码行数:19,代码来源:illustrer_document.php
示例9: formulaires_changer_fichier_document_traiter_dist
function formulaires_changer_fichier_document_traiter_dist($id_document)
{
if (_request('copier_local')) {
$copier_local = charger_fonction('copier_local', 'action');
$res = array('editable' => true);
if (($err = $copier_local($id_document)) === true) {
$res['message_ok'] = _T('medias:document_copie_locale_succes');
} else {
$res['message_erreur'] = $err;
}
} else {
// liberer le nom de l'ancien fichier pour permettre le remplacement par un fichier du meme nom
if ($ancien_fichier = sql_getfetsel('fichier', 'spip_documents', 'id_document=' . intval($id_document)) and @file_exists($f = get_spip_doc($ancien_fichier))) {
spip_unlink($f);
}
$traiter = charger_fonction('traiter', 'formulaires/joindre_document');
$res = $traiter($id_document);
}
return $res;
}
开发者ID:xablen,项目名称:Semaine14_SPIP_test,代码行数:20,代码来源:changer_fichier_document.php
示例10: action_supprimer_document_dist
function action_supprimer_document_dist($id_document) {
include_spip('inc/autoriser');
if (!autoriser('supprimer','document',$id_document))
return false;
include_spip('inc/documents');
if (!$doc = sql_fetsel('*', 'spip_documents', 'id_document='.$id_document))
return false;
spip_log("Suppression du document $id_document (".$doc['fichier'].")");
// Si c'est un document ayant une vignette, supprimer aussi la vignette
if ($doc['id_vignette']) {
action_supprimer_document_dist($doc['id_vignette']);
sql_delete('spip_documents_liens', 'id_document='.$doc['id_vignette']);
}
// Supprimer le fichier si le doc est local,
// et la copie locale si le doc est distant
if ($doc['distant'] == 'oui') {
include_spip('inc/distant');
if ($local = copie_locale($doc['fichier'],'test'))
spip_unlink($local);
}
else spip_unlink(get_spip_doc($doc['fichier']));
sql_delete('spip_documents', 'id_document='.$id_document);
pipeline('post_edition',
array(
'args' => array(
'operation' => 'supprimer_document',
'table' => 'spip_documents',
'id_objet' => $id_document
),
'data' => null
)
);
}
开发者ID:rhertzog,项目名称:lcs,代码行数:39,代码来源:supprimer_document.php
示例11: document_modifier
/**
* Enregistre une revision de document.
* $set est un contenu (par defaut on prend le contenu via _request())
*
* @param int $id_document
* @param array|bool $set
*/
function document_modifier($id_document, $set = false)
{
include_spip('inc/modifier');
include_spip('inc/filtres');
// champs normaux
$champs = collecter_requests(objet_info('document', 'champs_editables'), array('parents', 'ajout_parents'), $set);
$invalideur = "";
$indexation = false;
// Si le document est publie, invalider les caches et demander sa reindexation
$t = sql_getfetsel("statut", "spip_documents", 'id_document=' . intval($id_document));
if ($t == 'publie') {
$invalideur = "id='id_document/{$id_document}'";
$indexation = true;
}
$ancien_fichier = "";
// si le fichier est modifie, noter le nom de l'ancien pour faire le menage
if (isset($champs['fichier'])) {
$ancien_fichier = sql_getfetsel('fichier', 'spip_documents', 'id_document=' . intval($id_document));
}
if ($err = objet_modifier_champs('document', $id_document, array('invalideur' => $invalideur, 'indexation' => $indexation), $champs)) {
return $err;
}
// nettoyer l'ancien fichier si necessaire
if ($champs['fichier'] and $ancien_fichier and $ancien_fichier !== $champs['fichier'] and @file_exists($f = get_spip_doc($ancien_fichier))) {
spip_unlink($f);
}
// Changer le statut du document ?
// le statut n'est jamais fixe manuellement mais decoule de celui des objets lies
$champs = collecter_requests(array('parents', 'ajouts_parents'), array(), $set);
if (document_instituer($id_document, $champs)) {
//
// Post-modifications
//
// Invalider les caches
include_spip('inc/invalideur');
suivre_invalideur("id='id_document/{$id_document}'");
}
}
开发者ID:loorenzooo,项目名称:aslfc,代码行数:45,代码来源:editer_document.php
示例12: vignette_revision
function vignette_revision($id, $data, $type, $ref) {
$s = sql_fetsel("*","spip_documents","id_document=".intval($id));
if (!is_array($s))
return false;
include_spip('inc/modifier');
include_spip('inc/documents');
// Chargement d'un nouveau doc ?
if ($data['vignette']) {
define('FILE_UPLOAD', true);
if(is_numeric($s['id_vignette']) && ($s['id_vignette']>0)){
spip_log('suppression de la vignette');
// Suppression du document
$vignette = sql_getfetsel('fichier', 'spip_documents', 'id_document='.intval($s['id_vignette']));
if (@file_exists($f = get_spip_doc($vignette))) {
spip_log("efface $f");
supprimer_fichier($f);
}
sql_delete('spip_documents', 'id_document='.intval($s['id_vignette']));
sql_delete('spip_documents_liens', 'id_document='.intval($s['id_vignette']));
pipeline('post_edition',
array(
'args' => array(
'operation' => 'supprimer_document',
'table' => 'spip_documents',
'id_objet' => $s['id_vignette']
),
'data' => null
)
);
// On remet l'id_vignette a 0
revision_document($s['id_document'], array('id_vignette'=>0));
}
// Ajout du document comme vignette
$ajouter_documents = charger_fonction('ajouter_documents', 'inc');
$arg = $data['vignette'];
check_upload_error($arg['error']);
$x = $ajouter_documents($arg['tmp_name'], $arg['name'],'','', 'vignette', $id, $actifs);
}else
// Suppression de la vignette ?
if ($wid = array_pop($ref)
AND $_POST['content_'.$wid.'_vignette_supprimer'] == 'on') {
if(is_numeric($s['id_vignette']) && ($s['id_vignette']>0)){
// Suppression du document
$vignette = sql_getfetsel('fichier', 'spip_documents', 'id_document='.intval($s['id_vignette']));
if (@file_exists($f = get_spip_doc($vignette))) {
spip_log("efface $f");
supprimer_fichier($f);
}
sql_delete('spip_documents', 'id_document='.intval($s['id_vignette']));
sql_delete('spip_documents_liens', 'id_document='.intval($s['id_vignette']));
pipeline('post_edition',
array(
'args' => array(
'operation' => 'supprimer_document',
'table' => 'spip_documents',
'id_objet' => $s['id_vignette']
),
'data' => null
)
);
// On remet l'id_vignette a 0
revision_document($s['id_document'], array('id_vignette'=>0));
}
}
return true;
}
开发者ID:rhertzog,项目名称:lcs,代码行数:71,代码来源:crayons.php
示例13: image_du_document
function image_du_document($document)
{
$e = $document['extension'];
if (strpos($GLOBALS['meta']['formats_graphiques'], $e) !== false and (!test_espace_prive() or $GLOBALS['meta']['creer_preview'] == 'oui') and $document['fichier']) {
if ($document['distant'] == 'oui') {
$image = _DIR_RACINE . copie_locale($document['fichier']);
} else {
$image = get_spip_doc($document['fichier']);
}
if (@file_exists($image)) {
return $image;
}
}
return '';
}
开发者ID:loorenzooo,项目名称:aslfc,代码行数:15,代码来源:documents.php
示例14: action_acceder_document_dist
function action_acceder_document_dist() {
include_spip('inc/documents');
// $file exige pour eviter le scan id_document par id_document
$f = rawurldecode(_request('file'));
$file = get_spip_doc($f);
$arg = rawurldecode(_request('arg'));
$status = $dcc = false;
if (strpos($f,'../') !== false
OR preg_match(',^\w+://,', $f)) {
$status = 403;
}
else if (!file_exists($file) OR !is_readable($file)) {
$status = 404;
} else {
$where = "documents.fichier=".sql_quote(set_spip_doc($file))
. ($arg ? " AND documents.id_document=".intval($arg): '');
$doc = sql_fetsel("documents.id_document, documents.titre, documents.fichier, types.mime_type, types.inclus, documents.extension", "spip_documents AS documents LEFT JOIN spip_types_documents AS types ON documents.extension=types.extension",$where);
if (!$doc) {
$status = 404;
} else {
// ETag pour gerer le status 304
$ETag = md5($file . ': '. filemtime($file));
if (isset($_SERVER['HTTP_IF_NONE_MATCH'])
AND $_SERVER['HTTP_IF_NONE_MATCH'] == $ETag) {
http_status(304); // Not modified
exit;
} else {
header('ETag: '.$ETag);
}
//
// Verifier les droits de lecture du document
// en controlant la cle passee en argument
//
include_spip('inc/securiser_action');
$cle = _request('cle');
if (!verifier_cle_action($doc['id_document'].','.$f, $cle)) {
spip_log("acces interdit $cle erronee");
$status = 403;
}
}
}
switch($status) {
case 403:
include_spip('inc/minipres');
echo minipres();
break;
case 404:
http_status(404);
include_spip('inc/minipres');
echo minipres(_T('erreur').' 404',
_T('info_document_indisponible'));
break;
default:
header("Content-Type: ". $doc['mime_type']);
// pour les images ne pas passer en attachment
// sinon, lorsqu'on pointe directement sur leur adresse,
// le navigateur les downloade au lieu de les afficher
if ($doc['inclus']=='non') {
$f = basename($file);
// ce content-type est necessaire pour eviter des corruptions de zip dans ie6
header('Content-Type: application/octet-stream');
header("Content-Disposition: attachment; filename=\"$f\";");
header("Content-Transfer-Encoding: binary");
// fix for IE catching or PHP bug issue
header("Pragma: public");
header("Expires: 0"); // set expiration time
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
}
if ($cl = filesize($file))
header("Content-Length: ". $cl);
readfile($file);
break;
}
}
开发者ID:rhertzog,项目名称:lcs,代码行数:92,代码来源:acceder_document.php
示例15: boutons_rotateurs
function boutons_rotateurs($document, $type, $id, $id_document, $script) {
global $spip_lang_right;
$process = $GLOBALS['meta']['image_process'];
// bloc rotation de l'image
// si c'est une image, qu'on sait la faire tourner, qu'elle
// n'est pas distante, qu'elle est bien presente dans IMG/
// qu'elle n'a pas de vignette perso ; et qu'on a la bibli !
if ($document['distant']!='oui'
AND in_array($document['extension'], array('gif', 'jpg', 'png'))
AND (strpos($GLOBALS['meta']['formats_graphiques'], $document['extension'])!==false)
AND ($process == 'imagick'
OR $process == 'gd2'
OR $process == 'convert'
OR $process == 'netpbm')
AND @file_exists(get_spip_doc($document['fichier']))
) {
return "\n<div class='verdana1' style='float: $spip_lang_right; text-align: $spip_lang_right;'>" .
bouton_tourner_document($id, $id_document, $script, -90, $type, 'tourner-gauche-10.gif', _T('image_tourner_gauche')) .
bouton_tourner_document($id, $id_document, $script, 90, $type, 'tourner-droite-10.gif', _T('image_tourner_droite')) .
bouton_tourner_document($id, $id_document, $script, 180, $type, 'tourner-demitour-10.gif', _T('image_tourner_180')) .
"</div>\n";
}
}
开发者ID:rhertzog,项目名称:lcs,代码行数:29,代码来源:tourner.php
示例16: formulaires_editer_document_traiter_dist
function formulaires_editer_document_traiter_dist($id_document = 'new', $id_parent = '', $retour = '', $lier_trad = 0, $config_fonc = 'documents_edit_config', $row = array(), $hidden = '')
{
if (is_null(_request('parents'))) {
set_request('parents', array());
}
// verifier les infos de taille et dimensions sur les fichiers locaux
// cas des maj de fichier directes par ftp
foreach (array('taille', 'largeur', 'hauteur') as $c) {
if ($v = _request("_{$c}_modif") and !_request($c)) {
set_request($c, $v);
}
}
$res = formulaires_editer_objet_traiter('document', $id_document, $id_parent, $lier_trad, $retour, $config_fonc, $row, $hidden);
set_request('parents');
$autoclose = "<script type='text/javascript'>if (window.jQuery) jQuery.modalboxclose();</script>";
if (_request('copier_local') or _request('joindre_upload') or _request('joindre_ftp') or _request('joindre_distant') or _request('joindre_zip')) {
$autoclose = "";
if (_request('copier_local')) {
$copier_local = charger_fonction('copier_local', 'action');
$res = array('editable' => true);
if (($err = $copier_local($id_document)) === true) {
$res['message_ok'] = (isset($res['message_ok']) ? $res['message_ok'] . '<br />' : '') . _T('medias:document_copie_locale_succes');
} else {
$res['message_erreur'] = (isset($res['message_erreur']) ? $res['message_erreur'] . '<br />' : '') . $err;
}
set_request('credits');
// modifie par la copie locale
} else {
// liberer le nom de l'ancien fichier pour permettre le remplacement par un fichier du meme nom
if ($ancien_fichier = sql_getfetsel('fichier', 'spip_documents', 'id_document=' . intval($id_document)) and !tester_url_absolue($ancien_fichier) and @file_exists($rename = get_spip_doc($ancien_fichier))) {
@rename($rename, "{$rename}--.old");
}
$traiter = charger_fonction('traiter', 'formulaires/joindre_document');
$res2 = $traiter($id_document);
if (isset($res2['message_erreur'])) {
$res['message_erreur'] = $res2['message_erreur'];
// retablir le fichier !
if ($rename) {
@rename("{$rename}--.old", $rename);
}
} else {
spip_unlink("{$rename}--.old");
}
}
// on annule les saisies largeur/hauteur : l'upload a pu charger les siens
set_request('largeur');
set_request('hauteur');
} else {
// regarder si une demande de rotation a eu lieu
// c'est un bouton image, dont on a pas toujours le name en request, on fait avec
$angle = 0;
if (_request('tournerL90') or _request('tournerL90_x')) {
$angle = -90;
}
if (_request('tournerR90') or _request('tournerR90_x')) {
$angle = 90;
}
if (_request('tourner180') or _request('tourner180_x')) {
$angle = 180;
}
if ($angle) {
$autoclose = "";
$tourner = charger_fonction('tourner', 'action');
action_tourner_post($id_document, $angle);
}
}
if (!isset($res['redirect'])) {
$res['editable'] = true;
}
if (!isset($res['message_erreur'])) {
$res['message_ok'] = _T('info_modification_enregistree') . $autoclose;
}
if ($res['message_ok']) {
$res['message_ok'] .= '<script type="text/javascript">if (window.jQuery) ajaxReload("document_infos");</script>';
}
return $res;
}
开发者ID:RadioCanut,项目名称:site-radiocanut,代码行数:77,代码来源:editer_document.php
示例17: massicoter_logo_document
/**
* Massicoter un logo document
*
* Traitement automatique sur les balises #LOGO_DOCUMENT
*
* @param string $fichier : Le logo
*
* @return string : Un logo massicoté
*/
function massicoter_logo_document($logo, $doc = array())
{
include_spip('inc/filtres');
include_spip('inc/filtres_images_mini');
/* S'il n'y a pas de fichier dans la pile, on va le chercher dans
la table documents */
if (!isset($doc['fichier'])) {
include_spip('base/abstract_sql');
$rows = sql_allfetsel('fichier, extension', 'spip_documents', 'id_document=' . intval($doc['id_document']));
$doc['fichier'] = $rows[0]['fichier'];
$doc['extension'] = $rows[0]['extension'];
}
/* Si le document en question n'est pas une image, on ne fait rien */
if (!$logo or preg_match('/^(jpe?g|png|gif)$/i', $doc['extension']) === 0) {
return $logo;
}
/* S'il y a un lien sur le logo, on le met de côté pour le
remettre après massicotage */
if (preg_match('#(<a.*?>)<img.*$#', $logo) === 1) {
$lien = preg_replace('#(<a.*?>)<img.*$#', '$1', $logo);
}
$fichier = extraire_attribut($logo, 'src');
/* On se débarasse d'un éventuel query string */
$fichier = preg_replace('#\\?[0-9]+#', '', $fichier);
list($largeur_logo, $hauteur_logo) = getimagesize($fichier);
$balise_img = charger_filtre('balise_img');
$fichier_massicote = massicoter_document(get_spip_doc($doc['fichier']));
/* Comme le logo reçu en paramètre peut avoir été réduit grâce aux
paramètres de la balise LOGO_, il faut s'assurer que l'image
qu'on renvoie fait bien la même taille que le logo qu'on a
reçu. */
$balise = image_reduire($balise_img($fichier_massicote, extraire_attribut($logo, 'alt'), extraire_attribut($logo, 'class')), $largeur_logo, $hauteur_logo);
if (isset($lien)) {
$balise = $lien . $balise . '</a>';
}
return $balise;
}
开发者ID:RadioCanut,项目名称:site-radiocanut,代码行数:46,代码来源:massicot_fonctions.php
示例18: BOUCLE_logo_art_dochtml_d7ab7eee0b09f43b71ae8cf8a6406a91
function BOUCLE_logo_art_dochtml_d7ab7eee0b09f43b71ae8cf8a6406a91(&$Cache, &$Pile, &$doublons, &$Numrows, $SP)
{
static $command = array();
static $connect;
$command['connect'] = $connect = '';
if (!isset($command['table'])) {
$command['table'] = 'documents';
$command['id'] = '_logo_art_doc';
$command['from'] = array('documents' => 'spip_documents', 'L1' => 'spip_documents_liens');
$command['type'] = array();
$command['groupby'] = array();
$command['select'] = array("documents.fichier", "documents.titre", "L1.id_objet AS id_article", "documents.descriptif");
$command['orderby'] = array();
$command['join'] = array('L1' => array('documents', 'id_document'));
$command['limit'] = '';
$command['having'] = array();
}
$command['where'] = array(quete_condition_statut('documents.statut', 'publie,prop,prepa', 'publie', ''), array('IN', 'documents.mode', '(\'image\',\'document\')'), array('(documents.taille > 0 OR documents.distant=\'oui\')'), array('=', 'L1.id_objet', sql_quote($Pile[$SP]['id_article'], '', 'bigint(21) NOT NULL DEFAULT \'0\'')), array('=', 'L1.objet', sql_quote('article')), array('=', 'documents.titre', "'Annonce'"));
if (defined("_BOUCLE_PROFILER")) {
$timer = time() + microtime();
}
$t0 = "";
// REQUETE
$iter = IterFactory::create("SQL", $command, array('squelettes/inc/inc-annonces.html', 'html_d7ab7eee0b09f43b71ae8cf8a6406a91', '_logo_art_doc', 41, $GLOBALS['spip_lang']));
if (!$iter->err()) {
$SP++;
// RESULTATS
while ($Pile[$SP] = $iter->fetch()) {
$t0 .= '
' . (($t1 = strval(interdire_scripts(inserer_attribut(filtrer('image_graver', filtrer('image_reduire', get_spip_doc($Pile[$SP]['fichier']), '150', '0')), 'alt', interdire_scripts(attribut_html(couper(typo(supprimer_numero($Pile[$SP]['titre']), "TYPO", $connect, $Pile[0]), '80'))))))) !== '' ? '<a href="' . vider_url(urlencode_1738(generer_url_entite($Pile[$SP]['id_article'], 'article', '', '', true))) . '"' . (($t2 = strval(interdire_scripts(attribut_html(propre($Pile[$SP]['descriptif'], $connect, $Pile[0]))))) !== '' ? ' title="' . $t2 . '"' : '') . '>' . $t1 . '</a>' : '') . '
';
}
$iter->free();
}
if (defined("_BOUCLE_PROFILER") and 1000 * ($timer = time() + microtime() - $timer) > _BOUCLE_PROFILER) {
spip_log(intval(1000 * $timer) . "ms BOUCLE_logo_art_doc @ squelettes/inc/inc-annonces.html", "profiler" . _LOG_AVERTISSEMENT);
}
return $t0;
}
开发者ID:xablen,项目名称:Semaine14_SPIP_test,代码行数:39,代码来源:html_d7ab7eee0b09f43b71ae8cf8a6406a91.php
示例19: fixer_fichier_upload
/**
* Tester le type de document
*
* - le document existe et n'est pas de taille 0 ?
* - interdit a l'upload ?
* - quelle extension dans spip_types_documents ?
* - est-ce "inclus" comme une image ?
*
* Le zipper si necessaire
*
* @param array $file
* Au format $_FILES
* @param string $mode
* Mode d'inclusion du fichier, si connu
* @return array
*/
function fixer_fichier_upload($file, $mode = '')
{
/**
* On vérifie que le fichier existe et qu'il contient quelque chose
*/
if (is_array($row = verifier_upload_autorise($file['name'], $mode))) {
if (!isset($row['autozip'])) {
$row['fichier'] = copier_document($row['extension'], $file['name'], $file['tmp_name']);
/**
* On vérifie que le fichier a une taille
* si non, on le supprime et on affiche une erreur
*/
if ($row['fichier'] && !($taille = @intval(filesize(get_spip_doc($row['fichier']))))) {
spip_log("Echec copie du fichier " . $file['tmp_name'] . " (taille de fichier indéfinie)");
spip_unlink(get_spip_doc($row['fichier']));
return _T('medias:erreur_copie_fichier', array('nom' => $file['tmp_name']));
} else {
return $row;
}
} else {
unset($row['autozip']);
$ext = 'zip';
if (!($tmp_dir = tempnam(_DIR_TMP, 'tmp_upload'))) {
return false;
}
spip_unlink($tmp_dir);
@mkdir($tmp_dir);
include_spip('inc/charsets');
$tmp = $tmp_dir . '/' . translitteration($file['name']);
$file['name'] .= '.' . $ext;
# conserver l'extension dans le nom de fichier, par exemple toto.js => toto.js.zip
// deplacer le fichier tmp_name dans le dossier tmp
deplacer_fichier_upload($file['tmp_name'], $tmp, true);
include_spip('inc/pclzip');
$source = _DIR_TMP . basename($tmp_dir) . '.' . $ext;
$archive = new PclZip($source);
$v_list = $archive->create($tmp, PCLZIP_OPT_REMOVE_PATH, $tmp_dir, PCLZIP_OPT_ADD_PATH, '');
effacer_repertoire_temporaire($tmp_dir);
if (!$v_
|
请发表评论