| 12
 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:
?>
 |