From 49a76e223b6e97b298002be4a174e576c9e8ba86 Mon Sep 17 00:00:00 2001
From: ftimme <ft@falkotimme.com>
Date: Fri, 09 Nov 2012 08:41:31 -0500
Subject: [PATCH] - Hide Options tab in subdomain and alias domain form if redirect_type != proxy. - Several changes in SEO redirects implementation.

---
 server/plugins-available/nginx_plugin.inc.php |  274 ++++++++++++++----------------------------------------
 1 files changed, 71 insertions(+), 203 deletions(-)

diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index e5920ad..d333954 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -922,40 +922,13 @@
 		// Set SEO Redirect
 		if($data['new']['seo_redirect'] != ''){
 			$vhost_data['seo_redirect_enabled'] = 1;
-			if($data['new']['subdomain'] == 'www' || $data['new']['subdomain'] == '*'){
-				if($data['new']['seo_redirect'] == 'non_www_to_www'){
-					$vhost_data['seo_redirect_origin_domain'] = $data['new']['domain'];
-					$vhost_data['seo_redirect_target_domain'] = 'www.'.$data['new']['domain'];
-					$vhost_data['seo_redirect_operator'] = '=';
+			$tmp_seo_redirects = $this->get_seo_redirects($data['new']);
+			if(is_array($tmp_seo_redirects) && !empty($tmp_seo_redirects)){
+				foreach($tmp_seo_redirects as $key => $val){
+					$vhost_data[$key] = $val;
 				}
-				if($data['new']['seo_redirect'] == '*_domain_tld_to_www_domain_tld'){
-					// ^(example\.com|(?!\bwww\b)\.example\.com)$
-					// ^(example\.com|((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.example\.com))$
-					$vhost_data['seo_redirect_origin_domain'] = '^('.str_replace('.', '\.', $data['new']['domain']).'|((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.'.str_replace('.', '\.', $data['new']['domain']).'))$';
-					$vhost_data['seo_redirect_target_domain'] = 'www.'.$data['new']['domain'];
-					$vhost_data['seo_redirect_operator'] = '~*';
-				}
-				if($data['new']['seo_redirect'] == '*_to_www_domain_tld'){
-					$vhost_data['seo_redirect_origin_domain'] = 'www.'.$data['new']['domain'];
-					$vhost_data['seo_redirect_target_domain'] = $vhost_data['seo_redirect_origin_domain'];
-					$vhost_data['seo_redirect_operator'] = '!=';
-				}
-			}
-			if($data['new']['seo_redirect'] == 'www_to_non_www'){
-				$vhost_data['seo_redirect_origin_domain'] = 'www.'.$data['new']['domain'];
-				$vhost_data['seo_redirect_target_domain'] = $data['new']['domain'];
-				$vhost_data['seo_redirect_operator'] = '=';
-			}
-			if($data['new']['seo_redirect'] == '*_domain_tld_to_domain_tld'){
-				// ^(.+)\.example\.com$
-				$vhost_data['seo_redirect_origin_domain'] = '^(.+)\.'.str_replace('.', '\.', $data['new']['domain']).'$';
-				$vhost_data['seo_redirect_target_domain'] = $data['new']['domain'];
-				$vhost_data['seo_redirect_operator'] = '~*';
-			}
-			if($data['new']['seo_redirect'] == '*_to_domain_tld'){
-				$vhost_data['seo_redirect_origin_domain'] = $data['new']['domain'];
-				$vhost_data['seo_redirect_target_domain'] = $vhost_data['seo_redirect_origin_domain'];
-				$vhost_data['seo_redirect_operator'] = '!=';
+			} else {
+				$vhost_data['seo_redirect_enabled'] = 0;
 			}
 		} else {
 			$vhost_data['seo_redirect_enabled'] = 0;
@@ -1202,40 +1175,9 @@
 					
 					// Add SEO redirects for alias domains
 					if($alias['seo_redirect'] != ''){
-						if($alias['subdomain'] == 'www' || $alias['subdomain'] == '*'){
-							if($alias['seo_redirect'] == 'non_www_to_www'){
-								$alias_seo_redirects[] = array(	'alias_seo_redirect_origin_domain' 	=> $alias['domain'],
-																'alias_seo_redirect_target_domain' 	=> 'www.'.$alias['domain'],
-																'alias_seo_redirect_operator' 	=> '=');
-							}
-							if($alias['seo_redirect'] == '*_domain_tld_to_www_domain_tld'){
-								// ^(example\.com|(?!\bwww\b)\.example\.com)$
-								// ^(example\.com|((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.example\.com))$
-								$alias_seo_redirects[] = array(	'alias_seo_redirect_origin_domain' 	=> '^('.str_replace('.', '\.', $alias['domain']).'|((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.'.str_replace('.', '\.', $alias['domain']).'))$',
-																'alias_seo_redirect_target_domain' 	=> 'www.'.$alias['domain'],
-																'alias_seo_redirect_operator' 	=> '~*');
-							}
-							if($alias['seo_redirect'] == '*_to_www_domain_tld'){
-								$alias_seo_redirects[] = array(	'alias_seo_redirect_origin_domain' 	=> 'www.'.$alias['domain'],
-																'alias_seo_redirect_target_domain' 	=> 'www.'.$alias['domain'],
-															'alias_seo_redirect_operator' 	=> '!=');
-							}
-						}
-						if($alias['seo_redirect'] == 'www_to_non_www'){
-							$alias_seo_redirects[] = array(	'alias_seo_redirect_origin_domain' 	=> 'www.'.$alias['domain'],
-															'alias_seo_redirect_target_domain' 	=> $alias['domain'],
-															'alias_seo_redirect_operator' 	=> '=');
-						}
-						if($alias['seo_redirect'] == '*_domain_tld_to_domain_tld'){
-							// ^(.+)\.example\.com$
-							$alias_seo_redirects[] = array(	'alias_seo_redirect_origin_domain' 	=> '^(.+)\.'.str_replace('.', '\.', $alias['domain']).'$',
-															'alias_seo_redirect_target_domain' 	=> $alias['domain'],
-															'alias_seo_redirect_operator' 	=> '~*');
-						}
-						if($alias['seo_redirect'] == '*_to_domain_tld'){
-							$alias_seo_redirects[] = array(	'alias_seo_redirect_origin_domain' 	=> $alias['domain'],
-															'alias_seo_redirect_target_domain' 	=> $alias['domain'],
-															'alias_seo_redirect_operator' 	=> '!=');
+						$tmp_seo_redirects = $this->get_seo_redirects($alias, 'alias_');
+						if(is_array($tmp_seo_redirects) && !empty($tmp_seo_redirects)){
+							$alias_seo_redirects[] = $tmp_seo_redirects;
 						}
 					}
 				}
@@ -1274,40 +1216,9 @@
 							// Add SEO redirects for alias domains
 							$alias_seo_redirects2 = array();
 							if($alias['seo_redirect'] != ''){
-								if($alias['subdomain'] == 'www' || $alias['subdomain'] == '*'){
-									if($alias['seo_redirect'] == 'non_www_to_www'){
-										$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> $alias['domain'],
-																			'alias_seo_redirect_target_domain' 	=> 'www.'.$alias['domain'],
-																			'alias_seo_redirect_operator' 	=> '=');
-									}
-									if($alias['seo_redirect'] == '*_domain_tld_to_www_domain_tld'){
-										// ^(example\.com|(?!\bwww\b)\.example\.com)$
-										// ^(example\.com|((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.example\.com))$
-										$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> '^('.str_replace('.', '\.', $alias['domain']).'|((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.'.str_replace('.', '\.', $alias['domain']).'))$',
-																			'alias_seo_redirect_target_domain' 	=> 'www.'.$alias['domain'],
-																			'alias_seo_redirect_operator' 	=> '~*');
-									}
-									if($alias['seo_redirect'] == '*_to_www_domain_tld'){
-										$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> 'www.'.$alias['domain'],
-																			'alias_seo_redirect_target_domain' 	=> 'www.'.$alias['domain'],
-																			'alias_seo_redirect_operator' 	=> '!=');
-									}
-								}
-								if($alias['seo_redirect'] == 'www_to_non_www'){
-									$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> 'www.'.$alias['domain'],
-																		'alias_seo_redirect_target_domain' 	=> $alias['domain'],
-																		'alias_seo_redirect_operator' 	=> '=');
-								}
-								if($alias['seo_redirect'] == '*_domain_tld_to_domain_tld'){
-									// ^(.+)\.example\.com$
-									$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> '^(.+)\.'.str_replace('.', '\.', $alias['domain']).'$',
-																		'alias_seo_redirect_target_domain' 	=> $alias['domain'],
-																		'alias_seo_redirect_operator' 	=> '~*');
-								}
-								if($alias['seo_redirect'] == '*_to_domain_tld'){
-									$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> $alias['domain'],
-																		'alias_seo_redirect_target_domain' 	=> $alias['domain'],
-																		'alias_seo_redirect_operator' 	=> '!=');
+								$tmp_seo_redirects = $this->get_seo_redirects($alias, 'alias_', 'none');
+								if(is_array($tmp_seo_redirects) && !empty($tmp_seo_redirects)){
+									$alias_seo_redirects2[] = $tmp_seo_redirects;
 								}
 							}
 							$rewrite_rules[] = array(	'rewrite_domain' 	=> $alias['domain'],
@@ -1341,40 +1252,9 @@
 							// Add SEO redirects for alias domains
 							$alias_seo_redirects2 = array();
 							if($alias['seo_redirect'] != ''){
-								if($alias['subdomain'] == 'www' || $alias['subdomain'] == '*'){
-									if($alias['seo_redirect'] == 'non_www_to_www'){
-										$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> $alias['domain'],
-																			'alias_seo_redirect_target_domain' 	=> 'www.'.$alias['domain'],
-																			'alias_seo_redirect_operator' 	=> '=');
-									}
-									if($alias['seo_redirect'] == '*_domain_tld_to_www_domain_tld'){
-										// ^(example\.com|(?!\bwww\b)\.example\.com)$
-										// ^(example\.com|((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.example\.com))$
-										$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> '^('.str_replace('.', '\.', $alias['domain']).'|((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.'.str_replace('.', '\.', $alias['domain']).'))$',
-																			'alias_seo_redirect_target_domain' 	=> 'www.'.$alias['domain'],
-																			'alias_seo_redirect_operator' 	=> '~*');
-									}
-									if($alias['seo_redirect'] == '*_to_www_domain_tld'){
-										$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> 'www.'.$alias['domain'],
-																			'alias_seo_redirect_target_domain' 	=> 'www.'.$alias['domain'],
-																			'alias_seo_redirect_operator' 	=> '!=');
-									}
-								}
-								if($alias['seo_redirect'] == 'www_to_non_www'){
-									$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> 'www.'.$alias['domain'],
-																		'alias_seo_redirect_target_domain' 	=> $alias['domain'],
-																		'alias_seo_redirect_operator' 	=> '=');
-								}
-								if($alias['seo_redirect'] == '*_domain_tld_to_domain_tld'){
-									// ^(.+)\.example\.com$
-									$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> '^(.+)\.'.str_replace('.', '\.', $alias['domain']).'$',
-																		'alias_seo_redirect_target_domain' 	=> $alias['domain'],
-																		'alias_seo_redirect_operator' 	=> '~*');
-								}
-								if($alias['seo_redirect'] == '*_to_domain_tld'){
-									$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> $alias['domain'],
-																		'alias_seo_redirect_target_domain' 	=> $alias['domain'],
-																		'alias_seo_redirect_operator' 	=> '!=');
+								$tmp_seo_redirects = $this->get_seo_redirects($alias, 'alias_', 'www');
+								if(is_array($tmp_seo_redirects) && !empty($tmp_seo_redirects)){
+									$alias_seo_redirects2[] = $tmp_seo_redirects;
 								}
 							}
 							$rewrite_rules[] = array(	'rewrite_domain' 	=> 'www.'.$alias['domain'],
@@ -1408,43 +1288,12 @@
 							// Add SEO redirects for alias domains
 							$alias_seo_redirects2 = array();
 							if($alias['seo_redirect'] != ''){
-								if($alias['subdomain'] == 'www' || $alias['subdomain'] == '*'){
-									if($alias['seo_redirect'] == 'non_www_to_www'){
-										$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> $alias['domain'],
-																			'alias_seo_redirect_target_domain' 	=> 'www.'.$alias['domain'],
-																			'alias_seo_redirect_operator' 	=> '=');
-									}
-									if($alias['seo_redirect'] == '*_domain_tld_to_www_domain_tld'){
-										// ^(example\.com|(?!\bwww\b)\.example\.com)$
-										// ^(example\.com|((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.example\.com))$
-										$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> '^('.str_replace('.', '\.', $alias['domain']).'|((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.'.str_replace('.', '\.', $alias['domain']).'))$',
-																			'alias_seo_redirect_target_domain' 	=> 'www.'.$alias['domain'],
-																			'alias_seo_redirect_operator' 	=> '~*');
-									}
-									if($alias['seo_redirect'] == '*_to_www_domain_tld'){
-										$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> 'www.'.$alias['domain'],
-																			'alias_seo_redirect_target_domain' 	=> 'www.'.$alias['domain'],
-																			'alias_seo_redirect_operator' 	=> '!=');
-									}
-								}
-								if($alias['seo_redirect'] == 'www_to_non_www'){
-									$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> 'www.'.$alias['domain'],
-																		'alias_seo_redirect_target_domain' 	=> $alias['domain'],
-																		'alias_seo_redirect_operator' 	=> '=');
-								}
-								if($alias['seo_redirect'] == '*_domain_tld_to_domain_tld'){
-									// ^(.+)\.example\.com$
-									$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> '^(.+)\.'.str_replace('.', '\.', $alias['domain']).'$',
-																		'alias_seo_redirect_target_domain' 	=> $alias['domain'],
-																		'alias_seo_redirect_operator' 	=> '~*');
-								}
-								if($alias['seo_redirect'] == '*_to_domain_tld'){
-									$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> $alias['domain'],
-																		'alias_seo_redirect_target_domain' 	=> $alias['domain'],
-																		'alias_seo_redirect_operator' 	=> '!=');
+								$tmp_seo_redirects = $this->get_seo_redirects($alias, 'alias_');
+								if(is_array($tmp_seo_redirects) && !empty($tmp_seo_redirects)){
+									$alias_seo_redirects2[] = $tmp_seo_redirects;
 								}
 							}
-							$rewrite_rules[] = array(	'rewrite_domain' 	=> '*.' . $alias['domain'],
+							$rewrite_rules[] = array(	'rewrite_domain' 	=> $alias['domain'].' *.'.$alias['domain'],
 								'rewrite_type' 		=> ($alias['redirect_type'] == 'no')?'':$alias['redirect_type'],
 								'rewrite_target' 	=> $alias['redirect_path'],
 								'rewrite_subdir'	=> $rewrite_subdir,
@@ -1477,40 +1326,13 @@
 							// Add SEO redirects for alias domains
 							$alias_seo_redirects2 = array();
 							if($alias['seo_redirect'] != ''){
-								if($alias['subdomain'] == 'www' || $alias['subdomain'] == '*'){
-									if($alias['seo_redirect'] == 'non_www_to_www'){
-										$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> $alias['domain'],
-																			'alias_seo_redirect_target_domain' 	=> 'www.'.$alias['domain'],
-																			'alias_seo_redirect_operator' 	=> '=');
-									}
-									if($alias['seo_redirect'] == '*_domain_tld_to_www_domain_tld'){
-										// ^(example\.com|(?!\bwww\b)\.example\.com)$
-										// ^(example\.com|((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.example\.com))$
-										$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> '^('.str_replace('.', '\.', $alias['domain']).'|((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.'.str_replace('.', '\.', $alias['domain']).'))$',
-																			'alias_seo_redirect_target_domain' 	=> 'www.'.$alias['domain'],
-																			'alias_seo_redirect_operator' 	=> '~*');
-									}
-									if($alias['seo_redirect'] == '*_to_www_domain_tld'){
-										$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> 'www.'.$alias['domain'],
-																			'alias_seo_redirect_target_domain' 	=> 'www.'.$alias['domain'],
-																			'alias_seo_redirect_operator' 	=> '!=');
-									}
+								if(substr($alias['domain'], 0, 2) === '*.'){
+									$tmp_seo_redirects = $this->get_seo_redirects($alias, 'alias_');
+								} else {
+									$tmp_seo_redirects = $this->get_seo_redirects($alias, 'alias_', 'none');
 								}
-								if($alias['seo_redirect'] == 'www_to_non_www'){
-									$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> 'www.'.$alias['domain'],
-																		'alias_seo_redirect_target_domain' 	=> $alias['domain'],
-																		'alias_seo_redirect_operator' 	=> '=');
-								}
-								if($alias['seo_redirect'] == '*_domain_tld_to_domain_tld'){
-									// ^(.+)\.example\.com$
-									$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> '^(.+)\.'.str_replace('.', '\.', $alias['domain']).'$',
-																		'alias_seo_redirect_target_domain' 	=> $alias['domain'],
-																		'alias_seo_redirect_operator' 	=> '~*');
-								}
-								if($alias['seo_redirect'] == '*_to_domain_tld'){
-									$alias_seo_redirects2[] = array(	'alias_seo_redirect_origin_domain' 	=> $alias['domain'],
-																		'alias_seo_redirect_target_domain' 	=> $alias['domain'],
-																		'alias_seo_redirect_operator' 	=> '!=');
+								if(is_array($tmp_seo_redirects) && !empty($tmp_seo_redirects)){
+									$alias_seo_redirects2[] = $tmp_seo_redirects;
 								}
 							}
 							$rewrite_rules[] = array(	'rewrite_domain' 	=> $domain_rule,
@@ -2592,6 +2414,52 @@
 		
 		return false;
 	}
+	
+	private function get_seo_redirects($web, $prefix = '', $force_subdomain = false){
+		// $force_subdomain = 'none|www'
+		$seo_redirects = array();
+		
+		if(substr($web['domain'], 0, 2) === '*.') $web['subdomain'] = '*';
+		
+		if(($web['subdomain'] == 'www' || $web['subdomain'] == '*') && $force_subdomain != 'www'){
+			if($web['seo_redirect'] == 'non_www_to_www'){
+				$seo_redirects[$prefix.'seo_redirect_origin_domain'] = $web['domain'];
+				$seo_redirects[$prefix.'seo_redirect_target_domain'] = 'www.'.$web['domain'];
+				$seo_redirects[$prefix.'seo_redirect_operator'] = '=';
+			}
+			if($web['seo_redirect'] == '*_domain_tld_to_www_domain_tld'){
+				// ^(example\.com|(?!\bwww\b)\.example\.com)$
+				// ^(example\.com|((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.example\.com))$
+				$seo_redirects[$prefix.'seo_redirect_origin_domain'] = '^('.str_replace('.', '\.', $web['domain']).'|((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.'.str_replace('.', '\.', $web['domain']).'))$';
+				$seo_redirects[$prefix.'seo_redirect_target_domain'] = 'www.'.$web['domain'];
+				$seo_redirects[$prefix.'seo_redirect_operator'] = '~*';
+			}
+			if($web['seo_redirect'] == '*_to_www_domain_tld'){
+				$seo_redirects[$prefix.'seo_redirect_origin_domain'] = 'www.'.$web['domain'];
+				$seo_redirects[$prefix.'seo_redirect_target_domain'] = 'www.'.$web['domain'];
+				$seo_redirects[$prefix.'seo_redirect_operator'] = '!=';
+			}
+		}
+		if($force_subdomain != 'none'){
+			if($web['seo_redirect'] == 'www_to_non_www'){
+				$seo_redirects[$prefix.'seo_redirect_origin_domain'] = 'www.'.$web['domain'];
+				$seo_redirects[$prefix.'seo_redirect_target_domain'] = $web['domain'];
+				$seo_redirects[$prefix.'seo_redirect_operator'] = '=';
+			}
+			if($web['seo_redirect'] == '*_domain_tld_to_domain_tld'){
+				// ^(.+)\.example\.com$
+				$seo_redirects[$prefix.'seo_redirect_origin_domain'] = '^(.+)\.'.str_replace('.', '\.', $web['domain']).'$';
+				$seo_redirects[$prefix.'seo_redirect_target_domain'] = $web['domain'];
+				$seo_redirects[$prefix.'seo_redirect_operator'] = '~*';
+			}
+			if($web['seo_redirect'] == '*_to_domain_tld'){
+				$seo_redirects[$prefix.'seo_redirect_origin_domain'] = $web['domain'];
+				$seo_redirects[$prefix.'seo_redirect_target_domain'] = $web['domain'];
+				$seo_redirects[$prefix.'seo_redirect_operator'] = '!=';
+			}
+		}
+		return $seo_redirects;
+	}
 
 } // end class
 

--
Gitblit v1.9.1