Changeset 17725


Ignore:
Timestamp:
09/03/12 22:49:42 (6 years ago)
Author:
rvelices
Message:

merge -r17724 from trunk to branch 2.4
bug 2732: when new tags must be added, also look first for existing tags with different case

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.4/admin/include/functions.php

    r17668 r17725  
    220220    { 
    221221      delete_element_derivatives($row); 
    222       $new_ids[] += $row['id']; 
     222      $new_ids[] = $row['id']; 
    223223    } 
    224224    else 
     
    13211321function set_tags($tags, $image_id) 
    13221322{ 
    1323   $query = ' 
    1324 DELETE 
    1325   FROM '.IMAGE_TAG_TABLE.' 
    1326   WHERE image_id = '.$image_id.' 
    1327 ;'; 
    1328   pwg_query($query); 
    1329  
    1330   if (count($tags) > 0) 
    1331   { 
    1332     $inserts = array(); 
    1333     foreach ($tags as $tag_id) 
    1334     { 
    1335       array_push( 
    1336         $inserts, 
    1337         array( 
    1338           'tag_id' => $tag_id, 
    1339           'image_id' => $image_id 
    1340           ) 
    1341         ); 
    1342     } 
    1343     mass_inserts( 
    1344       IMAGE_TAG_TABLE, 
    1345       array_keys($inserts[0]), 
    1346       $inserts 
    1347       ); 
    1348   } 
     1323  set_tags_of( array($image_id=>$tags) ); 
    13491324} 
    13501325 
     
    13761351  foreach ($images as $image_id) 
    13771352  { 
    1378     foreach ($tags as $tag_id) 
    1379     { 
    1380       array_push( 
    1381         $inserts, 
    1382         array( 
     1353    foreach ( array_unique($tags) as $tag_id) 
     1354    { 
     1355      $inserts[] = array( 
    13831356          'image_id' => $image_id, 
    13841357          'tag_id' => $tag_id, 
    1385           ) 
    13861358        ); 
    13871359    } 
     
    14341406  } 
    14351407 
    1436   // does the tag already exists? 
     1408  // search existing by exact name 
    14371409  $query = ' 
    14381410SELECT id 
     
    14401412  WHERE name = \''.$tag_name.'\' 
    14411413;'; 
    1442   $existing_tags = array_from_query($query, 'id'); 
    1443  
    1444   if (count($existing_tags) == 0) 
    1445   { 
    1446     mass_inserts( 
    1447       TAGS_TABLE, 
    1448       array('name', 'url_name'), 
    1449       array( 
    1450         array( 
    1451           'name' => $tag_name, 
    1452           'url_name' => trigger_event('render_tag_url', $tag_name), 
    1453           ) 
    1454         ) 
    1455       ); 
    1456  
    1457     $page['tag_id_from_tag_name_cache'][$tag_name] = pwg_db_insert_id(TAGS_TABLE); 
    1458   } 
    1459   else 
    1460   { 
    1461     $page['tag_id_from_tag_name_cache'][$tag_name] = $existing_tags[0]; 
    1462   } 
    1463  
     1414  if (count($existing_tags = array_from_query($query, 'id')) == 0) 
     1415  { 
     1416    // search existing by case insensitive name 
     1417    $query = ' 
     1418SELECT id 
     1419  FROM '.TAGS_TABLE.' 
     1420  WHERE CONVERT(name, CHAR) = \''.$tag_name.'\' 
     1421;'; 
     1422    if (count($existing_tags = array_from_query($query, 'id')) == 0) 
     1423    { 
     1424      $url_name = trigger_event('render_tag_url', $tag_name); 
     1425      // search existing by url name 
     1426      $query = ' 
     1427SELECT id 
     1428  FROM '.TAGS_TABLE.' 
     1429  WHERE url_name = \''.$url_name.'\' 
     1430;'; 
     1431      if (count($existing_tags = array_from_query($query, 'id')) == 0) 
     1432      { 
     1433        mass_inserts( 
     1434          TAGS_TABLE, 
     1435          array('name', 'url_name'), 
     1436          array( 
     1437            array( 
     1438              'name' => $tag_name, 
     1439              'url_name' => $url_name, 
     1440              ) 
     1441            ) 
     1442          ); 
     1443        $page['tag_id_from_tag_name_cache'][$tag_name] = pwg_db_insert_id(TAGS_TABLE); 
     1444        return $page['tag_id_from_tag_name_cache'][$tag_name]; 
     1445      } 
     1446    } 
     1447  } 
     1448 
     1449  $page['tag_id_from_tag_name_cache'][$tag_name] = $existing_tags[0]; 
    14641450  return $page['tag_id_from_tag_name_cache'][$tag_name]; 
    14651451} 
     
    14801466    foreach ($tags_of as $image_id => $tag_ids) 
    14811467    { 
    1482       foreach ($tag_ids as $tag_id) 
     1468      foreach (array_unique($tag_ids) as $tag_id) 
    14831469      { 
    1484         array_push( 
    1485           $inserts, 
    1486           array( 
     1470        $inserts[] = array( 
    14871471            'image_id' => $image_id, 
    14881472            'tag_id' => $tag_id, 
    1489             ) 
    14901473          ); 
    14911474      } 
     
    21632146    if (preg_match('/^~~(\d+)~~$/', $raw_tag, $matches)) 
    21642147    { 
    2165       array_push($tag_ids, $matches[1]); 
     2148      $tag_ids[] = $matches[1]; 
    21662149    } 
    21672150    elseif ($allow_create) 
Note: See TracChangeset for help on using the changeset viewer.