$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; } ?>