nom_champ, $regs); $type = strtolower($regs[1]); $suite_logo = $regs[2]; // cas de #LOGO_SITE_SPIP if ($type == 'site_spip') { $type = 'site'; $_id_objet = "\"'0'\""; } $id_objet = id_table_objet($type); if (!isset($_id_objet)) { $_id_objet = champ_sql($id_objet, $p); } $fichier = ($p->etoile === '**') ? -1 : 0; $coord = array(); $align = $lien = ''; $mode_logo = ''; if ($p->param and !$p->param[0][0]) { $params = $p->param[0]; array_shift($params); foreach ($params as $a) { if ($a[0]->type === 'texte') { $n = $a[0]->texte; if (is_numeric($n)) { $coord[] = $n; } elseif (in_array($n, array('top', 'left', 'right', 'center', 'bottom'))) { $align = $n; } elseif (in_array($n, array('auto', 'icone', 'apercu', 'vignette'))) { $mode_logo = $n; } } else { $lien = calculer_liste($a, $p->descr, $p->boucles, $p->id_boucle); } } } $coord_x = !$coord ? 0 : intval(array_shift($coord)); $coord_y = !$coord ? 0 : intval(array_shift($coord)); if ($p->etoile === '*') { include_spip('balise/url_'); $lien = generer_generer_url_arg($type, $p, $_id_objet); } $connect = $p->id_boucle ? $p->boucles[$p->id_boucle]->sql_serveur : ''; if ($type == 'document') { $qconnect = _q($connect); $doc = "quete_document($_id_objet, $qconnect)"; if ($fichier) { $code = "quete_logo_file($doc, $qconnect)"; } else { $code = "quete_logo_document($doc, " . ($lien ? $lien : "''") . ", '$align', '$mode_logo', $coord_x, $coord_y, $qconnect)"; } // (x=non-faux ? y : '') pour affecter x en retournant y if ($p->descr['documents']) { $code = '(($doublons["documents"] .= ",". ' . $_id_objet . ") ? $code : '')"; } } elseif ($connect) { $code = "''"; spip_log('Les logos distants ne sont pas prevus'); } else { $code = logo_survol($id_objet, $_id_objet, $type, $align, $fichier, $lien, $p, $suite_logo); } // demande de reduction sur logo avec ecriture spip 2.1 : #LOGO_xxx{200, 0} if ($coord_x or $coord_y) { $code = "filtrer('image_graver',filtrer('image_reduire'," . $code . ", '$coord_x', '$coord_y'))"; } $p->code = $code; $p->interdire_scripts = false; return $p; } /** * Calcule le code HTML pour l'image d'un logo * * @param string $id_objet * Nom de la clé primaire de l'objet (id_article, ...) * @param string $_id_objet * Code pour la compilation permettant de récupérer la valeur de l'identifiant * @param string $type * Type d'objet * @param string $align * Alignement demandé du logo * @param int $fichier * - -1 pour retourner juste le chemin de l'image * - 0 pour retourner le code HTML de l'image * @param string $lien * Lien pour encadrer l'image avec si présent * @param Champ $p * Pile au niveau de la balise * @param string $suite * Suite éventuelle de la balise logo, telle que `_SURVOL`, `_NORMAL` ou `_RUBRIQUE`. * @return string * Code compilé retournant le chemin du logo ou le code HTML du logo. **/ function logo_survol($id_objet, $_id_objet, $type, $align, $fichier, $lien, $p, $suite) { $code = "quete_logo('$id_objet', '" . (($suite == '_SURVOL') ? 'off' : (($suite == '_NORMAL') ? 'on' : 'ON')) . "', $_id_objet," . (($suite == '_RUBRIQUE') ? champ_sql('id_rubrique', $p) : (($type == 'rubrique') ? "quete_parent($_id_objet)" : "''")) . ', ' . intval($fichier) . ')'; if ($fichier) { return $code; } // class spip_logos a supprimer ulterieurement (transition douce vers spip_logo) // cf http://core.spip.net/issues/2483 $class = 'spip_logo '; if ($align) { $class .= "spip_logo_$align "; } $class .= 'spip_logos'; $style = ''; if (in_array($align, array('left', 'right'))) { $style = "float:$align"; $align = ''; } $code = "\n((!is_array(\$l = $code)) ? '':\n (" . '"\"\"'\'))'; if (!$lien) { return $code; } return ('(strlen($logo=' . $code . ')?\'\' . $logo . \'\':\'\')'); }