File: class_setupStep_Schema.inc

package info (click to toggle)
gosa 2.7.4%2Breloaded3-16
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 38,716 kB
  • sloc: php: 87,789; perl: 14,364; xml: 4,987; javascript: 4,127; sh: 887; pascal: 306; sql: 263; python: 162; makefile: 76
file content (109 lines) | stat: -rw-r--r-- 3,776 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?php

/*
   This code is part of GOsa (https://gosa.gonicus.de)
   Copyright (C) 2007 Fabian Hickert

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/


class Step_Schema extends setup_step
{
    var $checked = array();
    var $not_checked = array();
    var $b_displayCheckbutton = true;

    function __construct()
    {
        $this->update_strings();
    }


    function update_strings()
    {
        $this->s_title      = _("LDAP schema check");
        $this->s_title_long = _("LDAP schema check");
        $this->s_info       = _("Perform test on your current LDAP schema");
    }


    function execute()
    {
        // Establish ldap connection
        $cv = $this->parent->captured_values;
        $ldap_l = new LDAP($cv['admin'],
                $cv['password'],
                $cv['connection'],
                FALSE,
                $cv['tls']);

        // Detect Schema Info
        $ldap = new ldapMultiplexer($ldap_l);
        $ldap->cd($cv['base']);
        $objectclasses = $ldap->get_objectclasses(TRUE);
   
        // Check if we can find something
        $ldap->set_size_limit(1);
        $res = $ldap->search("(objectClass=*)");  
        $ldap->set_size_limit(0);
    
        // Validate schema
        $cR = new configRegistry(NULL);;
        $cR->validateSchemata(TRUE,TRUE,$objectclasses);
        $info = $cR->getSchemaResults();
        $disabled = $cR->getDisabledPlugins();

        // Check if the 'AT LEAST' required classes are available.  
        $smarty = get_smarty();
        $smarty->assign('message', "");
        $smarty->assign('database_initialised', ($res==TRUE));
        $smarty->assign('ocCount', count($objectclasses));

        // We are fine here once we got object classes. 
        $this->is_completed = count($objectclasses);

        // Now check if the core requirements are fulfilled.
        if(in_array_strict('core', $disabled)){
            $message = "";
            $this->is_completed = FALSE;
            $coreDefs = core::plInfo();
            $coreRequired = $coreDefs['plRequirements']['ldapSchema'];
            $missing = $version = array();
            foreach($coreRequired as $oc => $requirement){
                if(isset($info['missing'][$oc])){
                    $missing[$oc] = $info['missing'][$oc];
                }
                if(isset($info['versionMismatch'][$oc])){
                    $version[$oc] = $info['versionMismatch'][$oc];
                }
            }

            $message .= "<hr>";
            if(count($missing)){
                $message.= _("The following object classes are missing:").msgPool::buildList(array_values($missing));
            }
            if(count($version)){
                $message.= _("The following object classes are outdated:").msgPool::buildList(array_values($version));
            }
            $smarty->assign('message', $message);
        }
        $smarty->assign('checkFailed', !$this->is_completed);
        return($smarty->fetch (get_template_path("../setup/setup_schema.tpl")));
    }
}

// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
?>