X-Git-Url: http://git.cyclocoop.org/?p=ptitvelo%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fplugins-dist%2Furls_etendues%2Faction%2Fediter_url.php;h=ba4cc95e130e81caab9e8eb4ce27afdbad377426;hp=9c94e89b744d52882e20de8187c7790a82dbed63;hb=e847eea4a82a7396dd0abf860f9b30d654f38629;hpb=d686c3e22e97dd46ef42bcd0f138c65083f8f232 diff --git a/www/plugins-dist/urls_etendues/action/editer_url.php b/www/plugins-dist/urls_etendues/action/editer_url.php index 9c94e89..ba4cc95 100644 --- a/www/plugins-dist/urls_etendues/action/editer_url.php +++ b/www/plugins-dist/urls_etendues/action/editer_url.php @@ -95,8 +95,8 @@ function url_insert(&$set,$confirmer,$separateur){ $separateur = "-"; // Si l'insertion echoue, c'est une violation d'unicite. - $where_urllike = 'url LIKE '.url_sql_quote_like($set['url']); - $where_thisurl = $where_urllike." AND id_parent=".intval($set['id_parent']); + $where_urllike = 'url LIKE '.url_sql_quote_like($set['url'])." AND NOT(type=".sql_quote($set['type'])." AND id_objet=".intval($set['id_objet']).")"; + $where_thisurl = $where_urllike.($has_parent?" AND id_parent=".intval($set['id_parent']):""); if ( // si pas de parent defini, il faut que cette url soit unique, independamment de id_parent // il faut utiliser un LIKE pour etre case unsensitive en sqlite @@ -107,12 +107,13 @@ function url_insert(&$set,$confirmer,$separateur){ if ( (!is_dir(_DIR_RACINE.$set['url']) AND !file_exists(_DIR_RACINE.$set['url'])) // un vieux url - AND $vieux = sql_fetsel('*', 'spip_urls', $where_thisurl) + AND $vieux = sql_fetsel('*', 'spip_urls', $where_thisurl,'','perma DESC') // qui n'est pas permanente AND !$vieux['perma'] // et dont 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 url<>'.sql_quote($set['url']) .' AND date>'.sql_quote($vieux['date']), '', 'date DESC', 1) ) { if ($confirmer AND !_request('ok2')) { @@ -124,6 +125,9 @@ function url_insert(&$set,$confirmer,$separateur){ // si oui on le chipe sql_updateq('spip_urls', $set, $where_thisurl); sql_updateq('spip_urls', array('date' => date('Y-m-d H:i:s')), $where_thisurl); + spip_log("reattribue url ".$vieux['url'] + ." de ".$vieux['type']."#".$vieux['id_objet']." (parent ".$vieux['id_parent'].")" + ." A ".$set['type']."#".$set['id_objet']." (parent ".$set['id_parent'].")","urls"._LOG_INFO_IMPORTANTE); } // Sinon @@ -135,32 +139,33 @@ function url_insert(&$set,$confirmer,$separateur){ // 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 id_parent=".intval($set['id_parent']) - ." AND url LIKE "; - if ( - !is_dir(_DIR_RACINE.$set['url']) AND !file_exists(_DIR_RACINE.$set['url']) - AND sql_countsel('spip_urls', $where .url_sql_quote_like($set['url']))) { - sql_updateq('spip_urls', array('url'=>$set['url'], 'date' => date('Y-m-d H:i:s')), $where .url_sql_quote_like($set['url'])); - spip_log("reordonne ".$set['type']." ".$set['id_objet']); + $where = "type=".sql_quote($set['type']) + ." AND id_objet=".intval($set['id_objet']) + ." AND id_parent=".intval($set['id_parent']) + ." AND url LIKE "; + if ( + !is_dir(_DIR_RACINE.$set['url']) AND !file_exists(_DIR_RACINE.$set['url']) + AND sql_countsel('spip_urls', $where .url_sql_quote_like($set['url']))) { + sql_updateq('spip_urls', array('url'=>$set['url'], 'date' => date('Y-m-d H:i:s')), $where .url_sql_quote_like($set['url'])); + spip_log("reordonne ".$set['type']." ".$set['id_objet'],"urls"); + $redate = false; + } + 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 . url_sql_quote_like($set['url']))) { + sql_updateq('spip_urls', array('url'=>$set['url'], 'date' => date('Y-m-d H:i:s')), $where .url_sql_quote_like($set['url'])); $redate = false; - continue; } 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 . url_sql_quote_like($set['url']))) { - sql_updateq('spip_urls', array('url'=>$set['url'], 'date' => date('Y-m-d H:i:s')), $where .url_sql_quote_like($set['url'])); - $redate = false; - continue; - } + // remettre id_parent et perma comme il faut si besoin + if (!$has_parent) unset($set['id_parent']); + if ($perma) $set['perma'] = true; + return url_insert($set, $confirmer, $separateur); } - } while ($redate AND @sql_insertq('spip_urls', $set) <= 0); - + } } } @@ -172,7 +177,7 @@ function url_insert(&$set,$confirmer,$separateur){ if ($perma) sql_update('spip_urls', array('perma' => "($where_thisurl)"), "type=".sql_quote($set['type'])." AND id_objet=".intval($set['id_objet'])); - spip_log("Creation de l'url propre '" . $set['url'] . "' pour ".$set['type']." ".$set['id_objet']." (parent ".$set['id_parent']." perma $perma)","urls"); + spip_log("Creation de l'url propre '" . $set['url'] . "' pour ".$set['type']." ".$set['id_objet']." (parent ".$set['id_parent']." perma ".($perma?"1":"0").")","urls"); return true; }