/** * @param $array_url retorno da Navigation::getUri * @param $_startFolder string passe o caminho da view * @return ReturnSearchClassVO */ private static function searchFile($array_url, $_startFolder = "") { //iniciando o objeto de retorno $returnReturnSearchClassVO = new ReturnSearchClassVO(); $searchFileOrFolderName = ""; //($searchFileOrFolderName != "")?"/".DataHandler::removeSpecialCharacters($searchFileOrFolderName):""; //array completa sem a parte filtrada da url $array = $array_url; //Navigation::getURI($_urlToIgnore, Navigation::URI_RETURN_TYPE_ARRAY); $contador = 0; //varredura de hierarquia invertida for ($i = count($array) - 1; $i >= 0; $i--) { //pegando o string path, tirando o ultimo folder, pois estara no lastFolder $stringPath = implode("/", array_slice($array, 0, $i)); $stringPath = DataHandler::removeLastBar($stringPath); $lastFolder = DataHandler::removeSpecialCharacters($array[$i]); //criando a array (além dos limites) - que não foi tratada $contador++; $arrayRestFolder = array_slice($array, count($array) - $contador, count($array)); $returnReturnSearchClassVO->arrayRestFolder = $arrayRestFolder; //echo Debug::li("<b>{$i}</b>[11] Navigation::SEARCH_FILE_MODE_FILE : ".$_startFolder."----".$stringPath." "); $searchFileOrFolderName = ""; //verifica se tem CAMINHO/ultimaPasta.php $caminhoBase = $_startFolder . "/" . trim($stringPath) . "/" . $lastFolder; $caminhoBase = DataHandler::removeDobleBars(DataHandler::removeDobleBars($caminhoBase)); if (file_exists($caminhoBase . ".php")) { $returnReturnSearchClassVO->success = TRUE; $returnReturnSearchClassVO->className = ""; $returnReturnSearchClassVO->folder = ""; $returnReturnSearchClassVO->urlToInclude = $caminhoBase . ".php"; $returnReturnSearchClassVO->file = $lastFolder . ".php"; $returnReturnSearchClassVO->arrayRestFolder = $arrayRestFolder; return $returnReturnSearchClassVO; } //verifica se existe CAMINHO/ultimaPasta/index.php if (file_exists($caminhoBase . "/index.php")) { $returnReturnSearchClassVO->success = TRUE; $returnReturnSearchClassVO->className = ""; $returnReturnSearchClassVO->folder = ""; $returnReturnSearchClassVO->urlToInclude = $caminhoBase . "/index.php"; $returnReturnSearchClassVO->file = "index.php"; $returnReturnSearchClassVO->arrayRestFolder = $arrayRestFolder; //echo Debug::li("<b>{$i}</b>[11] Navigation::SEARCH_FILE_MODE_FILE : ". $_startFolder.$stringPath."/index.php"); return $returnReturnSearchClassVO; } } // end for($i = count($array)-1; $i >= 0; $i--){ return $returnReturnSearchClassVO; }
/** * Retorna apenas 1 resultado dentro do ReturnSearchFileVO, os dados em ReturnSearchFileVO são todos referentes ao mesmo resultado * @param $_startFolder string * @param $searchClass string * @return ReturnSearchClassVO */ public static function searchFileOrFolder($_urlToIgnore = "", $_startFolder = "", $search_file_mode = Navigation::SEARCH_FILE_MODE_FILE, $searchFileOrFolderName = "", $autoInclude = FALSE) { //iniciando o objeto de retorno $returnReturnSearchClassVO = new ReturnSearchClassVO(); $searchFileOrFolderName = $searchFileOrFolderName != "" ? "/" . DataHandler::removeSpecialCharacters($searchFileOrFolderName) : ""; //array completa sem a parte filtrada da url $array = Navigation::getURI($_urlToIgnore, Navigation::URI_RETURN_TYPE_ARRAY); //Debug::print_r($array); $contador = 0; //varredura de hierarquia invertida for ($i = count($array) - 1; $i >= 0; $i--) { //echo Debug::li($i." = valor de i ", FALSE, "FFFF00"); switch ($search_file_mode) { case Navigation::SEARCH_FILE_MODE_CLASS_AND_METHOD: $arrayRestFolder = Navigation::getURI($_urlToIgnore, Navigation::URI_RETURN_TYPE_ARRAY, FALSE, $i + 1); //echo " valor de arrayRestFolder "; //echo Debug::print_r($arrayRestFolder); $stringPath = ""; if ($i > 0) { $stringPath = Navigation::getURI($_urlToIgnore, Navigation::URI_RETURN_TYPE_STRING, $i - 1); } //echo Debug::li($stringPath." = valor de stringPath ", FALSE, "FFFF55"); $currentFolder = ""; if ($i < count($array)) { $currentFolder = DataHandler::removeSpecialCharacters($array[$i]); } //echo Debug::li($currentFolder." = valor de currentFolder ", FALSE, "FFFF55"); $currentFolder = str_replace("/", "", $currentFolder); //echo Debug::li($currentFolder." = valor de currentFolder ", FALSE, "FFFF55"); //procurando folder $searchFileOrFolderName = DataHandler::urlFolderNameToClassName($currentFolder); //echo " valor de searchFileOrFolderName "; //echo Debug::print_r($searchFileOrFolderName); //echo "<br>"; $tempMetodo = "init"; if ($i + 1 < count($array)) { $tempMetodo = DataHandler::urlFolderNameToMethodName($array[$i + 1]); } //echo Debug::li("<b>tempMetodo:".$tempMetodo."</b>", false, NULL, NULL, "0000ff"); //echo $_startFolder.$stringPath."/".$searchFileOrFolderName.".php"; if (file_exists($_startFolder . $stringPath . "/" . $searchFileOrFolderName . ".php")) { //echo Debug::li("<b>A classe:".$_startFolder.$stringPath."/".$searchFileOrFolderName.".php </b>"); $returnReturnSearchClassVO->success = TRUE; $returnReturnSearchClassVO->file = $searchFileOrFolderName . ".php"; $returnReturnSearchClassVO->folder = DataHandler::removeDobleBars($_startFolder . $stringPath . "/"); $returnReturnSearchClassVO->urlToInclude = DataHandler::removeDobleBars($_startFolder . $stringPath . "/" . $searchFileOrFolderName . ".php"); $returnReturnSearchClassVO->className = $searchFileOrFolderName; $returnReturnSearchClassVO->methodName = $tempMetodo; $returnReturnSearchClassVO->arrayRestFolder = $arrayRestFolder; $className = $returnReturnSearchClassVO->className; if ($autoInclude) { include_once $_startFolder . $stringPath . "/" . $searchFileOrFolderName . ".php"; //echo $className; $classe = new $className(); //inicia o metodo como vazio $returnReturnSearchClassVO->methodName = "init"; //Se existir uma pasta acima dessa, ve qual é pois pode ser tentativa de acessar metodo if ($i + 1 < count($array)) { //echo Debug::li(" >>>>> ".$array[$i+1]); $tempMetodo = DataHandler::urlFolderNameToMethodName($array[$i + 1]); //verifica se o metodo existe if (ClassHandler::isMethodPublic($classe, $tempMetodo)) { $returnReturnSearchClassVO->methodName = $tempMetodo; } } $metodo = $returnReturnSearchClassVO->methodName; //echo $metodo; return $classe->{$metodo}(); } return $returnReturnSearchClassVO; } break; case Navigation::SEARCH_FILE_MODE_FILE: default: $stringPath = Navigation::getURI($_urlToIgnore, Navigation::URI_RETURN_TYPE_STRING, $i + 1); //echo Debug::li($stringPath." = valor de stringPath ", FALSE, "FFFF00"); $stringPath = DataHandler::removeLastBar($stringPath); //echo Debug::li($stringPath." = valor de stringPath ", FALSE, "FFFF00"); $lastFolder = ""; if ($i + 1 < count($array)) { $lastFolder = "/" . DataHandler::removeSpecialCharacters($array[$i + 1]); } //echo Debug::li($lastFolder." = valor de lastFolder ", FALSE, "FFFF00"); $currentFolder = ""; if ($i < count($array)) { $currentFolder = DataHandler::removeSpecialCharacters($array[$i]); } //echo Debug::li($currentFolder." = valor de currentFolder ", FALSE, "FFFF00"); //criando a array (além dos limites) - que não foi tratada $contador++; //echo Debug::li($contador." = valor de contador ", FALSE, "FFFF00"); $arrayRestFolder = Navigation::getURI($_urlToIgnore, Navigation::URI_RETURN_TYPE_ARRAY, count($array), count($array) - $contador); //echo " valor de arrayRestFolder "; //echo Debug::print_r($arrayRestFolder); $returnReturnSearchClassVO->arrayRestFolder = $arrayRestFolder; $stringPath = ""; if ($i + 1 >= 1) { $stringPath = Navigation::getURI($_urlToIgnore, Navigation::URI_RETURN_TYPE_STRING, $i); } //echo Debug::li("<b>{$i}</b>[11] Navigation::SEARCH_FILE_MODE_FILE : ".$_startFolder."----".$stringPath." "); $searchFileOrFolderName = ""; if (file_exists($_startFolder . $stringPath . ".php")) { $returnReturnSearchClassVO->success = TRUE; $returnReturnSearchClassVO->className = ""; $returnReturnSearchClassVO->folder = ""; $returnReturnSearchClassVO->urlToInclude = $_startFolder . $stringPath . ".php"; $returnReturnSearchClassVO->file = $lastFolder . ".php"; $returnReturnSearchClassVO->arrayRestFolder = $arrayRestFolder; return $returnReturnSearchClassVO; } //echo Debug::li("<b>AAA{$i}</b>[11] Navigation::SEARCH_FILE_MODE_FILE : ".$_startFolder.$stringPath."/index.php"." "); if (file_exists($_startFolder . $stringPath . "/index.php")) { $returnReturnSearchClassVO->success = TRUE; $returnReturnSearchClassVO->className = ""; $returnReturnSearchClassVO->folder = ""; $returnReturnSearchClassVO->urlToInclude = $_startFolder . $stringPath . "/index.php"; $returnReturnSearchClassVO->file = "index.php"; $returnReturnSearchClassVO->arrayRestFolder = $arrayRestFolder; //echo Debug::li("<b>{$i}</b>[11] Navigation::SEARCH_FILE_MODE_FILE : ". $_startFolder.$stringPath."/index.php"); return $returnReturnSearchClassVO; } break; } //end switch($search_file_mode){ } // end for($i = count($array)-1; $i >= 0; $i--){ return $returnReturnSearchClassVO; }