0) { return self::find_page_recursive($base . $file, $goal); } else { // recurse but check for an index.md file next time around return self::find_page_recursive($base . $file, array('index')); } } else { // goal state. End of recursion $result = $base .'/'. $file; return $result; } } } } closedir($handle); } /** * String helper for cleaning a file name to a readable version. * * @param String $name to convert * * @return String $name output */ public static function clean_page_name($name) { // remove dashs and _ $name = str_ireplace(array('-', '_'), ' ', $name); // remove extension $hasExtension = strpos($name, '.'); if($hasExtension !== false && $hasExtension > 0) { $name = substr($name, 0, $hasExtension); } // convert first letter return ucfirst($name); } /** * Return the children from a given module. Used for building the tree of the page * * @param String module name * * @return DataObjectSet */ public static function get_pages_from_folder($folder) { $handle = opendir($folder); $output = new DataObjectSet(); if($handle) { $extensions = DocumentationService::get_valid_extensions(); $ignore = DocumentationService::get_ignored_files(); while (false !== ($file = readdir($handle))) { if(!in_array($file, $ignore)) { $file = strtolower($file); $clean = ($pos = strrpos($file, '.')) ? substr($file, 0, $pos) : $file; $output->push(new ArrayData(array( 'Title' => self::clean_page_name($file), 'Filename' => $clean, 'Path' => $folder . $file .'/' ))); } } } return $output; } }