Esempio n. 1
0
function icone_visiter_header_prive($flux) {
global $spip_lang_left,$spip_lang_right;
	$chercher_logo = charger_fonction('chercher_logo', 'inc');
	if ($r = $chercher_logo(0, 'id_syndic', 'on'))  {
		list($fid, $dir, $nom, $format) = $r;
		// pour javascript...
		include_spip('inc/filtres_images');
		if(defined('_SPIP19300')) {
			include_spip('inc/filtres_images_mini'); // pour SPIP 2.1
			$r = image_reduire("<img src='$fid' alt='' style='margin:0;' />", 46, 46);
			$r = "<span style='height:48px; margin:0;'>$r</span>";
			$q = 'span.icon_fond:last';
		} else {
			$r = image_reduire("<img src='$fid' alt='' style='margin:0;' />", 48, 48);
			$r = addslashes("<span style='height:48px; margin:4px;'>$r</span>");
			$q = 'img[@src*=visiter]';
		}
	} else return $flux;
	$r = str_replace('/', '\/', $r);
	return $flux. <<<JAVASCRIPT
<script type="text/javascript"><!--
// des que le DOM est pret...
if (window.jQuery) jQuery(document).ready(function(){
	jQuery("$q").hide()
	.after("$r");
});
//--></script>
JAVASCRIPT;
}
Esempio n. 2
0
function inc_informer_dist($id, $col, $exclus, $rac, $type, $do = 'aff')
{
    include_spip('inc/texte');
    if ($type == "rubrique") {
        $row = sql_fetsel("titre, descriptif", "spip_rubriques", "id_rubrique = {$id}");
        if ($row) {
            $titre = typo($row["titre"]);
            $descriptif = propre($row["descriptif"]);
        } else {
            $titre = _T('info_racine_site');
        }
    } else {
        $titre = '';
    }
    $res = '';
    if ($type == "rubrique" and $GLOBALS['spip_display'] != 1 and isset($GLOBALS['meta']['image_process'])) {
        if ($GLOBALS['meta']['image_process'] != "non") {
            $chercher_logo = charger_fonction('chercher_logo', 'inc');
            if ($res = $chercher_logo($id, 'id_rubrique', 'on')) {
                list($fid, $dir, $nom, $format) = $res;
                include_spip('inc/filtres_images_mini');
                $res = image_reduire("<img src='{$fid}' alt='' />", 100, 48);
                if ($res) {
                    $res = "<div style='float: " . $GLOBALS['spip_lang_right'] . "; margin-" . $GLOBALS['spip_lang_right'] . ": -5px; margin-top: -5px;'>{$res}</div>";
                }
            }
        }
    }
    $rac = spip_htmlentities($rac);
    # ce lien provoque la selection (directe) de la rubrique cliquee
    # et l'affichage de son titre dans le bandeau
    $titre = strtr(str_replace("'", "&#8217;", str_replace('"', "&#34;", textebrut($titre))), "\n\r", "  ");
    $js_func = $do . '_selection_titre';
    return "<div style='display: none;'>" . "<input type='text' id='" . $rac . "_sel' value='{$id}' />" . "<input type='text' id='" . $rac . "_sel2' value=\"" . entites_html($titre) . "\" />" . "</div>" . "<div class='informer' style='padding: 5px; border-top: 0px;'>" . (!$res ? '' : $res) . "<p><b>" . safehtml($titre) . "</b></p>" . (!$descriptif ? '' : "<div>" . safehtml($descriptif) . "</div>") . "<div style='text-align: " . $GLOBALS['spip_lang_right'] . ";'>" . "<input type='submit' class='fondo' value='" . _T('bouton_choisir') . "'\nonclick=\"{$js_func}('{$titre}',{$id},'selection_rubrique','id_parent'); return false;\" />" . "</div>" . "</div>";
}
Esempio n. 3
0
function inc_informer_auteur_dist($id)
{
	global $spip_display,$spip_lang_right ;

	include_spip('inc/presentation');
	include_spip('inc/formater_auteur');

	$row = sql_fetsel("*", "spip_auteurs", "id_auteur = $id");
	if ($row) {
		$nom = typo($row["nom"]);
		$bio = propre($row["bio"]);
		$mail = formater_auteur_mail($row, $id);
		$nb = sql_countsel("spip_auteurs_articles", "id_auteur=$id");
		if ($nb > 1)
		  $nb = $nb . "&nbsp;" . _T('info_article_2');
		else if($nb == 1)
		  $nb = "1&nbsp;" . _T('info_article');
		else $nb = "&nbsp;";
	} else {
		$nom = "<span style='color:red'>"
			. _T('texte_vide')
			. '</span>';
		$bio = $mail = $nb = '';
	}
	$res = '';
	if ($spip_display != 1 AND $spip_display!=4 AND $GLOBALS['meta']['image_process'] != "non") {
		$chercher_logo = charger_fonction('chercher_logo', 'inc');
		if ($res = $chercher_logo($id, 'id_auteur', 'on'))  {
			list($fid, $dir, $n, $format) = $res;
			include_spip('inc/filtres_images_mini');
			$res = image_reduire("<img src='$fid' alt='' />", 100, 48);
			if ($res)
				$res =  "<div style='float: $spip_lang_right; margin-$spip_lang_right: -5px; margin-top: -5px;'>$res</div>";
		}
	}

	return "<div class='informer-auteur'>"
	. (!$res ? '' : $res)
	. "<div><a href='"
	. generer_url_ecrire('auteur_infos', "id_auteur=$id")
	. "'>"
	. bonhomme_statut($row)
	. "</a> "
	. $mail
	. " <b>"
	. $nom
	. "</b><br />"
	. $nb
	. "</div><br />"
	. "<div>$bio</div>"
	.  "</div>";
}
/**
 * Afficher l'arborescence du dossier squelette
 *
 * @param string $path_base
 * @param string $current_file
 * @return string
 */
function skeleditor_afficher_dir_skel($path_base,$current_file) {
	include_spip('inc/skeleditor');
	include_spip('inc/presentation');
	$file_list = skeleditor_files_editables($path_base);
	$current_file = substr($current_file,strlen($path_base));

  $output = "<div id='arbo'><div class='dir'>\n";
	$init_dir = $current_dir = "";
	foreach($file_list as $file){
		$dir = substr(dirname($file),strlen($path_base));
		$file = substr($file,strlen($path_base));

		if ($dir != $current_dir)
			$output .= skeleditor_tree_open_close_dir($current_dir,$dir,$current_file);

		$class="fichier";
		$readonly = false;
		if (!is_writable($path_base.$dir) OR !is_writable($path_base.$file)) {
			$readonly = true;
			$class .= " readonly";
		}

		$class .= ($file==$current_file?" on":'');

		$icon = "file";
		if (preg_match(',('._SE_EXTENSIONS_IMG.')$,',$file))
			$icon = "image";

		include_spip('inc/filtres_images_mini');
		$cadenas = ($readonly) ? "&nbsp;".inserer_attribut(image_reduire(chemin_image('cadenas-16.png'),12),'title',attribut_html(_T('texte_inc_meta_2'))) : "";

		$output .= "<a href='".generer_url_ecrire('skeleditor','f='.urlencode($f=$path_base.$file))."' class='$class'
			onclick=\"jQuery('#contenu > :first').ajaxReload({history:true,args:{f:'$f'}});return false;\">"
			. "<img src='"._DIR_PLUGIN_SKELEDITOR."images/se-$icon-16.png' alt='$icon' /> "
			.basename($file)
			.$cadenas
			. "</a>"
			;
	}
	$output .= skeleditor_tree_open_close_dir($current_dir,$init_dir,$current_file);
  $output .= "</div></div>\n";
  return $output;
}
/**
 * Crée l'affichage des listes de rubriques dans le privé
 *
 * @param int $collection
 *  L'identifiant numérique de la rubrique à lister
 * @param int $debut
 *  Le numéro de la pagination si paginé (> 500)
 * @param int $limite
 *  Le pas de pagination si paginé (> 500)
 * @return array $res
 *  Un tableau des sous rubriques
 */
function enfant_rub($collection, $debut = 0, $limite = 500)
{
    $voir_logo = (isset($GLOBALS['meta']['image_process']) and $GLOBALS['meta']['image_process'] != "non");
    $logo = "";
    if ($voir_logo) {
        $chercher_logo = charger_fonction('chercher_logo', 'inc');
        include_spip('inc/filtres_images_mini');
    }
    $res = array();
    $result = sql_select("id_rubrique, id_parent, titre, descriptif, lang ", "spip_rubriques", "id_parent={$collection}", '', '0+titre,titre', "{$debut},{$limite}");
    while ($row = sql_fetch($result)) {
        $id_rubrique = $row['id_rubrique'];
        $id_parent = $row['id_parent'];
        $titre = generer_info_entite($id_rubrique, 'rubrique', 'titre');
        // pour etre sur de passer par tous les traitements
        if ('' !== ($rang = recuperer_numero($row['titre']))) {
            $rang = "{$rang}. ";
        }
        if (autoriser('voir', 'rubrique', $id_rubrique)) {
            $les_sous_enfants = sous_enfant_rub($id_rubrique);
            changer_typo($row['lang']);
            $lang_dir = lang_dir($row['lang']);
            $descriptif = propre($row['descriptif']);
            if ($voir_logo) {
                if ($logo = $chercher_logo($id_rubrique, 'id_rubrique', 'on')) {
                    list($fid, $dir, $nom, $format) = $logo;
                    $logo = image_reduire("<img src='{$fid}' alt='' />", 48, 36);
                    if ($logo) {
                        $logo = inserer_attribut($logo, 'class', 'logo');
                    }
                }
            }
            $lib_bouton = (!acces_restreint_rubrique($id_rubrique) ? "" : http_img_pack('auteur-0minirezo-16.png', '', " width='16' height='16'", _T('image_administrer_rubrique'))) . " <a dir='{$lang_dir}'" . ($row['lang'] !== $GLOBALS['spip_lang'] ? " hreflang='" . $row['lang'] . "'" : '') . " href='" . generer_url_entite($id_rubrique, 'rubrique') . "'>" . $rang . $titre . "</a>";
            $titre = (is_string($logo) ? $logo : '') . bouton_block_depliable($lib_bouton, $les_sous_enfants ? false : -1, "enfants{$id_rubrique}");
            $res[] = debut_cadre_sous_rub($id_parent ? "rubrique-24.png" : "secteur-24.png", true, "", $titre) . (!$descriptif ? '' : "\n<div class='descriptif'>{$descriptif}</div>") . $les_sous_enfants . fin_cadre_sous_rub(true);
        }
    }
    changer_typo($GLOBALS['spip_lang']);
    # remettre la typo de l'interface pour la suite
    return $res;
}
function image_masque($im, $masque, $pos = "")
{
    // Passer, en plus de l'image d'origine,
    // une image de "masque": un fichier PNG24 transparent.
    // Le decoupage se fera selon la transparence du "masque",
    // et les couleurs seront eclaircies/foncees selon de couleur du masque.
    // Pour ne pas modifier la couleur, le masque doit etre en gris 50%.
    //
    // Si l'image source est plus grande que le masque, alors cette image est reduite a la taille du masque.
    // Sinon, c'est la taille de l'image source qui est utilisee.
    //
    // $pos est une variable libre, qui permet de passer left=..., right=..., bottom=..., top=...
    // dans ce cas, le masque est place a ces positions sur l'image d'origine,
    // et evidemment cette image d'origine n'est pas redimensionnee
    //
    // Positionnement horizontal: text-align=left, right, center
    // Positionnement vertical : vertical-align=top, bottom, middle
    // (les positionnements left, right, top, left sont relativement inutiles, mais coherence avec CSS)
    //
    // Choix du mode de fusion: mode=masque, normal, eclaircir, obscurcir, produit, difference, ecran, superposer, lumiere_dure, teinte, saturation, valeur
    // https://en.wikipedia.org/wiki/Blend_modes
    // masque: mode par defaut
    // normal: place la nouvelle image par dessus l'ancienne
    // eclaircir: place uniquement les points plus clairs
    // obscurcir: place uniquement les points plus fonc'es
    // produit: multiplie par le masque (points noirs rendent l'image noire, points blancs ne changent rien)
    // difference: remplit avec l'ecart entre les couleurs d'origine et du masque
    // ecran: effet inverse de 'produit' -> l'image resultante est plus claire
    // superposer: combine les modes 'produit' et 'ecran' -> les parties claires sont eclaircies, les parties sombres assombries.
    // lumiere_dure: equivalent a 'superposer', sauf que l'image du bas et du haut sont inversees.
    // teinte: utilise la teinte du masque
    // saturation: utilise la saturation du masque
    // valeur: utilise la valeur du masque
    $mode = "masque";
    $numargs = func_num_args();
    $arg_list = func_get_args();
    $variable = array();
    $texte = $arg_list[0];
    for ($i = 1; $i < $numargs; $i++) {
        if (($p = strpos($arg_list[$i], "=")) !== false) {
            $nom_variable = substr($arg_list[$i], 0, $p);
            $val_variable = substr($arg_list[$i], $p + 1);
            $variable["{$nom_variable}"] = $val_variable;
            $defini["{$nom_variable}"] = 1;
        }
    }
    if (isset($defini["mode"]) and $defini["mode"]) {
        $mode = $variable["mode"];
    }
    // utiliser _image_valeurs_trans pour accepter comme masque :
    // - une balise <img src='...' />
    // - une image avec un timestamp ?01234
    $mask = _image_valeurs_trans($masque, "source-image_masque", "png", null, true);
    if (!$mask) {
        return "";
    }
    $masque = $mask['fichier'];
    $pos = md5(serialize($variable) . $mask['date_src']);
    $fonction = array('image_masque', func_get_args());
    $image = _image_valeurs_trans($im, "masque-{$masque}-{$pos}", "png", $fonction);
    if (!$image) {
        return "";
    }
    $x_i = $image["largeur"];
    $y_i = $image["hauteur"];
    $im = $image["fichier"];
    $dest = $image["fichier_dest"];
    $creer = $image["creer"];
    // doit-on positionner l'image ?
    $placer = false;
    foreach (array("right", "left", "bottom", "top", "text-align", "vertical-align") as $pl) {
        if (isset($defini[$pl]) and $defini[$pl]) {
            $placer = true;
            break;
        }
    }
    if ($creer) {
        $im_m = $mask["fichier"];
        $x_m = $mask["largeur"];
        $y_m = $mask["hauteur"];
        $im2 = $mask["fonction_imagecreatefrom"]($masque);
        if ($mask["format_source"] == "gif" and function_exists('ImageCopyResampled')) {
            $im2_ = imagecreatetruecolor($x_m, $y_m);
            // Si un GIF est transparent,
            // fabriquer un PNG transparent
            // Conserver la transparence
            if (function_exists("imageAntiAlias")) {
                imageAntiAlias($im2_, true);
            }
            @imagealphablending($im2_, false);
            @imagesavealpha($im2_, true);
            @ImageCopyResampled($im2_, $im2, 0, 0, 0, 0, $x_m, $y_m, $x_m, $y_m);
            imagedestroy($im2);
            $im2 = $im2_;
        }
        if ($placer) {
            // On fabriquer une version "agrandie" du masque,
            // aux dimensions de l'image source
            // et on "installe" le masque dans cette image
            // ainsi: aucun redimensionnement
            $dx = 0;
            $dy = 0;
            if (isset($defini["right"]) and $defini["right"]) {
                $right = $variable["right"];
                $dx = $x_i - $x_m - $right;
            }
            if (isset($defini["bottom"]) and $defini["bottom"]) {
                $bottom = $variable["bottom"];
                $dy = $y_i - $y_m - $bottom;
            }
            if (isset($defini["top"]) and $defini["top"]) {
                $top = $variable["top"];
                $dy = $top;
            }
            if (isset($defini["left"]) and $defini["left"]) {
                $left = $variable["left"];
                $dx = $left;
            }
            if (isset($defini["text-align"]) and $defini["text-align"]) {
                $align = $variable["text-align"];
                if ($align == "right") {
                    $right = 0;
                    $dx = $x_i - $x_m;
                } else {
                    if ($align == "left") {
                        $left = 0;
                        $dx = 0;
                    } else {
                        if ($align = "center") {
                            $dx = round(($x_i - $x_m) / 2);
                        }
                    }
                }
            }
            if (isset($defini["vertical-align"]) and $defini["vertical-align"]) {
                $valign = $variable["vertical-align"];
                if ($valign == "bottom") {
                    $bottom = 0;
                    $dy = $y_i - $y_m;
                } else {
                    if ($valign == "top") {
                        $top = 0;
                        $dy = 0;
                    } else {
                        if ($valign = "middle") {
                            $dy = round(($y_i - $y_m) / 2);
                        }
                    }
                }
            }
            $im3 = imagecreatetruecolor($x_i, $y_i);
            @imagealphablending($im3, false);
            @imagesavealpha($im3, true);
            if ($mode == "masque") {
                $color_t = ImageColorAllocateAlpha($im3, 128, 128, 128, 0);
            } else {
                $color_t = ImageColorAllocateAlpha($im3, 128, 128, 128, 127);
            }
            imagefill($im3, 0, 0, $color_t);
            imagecopy($im3, $im2, $dx, $dy, 0, 0, $x_m, $y_m);
            imagedestroy($im2);
            $im2 = imagecreatetruecolor($x_i, $y_i);
            @imagealphablending($im2, false);
            @imagesavealpha($im2, true);
            imagecopy($im2, $im3, 0, 0, 0, 0, $x_i, $y_i);
            imagedestroy($im3);
            $x_m = $x_i;
            $y_m = $y_i;
        }
        $rapport = $x_i / $x_m;
        if ($y_i / $y_m < $rapport) {
            $rapport = $y_i / $y_m;
        }
        $x_d = ceil($x_i / $rapport);
        $y_d = ceil($y_i / $rapport);
        if ($x_i < $x_m or $y_i < $y_m) {
            $x_dest = $x_i;
            $y_dest = $y_i;
            $x_dec = 0;
            $y_dec = 0;
        } else {
            $x_dest = $x_m;
            $y_dest = $y_m;
            $x_dec = round(($x_d - $x_m) / 2);
            $y_dec = round(($y_d - $y_m) / 2);
        }
        $nouveau = _image_valeurs_trans(image_reduire($im, $x_d, $y_d), "");
        if (!is_array($nouveau)) {
            return "";
        }
        $im_n = $nouveau["fichier"];
        $im = $nouveau["fonction_imagecreatefrom"]($im_n);
        imagepalettetotruecolor($im);
        if ($nouveau["format_source"] == "gif" and function_exists('ImageCopyResampled')) {
            $im_ = imagecreatetruecolor($x_dest, $y_dest);
            // Si un GIF est transparent,
            // fabriquer un PNG transparent
            // Conserver la transparence
            if (function_exists("imageAntiAlias")) {
                imageAntiAlias($im_, true);
            }
            @imagealphablending($im_, false);
            @imagesavealpha($im_, true);
            @ImageCopyResampled($im_, $im, 0, 0, 0, 0, $x_dest, $y_dest, $x_dest, $y_dest);
            imagedestroy($im);
            $im = $im_;
        }
        $im_ = imagecreatetruecolor($x_dest, $y_dest);
        @imagealphablending($im_, false);
        @imagesavealpha($im_, true);
        $color_t = ImageColorAllocateAlpha($im_, 255, 255, 255, 127);
        imagefill($im_, 0, 0, $color_t);
        // calcul couleurs de chaque pixel selon les modes de fusion
        for ($x = 0; $x < $x_dest; $x++) {
            for ($y = 0; $y < $y_dest; $y++) {
                $rgb = ImageColorAt($im2, $x, $y);
                // image au dessus
                $a = $rgb >> 24 & 0xff;
                $r = $rgb >> 16 & 0xff;
                $g = $rgb >> 8 & 0xff;
                $b = $rgb & 0xff;
                $rgb2 = ImageColorAt($im, $x + $x_dec, $y + $y_dec);
                // image en dessous
                $a2 = $rgb2 >> 24 & 0xff;
                $r2 = $rgb2 >> 16 & 0xff;
                $g2 = $rgb2 >> 8 & 0xff;
                $b2 = $rgb2 & 0xff;
                if ($mode == "normal") {
                    $v = (127 - $a) / 127;
                    if ($v == 1) {
                        $r_ = $r;
                        $g_ = $g;
                        $b_ = $b;
                    } else {
                        $v2 = (127 - $a2) / 127;
                        if ($v + $v2 == 0) {
                            $r_ = $r2;
                            $g_ = $g2;
                            $b_ = $b2;
                        } else {
                            if ($v2 == 0) {
                                $r_ = $r;
                                $g_ = $g;
                                $b_ = $b;
                            } else {
                                if ($v == 0) {
                                    $r_ = $r2;
                                    $g_ = $g2;
                                    $b_ = $b2;
                                } else {
                                    $r_ = $r + ($r2 - $r) * $v2 * (1 - $v);
                                    $g_ = $g + ($g2 - $g) * $v2 * (1 - $v);
                                    $b_ = $b + ($b2 - $b) * $v2 * (1 - $v);
                                }
                            }
                        }
                    }
                    $a_ = min($a, $a2);
                } elseif (in_array($mode, array("produit", "difference", "superposer", "lumiere_dure", "ecran"))) {
                    if ($mode == "produit") {
                        $r = $r / 255 * $r2;
                        $g = $g / 255 * $g2;
                        $b = $b / 255 * $b2;
                    } elseif ($mode == "difference") {
                        $r = abs($r - $r2);
                        $g = abs($g - $g2);
                        $b = abs($b - $b2);
                    } elseif ($mode == "superposer") {
                        $r = $r2 < 128 ? 2 * $r * $r2 / 255 : 255 - 2 * (255 - $r) * (255 - $r2) / 255;
                        $g = $g2 < 128 ? 2 * $g * $g2 / 255 : 255 - 2 * (255 - $g) * (255 - $g2) / 255;
                        $b = $b2 < 128 ? 2 * $b * $b2 / 255 : 255 - 2 * (255 - $b) * (255 - $b2) / 255;
                    } elseif ($mode == "lumiere_dure") {
                        $r = $r < 128 ? 2 * $r * $r2 / 255 : 255 - 2 * (255 - $r2) * (255 - $r) / 255;
                        $g = $g < 128 ? 2 * $g * $g2 / 255 : 255 - 2 * (255 - $g2) * (255 - $g) / 255;
                        $b = $b < 128 ? 2 * $b * $b2 / 255 : 255 - 2 * (255 - $b2) * (255 - $b) / 255;
                    } elseif ($mode == "ecran") {
                        $r = 255 - (255 - $r) * (255 - $r2) / 255;
                        $g = 255 - (255 - $g) * (255 - $g2) / 255;
                        $b = 255 - (255 - $b) * (255 - $b2) / 255;
                    }
                    $r = max(0, min($r, 255));
                    $g = max(0, min($g, 255));
                    $b = max(0, min($b, 255));
                    // melange en fonction de la transparence du masque
                    $v = (127 - $a) / 127;
                    if ($v == 1) {
                        // melange complet
                        $r_ = $r;
                        $g_ = $g;
                        $b_ = $b;
                    } else {
                        $v2 = (127 - $a2) / 127;
                        if ($v + $v2 == 0) {
                            // ??
                            $r_ = $r2;
                            $g_ = $g2;
                            $b_ = $b2;
                        } else {
                            // pas de melange (transparence du masque)
                            $r_ = $r + ($r2 - $r) * $v2 * (1 - $v);
                            $g_ = $g + ($g2 - $g) * $v2 * (1 - $v);
                            $b_ = $b + ($b2 - $b) * $v2 * (1 - $v);
                        }
                    }
                    $a_ = $a2;
                } elseif ($mode == "eclaircir" or $mode == "obscurcir") {
                    $v = (127 - $a) / 127;
                    if ($v == 1) {
                        $r_ = $r;
                        $g_ = $g;
                        $b_ = $b;
                    } else {
                        $v2 = (127 - $a2) / 127;
                        if ($v + $v2 == 0) {
                            $r_ = $r2;
                            $g_ = $g2;
                            $b_ = $b2;
                        } else {
                            $r_ = $r + ($r2 - $r) * $v2 * (1 - $v);
                            $g_ = $g + ($g2 - $g) * $v2 * (1 - $v);
                            $b_ = $b + ($b2 - $b) * $v2 * (1 - $v);
                        }
                    }
                    if ($mode == "eclaircir") {
                        $r_ = max($r_, $r2);
                        $g_ = max($g_, $g2);
                        $b_ = max($b_, $b2);
                    } else {
                        $r_ = min($r_, $r2);
                        $g_ = min($g_, $g2);
                        $b_ = min($b_, $b2);
                    }
                    $a_ = min($a, $a2);
                } elseif (in_array($mode, array("teinte", "saturation", "valeur"))) {
                    include_spip("filtres/images_lib");
                    $hsv = _couleur_rgb2hsv($r, $g, $b);
                    // image au dessus
                    $h = $hsv["h"];
                    $s = $hsv["s"];
                    $v = $hsv["v"];
                    $hsv2 = _couleur_rgb2hsv($r2, $g2, $b2);
                    // image en dessous
                    $h2 = $hsv2["h"];
                    $s2 = $hsv2["s"];
                    $v2 = $hsv2["v"];
                    switch ($mode) {
                        case "teinte":
                            $rgb3 = _couleur_hsv2rgb($h, $s2, $v2);
                            break;
                        case "saturation":
                            $rgb3 = _couleur_hsv2rgb($h2, $s, $v2);
                            break;
                        case "valeur":
                            $rgb3 = _couleur_hsv2rgb($h2, $s2, $v);
                            break;
                    }
                    $r = $rgb3["r"];
                    $g = $rgb3["g"];
                    $b = $rgb3["b"];
                    // melange en fonction de la transparence du masque
                    $v = (127 - $a) / 127;
                    if ($v == 1) {
                        // melange complet
                        $r_ = $r;
                        $g_ = $g;
                        $b_ = $b;
                    } else {
                        $v2 = (127 - $a2) / 127;
                        if ($v + $v2 == 0) {
                            // ??
                            $r_ = $r2;
                            $g_ = $g2;
                            $b_ = $b2;
                        } else {
                            // pas de melange (transparence du masque)
                            $r_ = $r + ($r2 - $r) * $v2 * (1 - $v);
                            $g_ = $g + ($g2 - $g) * $v2 * (1 - $v);
                            $b_ = $b + ($b2 - $b) * $v2 * (1 - $v);
                        }
                    }
                    $a_ = $a2;
                } else {
                    $r_ = $r2 + 1 * ($r - 127);
                    $r_ = max(0, min($r_, 255));
                    $g_ = $g2 + 1 * ($g - 127);
                    $g_ = max(0, min($g_, 255));
                    $b_ = $b2 + 1 * ($b - 127);
                    $b_ = max(0, min($b_, 255));
                    $a_ = $a + $a2 - round($a * $a2 / 127);
                }
                $color = ImageColorAllocateAlpha($im_, $r_, $g_, $b_, $a_);
                imagesetpixel($im_, $x, $y, $color);
            }
        }
        _image_gd_output($im_, $image);
        imagedestroy($im_);
        imagedestroy($im);
        imagedestroy($im2);
    }
    $x_dest = largeur($dest);
    $y_dest = hauteur($dest);
    return _image_ecrire_tag($image, array('src' => $dest, 'width' => $x_dest, 'height' => $y_dest));
}
Esempio n. 7
0
function image_masque($im, $masque, $pos="") {
	// Passer, en plus de l'image d'origine,
	// une image de "masque": un fichier PNG24 transparent.
	// Le decoupage se fera selon la transparence du "masque",
	// et les couleurs seront eclaircies/foncees selon de couleur du masque.
	// Pour ne pas modifier la couleur, le masque doit etre en gris 50%.
	//
	// Si l'image source est plus grande que le masque, alors cette image est reduite a la taille du masque.
	// Sinon, c'est la taille de l'image source qui est utilisee.
	//
	// $pos est une variable libre, qui permet de passer left=..., right=..., bottom=..., top=...
	// dans ce cas, le pasque est place a ces positions sur l'image d'origine,
	// et evidemment cette image d'origine n'est pas redimensionnee
	// 
	// Positionnement horizontal: text-align=left, right, center
	// Positionnement vertical : vertical-align: top, bottom, middle
	// (les positionnements left, right, top, left sont relativement inutiles, mais coherence avec CSS)
	//
	// Choix du mode de fusion: mode=masque, normal, eclaircir, obscurcir, produit, difference
	// masque: mode par defaut
	// normal: place la nouvelle image par dessus l'ancienne
	// eclaircir: place uniquement les points plus clairs
	// obscurcir: place uniquement les points plus fonc'es
	// produit: multiplie par le masque (points noirs rendent l'image noire, points blancs ne changent rien)
	// difference: remplit avec l'ecart entre les couleurs d'origine et du masque

	$mode = "masque";


	$numargs = func_num_args();
	$arg_list = func_get_args();
	$texte = $arg_list[0];
	for ($i = 1; $i < $numargs; $i++) {
		if ( ($p = strpos($arg_list[$i],"=")) !==false) {
			$nom_variable = substr($arg_list[$i], 0, $p);
			$val_variable = substr($arg_list[$i], $p+1);
			$variable["$nom_variable"] = $val_variable;
			$defini["$nom_variable"] = 1;
		}
	}
	if ($defini["mode"]) $mode = $variable["mode"];

	$masque = find_in_path($masque);
	$pos = md5(serialize($variable).@filemtime($masque));

	$fonction = array('image_masque', func_get_args());
	$image = _image_valeurs_trans($im, "masque-$masque-$pos", "png",$fonction);
	if (!$image) return("");

	$x_i = $image["largeur"];
	$y_i = $image["hauteur"];
	
	$im = $image["fichier"];
	$dest = $image["fichier_dest"];
	
	$creer = $image["creer"];


	if ($defini["right"] OR $defini["left"] OR $defini["bottom"] OR $defini["top"] OR $defini["text-align"] OR $defini["vertical-align"]) {
		$placer = true;
	}
	else $placer = false;

	if ($creer) {
		
		$mask = _image_valeurs_trans($masque,"");
		if (!is_array($mask)) return("");
		$im_m = $mask["fichier"];
		$x_m = $mask["largeur"];
		$y_m = $mask["hauteur"];
	
		$im2 = $mask["fonction_imagecreatefrom"]($masque);
		if ($mask["format_source"] == "gif" AND function_exists('ImageCopyResampled')) { 
			$im2_ = imagecreatetruecolor($x_m, $y_m);
			// Si un GIF est transparent, 
			// fabriquer un PNG transparent  
			// Conserver la transparence 
			if (function_exists("imageAntiAlias")) imageAntiAlias($im2_,true); 
			@imagealphablending($im2_, false); 
			@imagesavealpha($im2_,true); 
			@ImageCopyResampled($im2_, $im2, 0, 0, 0, 0, $x_m, $y_m, $x_m, $y_m);
			imagedestroy($im2);
			$im2 = $im2_;
		}
		
		if ($placer) {
			// On fabriquer une version "agrandie" du masque,
			// aux dimensions de l'image source
			// et on "installe" le masque dans cette image
			// ainsi: aucun redimensionnement
			
			$dx = 0;
			$dy = 0;
			
			if ($defini["right"]) {
				$right = $variable["right"];
				$dx = ($x_i - $x_m) - $right;
			}
			if ($defini["bottom"]) {
				$bottom = $variable["bottom"];
				$dy = ($y_i - $y_m) - $bottom;
				}
			if ($defini["top"]) {
				$top = $variable["top"];
				$dy = $top;
			}
			if ($defini["left"]) {
				$left = $variable["left"];
				$dx = $left;
			}
			if ($defini["text-align"]) {
				$align = $variable["text-align"];
				if ($align == "right") {
					$right = 0;
					$dx = ($x_i - $x_m);
				} else if ($align == "left") {
					$left = 0;
					$dx = 0;
				} else if ($align = "center") {
					$dx = round( ($x_i - $x_m) / 2 ) ;
				}
			}
			if ($defini["vertical-align"]) {
				$valign = $variable["vertical-align"];
				if ($valign == "bottom") {
					$bottom = 0;
					$dy = ($y_i - $y_m);
				} else if ($valign == "top") {
					$top = 0;
					$dy = 0;
				} else if ($valign = "middle") {
					$dy = round( ($y_i - $y_m) / 2 ) ;
				}
			}
			
			
			$im3 = imagecreatetruecolor($x_i, $y_i);
			@imagealphablending($im3, false);
			@imagesavealpha($im3,true);
			if ($mode == "masque") $color_t = ImageColorAllocateAlpha( $im3, 128, 128, 128 , 0 );
			else $color_t = ImageColorAllocateAlpha( $im3, 128, 128, 128 , 127 );
			imagefill ($im3, 0, 0, $color_t);

			

			imagecopy ( $im3, $im2, $dx, $dy, 0, 0, $x_m, $y_m);	

			imagedestroy($im2);
			$im2 = imagecreatetruecolor($x_i, $y_i);
			@imagealphablending($im2, false);
			@imagesavealpha($im2,true);
			
			
			
			imagecopy ( $im2, $im3, 0, 0, 0, 0, $x_i, $y_i);			
			imagedestroy($im3);
			$x_m = $x_i;
			$y_m = $y_i;
		}
		
	
		$rapport = $x_i / $x_m;
		if (($y_i / $y_m) < $rapport ) {
			$rapport = $y_i / $y_m;
		}
			
		$x_d = ceil($x_i / $rapport);
		$y_d = ceil($y_i / $rapport);
		

		if ($x_i < $x_m OR $y_i < $y_m) {
			$x_dest = $x_i;
			$y_dest = $y_i;
			$x_dec = 0;
			$y_dec = 0;
		} else {
			$x_dest = $x_m;
			$y_dest = $y_m;
			$x_dec = round(($x_d - $x_m) /2);
			$y_dec = round(($y_d - $y_m) /2);
		}


		$nouveau = _image_valeurs_trans(image_reduire($im, $x_d, $y_d),"");
		if (!is_array($nouveau)) return("");
		$im_n = $nouveau["fichier"];
		
	
		$im = $nouveau["fonction_imagecreatefrom"]($im_n);
		imagepalettetotruecolor($im);
		if ($nouveau["format_source"] == "gif" AND function_exists('ImageCopyResampled')) { 
			$im_ = imagecreatetruecolor($x_dest, $y_dest);
			// Si un GIF est transparent, 
			// fabriquer un PNG transparent  
			// Conserver la transparence 
			if (function_exists("imageAntiAlias")) imageAntiAlias($im_,true); 
			@imagealphablending($im_, false); 
			@imagesavealpha($im_,true); 
			@ImageCopyResampled($im_, $im, 0, 0, 0, 0, $x_dest, $y_dest, $x_dest, $y_dest);
			imagedestroy($im);
			$im = $im_;
		}
		$im_ = imagecreatetruecolor($x_dest, $y_dest);
		@imagealphablending($im_, false);
		@imagesavealpha($im_,true);
		$color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 127 );
		imagefill ($im_, 0, 0, $color_t);


		for ($x = 0; $x < $x_dest; $x++) {
			for ($y=0; $y < $y_dest; $y++) {
				$rgb = ImageColorAt($im2, $x, $y);
				$a = ($rgb >> 24) & 0xFF;
				$r = ($rgb >> 16) & 0xFF;
				$g = ($rgb >> 8) & 0xFF;
				$b = $rgb & 0xFF;
				

				$rgb2 = ImageColorAt($im, $x+$x_dec, $y+$y_dec);
				$a2 = ($rgb2 >> 24) & 0xFF;
				$r2 = ($rgb2 >> 16) & 0xFF;
				$g2 = ($rgb2 >> 8) & 0xFF;
				$b2 = $rgb2 & 0xFF;
				
				
				
				if ($mode == "normal") {
					$v = (127 - $a) / 127;
					if ($v == 1) {
						$r_ = $r;
						$g_ = $g;
						$b_ = $b;
					} else {
						$v2 = (127 - $a2) / 127;
						if ($v+$v2 == 0) {
							$r_ = $r2;
							$g_ = $g2;
							$b_ = $b2;
						} else if ($v2 ==0) {
							$r_ = $r;
							$g_ = $g;
							$b_ = $b;
						} else if ($v == 0) {
							$r_ = $r2;
							$g_ = $g2;
							$b_ = $b2;
						}else {
							$r_ = $r + (($r2 - $r) * $v2 * (1 - $v));
							$g_ = $g + (($g2 - $g) * $v2 * (1 - $v));
							$b_ = $b + (($b2 - $b) * $v2 * (1 - $v));
						}
					}
					$a_ = min($a,$a2);
				} elseif ($mode == "produit" OR $mode == "difference") {					

					if ($mode == "produit") {
						$r = ($r/255) * $r2;
						$g = ($g/255) * $g2;
						$b = ($b/255) * $b2;
					} else if ($mode == "difference") {
						$r = abs($r-$r2);
						$g = abs($g-$g2);
						$b = abs($b-$b2);				
					}

					$r = max(0, min($r, 255));
					$g = max(0, min($g, 255));
					$b = max(0, min($b, 255));

					$v = (127 - $a) / 127;
					if ($v == 1) {
						$r_ = $r;
						$g_ = $g;
						$b_ = $b;
					} else {
						$v2 = (127 - $a2) / 127;
						if ($v+$v2 == 0) {
							$r_ = $r2;
							$g_ = $g2;
							$b_ = $b2;
						} else {
							$r_ = $r + (($r2 - $r) * $v2 * (1 - $v));
							$g_ = $g + (($g2 - $g) * $v2 * (1 - $v));
							$b_ = $b + (($b2 - $b) * $v2 * (1 - $v));
						}
					}


					$a_ = $a2;
				} elseif ($mode == "eclaircir" OR $mode == "obscurcir") {
					$v = (127 - $a) / 127;
					if ($v == 1) {
						$r_ = $r;
						$g_ = $g;
						$b_ = $b;
					} else {
						$v2 = (127 - $a2) / 127;
						if ($v+$v2 == 0) {
							$r_ = $r2;
							$g_ = $g2;
							$b_ = $b2;
						} else {
							$r_ = $r + (($r2 - $r) * $v2 * (1 - $v));
							$g_ = $g + (($g2 - $g) * $v2 * (1 - $v));
							$b_ = $b + (($b2 - $b) * $v2 * (1 - $v));
						}
					}
					if ($mode == "eclaircir") {
						$r_ = max ($r_, $r2);
						$g_ = max ($g_, $g2);
						$b_ = max ($b_, $b2);
					} else {
						$r_ = min ($r_, $r2);
						$g_ = min ($g_, $g2);
						$b_ = min ($b_, $b2);					
					}
					
					$a_ = min($a,$a2);
				} else {
					$r_ = $r2 + 1 * ($r - 127);
					$r_ = max(0, min($r_, 255));
					$g_ = $g2 + 1 * ($g - 127);
					$g_ = max(0, min($g_, 255));
					$b_ = $b2 + 1 * ($b - 127);
					$b_ = max(0, min($b_, 255));
					
					$a_ = $a + $a2 - round($a*$a2/127);
				}

				$color = ImageColorAllocateAlpha( $im_, $r_, $g_, $b_ , $a_ );
				imagesetpixel ($im_, $x, $y, $color);			
			}
		}

		_image_gd_output($im_,$image);
		imagedestroy($im_);
		imagedestroy($im);
		imagedestroy($im2);

	}
	$x_dest = largeur($dest);
	$y_dest = hauteur($dest);
	return _image_ecrire_tag($image,array('src'=>$dest,'width'=>$x_dest,'height'=>$y_dest));
}
Esempio n. 8
0
/**
 * Réduit les images d'un certain facteur
 * 
 * @see image_reduire()
 *
 * @param string $img
 *     Chemin de l'image ou texte
 * @param int $val
 *     Facteur de réduction
 * @param bool $force
 * @return string
 *     Code HTML de l'image ou du texte.
**/
function image_reduire_par($img, $val = 1, $force = false)
{
    list($hauteur, $largeur) = taille_image($img);
    $l = round($largeur / $val);
    $h = round($hauteur / $val);
    if ($l > $h) {
        $h = 0;
    } else {
        $l = 0;
    }
    $img = image_reduire($img, $l, $h, $force);
    return $img;
}
Esempio n. 9
0
function afficher_forum_thread($row, $controle_id_article, $compteur_forum, $nb_forum, $i, $retour, $arg,  $script, $argscript) {
	global $spip_lang_right, $spip_display;
	static $voir_logo = array(); // pour ne calculer qu'une fois

	if (is_array($voir_logo)) {
		$voir_logo = (($spip_display != 1 AND $spip_display != 4 AND $GLOBALS['meta']['image_process'] != "non") ? 
		      "position: absolute; $spip_lang_right: 0px; margin: 0px; margin-top: -3px; margin-$spip_lang_right: 0px;" 
		      : '');
	}

	$id_forum=$row['id_forum'];
	$id_parent=$row['id_parent'];
	$id_rubrique=$row['id_rubrique'];
	$id_article=$row['id_article'];
	$id_breve=$row['id_breve'];
	$id_message=$row['id_message'];
	$id_syndic=$row['id_syndic'];
	$id_auteur=$row["id_auteur"];
	$titre=$row['titre'];
	$texte=$row['texte'];
	$nom_site=$row['nom_site'];
	$url_site=$row['url_site'];
	$statut=$row['statut'];
	$ip=$row["ip"];

	$h = (!$id_article ? '' : generer_url_entite($id_article, 'article'))
	  . "#forum$id_forum";

	$titre_boite = "<a href='$h' id='forum$id_forum'>"
	  . typo($titre)
	  . '</a>';

	if ($spip_display == 4) {
		$res = $titre_boite ."<br id='id$id_forum' />";
	} else {
		if ($id_auteur AND $voir_logo) {
			$chercher_logo = charger_fonction('chercher_logo', 'inc');
			if ($logo = $chercher_logo($id_auteur, 'id_auteur', 'on')) {
				list($fid, $dir, $nom, $format) = $logo;
				include_spip('inc/filtres_images_mini');
				$logo = image_reduire("<img src='$fid' alt='' />", 48, 48);
				if ($logo)
					$titre_boite = "\n<div style='$voir_logo'>$logo</div>$titre_boite" ;
			}
		}


		$res = "<tr id='id$id_forum'>"
		. afficher_forum_4($compteur_forum, $nb_forum, $i)
		. "\n<td style='width: 100%' valign='top'>"
		. (($compteur_forum == 1)
		   ? debut_cadre_forum(forum_logo($statut), true, "", $titre_boite)
		   : debut_cadre_thread_forum("", true, "", $titre_boite));
	}

	// Si refuse, cadre rouge
	if ($statut=="off") {
		$style =" style='border: 2px dashed red; padding: 5px;'";
	}
	// Si propose, cadre jaune
	else if ($statut=="prop") {
		$style = " style='border: 1px solid yellow; padding: 5px;'";
	}
	// Si original, cadre vert
	else if ($statut=="original") {
		$style = " style='border: 1px solid green; padding: 5px;'";
	} else $style = '';

	$mots = afficher_forum_mots($id_forum);

	$res .= "<table$style width='100%' cellpadding='5' cellspacing='0'>\n<tr><td>"
	.  afficher_forum_auteur($row)
	. (!$controle_id_article ? '' :
	   boutons_controle_forum($id_forum, $statut, $id_auteur, "id_article=$id_article", $ip,  $script, $argscript))
	. "<div style='font-weight: normal;'>"
	. safehtml(justifier(propre($texte)))
	. "</div>\n"
	. (!$nom_site ? '' :
	      ((strlen($url_site) > 10) ? "\n<div style='text-align: left' class='verdana2'><b><a href='$url_site'>$nom_site</a></b></div>"
	       : "<b>$nom_site</b>"))
	. ($controle_id_article ? '' :
	      repondre_forum($row, $titre, $statut, "$retour?$arg", _T('lien_repondre_message')))
	  . $mots
	  . "</td></tr></table>";

	if ($spip_display == 4) return "\n<li>$res</li>\n";

	if ($compteur_forum == 1) $res .= fin_cadre_forum(true);
	else $res .= fin_cadre_thread_forum(true);
	$res .= "</td></tr>";

	return "<table width='100%' cellpadding='0' cellspacing='0' border='0'>$res</table>\n";
}
/**
 * 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;
}
Esempio n. 11
0
function inc_formater_article_dist($row, $own='')
{
	global $spip_lang_right, $spip_display;
	static $pret = false;
	static $chercher_logo, $img_admin, $formater_auteur, $nb, $langue_defaut, $afficher_langue, $puce_statut;

	$id_article = $row['id_article'];

	if (!autoriser('voir','article',$id_article)) return '';

	if (!$pret) {
		$chercher_logo = ($spip_display != 1 AND $spip_display != 4 AND $GLOBALS['meta']['image_process'] != "non");
		if ($chercher_logo) 
			$chercher_logo = charger_fonction('chercher_logo', 'inc');
		$formater_auteur = charger_fonction('formater_auteur', 'inc');
		$img_admin = http_img_pack("admin-12.gif", "", " width='12' height='12'", _T('titre_image_admin_article'));

		if (($GLOBALS['meta']['multi_rubriques'] == 'oui' AND (!isset($GLOBALS['id_rubrique']))) OR $GLOBALS['meta']['multi_articles'] == 'oui') {
			$afficher_langue = true;
			$langue_defaut = !isset($GLOBALS['langue_rubrique'])
			  ? $GLOBALS['meta']['langue_site']
			  : $GLOBALS['langue_rubrique'];
		}
		$puce_statut = charger_fonction('puce_statut', 'inc');
		$pret = true;
	}

	if ($chercher_logo) {
		if ($logo = $chercher_logo($id_article, 'id_article', 'on')) {
			list($fid, $dir, $nom, $format) = $logo;
			include_spip('inc/filtres_images_mini');
			$logo = "<span style='float: $spip_lang_right; margin-top: -2px; margin-bottom: -2px;'>" .
			  image_reduire("<img src='$fid' alt='' />", 26, 20) .
			  "</span>";
		} else $logo = '';
	} else $logo ='';

	$titre = supprime_img($row['titre'],'');
	$id_rubrique = $row['id_rubrique'];
	$date = $row['date'];
	$statut = $row['statut'];
	$descriptif = $row['descriptif'];
	$lang = $row['lang'];
	$dir = "dir='" . lang_dir($lang ? changer_typo($lang) : '') . "'";
	if ($lang AND $afficher_langue AND $lang != $GLOBALS['meta']['langue_site'])
		$lang = " <span class='spip_xx-small' style='color: #666666' "
		  . $dir
		  . '>('
		  . traduire_nom_langue($lang)
		  . ')</span>';
	else $lang = '';

	$arg = "id_article=$id_article";
	$url_a = generer_url_ecrire("articles", $arg);
	if (!$row['petition'])
		$petition = '';
	else
		$petition = " <a href='" . generer_url_ecrire('controle_petition', $arg) . "' class='spip_xx-small' style='color: red'>"._T('lien_petitions') . "</a>";

	$lien = "<div>"
	. $logo
	. (acces_restreint_rubrique($id_rubrique) ? $img_admin : '')
	. "<a href='"
	. $url_a
	. "'"
	. (!$descriptif ? '': (' title="'.attribut_html(typo($descriptif)).'"'))
	. " $dir>"
	. typo(strlen($titre) ? $titre : _T('ecrire:info_sans_titre'))
	. "</a>"
	. $lang
	. $petition
	. "</div>";
	
	if ($spip_display == 4) return array($lien);

	$puce = $puce_statut($id_article, $statut, $id_rubrique,'article');

	$auteurs = auteurs_article($id_article); 
	foreach ($auteurs as $k => $r) {
		list(, $mail, $nom,,) = $formater_auteur($r['id_auteur']);
		$auteurs[$k]= "$mail&nbsp;$nom";
	}

	$date = affdate_jourcourt($date);
	if (!$date) $date = '&nbsp;';

	$num = afficher_numero_edit($id_article, 'id_article', 'article');

	// Afficher le numero (JMB)

	return array($puce, $lien, join('<br />', $auteurs), $date, $num);
}
Esempio n. 12
0
/**
 * Récupère le contenu d'un média
 * 
 * Arguments possibles :
 * -* login
 * -* pass
 * -* id_article int (Obligatoire)
 * -* champs_demandes string (champs que l'on souhaite récupérer, séparés par une virgule, sinon, on retourne l'ensemble)
 * -* document_largeur int (largeur maximale du document, si c'est une image, défaut largeur du document original)
 * -* document_hauteur int (hauteur maximale du document, si c'est une image, défaut hauteur du document original)
 * -* vignette_format string (carre ou autre, autre n'a pas de fonction)
 * -* vignette_largeur int (largeur de la vignette en px, défaut 100)
 * -* vignette_hauteur int (hauteur de la vignette en px, défaut 100)
 */
function geodiv_lire_media($args)
{
    global $spip_xmlrpc_serveur;
    if (!intval($args['id_article']) > 0) {
        $erreur = _T('xmlrpc:erreur_identifiant', array('objet' => 'article'));
        return new IXR_Error(-32601, attribut_html($erreur));
    }
    $champs_demandes = is_array($args['champs_demandes']) ? $args['champs_demandes'] : array();
    $format_vignette = $args['vignette_format'];
    $config = lire_config('geol', array());
    $secteur_medias = intval($config['secteur_medias']) > 0 ? $config['secteur_medias'] : 1;
    $args_media = array_merge($args, array('objet' => 'article', 'id_objet' => $args['id_article']));
    $res = $spip_xmlrpc_serveur->read($args_media);
    if (!$res) {
        return $spip_xmlrpc_serveur->error;
    }
    $id_secteur = $res['result'][0]['id_secteur'] ? $res['result'][0]['id_secteur'] : sql_getfetsel('id_secteur', 'spip_articles', 'id_article=' . intval($args['id_article']));
    /**
     * Sécurité : L'article demandé n'est pas un média
     */
    if ($id_secteur != $secteur_medias) {
        $erreur = _T('xmlrpc_geodiv:erreur_article_media', array('id_article' => $args['id_article']));
        return new IXR_Error(-32601, attribut_html($erreur));
    }
    /**
     * Si on demande précisément certains champs, on ne fait que les renvoyer
     */
    if (count($champs_demandes) != 0) {
        foreach ($res['result'][0] as $champ => $valeur) {
            if (!in_array($champ, array('id_article')) && !in_array($champ, $champs_demandes)) {
                unset($res['result'][0][$champ]);
            }
        }
    }
    /**
     * On ajoute le booléen "modifiable" :
     * Uniquement si on ne demande pas de champs spécifique ou qu'il soit dedans
     */
    if (count($champs_demandes) == 0 || in_array('modifiable', $champs_demandes)) {
        if (autoriser('modifier', 'id_article', $args['id_article'], $GLOBALS['visiteur_session'])) {
            $res['result'][0]['modifiable'] = 1;
        } else {
            $res['result'][0]['modifiable'] = 0;
        }
    }
    /**
     * On ajoute le logo de l'article :
     * Uniquement si on ne demande pas de champs spécifique ou qu'il soit dedans
     */
    if (count($champs_demandes) == 0 || in_array('logo', $champs_demandes)) {
        $logo = quete_logo('id_article', 'on', $res['result'][0]['id_article'], '', false);
        if (is_array($logo)) {
            $res['result'][0]['logo'] = url_absolue($logo[0]);
        }
    }
    /**
     * On a les infos de l'article, on récupère maintenant :
     * (si pas de champs demandés spécifiés ou les champs en question sont demandés)
     * -* Son document
     * -* Sa vignette
     * -* Sa géoloc
     * -* Ses mots clés
     * -** tags
     * -** échelle
     * -* Ses commentaires
     */
    /**
     * On commence par le document principal
     */
    if (count($champs_demandes) == 0 || in_array('document', $champs_demandes) || in_array('vignette', $champs_demandes)) {
        $document = sql_fetsel('*', 'spip_documents as documents LEFT JOIN spip_documents_liens AS lien ON documents.id_document=lien.id_document', 'lien.objet=' . sql_quote('article') . ' AND lien.id_objet=' . intval($args['id_article']), array(), array(), 1);
        if (is_array($document)) {
            include_spip('inc/documents');
            include_spip('inc/filtres_images_mini');
            include_spip('filtres/images_transforme');
            if (count($champs_demandes) == 0 || in_array('document', $champs_demandes)) {
                $largeur_document = $args['document_largeur'];
                $hauteur_document = $args['document_hauteur'];
                if (in_array($document['extension'], array('gif', 'png', 'jpg')) && ($largeur_document || $hauteur_document)) {
                    $res['result'][0]['document'] = url_absolue(extraire_attribut(image_reduire(get_spip_doc($document['fichier']), $largeur_document, $hauteur_document), 'src'));
                } else {
                    $res['result'][0]['document'] = url_absolue(get_spip_doc($document['fichier']));
                }
                $res['result'][0]['media'] = $document['media'];
                $res['result'][0]['extension'] = $document['extension'];
            }
            if (count($champs_demandes) == 0 || in_array('vignette', $champs_demandes)) {
                $largeur_vignette = $args['vignette_largeur'] ? $args['vignette_largeur'] : 100;
                $hauteur_vignette = $args['vignette_hauteur'] ? $args['vignette_hauteur'] : 100;
                if ($format_vignette == 'carre') {
                    $vignette = extraire_attribut(quete_logo_document($document, $lien, $align, $mode_logo, '', '', $connect = NULL), 'src');
                    $res['result'][0]['vignette'] = url_absolue(extraire_attribut(image_recadre(image_passe_partout($vignette, $largeur_vignette, $hauteur_vignette), $largeur_vignette, $hauteur_vignette), 'src'));
                } else {
                    $vignette = liens_absolus(quete_logo_document($document, $lien, $align, $mode_logo, $largeur_vignette, $hauteur_vignette, $connect = NULL));
                    $res['result'][0]['vignette'] = extraire_attribut($vignette, 'src');
                }
            }
        }
    }
    /**
     * On ajoute les auteurs
     * On met juste leur id_auteur + nom, si besoin de plus une autre requête sur l'auteur est à effectuer 
     */
    if (count($champs_demandes) == 0 || in_array('auteurs', $champs_demandes)) {
        $auteurs = sql_select('auteurs.nom, auteurs.id_auteur', 'spip_auteurs AS auteurs INNER JOIN spip_auteurs_liens AS L1 ON L1.id_auteur = auteurs.id_auteur INNER JOIN spip_articles AS L2 ON L2.id_article = L1.id_objet', "L1.objet='article' AND auteurs.statut != '5poubelle' AND L2.id_article = " . intval($res['result'][0]['id_article']));
        while ($auteur = sql_fetch($auteurs)) {
            $res['result'][0]['auteurs'][] = $auteur;
        }
    }
    /**
     * On ajoute les points de géoloc
     */
    if (defined('_DIR_PLUGIN_GIS') && count($champs_demandes) == 0 || in_array('gis', $champs_demandes)) {
        include_spip('gis_xmlrpc', 'inc');
        $tous_gis = sql_select('gis.id_gis', 'spip_gis AS `gis` INNER JOIN spip_gis_liens AS L1 ON L1.id_gis = gis.id_gis', 'L1.id_objet = ' . intval($args['id_article']) . ' AND (L1.objet = ' . sql_quote('article') . ')');
        while ($gis = sql_fetch($tous_gis)) {
            $args['id_gis'] = $gis['id_gis'];
            $res['result'][0]['gis'][] = spip_lire_gis($args);
        }
    }
    /**
     * On ajoute les tags
     * On met juste leur id_mot + titr, si besoin de plus une autre requête sur le mot est à effectuer 
     */
    if (count($champs_demandes) == 0 || in_array('tags', $champs_demandes)) {
        $tags_group = intval($config['groupe_tags']) > 0 ? intval($config['groupe_tags']) : intval(lire_config('spipicious/groupe_mot'));
        if ($tags_group > 0) {
            $tous_tags = sql_select('mots.id_mot, mots.titre', 'spip_mots AS `mots` INNER JOIN spip_mots_liens AS L1 ON ( L1.id_mot = mots.id_mot )', 'L1.id_objet = ' . intval($args['id_article']) . ' AND (L1.objet = "article") AND (mots.id_groupe = ' . $tags_group . ')');
            while ($tag = sql_fetch($tous_tags)) {
                $res['result'][0]['tags'][] = $tag;
            }
        }
    }
    /**
     * Et on ajoute l'échelle
     * On met juste son id_mot + titre, si besoin de plus une autre requête sur le mot est à effectuer 
     */
    if (count($champs_demandes) == 0 || in_array('echelle', $champs_demandes)) {
        $echelle_group = intval($config['groupe_echelle']) > 0 ? intval($config['groupe_echelle']) : 0;
        if ($echelle_group > 0) {
            $echelle = sql_fetsel('mots.id_mot, mots.titre', 'spip_mots AS `mots` INNER JOIN spip_mots_liens AS L1 ON ( L1.id_mot = mots.id_mot )', 'L1.id_objet = ' . intval($args['id_article']) . ' AND (L1.objet = "article") AND (mots.id_groupe = ' . $echelle_group . ')');
            if (is_array($echelle)) {
                $res['result'][0]['echelle'][] = $echelle;
            }
        }
    }
    /**
     * Et on ajoute les forums
     * On n'affiche que les forums publiés (statut publie)
     * 
     * On met juste :
     * -* id_forum
     * -* id_thread 
     * -* titre
     * -* auteur
     * -* id_auteur
     * Si besoin de plus une autre requête sur le forum est à effectuer 
     */
    if (count($champs_demandes) == 0 || in_array('forums', $champs_demandes)) {
        $forums = sql_select('id_forum, id_thread,titre,auteur,id_auteur', 'spip_forum', 'objet=' . sql_quote('article') . ' AND id_objet = ' . intval($args['id_article']) . ' AND (statut = ' . sql_quote('publie') . ')');
        while ($forum = sql_fetch($forums)) {
            $res['result'][0]['forums'][] = $forum;
        }
    }
    $media_struct = $res['result'][0];
    $media_struct = array_filter($media_struct);
    return $media_struct;
}
Esempio n. 13
0
function plugin_resume($info, $dir_plugins, $plug_file, $url_page)
{
	$desc = plugin_propre($info['description']);
	$dir = $dir_plugins.$plug_file;
	if (($p=strpos($desc, "<br />"))!==FALSE)
		$desc = substr($desc, 0,$p);
	$url = parametre_url($url_page, "plugin", $dir);

	if (isset($info['icon']) and $i = trim($info['icon'])) {
		include_spip("inc/filtres_images_mini");
		$i = inserer_attribut(image_reduire("$dir/$i", 32),'alt','');
		$i = "<div class='icon'><a href='$url' rel='info'>$i</a></div>";
	} else $i = '';

	return "<div class='resume'>"
	. "<h3 class='nom'><a href='$url' rel='info'>"
	. typo($info['nom'])
	. "</a></h3>"
	. " <span class='version'>".$info['version']."</span>"
	. " <span class='etat'> - "
	. plugin_etat_en_clair($info['etat'])
	. "</span>"
	. "<div class='short'>".couper($desc,70)."</div>"
	. $i
	. "</div>";

}
Esempio n. 14
0
function mon_reflet($image) {
   $est = image_reduire($image, 200,150);
   $est = image_recadre($est, 200,75,bottom);
   $est = image_alpha($est, 50);
   $est = image_flip_horizontal($est, "src");
   $ret = image_masque($est, "degrade.png");
     return $ret;
}
Esempio n. 15
0
function etat_base_accueil()
{
	global $spip_display, $spip_lang_left, $connect_id_rubrique;

	$where = count($connect_id_rubrique)
	? sql_in('id_rubrique', $connect_id_rubrique)	: '';

	$res = '';

	if ($spip_display != 1) {
		$chercher_logo = charger_fonction('chercher_logo', 'inc');
		if ($r = $chercher_logo(0, 'id_syndic', 'on'))  {
			list($fid, $dir, $nom, $format) = $r;
			include_spip('inc/filtres_images_mini');
			$r = image_reduire("<img src='$fid' alt='' />", 170, 170);
			if ($r)
				$res ="<div style='text-align:center; margin-bottom: 5px;'>$r</div>";
		}
	}
	$res .= "<div class='verdana1'>";

	$res .= propre($GLOBALS['meta']["descriptif_site"]);

	$q = sql_select("COUNT(*) AS cnt, statut", 'spip_articles', '', 'statut', '','', "COUNT(*)<>0");
  
	$cpt = array();
	$cpt2 = array();
	$defaut = $where ? '0/' : '';
	while($row = sql_fetch($q)) {
	  $cpt[$row['statut']] = $row['cnt'];
	  $cpt2[$row['statut']] = $defaut;
	}
	if ($cpt) {
		if ($where) {
			$q = sql_select("COUNT(*) AS cnt, statut", 'spip_articles', $where, "statut");
			while($row = sql_fetch($q)) {
				$r = $row['statut'];
				$cpt2[$r] = intval($row['cnt']) . '/';
			}
		}
		$res .= afficher_plus(generer_url_ecrire("articles_page",""))."<b>"._T('info_articles')."</b>";
		$res .= "<ul style='margin:0px; padding-$spip_lang_left: 20px; margin-bottom: 5px;'>";
		if (isset($cpt['prepa'])) $res .= "<li>"._T("texte_statut_en_cours_redaction").": ".$cpt2['prepa'] . $cpt['prepa'] .'</li>';
		if (isset($cpt['prop'])) $res .= "<li>"._T("texte_statut_attente_validation").": ".$cpt2['prop'] . $cpt['prop'] . '</li>';
		if (isset($cpt['publie'])) $res .= "<li><b>"._T("texte_statut_publies").": ".$cpt2['publie'].$cpt['publie'] ."</b>" . '</li>';
		$res .= "</ul>";
	}

	$q = sql_select("COUNT(*) AS cnt, statut", 'spip_breves', '', 'statut', '','', "COUNT(*)<>0");

	$cpt = array();
	$cpt2 = array();
	$defaut = $where ? '0/' : '';
	while($row = sql_fetch($q)) {
	  $cpt[$row['statut']] = $row['cnt'];
	  $cpt2[$row['statut']] = $defaut;
	}
 
	if ($cpt) {
		if ($where) {
			$q = sql_select("COUNT(*) AS cnt, statut", 'spip_breves', $where, "statut");
			while($row = sql_fetch($q)) {
				$r = $row['statut'];
				$cpt2[$r] = intval($row['cnt']) . '/';
			}
		}
		$res .= afficher_plus(generer_url_ecrire("breves",""))."<b>"._T('info_breves_02')."</b>";
		$res .= "<ul style='margin:0px; padding-$spip_lang_left: 20px; margin-bottom: 5px;'>";
		if (isset($cpt['prop'])) $res .= "<li>"._T("texte_statut_attente_validation").": ".$cpt2['prop'].$cpt['prop'] . '</li>';
		if (isset($cpt['publie'])) $res .= "<li><b>"._T("texte_statut_publies").": ".$cpt2['publie'] .$cpt['publie'] . "</b>" .'</li>';
		$res .= "</ul>";
	}

	$q = sql_select('COUNT(*) AS cnt, statut', 'spip_forum', sql_in('statut', array('publie', 'prop')), 'statut', '','', "COUNT(*)<>0");

	$cpt = array();
	$cpt2 = array();
	$defaut = $where ? '0/' : '';
	while($row = sql_fetch($q)) {
	  $cpt[$row['statut']] = $row['cnt'];
	  $cpt2[$row['statut']] = $defaut;
	}

	if ($cpt) {
		if ($where) {
		  include_spip('inc/forum');
		  list($f, $w) = critere_statut_controle_forum('public');
		  $q = sql_select("COUNT(*) AS cnt, F.statut", "$f", "$w ", "F.statut");
		  while($row = sql_fetch($q)) {
				$r = $row['statut'];
				$cpt2[$r] = intval($row['cnt']) . '/';
			}
		}

		if (autoriser('modererforum'))
			$res .= afficher_plus(generer_url_ecrire("controle_forum",""));
		$res .= "<b>" ._T('onglet_messages_publics') ."</b>";
		$res .= "<ul style='margin:0px; padding-$spip_lang_left: 20px; margin-bottom: 5px;'>";
		if (isset($cpt['prop'])) $res .= "<li>"._T("texte_statut_attente_validation").": ".$cpt2['prop'] .$cpt['prop'] . '</li>';
		if (isset($cpt['publie'])) $res .= "<li><b>"._T("texte_statut_publies").": ".$cpt2['publie'] .$cpt['publie'] . "</b>" .'</li>';
		$res .= "</ul>";
	}
	
	$res .= accueil_liste_participants()
	. "</div>";

	return pipeline('accueil_informations',$res) ;
}
Esempio n. 16
0
function afficher_objet_boucle($row, $own)
{
	global $connect_statut, $spip_lang_right;
	static $chercher_logo = true;

	list($afficher_langue, $affrub, $langue_defaut, $formater,$type,$primary) = $own;
	$vals = array();
	$id_objet = $row[$primary];
	if (autoriser('voir',$type,$id_objet)){

		$date_heure = isset($row['date'])?$row['date']:(isset($row['date_heure'])?$row['date_heure']:"");

		$statut = isset($row['statut'])?$row['statut']:"";
		if (isset($row['lang']))
		  changer_typo($lang = $row['lang']);
		else $lang = $langue_defaut;
		$lang_dir = lang_dir($lang);
		$id_rubrique = isset($row['id_rubrique'])?$row['id_rubrique']:0;

		$puce_statut = charger_fonction('puce_statut', 'inc');
		$vals[] = $puce_statut($id_objet, $statut, $id_rubrique, $type);

		list($titre,$suite) = afficher_titre_objet($type,$row);
		$flogo = '';
		if ($chercher_logo) {
			if ($chercher_logo !== true
			    OR $chercher_logo = charger_fonction_logo_if())
			  if ($logo = $chercher_logo($id_objet, $primary, 'on')) {
				list($fid, $dir, $nom, $format) = $logo;
				include_spip('inc/filtres_images_mini');
				$logo = image_reduire("<img src='$fid' alt='' />", 26, 20);
				if ($logo)
					$flogo = "\n<span style='float: $spip_lang_right; margin-top: -2px; margin-bottom: -2px;'>$logo</span>";
			  }
		}
		if ($titre) {
			$titre = "<a href='"
			.  lien_voir_objet($type,$primary,$id_objet)
			.  "'>"
			. $titre
			. "</a>";
		}
		$vals[] = "\n<div>$flogo$titre$suite</div>";

		$s = "";
		if ($afficher_langue){
			if (isset($row['langue_choisie'])){
				$s .= " <span class='spip_xx-small' style='color: #666666' dir='$lang_dir'>";
				if ($row['langue_choisie'] == "oui") $s .= "<b>".traduire_nom_langue($lang)."</b>";
				else $s .= "(".traduire_nom_langue($lang).")";
				$s .= "</span>";
			}
			elseif ($lang != $langue_defaut)
				$s .= " <span class='spip_xx-small' style='color: #666666' dir='$lang_dir'>".
					($lang
						? "(".traduire_nom_langue($lang).")"
						: ''
					)
				."</span>";
		}
		$vals[] = $s;

		$vals[] = afficher_complement_objet($type,$row);

		$s = "";
		if ($affrub && $id_rubrique) {
			$rub = sql_fetsel("id_rubrique, titre", "spip_rubriques", "id_rubrique=$id_rubrique");
			$id_rubrique = $rub['id_rubrique'];
			$s .= "<a href='" . generer_url_ecrire("naviguer","id_rubrique=$id_rubrique") . "' style=\"display:block;\">".typo($rub['titre'])."</a>";
		} else
		if ($statut){
			if ($statut != "prop")
					$s = affdate_jourcourt($date_heure);
				else
					$s .= _T('info_a_valider');
		}
		$vals[] = $s;

		$vals[] = afficher_numero_edit($id_objet, $primary, $type, $row);
	}
	return $vals;
}
Esempio n. 17
0
function vignette_automatique($img, $doc, $lien, $x = 0, $y = 0, $align = '', $class = 'spip_logos')
{
    include_spip('inc/distant');
    include_spip('inc/texte');
    include_spip('inc/filtres_images_mini');
    $e = $doc['extension'];
    if (!$img) {
        if ($img = image_du_document($doc)) {
            if (!$x and !$y) {
                // eviter une double reduction
                $img = image_reduire($img);
            }
        } else {
            $f = charger_fonction('vignette', 'inc');
            $img = $f($e, false);
            $size = @getimagesize($img);
            $img = "<img src='{$img}' " . $size[3] . " />";
        }
    } else {
        $size = @getimagesize($img);
        $img = "<img src='{$img}' " . $size[3] . " />";
    }
    // on appelle image_reduire independamment de la presence ou non
    // des librairies graphiques
    // la fonction sait se debrouiller et faire de son mieux dans tous les cas
    if ($x or $y) {
        $img = image_reduire($img, $x, $y);
    }
    $img = inserer_attribut($img, 'alt', '');
    $img = inserer_attribut($img, 'class', $class);
    if ($align) {
        $img = inserer_attribut($img, 'align', $align);
    }
    if (!$lien) {
        return $img;
    }
    $titre = supprimer_tags(typo($doc['titre']));
    $titre = " - " . taille_en_octets($doc['taille']) . ($titre ? " - {$titre}" : "");
    $type = sql_fetsel('titre, mime_type', 'spip_types_documents', "extension = " . sql_quote($e));
    $mime = $type['mime_type'];
    $titre = attribut_html(couper($type['titre'] . $titre, 80));
    return "<a href='{$lien}' type='{$mime}' title='{$titre}'>{$img}</a>";
}
Esempio n. 18
0
function plugin_resume($info, $dir_plugins, $plug_file, $url_page)
{
    $prefix = $info['prefix'];
    $dir = "{$dir_plugins}{$plug_file}";
    $slogan = PtoBR(plugin_propre($info['slogan'], "{$dir}/lang/paquet-{$prefix}"));
    // une seule ligne dans le slogan : couper si besoin
    if (($p = strpos($slogan, "<br />")) !== FALSE) {
        $slogan = substr($slogan, 0, $p);
    }
    // couper par securite
    $slogan = couper($slogan, 80);
    $nom = plugin_nom($info, $dir_plugins, $plug_file);
    $url = parametre_url($url_page, "plugin", substr($dir, strlen(_DIR_RACINE)));
    if (isset($info['logo']) and $i = trim($info['logo'])) {
        include_spip("inc/filtres_images_mini");
        $i = inserer_attribut(image_reduire("{$dir}/{$i}", 32), 'alt', '');
        $i = "<div class='icon'><a href='{$url}' rel='info'>{$i}</a></div>";
    } else {
        $i = '';
    }
    return "<div class='resume'>" . "<h3><a href='{$url}' rel='info'>" . $nom . "</a></h3>" . " <span class='version'>" . $info['version'] . "</span>" . " <span class='etat'> - " . plugin_etat_en_clair($info['etat']) . "</span>" . "<div class='short'>" . $slogan . "</div>" . $i . "</div>";
}
Esempio n. 19
0
function decrire_logo($id_objet, $mode, $id, $width, $height, $img, $titre="", $script="", $flag_modif=true) {

	list($fid, $dir, $nom, $format, $timestamp) = $img;
	include_spip('inc/filtres_images_mini');

	$res = image_reduire("<img src='$fid' alt='' class='miniature_logo' />", $width, $height);

	if ($res){
			$src = extraire_attribut($res,'src');
			$res = inserer_attribut($res, 'src', "$src?$timestamp");
	    $res = "<div><a href='" .	$fid . "'>$res</a></div>";
	}
	else
	    $res = "<img src='$fid?$timestamp' width='$width' height='$height' alt=\"" . htmlentities($titre) . '" />';
	if ($taille = @getimagesize($fid))
		$taille = _T('info_largeur_vignette', array('largeur_vignette' => $taille[0], 'hauteur_vignette' => $taille[1]));

	return array($res,
		"<div class='spip_xx-small'>" . $taille
		. ($flag_modif
			? "\n<br />["
				. ajax_action_auteur("iconifier", "$id-$nom.$format",
				$script, "$id_objet=$id&type=$id_objet",
				array(_T('lien_supprimer')),
				'',"function(r,status) {this.innerHTML = r; \$('form.form_upload_icon',this).async_upload(async_upload_icon);}") ."]"
			: '')
			. "</div>");
}
Esempio n. 20
0
function enfant_rub($collection){
	global $spip_display, $spip_lang_left, $spip_lang_right, $spip_lang;

	$voir_logo = ($spip_display != 1 AND $spip_display != 4 AND isset($GLOBALS['meta']['image_process']) AND $GLOBALS['meta']['image_process'] != "non");

	if ($voir_logo) {
		$voir_logo = "float: $spip_lang_right; margin-$spip_lang_right: 0px; margin-top: 0px;";
		$chercher_logo = charger_fonction('chercher_logo', 'inc');
	} else $logo ='';

	$res = "";

	$result = sql_select("id_rubrique, id_parent, titre, descriptif, lang ", "spip_rubriques", "id_parent=$collection",'', '0+titre,titre');

	while($row=sql_fetch($result)){
		$id_rubrique=$row['id_rubrique'];
		$id_parent=$row['id_parent'];
		$titre=$row['titre'];

		if (autoriser('voir','rubrique',$id_rubrique)){

			$les_sous_enfants = sous_enfant_rub($id_rubrique);

			changer_typo($row['lang']);
			$lang_dir = lang_dir($row['lang']);
			$descriptif=propre($row['descriptif']);

			if ($voir_logo) {
				if ($logo = $chercher_logo($id_rubrique, 'id_rubrique', 'on')) {
					list($fid, $dir, $nom, $format) = $logo;
					include_spip('inc/filtres_images_mini');
					$logo = image_reduire("<img src='$fid' alt='' />", 48, 36);
					if ($logo)
						$logo =  "\n<div style='$voir_logo'>$logo</div>";
				}
			}

			$lib_bouton = (!acces_restreint_rubrique($id_rubrique) ? "" :
			   http_img_pack("admin-12.gif", '', " width='12' height='12'", _T('image_administrer_rubrique'))) .
			  " <span dir='$lang_dir'><a href='" .
			  generer_url_ecrire("naviguer","id_rubrique=$id_rubrique") .
			  "'>".
			  typo($titre) .
			  "</a></span>";

			  $titre = (is_string($logo) ? $logo : '') .
				  bouton_block_depliable($lib_bouton,$les_sous_enfants ?false:-1,"enfants$id_rubrique");

			$les_enfants = "\n<div class='enfants'>" .
			  debut_cadre_sous_rub(($id_parent ? "rubrique-24.gif" : "secteur-24.gif"), true, "", $titre) .
			  (!$descriptif ? '' : "\n<div class='verdana1'>$descriptif</div>") .
			  (($spip_display == 4) ? '' : $les_sous_enfants) .
			  "\n<div style='clear:both;'></div>"  .
			  fin_cadre_sous_rub(true) .
			  "</div>";

			$res .= ($spip_display != 4)
			? $les_enfants
			: "\n<li>$les_enfants</li>";
		}
	}

	changer_typo($spip_lang); # remettre la typo de l'interface pour la suite
	return (($spip_display == 4) ? "\n<ul>$res</ul>\n" :  $res);

}