auth->getAuth()) // return "login"; } function start($request) { // what it has to do:: // load all objectclasses from database- echo "
starting";
       
        $convert=   array(  
                'objectclass' => 'DataObjects_Objectclass',
                'attribute'     => 'DataObjects_Attribute',
                'matching'      => 'DataObjects_Matching',
                'syntax'        => 'DataObjects_Syntax' 
            );
            
           DB_DataObject::debugLevel(1); 
            
        foreach ($convert as $type=>$class) {
            $ldap = new $class;
            $ldap->query("delete from $type");
                
            
            
            $topic = DataObjects_Topic::staticGet('name',$type);
             
            $list = DataObjects_Article::listTopic($topic->id);
            while($list->fetch()) {
                print_r($list);
                echo "converting $type : {$list->name}
"; $syn = $this->parseSyntax($list->abstract); print_r($syn); if (!trim(strlen($syn->definition))) { continue; } $ldap = new $class; $ldap->setFrom($syn); $find = $ldap; if ($find->find()) { $find->delete(); echo "found it?"; } $ldap->longdescription = $list->content; print_r($ldap); $ldap->rfc = $list->url; DB_DataObject::debugLevel(1); if (!$ldap->insert()) { print_r($ldap); echo "FAILED"; } //LDAP_DataObject::debugLevel(0); } } echo "loaded"; exit; } function parseSyntax($syntax) { $syntax = trim($syntax); $syntax = ereg_replace("^\(", "", $syntax); $syntax = ereg_replace("\)$", "", $syntax); $syntax = str_replace("\n", " ", $syntax); $syntax = str_replace("\r", " ", $syntax); $syntax = str_replace("\t", " ", $syntax); $syntax = str_replace(" ", " ", $syntax); //echo "
NOW " .$syntax; $spaced = explode(" ", $syntax); $j =0; $currentstring = ""; $closing = ""; $finalstring = array(); $end_strings= array( "'"=>"'", "("=>")" ); // merge quoted strings for($i=0;$i < count($spaced);$i++) { $item = trim($spaced[$i]); //echo "ITEM = $item
"; if (!trim($item)) continue; if (!$closing) { if (@$end_strings[$item{0}]) { //echo "START checking ". $item{strlen($item)-1} ."==".$end_strings[$item{0}]."
"; if ($item{strlen($item)-1} == $end_strings[$item{0}]) { //echo "ADD () $item
"; $closing = ""; $finalstring[] = substr($item,1,-1); continue; } else { $closing = $end_strings[$item{0}] ; $currentstring = $spaced[$i]; continue; } } else { // not escaped //echo "ADD $item
"; $closing = ""; $finalstring[] = $item; continue; } } // inside a string //echo "checking ". $item{strlen($item)-1} ."==".$closing."
"; if ($item{strlen($item)-1} == $closing ) { $closing = ""; //echo "ADD $currentstring $item
"; $finalstring[] = trim(substr($currentstring . " " . $item,1,-1)); continue; } $currentstring .= " " . $spaced[$i]; } // end for each of the spaces! if ($currentstring) $finalstring[] = $currentstring; // now parse for common elements! $element = new StdClass(); $element->definition = $syntax; $element->uid = $finalstring[0]; for ($i = 0; $i < count($finalstring); $i++) { $item = $finalstring[$i]; $tag = strtolower($item); $tag =str_replace("-","_",$tag); switch ( $item) { case "DESC": $element->description = $finalstring[$i+1]; $i++; break; case "NAME": $element->cn = $finalstring[$i+1]; $i++; break; case "EQUALITY": case "SYNTAX": case "SUBSTR": case "SUP": case "USAGE": //echo "
Assign $tag to " . $finalstring[$i+1]; $element->$tag = $finalstring[$i+1]; $i++; break; case "MUST": case "MAY": $vals = preg_split('/\w*\$\w*/',$finalstring[$i+1]); $set = array(); foreach ($vals as $val) { $set[] = trim($val); } $element->$tag = $set; $i++; break; case "SINGLE-VALUE": $element->singleValue = 1; break; case "AUXILIARY": case "STRUCTURAL": //echo "
Assign $tag to " . $tag; $element->$tag = 1; break; } //end switch // print "---" . $finalstring[$i] . "---
"; } if (@$element->syntax && strpos($element->syntax,'{')) { preg_match("/\{[^}]{0,9}\}/", $element->syntax,$matches); $element->length = substr($matches[0],1,-1); $element->syntax = str_replace($matches[0],'',$element->syntax ); } // $element->syntax = ereg_replace("\{[^}]{0,9}\}", "", $element->syntax); //$element->full_syntax = @$element->syntax; //if (@$element->syntax && ereg("\{", $element->syntax)) { // $element->syntax = ereg_replace("\{[^}]{0,9}\}", "", $element->syntax); //} //$element->syntax = @trim($element->syntax ); foreach(get_object_vars($element) as $k=>$v) { if (is_array($v)) { $element->$k = ':'.implode(':',$v) . ":"; } } return $element; } } ?>