Function Reference: geodir_location_activation_script
Summary
Function to install all location manager related data and options.
Global Values
- $wpdb
- (object) (required) WordPress Database object.
- Default: None
- $plugin_prefix
- (string) (required) Geodirectory plugin table prefix.
- Default: None
Package
GeoDirectory_Location_Manager
Change Log
Since: 1.0.0
Source File
geodir_location_activation_script() is located in geodir_location_manager/geodir_location_hooks_actions.php [Line: 62]
Source Code
function geodir_location_activation_script() {
global $wpdb,$plugin_prefix;
/**
* Include any functions needed for upgrades.
*
* @since 1.3.6
*/
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
$is_set_default_location = geodir_get_default_location();
$wpdb->hide_errors();
// rename tables if we need to
if($wpdb->query("SHOW TABLES LIKE 'geodir_post_locations'")>0){$wpdb->query("RENAME TABLE geodir_post_locations TO ".$wpdb->prefix."geodir_post_locations");}
if($wpdb->query("SHOW TABLES LIKE 'geodir_post_neighbourhood'")>0){$wpdb->query("RENAME TABLE geodir_post_neighbourhood TO ".$wpdb->prefix."geodir_post_neighbourhood");}
if($wpdb->query("SHOW TABLES LIKE 'geodir_countries'")>0){$wpdb->query("RENAME TABLE geodir_countries TO ".$wpdb->prefix."geodir_countries");}
if($wpdb->query("SHOW TABLES LIKE 'geodir_location_seo'")>0){$wpdb->query("RENAME TABLE geodir_location_seo TO ".$wpdb->prefix."geodir_location_seo");}
$collate = '';
if($wpdb->has_cap( 'collation' )) {
if(!empty($wpdb->charset)) $collate = "DEFAULT CHARACTER SET $wpdb->charset";
if(!empty($wpdb->collate)) $collate .= " COLLATE $wpdb->collate";
}
if($wpdb->get_var("SHOW TABLES LIKE '".POST_LOCATION_TABLE."'") != POST_LOCATION_TABLE)
{
$location_table = "CREATE TABLE IF NOT EXISTS ".POST_LOCATION_TABLE." (
`location_id` int(11) NOT NULL AUTO_INCREMENT,
`country` varchar(254) NOT NULL,
`region` varchar(254) NOT NULL,
`city` varchar(254) NOT NULL,
`country_slug` varchar(254) NOT NULL,
`region_slug` varchar(254) NOT NULL,
`city_slug` varchar(254) NOT NULL,
`city_latitude` varchar(254) NOT NULL,
`city_longitude` varchar(254) NOT NULL,
`is_default` ENUM( '0', '1' ) NOT NULL DEFAULT '0',
`city_meta` VARCHAR( 254 ) NOT NULL,
`city_desc` TEXT NOT NULL,
PRIMARY KEY (`location_id`)) $collate ";
if ( $wpdb->query( "SHOW TABLES LIKE 'geodir_post_locations'" ) > 0 ) {
$wpdb->query( "RENAME TABLE geodir_post_locations TO " . $wpdb->prefix . "geodir_post_locations" );
} else {
dbDelta( $location_table );
}
}
$location_result = (array)geodir_get_default_location(); // this function is there in core plugin location_functions.php file.
$post_types = geodir_get_posttypes(); // Fuction in core geodirectory plugin
$location_info = geodir_add_new_location_via_adon($location_result);
geodir_location_set_default($location_info->location_id);
if(!empty($post_types)){
foreach($post_types as $post_type){
$table = $plugin_prefix.$post_type.'_detail';
$wpdb->query(
$wpdb->prepare(
"UPDATE ".$table." SET post_location_id=%d WHERE post_location_id=0",
array($location_info->location_id)
)
);
}
}
if($wpdb->get_var("SHOW TABLES LIKE '".POST_NEIGHBOURHOOD_TABLE."'") != POST_NEIGHBOURHOOD_TABLE)
{
$neighbourhood_table = "CREATE TABLE IF NOT EXISTS ".POST_NEIGHBOURHOOD_TABLE." (
`hood_id` int(11) NOT NULL AUTO_INCREMENT,
`hood_location_id` int(11) NOT NULL,
`hood_name` varchar(254) NOT NULL,
`hood_latitude` varchar(254) NOT NULL,
`hood_longitude` varchar(254) NOT NULL,
`hood_slug` varchar(254) NOT NULL,
PRIMARY KEY (`hood_id`)) $collate ";
if ( $wpdb->query( "SHOW TABLES LIKE 'geodir_post_neighbourhood'" ) > 0 ) {
$wpdb->query( "RENAME TABLE geodir_post_neighbourhood TO " . $wpdb->prefix . "geodir_post_neighbourhood" );
} else {
dbDelta( $neighbourhood_table );
}
}
$address_extra_info = $wpdb->get_results("select id, extra_fields from ".GEODIR_CUSTOM_FIELDS_TABLE." where field_type = 'address'");
if(!empty($address_extra_info)){
foreach($address_extra_info as $extra){
$fields = array();
if($extra->extra_fields != ''){
$fields = unserialize($extra->extra_fields);
if(!isset($fields['show_city'])){ $fields['show_city'] = 1;}
if(!isset($fields['city_lable'])){ $fields['city_lable'] = __('City', GEODIRLOCATION_TEXTDOMAIN);}
if(!isset($fields['show_region'])){ $fields['show_region'] = 1;}
if(!isset($fields['region_lable'])){ $fields['region_lable'] = __('Region', GEODIRLOCATION_TEXTDOMAIN);}
if(!isset($fields['show_country'])){ $fields['show_country'] = 1;}
if(!isset($fields['country_lable'])){ $fields['country_lable'] = __('Country', GEODIRLOCATION_TEXTDOMAIN);}
$wpdb->query(
$wpdb->prepare(
"UPDATE ".GEODIR_CUSTOM_FIELDS_TABLE." SET extra_fields=%s WHERE id=%d",
array(serialize($fields),$extra->id)
)
);
}
}
}
//$post_types = geodir_get_posttypes();
if(!empty($post_types)){
foreach($post_types as $post_type){
$detail_table = $plugin_prefix.$post_type.'_detail';
$meta_field_add = "VARCHAR( 30 ) NULL";
geodir_add_column_if_not_exist( $detail_table, "post_neighbourhood", $meta_field_add );
}
}
// location seo table
if($wpdb->get_var("SHOW TABLES LIKE '".LOCATION_SEO_TABLE."'") != LOCATION_SEO_TABLE)
{
$location_table = "CREATE TABLE IF NOT EXISTS ".LOCATION_SEO_TABLE." (
`seo_id` int(11) NOT NULL AUTO_INCREMENT,
`location_type` varchar(255) NOT NULL,
`country_slug` varchar(254) NOT NULL,
`region_slug` varchar(254) NOT NULL,
`city_slug` varchar(254) NOT NULL,
`seo_title` varchar(254) NOT NULL,
`seo_desc` text NOT NULL,
`date_created` datetime NOT NULL,
`date_updated` datetime NOT NULL,
PRIMARY KEY (`seo_id`)
) $collate ";
if ( $wpdb->query( "SHOW TABLES LIKE 'geodir_location_seo'" ) > 0 ) {
$wpdb->query( "RENAME TABLE geodir_location_seo TO " . $wpdb->prefix . "geodir_location_seo" );
} else {
dbDelta( $location_table );
}
}
// location term count table
if($wpdb->get_var("SHOW TABLES LIKE '".GEODIR_TERM_META."'") != GEODIR_TERM_META)
{
$term_meta_table = "CREATE TABLE IF NOT EXISTS ".GEODIR_TERM_META." (
id int NOT NULL AUTO_INCREMENT,
location_type varchar( 100 ) NULL DEFAULT NULL,
location_name varchar( 100 ) NULL DEFAULT NULL,
term_count varchar( 5000 ) NULL DEFAULT NULL,
review_count varchar( 5000 ) NULL DEFAULT NULL,
PRIMARY KEY (id)
) $collate ";
dbDelta( $term_meta_table );
}
}