web/wp-content/plugins/xili-language/uninstall.php
changeset 194 32102edaa81b
equal deleted inserted replaced
193:2f6f6f7551ca 194:32102edaa81b
       
     1 <?php
       
     2 
       
     3 /**
       
     4  * During uninstall: delete all taxonomies elements and relationships
       
     5  *
       
     6  * @since 1.8.8
       
     7  *
       
     8  * ONLY WORKS IF WEBMASTER has checked "delete DB datas" in xili-language settings BEFORE deactivate and fires delete in plugins list.
       
     9  *
       
    10  */
       
    11 
       
    12 
       
    13 if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) || is_multisite() ) {// must done site by site 
       
    14 	echo 'impossible to erase plugin in multisite mode';
       
    15 	exit();
       
    16 }
       
    17 // check if delete_settings is set 
       
    18 
       
    19 $xl_settings = get_option('xili_language_settings');
       
    20 
       
    21 if ( $xl_settings['delete_settings'] == 'delete'  ) {
       
    22 	
       
    23 	delete_taxonomies ($xl_settings);
       
    24 	
       
    25 	// Options
       
    26 	delete_option('xili_language_widgets_options');
       
    27 	delete_option('xili_widget_recent_comments');
       
    28 	delete_option('xili_widget_recent_entries');
       
    29 	delete_option('xili_language_settings');
       
    30 }
       
    31 
       
    32 function delete_taxonomies ($xl_settings) {
       
    33 	
       
    34 	// temporary register taxonomies (plugin is deactivated)
       
    35 	
       
    36 	register_taxonomy( $xl_settings['taxonomy'], 'post', array('hierarchical' => false, 'label' => false, 'rewrite' => false,   'show_ui' => false, '_builtin' => false ));
       
    37 	register_taxonomy( $xl_settings['taxolangsgroup'], 'term', array('hierarchical' => false, 'update_count_callback' => '', 'show_ui' => false, 'label'=>false, 'rewrite' => false, '_builtin' => false ));
       
    38 	register_taxonomy( 'link_'.$xl_settings['taxonomy'], 'link', array('hierarchical' => false, 'label' => false, 'rewrite' => false, 'show_ui' => false, '_builtin' => false ));
       
    39 	
       
    40 	
       
    41 	// list of languages
       
    42 	
       
    43 	$languages = get_terms($xl_settings['taxonomy'], array('hide_empty' => false));
       
    44 	//update_option ( 'xili_language_settings_bk', $xl_settings );
       
    45 	
       
    46 	// array postmeta lang-xx_xx
       
    47 	foreach ($languages as $language ) {
       
    48 		$postmeta_suffixes[] = $language->slug ;
       
    49 	}
       
    50 	foreach ($languages as $language )  {
       
    51 		
       
    52 		$term_id = $language->term_id;
       
    53 		
       
    54 		$post_IDs = get_objects_in_term( array( $term_id ), array( $xl_settings['taxonomy'] ) );
       
    55 		
       
    56 		foreach ( $post_IDs as $post_ID ) {
       
    57 			// delete postmeta lang-xx_xx
       
    58 			foreach ( $postmeta_suffixes as $postmeta_suffix ) {
       
    59 				if ( $language->slug != $postmeta_suffix ) delete_post_meta( $post_ID, $xl_settings['reqtag'].'-'.$postmeta_suffix ) ;
       
    60 			}
       
    61 			// delete relationships posts
       
    62 	 		wp_delete_object_term_relationships( $post_ID, $xl_settings['taxonomy'] );
       
    63 		}
       
    64 		
       
    65 	 	wp_delete_object_term_relationships( $term_id, $xl_settings['taxolangsgroup'] );
       
    66 		
       
    67 		// link_language links
       
    68 		$links = get_objects_in_term( array( $term_id ), array( 'link_'.$xl_settings['taxonomy'] ) );
       
    69 		
       
    70 		foreach ( $links as $link ) {	   
       
    71 			wp_delete_object_term_relationships( $link, 'link_'.$xl_settings['taxonomy'] );
       
    72 		}
       
    73 		
       
    74 		// delete terms
       
    75 		$linklang = term_exists($language->slug,'link_'.$xl_settings['taxonomy']);
       
    76 			if ( $linklang ) wp_delete_term( $term_id, 'link_'.$xl_settings['taxonomy'] );
       
    77 		wp_delete_term( $term_id, $xl_settings['taxonomy'] );
       
    78 	 
       
    79 	} 
       
    80 	$term_group = term_exists( 'ev_er', 'link_'.$xl_settings['taxonomy'] ); /* special ever language for links */
       
    81 	// link_language links
       
    82 	$links = get_objects_in_term( array( $term_group['term_id'] ), array( 'link_'.$xl_settings['taxonomy'] ) );
       
    83 		
       
    84 	foreach ( $links as $link ) {	   
       
    85 		wp_delete_object_term_relationships( $link_id, 'link_'.$xl_settings['taxonomy'] );
       
    86 	}
       
    87 	wp_delete_term( $term_group['term_id'], 'link_'.$xl_settings['taxonomy'] );
       
    88 	
       
    89 	// delete taxonomie groups ['taxolangsgroup'] - when count = 0
       
    90 	$term_group = term_exists( 'the-langs-group', $xl_settings['taxolangsgroup'] );
       
    91 	wp_delete_term( $term_group['term_id'], $xl_settings['taxolangsgroup'] );
       
    92 	
       
    93 }
       
    94 
       
    95 ?>