<?php
function formathtml($html)
{
$tabs=0;
$html_array=preg_split('/(<(?:[^<>]+(?:"[^"]*"|\'[^\']*\')?)+>)/',$html,-1,PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
$html='';
for ($x=0;$x<count($html_array);$x++)
{
if (substr($html_array[$x],0,2)=='</')
{
$tabs--;
}
for ($y=0;$y<$tabs;$y++)
{
$html.="\t";
}
$html.=$html_array[$x]."\r\n";
if ((substr($html_array[$x],0,1)=='<') && (substr($html_array[$x],1,1)!='/'))
{
if ((substr($html_array[$x],1,1)!=' ') && (substr($html_array[$x],1,1)!='!') && (substr($html_array[$x],1,3)!='img') && (substr($html_array[$x],1,2)!='br') && (substr($html_array[$x],1,2)!='hr') && (substr($html_array[$x],1,5)!='input') && (substr($html_array[$x],1,4)!='link') && (substr($html_array[$x],1,4)!='meta') && (substr($html_array[$x],1,3)!='col') && (substr($html_array[$x],1,5)!='frame') && (substr($html_array[$x],1,7)!='isindex') && (substr($html_array[$x],1,5)!='param') && (substr($html_array[$x],1,4)!='area') && (substr($html_array[$x],1,4)!='base'))
{
$tabs++;
}
}
}
if ($tabs!=0)
{
$html.='<!--'.$tabs." open elements found-->\r\n";
}
return $html;
}
if (isset($_GET['class']))
{
$classfile=file('classes/'.$_GET['class'].'.class.php');
$public_variables=array();
$private_variables=array();
$public_functions=array();
$private_functions=array();
for ($x=0;$x<count($classfile);$x++)
{
if (strpos($classfile[$x],'private')!==false)
{
if (strpos($classfile[$x],'function')!==false)
{
$private_functions[]=trim($classfile[$x]);
}
else
{
$private_variables[]=trim($classfile[$x]);
}
}
if (strpos($classfile[$x],'public')!==false)
{
if (strpos($classfile[$x],'function')!==false)
{
$public_functions[]=trim($classfile[$x]);
}
else
{
$public_variables[]=trim($classfile[$x]);
}
}
}
$output='<b>Methods of the class '.$_GET['class'].'</b>';
$output.='<hr>';
/*$output.='<b>Public methods</b><br><br>';
for ($x=0;$x<count($public_functions);$x++)
{
$output.='<a href="#'.substr($public_functions[$x],strpos($public_functions[$x],'function')+9,strpos($public_functions[$x],'(')-strpos($public_functions[$x],'function')-9).'">'.substr($public_functions[$x],strpos($public_functions[$x],'function')+9).'</a><br>';
}
$output.='<hr>';
$output.='<b>Private methods</b><br><br>';
for ($x=0;$x<count($private_functions);$x++)
{
$output.='<a href="#'.substr($private_functions[$x],strpos($private_functions[$x],'function')+9,strpos($private_functions[$x],'(')-strpos($private_functions[$x],'function')-9).'">'.substr($private_functions[$x],strpos($private_functions[$x],'function')+9).'</a><br>';
}
$output.='<hr>';*/
if (count($public_variables)>0)
{
$output.='<b><i>Public variables</i></b><hr>';
for ($x=0;$x<count($public_variables);$x++)
{
$output.='<div>';
$output.='<a name="'.substr($public_variables[$x],strpos($public_variables[$x],'public')+7,strpos($public_variables[$x],';')-strpos($public_variables[$x],'public')-7).'"><i>'.substr($public_variables[$x],strpos($public_variables[$x],'public')+7,strpos($public_variables[$x],';')-strpos($public_variables[$x],'public')-7).'</i></a><br><br>';
$output.='<b><u>Information:</u></b><br>';
$output.='<div>';
$output.='<br><br>';
$output.='</div>';
$output.='<br><a href="#">Back to top</a><hr>';
$output.='</div>';
}
}
if (count($private_variables)>0)
{
$output.='<b><i>Private variables</i></b><hr>';
for ($x=0;$x<count($private_variables);$x++)
{
$output.='<div>';
$output.='<a name="'.substr($private_variables[$x],strpos($private_variables[$x],'private')+8,strpos($private_variables[$x],';')-strpos($private_variables[$x],'private')-8).'"><i>'.substr($private_variables[$x],strpos($private_variables[$x],'private')+8,strpos($private_variables[$x],';')-strpos($private_variables[$x],'private')-8).'</i></a><br><br>';
$output.='<b><u>Information:</u></b><br>';
$output.='<div>';
$output.='<br><br>';
$output.='</div>';
$output.='<br><a href="#">Back to top</a><hr>';
$output.='</div>';
}
}
if (count($public_functions)>0)
{
$output.='<b><i>Public methods</i></b><hr>';
for ($x=0;$x<count($public_functions);$x++)
{
$output.='<div>';
$output.='<a name="'.substr($public_functions[$x],strpos($public_functions[$x],'function')+9,strpos($public_functions[$x],'(')-strpos($public_functions[$x],'function')-9).'"><i>'.substr($public_functions[$x],strpos($public_functions[$x],'function')+9).'</i></a><br><br>';
$output.='<b><u>Information:</u></b><br>';
$output.='<div>';
$output.='<br><br>';
$output.='</div>';
$parameters=substr($public_functions[$x],strpos($public_functions[$x],'(')+1,strpos($public_functions[$x],')')-strpos($public_functions[$x],'(')-1);
$parameters=explode(',',$parameters);
if (!empty($parameters[0]))
{
$output.='<b><u>Parameters:</u></b><br>';
$output.='<div>';
for ($y=0;$y<count($parameters);$y++)
{
if (strpos($parameters[$y],'=')!==false)
{
$parameters[$y]=explode('=',$parameters[$y]);
$output.='<b>'.$parameters[$y][0].'</b>';
$output.='is optional, default is '.$parameters[$y][1].'<br><br>';
}
else
{
$output.='<b>'.$parameters[$y].'</b><br><br>';
}
}
$output.='</div>';
}
$output.='<b><u>Returns:</u></b><br>';
$output.='<div>';
$output.='<br><br>';
$output.='</div>';
$output.='<!--';
$output.='<b><u>Example:</u></b><br>';
$output.='<div>';
$output.='<br><br>';
$output.='</div>';
$output.='-->';
$output.='<br><a href="#">Back to top</a><hr>';
$output.='</div>';
}
}
if (count($private_functions)>0)
{
$output.='<b><i>Private methods</i></b><hr>';
for ($x=0;$x<count($private_functions);$x++)
{
$output.='<div>';
$output.='<a name="'.substr($private_functions[$x],strpos($private_functions[$x],'function')+9,strpos($private_functions[$x],'(')-strpos($private_functions[$x],'function')-9).'"><i>'.substr($private_functions[$x],strpos($private_functions[$x],'function')+9).'</i></a><br><br>';
$output.='<b><u>Information:</u></b><br>';
$output.='<div>';
$output.='<br><br>';
$output.='</div>';
$parameters=substr($private_functions[$x],strpos($private_functions[$x],'(')+1,strpos($private_functions[$x],')')-strpos($private_functions[$x],'(')-1);
$parameters=explode(',',$parameters);
if (!empty($parameters[0]))
{
$output.='<b><u>Parameters:</u></b><br>';
$output.='<div>';
for ($y=0;$y<count($parameters);$y++)
{
if (strpos($parameters[$y],'=')!==false)
{
$parameters[$y]=explode('=',$parameters[$y]);
$output.='<b>'.$parameters[$y][0].'</b>';
$output.='is optional, default is '.$parameters[$y][1].'<br><br>';
}
else
{
$output.='<b>'.$parameters[$y].'</b><br><br>';
}
}
$output.='</div>';
}
$output.='<b><u>Returns:</u></b><br>';
$output.='<div>';
$output.='<br><br>';
$output.='</div>';
$output.='<!--';
$output.='<b><u>Example:</u></b><br>';
$output.='<div>';
$output.='<br><br>';
$output.='</div>';
$output.='-->';
$output.='<br><a href="#">Back to top</a><hr>';
$output.='</div>';
}
}
/*if (!file_exists('docs/'.$_GET['class'].'.html'))
{
$docfile=fopen('docs/'.$_GET['class'].'.html','w');
fwrite($docfile,formathtml($output));
fclose($docfile);
echo 'Documentation template written';
}
else
{
echo 'Documentation template already exists';
}*/
echo formathtml($output);
}
?>