Go Back   HowtoForge Forums | HowtoForge - Linux Howtos and Tutorials > ISPConfig 2 > Developers' Forum

Do you like HowtoForge? Please consider supporting us by becoming a subscriber.
Reply
 
Thread Tools Display Modes
  #1  
Old 14th February 2007, 13:27
danf.1979 danf.1979 is offline
Senior Member
 
Join Date: Dec 2005
Location: Chile
Posts: 239
Thanks: 2
Thanked 3 Times in 2 Posts
Send a message via MSN to danf.1979
Default $doc->deck[$id]->elements[] fix script

I'm working on a script to replace id from elements with the names, I'll finish it and post it here...

Last edited by danf.1979; 14th February 2007 at 13:49.
Reply With Quote
  #2  
Old 14th February 2007, 13:52
till till is offline
Super Moderator
 
Join Date: Apr 2005
Location: Lüneburg, Germany
Posts: 19,796
Thanks: 285
Thanked 1,805 Times in 1,357 Posts
Default

Thats great news! Thanks.
__________________
Till Brehm
--
http://www.projektfarm.com/en/
Reply With Quote
  #3  
Old 14th February 2007, 14:23
danf.1979 danf.1979 is offline
Senior Member
 
Join Date: Dec 2005
Location: Chile
Posts: 239
Thanks: 2
Thanked 3 Times in 2 Posts
Send a message via MSN to danf.1979
Default

I have a problem. For example, here:
Code:
        if($tablevalues["web_individual_error_pages"] == 0) {

                $doc->deck[6]->getElementByName("t5")->visible = 0;

// PROBLEM START
                $doc->deck[6]->elements[10]->visible = 0;
// END PROBLEM

                $doc->deck[6]->getElementByName("error_400")->visible = 0;

                $doc->deck[6]->getElementByName("error_401")->visible = 0;

                $doc->deck[6]->getElementByName("error_403")->visible = 0;
I cannot translate it. It doesn't have a name. This is the object, and is messing with my id to name numeration!
Code:
stdClass Object
(
    [visible] => 0
)
How to fix this?

Code:
$deck_id = 0;
foreach ($doc->deck as $deck) {
  $x = 0;
  if (isset($doc->deck[$deck_id])) {
    print "&nbsp;&nbsp;&nbsp;&nbsp;#deck[".$deck_id."]<br>";
    print "&nbsp;&nbsp;&nbsp;&nbsp;{<br>";
    while ($x <= 200) {
      if (isset($deck->elements[$x])) {
        print "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$x.": \"".$deck->elements[$x]->name."\",<br>";
      }
      $x++;
    }
    print "&nbsp;&nbsp;&nbsp;&nbsp;},<br>";
  }
  $deck_id++;
}
I'm using while $x<200 (200 for a safe high number only) because a foreach loop skippes some elements. Yes, strange. I couldn't find out why.
This is generated, and it would be a perfect copy paste for my dictionary in the python script, but THAT little $doc->deck[6]->elements[10], and others like him, are getting on the way.
Code:
    #deck[0]
    {
      0: "server_id",
      1: "web_host",
      3: "web_domain",
      4: "web_ip",
      5: "web_dns",
      6: "web_dns_mx",
      7: "t1",
      8: "web_speicher",
      9: "web_traffic",
      10: "web_traffic_ueberschreitung",
      11: "web_mailquota",
      12: "web_userlimit",
      13: "web_domainlimit",
      14: "t2",
      15: "web_shell",
      16: "web_cgi",
      17: "web_cgi_mod_perl",
      20: "web_standard_cgi",
      21: "web_php",
      22: "web_php_safe_mode",
      23: "web_ssi",
      24: "web_ftp",
      25: "web_frontpage",
      26: "web_mysql",
      27: "web_mysql_anzahl_dbs",
      28: "web_mysql_quota",
      29: "web_ssl",
      30: "web_anonftp",
      31: "web_anonftplimit",
      32: "web_postgresql",
      33: "web_wap",
      34: "web_individual_error_pages",
      35: "status",
      36: "web_mailuser_login",
      37: "trweb",
      38: "web_httpd_include",
      39: "web_traffic_status",
    },
    #deck[1]
    {
      0: "user",
    },
    #deck[2]
    {
      0: "domain_abh",
    },
    #deck[3]
    {
      1: "ssl_country",
      2: "ssl_state",
      3: "ssl_locality",
      4: "ssl_organization",
      5: "ssl_organization_unit",
      7: "ssl_days",
      8: "t4",
      9: "ssl_request",
      10: "ssl_cert",
      11: "ssl_action",
    },
    #deck[4]
    {
      0: "web_shop",
      1: "web_phpmyadmin",
      2: "web_webmail",
      3: "web_webalizer",
    },
    #deck[5]
    {
      0: "check_webspace",
      1: "traffic",
    },
    #deck[6]
    {
      0: "optionen_db_liste",
      1: "optionen_mysql_user",
      2: "check_database",
      3: "optionen_mysql_passwort",
      4: "optionen_mysql_remote_access",
      5: "optionen_frontpage_passwort",
      6: "optionen_local_mailserver",
      7: "optionen_logsize",
      8: "optionen_directory_index",
      9: "t5",
      11: "error_400",
      12: "error_401",
      13: "error_403",
      14: "error_404",
      15: "error_405",
      16: "error_500",
      17: "error_503",
      18: "t6",
      19: "webalizer_stats",
    },
    #deck[7]
    {
      0: "isp_web_faktura",
    },
Reply With Quote
  #4  
Old 14th February 2007, 14:35
danf.1979 danf.1979 is offline
Senior Member
 
Join Date: Dec 2005
Location: Chile
Posts: 239
Thanks: 2
Thanked 3 Times in 2 Posts
Send a message via MSN to danf.1979
Default

This are all my problems:
Code:
$doc->deck[6]->elements[10]->visible = 0;
$doc->deck[0]->elements[18]->value = $vorlage["web_php"];  

$doc->deck[0]->elements[19]->value = $vorlage["web_php_safe_mode"];
I think they are all of them.
Code:
printf("<pre>%s</pre>", print_r($doc->deck[0]->elements[18], true));
printf("<pre>%s</pre>", print_r($doc->deck[0]->elements[19], true));
Nothing on the screen.
Are this things used for something?
Reply With Quote
  #5  
Old 14th February 2007, 14:42
danf.1979 danf.1979 is offline
Senior Member
 
Join Date: Dec 2005
Location: Chile
Posts: 239
Thanks: 2
Thanked 3 Times in 2 Posts
Send a message via MSN to danf.1979
Default

Sorry for the several posts. Here IS my problem:
Code:
$doc->deck[0]->getElementByName("web_cgi")->value = $vorlage["web_cgi"];

$doc->deck[0]->getElementByName("web_cgi_mod_perl")->value = $vorlage["web_standard_cgi"];

$doc->deck[0]->elements[18]->value = $vorlage["web_php"];

$doc->deck[0]->elements[19]->value = $vorlage["web_php_safe_mode"];

$doc->deck[0]->getElementByName("web_php")->value = $vorlage["web_ssi"];

$doc->deck[0]->getElementByName("web_php_safe_mode")->value = $vorlage["web_ftp"];
Reply With Quote
  #6  
Old 15th February 2007, 10:53
till till is offline
Super Moderator
 
Join Date: Apr 2005
Location: Lüneburg, Germany
Posts: 19,796
Thanks: 285
Thanked 1,805 Times in 1,357 Posts
Default

The variable "$vorlage" contains the values from the hostingplan, so they are only true if they are set to true in the hosting plan.

To the elements 18 + 19, If i remember correctly, every elemnt has a name by default. So maybe these two elements where not used anymore? Do you see any differences when you comment out the two lines?
__________________
Till Brehm
--
http://www.projektfarm.com/en/
Reply With Quote
  #7  
Old 16th February 2007, 01:47
danf.1979 danf.1979 is offline
Senior Member
 
Join Date: Dec 2005
Location: Chile
Posts: 239
Thanks: 2
Thanked 3 Times in 2 Posts
Send a message via MSN to danf.1979
Default

It seems to be working now... Did you fix something?

Last edited by danf.1979; 16th February 2007 at 01:51.
Reply With Quote
  #8  
Old 16th February 2007, 22:07
danf.1979 danf.1979 is offline
Senior Member
 
Join Date: Dec 2005
Location: Chile
Posts: 239
Thanks: 2
Thanked 3 Times in 2 Posts
Send a message via MSN to danf.1979
Default

Ok here is the script if someone needs it from now on. Although I think I've changed all files that used $doc->deck[]->elements, at least in lib/classes/.
Paste the php code on the constructor or show function.
Then paste the output to the list named 'decks' inside this script. It should map every id with its corresponding name. Just paste it as it appears on the screen. Nothing more to do. Then define the file that is going to be parsed and changed. Changes respects identation.

Code:
#!/usr/bin/env python
import os,sys

# PHP
#$deck_id = 0;
#foreach ($doc->deck as $deck) {
#  $x = 0;
#  if (isset($doc->deck[$deck_id])) {
#    print "&nbsp;&nbsp;&nbsp;&nbsp;#deck[".$deck_id."]<br>";
#    print "&nbsp;&nbsp;&nbsp;&nbsp;{<br>";
#    while ($x <= 200) {
#      if (isset($deck->elements[$x])) {
#        print "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$x.": \"".$deck->elements[$x]->name."\",<br>";
#      }
#      $x++;
#    }
#    print "&nbsp;&nbsp;&nbsp;&nbsp;},<br>";
#  }
#  $deck_id++;
#}
# END PHP

# file here
file = "/home/admispconfig/ispconfig/lib/classes/ispconfig_isp_user.lib.php"

if not os.path.exists(file):
  sys.exit("%s does not exist" % file)


decks = [
  #PASTE HERE
  # This is the list of dictionary definitions
]

lines = open(file, "r").readlines()
newlines = []
count = 0
for line in lines:
  if line[-1] == "\n":
    line = line[:-1]
  deck_id = 0
  found = False
  for deck in decks:
    for id,name in deck.items():
      old = "$doc->deck["+str(deck_id)+"]->elements["+str(id)+"]"
      new = "$doc->deck["+str(deck_id)+"]->getElementByName(\""+str(name)+"\")"
      if old in line:
        found = True
        line = line.replace(old, new)
        newlines.append(line)
        count = count + 1
    deck_id = deck_id+1
  if not found:
    newlines.append(line)

f = open(file, "w")
f.writelines("\n".join(newlines))
print count, "lines modified"
f.close()

Last edited by danf.1979; 16th February 2007 at 22:10.
Reply With Quote
Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 15:55.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Sponsored Links: Unified Communications: Thoughts, Strategies and Predictions
Join the discussion.
www.seamlessenterprise.com

IP Convergence
Integrate your wireless and wireline networks.
Learn how from the experts at Sprint.
www.seamlessenterprise.com

Wireless & Wireline Integration
Thoughts, strategies and solutions: join the discussion
www.seamlessenterprise.com

Unified Communications 2009
Join the Discussion. Now.
www.seamlessenterprise.com

Red Hat Virtual Experience - a free virtual event. Dec. 9th