/**
 * Préparer le contexte d'environnement pour les boutons
 *
 * Permettra d'afficher le bouton 'Modifier ce...' s'il y a un
 * `$id_XXX` défini globalement par `spip_register_globals`
 *
 * @note
 *   Attention à l'ordre dans la boucle:
 *   on ne veut pas la rubrique si un autre bouton est possible
 *
 * @return array
 *     Tableau de l'environnement calculé
 **/
function admin_objet()
{
    include_spip('inc/urls');
    $env = array();
    $trouver_table = charger_fonction('trouver_table', 'base');
    $objets = urls_liste_objets(false);
    $objets = array_diff($objets, array('rubrique'));
    $objets = array_reverse($objets);
    array_unshift($objets, 'rubrique');
    foreach ($objets as $obj) {
        $type = $obj;
        if ($type == objet_type($type, false) and $_id_type = id_table_objet($type) and isset($GLOBALS['contexte'][$_id_type]) and $id = $GLOBALS['contexte'][$_id_type] and !is_array($id) and $id = intval($id)) {
            $id = sql_getfetsel($_id_type, table_objet_sql($type), "{$_id_type}=" . intval($id));
            if ($id) {
                $env[$_id_type] = $id;
                $env['objet'] = $type;
                $env['id_objet'] = $id;
                $env['voir_' . $obj] = str_replace('&', '&', generer_url_entite($id, $obj, '', '', false));
                if ($desc = $trouver_table(table_objet_sql($type)) and isset($desc['field']['id_rubrique']) and $type != 'rubrique') {
                    unset($env['id_rubrique']);
                    unset($env['voir_rubrique']);
                    if (admin_preview($type, $id, $desc)) {
                        $env['preview'] = parametre_url(self(), 'var_mode', 'preview', '&');
                    }
                }
            }
        }
    }
    return $env;
}
Esempio n. 2
0
function admin_objet()
{
	include_spip('inc/urls');
	$env = array();

	foreach (array('mot','auteur','rubrique','breve','article','syndic'=>'site')
	as $id => $obj) {
		if (is_int($id)) $id = $obj;
		$_id_type = id_table_objet($id);
		if (isset($GLOBALS['contexte'][$_id_type]) AND $id_type = $GLOBALS['contexte'][$_id_type]) {
			$id_type = sql_getfetsel($_id_type, table_objet_sql($id), "$_id_type=".intval($id_type));
			if ($id_type) {
				$env[$_id_type] = $id_type;
				$env['objet'] = $id;
				$env['id_objet'] = $id_type;
				$g = 'generer_url_ecrire_'.$obj;
				$env['voir_'.$obj] = 
				  str_replace('&', '&', $g($id_type, '','', 'prop'));
				if ($id == 'article' OR $id == 'breve') {
					unset($env['id_rubrique']);
					unset($env['voir_rubrique']);
					if ($l = admin_stats($id, $id_type, $var_preview)) {
						$env['visites'] = $l[0];
						$env['popularite'] = $l[1];
						$env['statistiques'] = $l[2];
					}
					if (admin_preview($id, $id_type))
						$env['preview']=parametre_url(self(),'var_mode','preview','&');
				}
			}
		}
	}
	return $env;
}