$auto['descriptif']));
}
if (!$logo
AND $auto['logo'] AND $auto['format_logo'])
@rename($auto['logo'],
_DIR_IMG . 'siteon'.$id_syndic.'.'.$auto['format_logo']);
}
$resyndiquer = true;
}
}
if ($resyndiquer) {
// ah si PHP connaisait les fermetures...
// A la place, une constante utilisee exclusivement
// dans la fct suivante.
define('_GENIE_SYNDIC_NOW', $id_syndic);
// forcer l'execution immediate de cette tache
// (i.e. appeler la fct suivante avec gestion du verrou)
cron(0, array('syndic' => -91));
}
if (_request('redirect')) {
$redirect = parametre_url(urldecode(_request('redirect')),
'id_syndic', $id_syndic, '&');
include_spip('inc/headers');
redirige_par_entete($redirect);
}
else
return array($id_syndic,'');
}
// Cette fonction redefinit la tache standard de syndication
// pour la forcer a syndiquer le site dans la globale genie_syndic_now
// http://doc.spip.org/@genie_syndic
function genie_syndic($t) {
include_spip('genie/syndic');
define('_GENIE_SYNDIC', 2); // Pas de faux message d'erreur
$t = syndic_a_jour(_GENIE_SYNDIC_NOW);
return $t ? 0 : _GENIE_SYNDIC_NOW;
}
// http://doc.spip.org/@insert_syndic
function insert_syndic($id_rubrique) {
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)) {
$id_rubrique = sql_getfetsel("id_rubrique", "spip_rubriques", "id_parent=0",'', '0+titre,titre', "1");
}
// Le secteur a la creation : c'est le secteur de la rubrique
$id_secteur = sql_getfetsel("id_secteur", "spip_rubriques", "id_rubrique=$id_rubrique");
$champs = array(
'id_rubrique' => $id_rubrique,
'id_secteur' => $id_secteur,
'statut' => 'prop',
'date' => date('Y-m-d H:i:s'));
// Envoyer aux plugins
$champs = pipeline('pre_insertion',
array(
'args' => array(
'table' => 'spip_syndic',
),
'data' => $champs
)
);
$id_syndic = sql_insertq("spip_syndic", $champs);
pipeline('post_insertion',
array(
'args' => array(
'table' => 'spip_syndic',
'id_objet' => $id_syndic
),
'data' => $champs
)
);
return $id_syndic;
}
// Enregistre une revision de syndic
// $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/rubriques');
include_spip('inc/autoriser');
// champs normaux
if ($c === false) {
$c = array();
foreach (array(
'nom_site', 'url_site', 'descriptif', 'url_syndic', 'syndication', 'statut', 'id_parent'
) as $champ)
if (($a = _request($champ)) !== null)
$c[$champ] = $a;
}
// Si le site est publie, invalider les caches et demander sa reindexation
$t = sql_getfetsel("statut", "spip_syndic", "id_syndic=$id_syndic");
if ($t == 'publie') {
$invalideur = "id='id_syndic/$id_syndic'";
$indexation = true;
}
include_spip('inc/modifier');
modifier_contenu('syndic', $id_syndic,
array(
'nonvide' => array('nom_site' => _T('info_sans_titre')),
'invalideur' => $invalideur,
'indexation' => $indexation
),
$c);
$row = sql_fetsel("statut, id_rubrique, id_secteur", "spip_syndic", "id_syndic=$id_syndic");
$id_rubrique = $row['id_rubrique'];
$statut_ancien = $row['statut'];
$id_secteur_old = $row['id_secteur'];
$statut = $c['statut'];
if ($statut
AND $statut != $statut_ancien
AND autoriser('publierdans','rubrique',$id_rubrique)) {
$champs['statut'] = $statut;
if ($statut == 'publie') {
if ($d = _request('date', $c)) {
$champs['date'] = $d;
} else {
$champs['date'] = date('Y-m-d H:i:s');
}
}
} else
$statut = $statut_ancien;
// Changer de rubrique ?
// Verifier que la rubrique demandee est differente de l'actuelle,
// et qu'elle existe. Recuperer son secteur
if ($id_parent = intval(_request('id_parent', $c))
AND $id_parent != $id_rubrique
AND ($id_secteur = sql_getfetsel('id_secteur', 'spip_rubriques', "id_rubrique=$id_parent"))) {
$champs['id_rubrique'] = $id_parent;
if ($id_secteur_old != $id_secteur)
$champs['id_secteur'] = $id_secteur;
// 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';
}
}
if (!$champs) return;
// Enregistrer les modifications
sql_updateq('spip_syndic', $champs, "id_syndic=$id_syndic");
// Invalider les caches
if ($statut == 'publie') {
include_spip('inc/invalideur');
suivre_invalideur("id='id_syndic/$id_syndic'");
}
// Notifications
if ($notifications = charger_fonction('notifications', 'inc')) {
$notifications('instituersite', $id_syndic,
array('statut' => $statut, 'statut_ancien' => $statut_ancien, 'date'=>($champs['date']?$champs['date']:$row['date']))
);
}
include_spip('inc/rubriques');
calculer_rubriques_if($id_rubrique, $champs, $statut_ancien);
}
// Enregistrre les options et retourne True s'il faut syndiquer.
// http://doc.spip.org/@editer_site_options
function editer_site_options($id_syndic)
{
$moderation = _request('moderation');
$miroir = _request('miroir');
$oubli = _request('oubli');
$resume = _request('resume');
if ($moderation == 'oui' OR $moderation == 'non')
sql_updateq("spip_syndic", array("moderation" => $moderation), "id_syndic=$id_syndic");
if ($miroir == 'oui' OR $miroir == 'non')
sql_updateq("spip_syndic", array("miroir" => $miroir ), "id_syndic=$id_syndic");
if ($oubli == 'oui' OR $oubli == 'non')
sql_updateq("spip_syndic", array("oubli" => $oubli), "id_syndic=$id_syndic");
if (!($resume == 'oui' OR $resume == 'non')) return false;
sql_updateq("spip_syndic", array("resume" => $resume ), "id_syndic=$id_syndic");
return true;
}
?>