Ignore:
Timestamp:
Jan 11, 2004, 1:05:10 AM (20 years ago)
Author:
z0rglub
Message:

improved again function insert_local_category : only one multiple insert
query, one update for uppercats field

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/release-1_3/admin/update.php

    r269 r272  
    9797  }
    9898
     99  // array of new categories to insert
     100  $inserts = array();
     101 
    99102  foreach ( $sub_dirs as $sub_dir ) {
    100103    // 5. Is the category already existing ? we create a subcat if not
     
    105108      if ( preg_match( '/^[a-zA-Z0-9-_.]+$/', $sub_dir ) )
    106109      {
     110        $value = '';
    107111        $name = str_replace( '_', ' ', $sub_dir );
    108         // we have to create the category
    109         $query = 'INSERT INTO '.PREFIX_TABLE.'categories';
    110         $query.= ' (dir,name,site_id,id_uppercat,uppercats) VALUES';
    111         $query.= " ('".$sub_dir."','".$name."',1";
    112         if ( !is_numeric( $id_uppercat ) ) $query.= ',NULL';
    113         else                               $query.= ','.$id_uppercat;
    114         $query.= ",'undef'";
    115         $query.= ');';
    116         mysql_query( $query );
    117         $category_id = mysql_insert_id();
    118         // updating uppercats field
    119         $query = 'UPDATE '.PREFIX_TABLE.'categories';
    120         $query.= " SET uppercats = '".$uppercats;
    121         if ( $uppercats != '' ) $query.= ',';
    122         $query.= $category_id;
    123         $query.= "'";
    124         $query.= ';';
    125         mysql_query( $query );
     112
     113        $value.= "('".$sub_dir."','".$name."',1";
     114        if ( !is_numeric( $id_uppercat ) ) $value.= ',NULL';
     115        else                               $value.= ','.$id_uppercat;
     116        $value.= ",'undef'";
     117        $value.= ')';
     118        array_push( $inserts, $value );
    126119      }
    127120      else
     
    131124      }
    132125    }
    133     // 6. recursive call
    134     if ( is_numeric( $category_id ) )
    135     {
    136       $output.= insert_local_category( $category_id );
    137     }
    138   }
    139                
     126  }
     127
     128  // we have to create the category
     129  if ( count( $inserts ) > 0 )
     130  {
     131    $query = 'INSERT INTO '.PREFIX_TABLE.'categories';
     132    $query.= ' (dir,name,site_id,id_uppercat,uppercats) VALUES ';
     133    $query.= implode( ',', $inserts );
     134    $query.= ';';
     135    mysql_query( $query );
     136    // updating uppercats field
     137    $query = 'UPDATE '.PREFIX_TABLE.'categories';
     138    $query.= ' SET uppercats = ';
     139    if ( $uppercats != '' ) $query.= "CONCAT('".$uppercats."',',',id)";
     140    else                    $query.= 'id';
     141    $query.= ' WHERE id_uppercat ';
     142    if (!is_numeric($id_uppercat)) $query.= 'IS NULL';
     143    else                           $query.= '= '.$id_uppercat;
     144    $query.= ';';
     145    mysql_query( $query );
     146  }
     147
     148  // Recursive call on the sub-categories (not virtual ones)
     149  $query = 'SELECT id';
     150  $query.= ' FROM '.PREFIX_TABLE.'categories';
     151  $query.= ' WHERE site_id = 1';
     152  if (!is_numeric($id_uppercat)) $query.= ' AND id_uppercat IS NULL';
     153  else                           $query.= ' AND id_uppercat = '.$id_uppercat;
     154  $query.= ' AND dir IS NOT NULL'; // virtual categories not taken
     155  $query.= ';';
     156  $result = mysql_query( $query );
     157  while ( $row = mysql_fetch_array( $result ) )
     158  {
     159    $output.= insert_local_category( $row['id'] );
     160  }
     161
    140162  if ( is_numeric( $id_uppercat ) )
    141163  {
Note: See TracChangeset for help on using the changeset viewer.