1#!/usr/local/bin/perl 2# Create, modify or delete a view 3 4require './mysql-lib.pl'; 5&ReadParse(); 6&error_setup($text{'view_err'}); 7&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'}); 8$access{'edonly'} && &error($text{'dbase_ecannot'}); 9$access{'views'} || &error($text{'view_ecannot'}); 10 11if ($in{'delete'}) { 12 # Just drop the view 13 $sql = "drop view "."estr($in{'old'}); 14 &execute_sql_logged($in{'db'}, $sql); 15 &webmin_log("delete", "view", $in{'old'}, \%in); 16 } 17else { 18 # Validate inputs 19 if (!$in{'old'}) { 20 $in{'name'} =~ /^\S+$/ || &error($text{'view_ename'}); 21 @views = &list_views($in{'db'}); 22 &indexof($in{'name'}, @views) >= 0 && 23 &error($text{'view_eclash'}); 24 @tables = &list_tables($in{'db'}); 25 &indexof($in{'name'}, @tables) >= 0 && 26 &error($text{'view_eclash2'}); 27 } 28 $in{'query'} =~ /\S/ || &error($text{'view_equery'}); 29 $in{'query'} =~ s/\r|\n/ /g; 30 $in{'definer_def'} || $in{'definer'} =~ /\S/ || 31 &error($text{'view_edefiner'}); 32 33 if ($in{'old'}) { 34 # Alter the existing view 35 $sql = "alter ". 36 "algorithm = $in{'algorithm'} ". 37 "definer = $in{'definer'} ". 38 "sql security $in{'security'} ". 39 "view "."estr($in{'old'})." ". 40 "as $in{'query'} ". 41 ($in{'check'} ? "with $in{'check'} check option" : ""); 42 } 43 else { 44 # Create a new view 45 $sql = "create ". 46 "algorithm = $in{'algorithm'} ". 47 ($in{'definer_def'} ? "" : "definer = $in{'definer'} "). 48 ($in{'security'} ? "sql security $in{'security'} " : ""). 49 "view "."estr($in{'name'})." ". 50 "as $in{'query'} ". 51 ($in{'check'} ? "with $in{'check'} check option" : ""); 52 } 53 &execute_sql_logged($in{'db'}, $sql); 54 55 if ($in{'old'}) { 56 &webmin_log("modify", "view", $in{'old'}, \%in); 57 } 58 else { 59 &webmin_log("create", "view", $in{'name'}, \%in); 60 } 61 } 62&redirect("edit_dbase.cgi?db=$in{'db'}"); 63 64