X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Faction%2Fediter_url.php;fp=www%2Fecrire%2Faction%2Fediter_url.php;h=19ce29066dfb0721e17b56002af923adaf3b6ed4;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/ecrire/action/editer_url.php b/www/ecrire/action/editer_url.php new file mode 100644 index 0000000..19ce290 --- /dev/null +++ b/www/ecrire/action/editer_url.php @@ -0,0 +1,154 @@ + $longueur_maxi) { + break; + } + + $url = $url2; + } + $url = substr($url, 1); + + // On enregistre en utf-8 dans la base + $url = rawurldecode($url); + + if (strlen($url) < $longueur_min) + return ''; + return $url; +} + +function url_insert(&$set,$confirmer,$separateur){ + // Si l'insertion echoue, c'est une violation d'unicite. + if (@sql_insertq('spip_urls', $set) <= 0) { + // On veut chiper une ancienne adresse ? + if ( + // un vieux url + $vieux = sql_fetsel('*', 'spip_urls', 'url='.sql_quote($set['url'])) + // l'objet a une url plus recente + AND $courant = sql_fetsel('*', 'spip_urls', + 'type='.sql_quote($vieux['type']).' AND id_objet='.sql_quote($vieux['id_objet']) + .' AND date>'.sql_quote($vieux['date']), '', 'date DESC', 1 + )) { + if ($confirmer AND !_request('ok2')) { + die ("Vous voulez chiper l'URL de l'objet ".$courant['type']." " + . $courant['id_objet']." qui a maintenant l'url " + . $courant['url']); + } + + // si oui on le chipe + sql_updateq('spip_urls', $set, 'url='.sql_quote($set['url'])); + sql_updateq('spip_urls', array('date' => date('Y-m-d H:i:s')), 'url='.sql_quote($set['url'])); + } + + // Sinon + else + + // Soit c'est un Come Back d'une ancienne url propre de l'objet + // Soit c'est un vrai conflit. Rajouter l'ID jusqu'a ce que ca passe, + // mais se casser avant que ca ne casse. + + // il peut etre du a un changement de casse de l'url simplement + // pour ce cas, on reecrit systematiquement l'url en plus d'actualiser la date + do { + $where = "type=".sql_quote($set['type'])." AND id_objet=".intval($set['id_objet'])." AND url="; + if (sql_countsel('spip_urls', $where .sql_quote($set['url']))) { + sql_updateq('spip_urls', array('url'=>$set['url'], 'date' => date('Y-m-d H:i:s')), $where .sql_quote($set['url'])); + spip_log("reordonne ".$set['type']." ".$set['id_objet']); + return true; + } + else { + $set['url'] .= $separateur.$set['id_objet']; + if (strlen($set['url']) > 200) + //serveur out ? retourner au mieux + return false; + elseif (sql_countsel('spip_urls', $where . sql_quote($set['url']))) { + sql_updateq('spip_urls', array('url'=>$set['url'], 'date' => date('Y-m-d H:i:s')), 'url='.sql_quote($set['url'])); + return true; + } + } + } while (@sql_insertq('spip_urls', $set) <= 0); + } + + sql_updateq('spip_urls', array('date' => date('Y-m-d H:i:s')), 'url='.sql_quote($set['url'])); + spip_log("Creation de l'url propre '" . $set['url'] . "' pour ".$set['type']." ".$set['id_objet']); + return true; +} + +function url_verrouiller($objet,$id_objet,$url){ + $where = "id_objet=".intval($id_objet)." AND type=".sql_quote($objet); + $where .= " AND url=".sql_quote($url); + + // pour verrouiller une url, on fixe sa date dans le futur, dans 10 ans + sql_updateq('spip_urls', array('date' => date('Y-m-d H:i:s',time()+10*365.25*24*3600)), $where); +} + +function url_delete($objet,$id_objet,$url=""){ + $where = "id_objet=".intval($id_objet)." AND type=".sql_quote($objet); + if (strlen($url)) + $where .= " AND url=".sql_quote($url); + + sql_delete("spip_urls",$where); +} +?>