Ticket #2989: retrieve_op_conf_from_mysql.patch
| File retrieve_op_conf_from_mysql.patch, 7.8 kB (added by Nick_Lewis, 4 months ago) |
|---|
-
after/retrieve_op_conf_from_mysql.pl
old new 28 28 29 29 ######## LAYOUT INFO ######### 30 30 31 # This layout info should really be in a "panel" table in the freepbx database31 # NOTE - These values may be overwritten by values in a table in the freepbx database named "panel" 32 32 33 # structure is - Legend, startpos, stoppos, color1, color234 @rectangle1 = (" Trunks", 53, 80, "10ff10", "009900");35 @rectangle2 = (" Extensions", 1, 40, "1010ff", "099cccc");36 @rectangle3 = (" Parking lots", 49, 72, "ffff10", "cc9933");37 @rectangle4 = (" Conferences", 45, 68, "006666", "a01000");38 @rectangle5 = (" Queues", 41, 64, "ff1010", "a01000");33 # structure is - ID, Legend, startpos, stoppos, color1, color2 34 @rectangle1 = ("trunk","Trunks", 53, 80, "10ff10", "009900"); 35 @rectangle2 = ("extension","Extensions", 1, 40, "1010ff", "99cccc"); 36 @rectangle3 = ("parking","Parking lots", 49, 72, "ffff10", "cc9933"); 37 @rectangle4 = ("conference","Conferences", 45, 68, "006666", "00a010"); 38 @rectangle5 = ("queue","Queues", 41, 64, "ff1010", "a01000"); 39 39 @rectangles = (\@rectangle1,\@rectangle2,\@rectangle3,\@rectangle4,\@rectangle5); 40 40 41 $rectmarginx = 1; 42 $rectmarginy = 1; 43 $legendoffsetx = 3; 44 $legendoffsety = 1; 45 46 # $layoutbuttonsonly = 0 : allow display of buttons even if no corresponding layout info 47 # $layoutbuttonsonly = 1 : suppress display of buttons if no corresponding layout info 48 $layoutbuttonsonly = 1; 49 41 50 ######## BUTTON INFO ######### 42 51 $buttonsizex = 246; # 1+244+1 from information in op_style.cfg 43 52 $buttonsizey = 28; # 1+26+1 from information in op_style.cfg 44 53 $numbuttonsx = 4; 45 54 $numbuttonsy = 20; 55 $buttonsoriginx = -1; 56 $buttonsoriginy = 32; 46 57 47 58 48 59 ######## STYLE INFO ######### 60 61 # NOTE - These values may be overwritten by the syleinfo function with values generated from the layout info 62 49 63 $extenpos="2-40"; 50 64 #$trunkpos="52-60,71-80"; 51 65 #$confepos=""; … … 59 73 60 74 # End of changes 61 75 62 #automated generation of style-info63 $extenpos=styleinfo("Extensions");64 $trunkpos=styleinfo("Trunks");65 $parkingpos=styleinfo("Parking lots");66 $confepos=styleinfo("Conferences");67 $queuepos=styleinfo("Queues");68 69 76 70 77 # Remove or add Zap trunks as needed 71 78 # Note: ZAP/* will match any ZAP channel that *is not referenced* in another button (ie: extensions) … … 233 240 $dbh = DBI->connect("dbi:SQLite:dbname=$db_file","",""); 234 241 } 235 242 243 # Get layout-info from a "panel" table in the freepbx database 244 if (table_exists($dbh,"panel")) { 245 $statement = "SELECT id, legend, startpos, stoppos, color1, color2 from panel"; 246 $result = $dbh->selectall_arrayref($statement); 247 @resultSet = @{$result}; 248 if ( $#resultSet == -1 ) { 249 print "Notice: no panel defined\n"; 250 } 251 push(@panellist, @{ $result }); 252 @rectangles = @panellist; 253 } 254 255 # Automated generation of style-info from layout-info 256 $autoextenpos=styleinfo("extension"); 257 $autotrunkpos=styleinfo("trunk"); 258 $autoparkingpos=styleinfo("parking"); 259 $autoconfepos=styleinfo("conference"); 260 $autoqueuepos=styleinfo("queue"); 261 262 if ($layoutbuttonsonly == 1) {$extenpos = $trunkpos = $parkingpos = $confepos = $queuepos = ""} 263 264 if (defined($autoextenpos)) {$extenpos = $autoextenpos;} 265 if (defined($autotrunkpos)) {$trunkpos = $autotrunkpos;} 266 if (defined($autoparkingpos)) {$parkingpos = $autoparkingpos;} 267 if (defined($autoconfepos)) {$confepos = $autoconfepos;} 268 if (defined($autoqueuepos)) {$queuepos = $autoqueuepos;} 269 270 236 271 open( EXTEN, ">$op_conf" ) or die "Cannot create/overwrite config file: $op_conf ($!)\n"; 237 272 print EXTEN $warning_banner; 238 273 … … 537 572 538 573 foreach my $rect ( @rectangles ) { 539 574 my $comment = @{$rect}[0]; 540 my $color1 = @{$rect}[ 3];541 my $color2 = @{$rect}[ 4];542 my $start = @{$rect}[ 1];543 my $stop = @{$rect}[ 2];575 my $color1 = @{$rect}[4]; 576 my $color2 = @{$rect}[5]; 577 my $start = @{$rect}[2]; 578 my $stop = @{$rect}[3]; 544 579 545 my $xposition = $buttons izex * int(($start-1)/$numbuttonsy);546 my $yposition = $buttons izey * (($start-1)%$numbuttonsy);580 my $xposition = $buttonsoriginx + $buttonsizex * int(($start-1)/$numbuttonsy); 581 my $yposition = $buttonsoriginy + $buttonsizey * (($start-1)%$numbuttonsy); 547 582 my $xsize = $buttonsizex * (1 + int(($stop-1)/$numbuttonsy) - int(($start-1)/$numbuttonsy)); 548 583 my $ysize = $buttonsizey * (1 + (($stop-1)%$numbuttonsy) - (($start-1)%$numbuttonsy)); 584 585 if (($xsize <= 0) || ($ysize <= 0)) {next;} 549 586 550 $xsize -= 2; 551 $ysize -= 2; 587 $xposition += $rectmarginx; 588 $yposition += $rectmarginy; 589 $xsize -= 2 * $rectmarginx; 590 $ysize -= 2 * $rectmarginy; 552 591 553 $yposition += 32;554 555 592 print EXTEN "\n; $comment\n[rectangle]\nx=$xposition\ny=$yposition\nwidth=$xsize\nheight=$ysize\nline_width=0\nline_color=$color1\nfade_color1=$color1\nfade_color2=$color2\nrnd_border=2\nalpha=20\nlayer=bottom\n"; 556 593 } 557 594 558 595 ### Write legends 559 596 560 597 foreach my $legend ( @rectangles ) { 561 my $text = @{$legend}[0]; 562 my $start = @{$legend}[1]; 598 my $text = @{$legend}[1]; 599 my $start = @{$legend}[2]; 600 my $stop = @{$legend}[3]; 563 601 564 my $xposition = $buttonsizex * int(($start-1)/$numbuttonsy); 565 my $yposition = $buttonsizey * (($start-1)%$numbuttonsy); 602 my $xposition = $buttonsoriginx + $buttonsizex * int(($start-1)/$numbuttonsy); 603 my $yposition = $buttonsoriginy + $buttonsizey * (($start-1)%$numbuttonsy); 604 my $xsize = $buttonsizex * (1 + int(($stop-1)/$numbuttonsy) - int(($start-1)/$numbuttonsy)); 605 my $ysize = $buttonsizey * (1 + (($stop-1)%$numbuttonsy) - (($start-1)%$numbuttonsy)); 606 607 if (($xsize <= 0) || ($ysize <= 0)) {next;} 566 608 567 $xposition += 3;568 $yposition += 32;609 $xposition += $legendoffsetx; 610 $yposition += $legendoffsety; 569 611 570 612 print EXTEN "\n[LEGEND]\nx=$xposition\ny=$yposition\ntext=$text\nfont_size=18\nfont_family=Arial\nuse_embed_fonts=1\n"; 571 613 } … … 581 623 foreach $range (@rangelist) { 582 624 @rangeval=split("-",$range); 583 625 return $rangeval[0] if $last < $rangeval[0]; 584 return $last+1 if $last < $rangeval[1];626 return $last+1 if defined($rangeval[1]) && ($last < $rangeval[1]); 585 627 #Need to try another range def... 586 628 } 587 629 #If we get here, we ran out of positions :( … … 625 667 626 668 627 669 sub styleinfo { 628 my $legend = shift; 670 my $id = shift; 671 my $retval; 629 672 foreach my $rect ( @rectangles ) { 630 if ($ legend eq @{$rect}[0]) {673 if ($id eq @{$rect}[0]) { 631 674 632 my $start = @{$rect}[ 1];633 my $stop = @{$rect}[ 2];675 my $start = @{$rect}[2]; 676 my $stop = @{$rect}[3]; 634 677 635 678 my $xposition = int(($start-1)/$numbuttonsy); 636 679 my $yposition = (($start-1)%$numbuttonsy); 637 my $xsize = int(($stop-1)/$numbuttonsy) - int(($start-1)/$numbuttonsy);638 my $ysize = (($stop-1)%$numbuttonsy) - (($start-1)%$numbuttonsy);680 my $xsize = 1 + int(($stop-1)/$numbuttonsy) - int(($start-1)/$numbuttonsy); 681 my $ysize = 1 + (($stop-1)%$numbuttonsy) - (($start-1)%$numbuttonsy); 639 682 683 if (($xsize <= 0) || ($ysize <= 0)) {print "Warning: rectange '$id' has negative area\n"; last;} 640 684 $styleinfo = ""; 641 685 if ($ysize > 2) { 642 $styleinfo .= ($start + 1) . "-" . ($start + $ysize ) . ",";686 $styleinfo .= ($start + 1) . "-" . ($start + $ysize - 1) . ","; 643 687 } 644 688 elsif ($ysize == 2) { 645 689 $styleinfo .= ($start + 1) . ","; 646 690 } 647 691 648 for (my $i = 1 ; $i < =$xsize ; $i++ ) {692 for (my $i = 1 ; $i < $xsize ; $i++ ) { 649 693 if ($ysize > 1) { 650 $styleinfo .= (($i + $xposition) * $numbuttonsy + $yposition + 1) . "-" . (($i + $xposition) * $numbuttonsy + $yposition + $ysize + 1) . ",";694 $styleinfo .= (($i + $xposition) * $numbuttonsy + $yposition + 1) . "-" . (($i + $xposition) * $numbuttonsy + $yposition + $ysize) . ","; 651 695 } 652 696 else { 653 697 $styleinfo .= (($i + $xposition) * $numbuttonsy + $yposition + 1) . ","; 654 698 } 655 699 } 700 $retval = $styleinfo; 656 701 last; 657 702 } 658 703 } 659 return $ styleinfo;704 return $retval; 660 705 }
