$auto['descriptif']) ); if (!$logo AND $auto['logo'] AND $auto['format_logo']) @rename($auto['logo'], _DIR_IMG . 'siteon'.$id_syndic.'.'.$auto['format_logo']); } } } // Rediriger le navigateur $redirect = parametre_url(urldecode(_request('redirect')), 'id_syndic', $id_syndic, '&'); redirige_par_entete($redirect); } // http://doc.spip.org/@insert_syndic function insert_syndic($id_rubrique) { include_spip('base/abstract_sql'); include_spip('inc/rubriques'); // Si id_rubrique vaut 0 ou n'est pas definie, creer le site // dans la premiere rubrique racine if (!$id_rubrique = intval($id_rubrique)) { $row = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques WHERE id_parent=0 ORDER by 0+titre,titre LIMIT 1")); $id_rubrique = $row['id_rubrique']; } // Le secteur a la creation : c'est le secteur de la rubrique $row = spip_fetch_array(spip_query("SELECT id_secteur FROM spip_rubriques WHERE id_rubrique=$id_rubrique")); $id_secteur = $row['id_secteur']; $id_syndic = spip_abstract_insert("spip_syndic", "(id_rubrique, id_secteur, statut, date)", "($id_rubrique, $id_secteur, 'prop', NOW())"); return $id_syndic; } // Enregistre une revision de syndic // $new indique si c'est un INSERT // $c est un contenu (par defaut on prend le contenu via _request()) // http://doc.spip.org/@revisions_sites function revisions_sites ($id_syndic, $c=false) { include_spip('inc/filtres'); include_spip('inc/autoriser'); include_spip('inc/rubriques'); // Ces champs seront pris nom pour nom (_POST[x] => spip_syndic.x) $champs_normaux = array('nom_site', 'url_site', 'descriptif', 'url_syndic', 'syndication', 'url_propre'); // ne pas accepter de titre vide if (_request('nom_site', $c) === '') $c = set_request('nom_site', _T('ecrire:info_sans_titre'), $c); $champs = array(); foreach ($champs_normaux as $champ) { $val = _request($champ, $c); if ($val !== NULL) $champs[$champ] = corriger_caracteres($val); } // Changer le statut du site ? include_spip('inc/auth'); auth_rubrique($GLOBALS['auteur_session']['id_auteur'], $GLOBALS['auteur_session']['statut']); $s = spip_query("SELECT statut, id_rubrique FROM spip_syndic WHERE id_syndic=$id_syndic"); $row = spip_fetch_array($s); $id_rubrique = $row['id_rubrique']; $statut = $row['statut']; if (_request('statut', $c) AND _request('statut', $c) != $statut AND autoriser('publierdans','rubrique',$id_rubrique)) { $statut = $champs['statut'] = _request('statut', $c); } // Changer de rubrique ? // Verifier que la rubrique demandee est differente // de la rubrique actuelle if ($id_parent = intval(_request('id_parent', $c)) AND $id_parent != $id_rubrique AND (spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques WHERE id_rubrique=$id_parent")))) { $champs['id_rubrique'] = $id_parent; // si le site est publie // et que le demandeur n'est pas admin de la rubrique // repasser le site en statut 'prop'. if ($statut == 'publie') { if (!autoriser('publierdans','rubrique',$id_parent)) $champs['statut'] = $statut = 'prop'; } } // recuperer les extras if ($GLOBALS['champs_extra']) { include_spip('inc/extra'); if ($extra = extra_update('syndic', $id_syndic, $c)) $champs['extra'] = $extra; } // Envoyer aux plugins include_spip('inc/modifier'); # temporaire pour eviter un bug $champs = pipeline('pre_edition', array( 'args' => array( 'table' => 'spip_syndic', 'id_objet' => $id_syndic ), 'data' => $champs ) ); $update = array(); foreach ($champs as $champ => $val) $update[] = $champ . '=' . _q($val); if (!count($update)) return; // Enregistrer les modifications spip_query("UPDATE spip_syndic SET ".join(', ',$update)." WHERE id_syndic=$id_syndic"); // marquer le fait que le site est travaille par toto a telle date // une alerte sera donnee aux autres redacteurs sur exec=sites if ($GLOBALS['meta']['articles_modif'] != 'non') { include_spip('inc/drapeau_edition'); signale_edition ($id_syndic, $GLOBALS['auteur_session'], 'syndic'); } // Si on deplace le site // - propager les secteurs // - changer sa langue (si heritee) if (isset($champs['id_rubrique'])) { propager_les_secteurs(); $row = spip_fetch_array(spip_query("SELECT lang, langue_choisie FROM spip_syndic WHERE id_syndic=$id_syndic")); $langue_old = $row['lang']; $langue_choisie_old = $row['langue_choisie']; if ($langue_choisie_old != "oui") { $row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_rubrique")); $langue_new = $row['lang']; if ($langue_new != $langue_old) spip_query("UPDATE spip_syndic SET lang = '$langue_new' WHERE id_syndic = $id_syndic"); } } // // Post-modifications // // Invalider les caches if ($statut == 'publie') { include_spip('inc/invalideur'); suivre_invalideur("id='id_syndic/$id_syndic'"); } // Demander une reindexation du site if ($statut == 'publie') { include_spip('inc/indexation'); marquer_indexer('spip_syndic', $id_syndic); } // Recalculer les rubriques (statuts et dates) si l'on deplace // un site publie ou si on le publie/depublie if (isset($champs['statut']) OR ($statut == 'publie' AND isset($champ['id_rubrique'])) ) { calculer_rubriques(); } // Notification ? pipeline('post_edition', array( 'args' => array( 'table' => 'spip_syndic', 'id_objet' => $id_syndic ), 'data' => $champs ) ); } // http://doc.spip.org/@analyser_site function analyser_site($url) { include_spip('inc/filtres'); # pour filtrer_entites() include_spip('inc/distant'); // Accepter les URLs au format feed:// ou qui ont oublie le http:// $url = preg_replace(',^feed://,i', 'http://', $url); if (!preg_match(',^[a-z]+://,i', $url)) $url = 'http://'.$url; $texte = recuperer_page($url, true); if (!$texte) return false; if (preg_match(',<(channel|feed)([:[:space:]][^>]*)?' .'>(.*)\1>,ims', $texte, $regs)) { $result['syndication'] = 'oui'; $result['url_syndic'] = $url; $channel = $regs[3]; list($header) = preg_split( ',<(entry|item)([:[:space:]][^>]*)?'.'>,Uims', $channel,2); if (preg_match(',