X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Faction%2Fediter_site.php;fp=www%2Fecrire%2Faction%2Fediter_site.php;h=14a7e98844302ea7fecb832b0ea2766a938184b4;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/ecrire/action/editer_site.php b/www/ecrire/action/editer_site.php new file mode 100644 index 0000000..14a7e98 --- /dev/null +++ b/www/ecrire/action/editer_site.php @@ -0,0 +1,290 @@ + $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; +} + +?>