victor barboza
Ajuda para criar pasta ao criar usuário
15 de March de 2018 às 08:16PM
Olá, estou tentando alterar o código php fornecido em http://filesystem.leobreda.net/ para que funcione como um ferramenta pro RH poder compartilhar o holerite e o espelho de ponto para os funcionários;
eu já consegui fazer algumas alerações, como por exemplo que quando o usuário logar ele seja enviado direto pra pasta com seu nome:
<script type="text/javascript">
eval(ajaxHTML('main','index_iframe_main.php?dir=/<?php echo $user['shortname']?>/'));
</script>

Agora estou tentando fazer com que ao criar um novo usuário, o sistema crie uma pasta com o nome desse usuário (senão tem que criar manualmente para o redirecionamento acima não dar problema);

arquivo usuario.class.php

####################################################################################
# Cadastra um novo usuário
####################################################################################
function Cadastro()
{
global $cfg;
$codGrupo = $this->codGrupo;
$shortName = substr($this->shortName,0,20);
$fullName = substr($this->fullName,0,50);
$email = substr($this->email,0,50);
$username = substr($this->username,0,16);
$password = substr($this->password,0,16);
//victor changed
$mainFolder = substr($this->mainfolder,0,20);

//1. Insere o usuário
$strSQL="INSERT INTO TB_USUARIO (GRUPO_COD, USERNAME, NOME_CURTO, NOME_COMPLETO, EMAIL, SENHA, BLOCK) VALUES (".$codGrupo.", '".$username."', '".$shortName."', '".$fullName."', '".$email."', '".$password."', 0)";
ExecutaSql($strSQL);
if(intval($this->instrucoes)==1)
{
//2. Template

//2.1 Consulta o nome do grupo
$strSQL="SELECT NOME FROM TB_GRUPO WHERE GRUPO_COD=".$codGrupo;

$grupo=sql($strSQL);$grupo=$grupo[0][0];

//2.2 Constrói o template
$template = Email::getTemplate($cfg["path_fisico"].'template/user-new.html');

//2.3 Replace
$template=str_replace('[template_titulo]','Cadastro de usuário',$template);
$template=str_replace('[var_nome]',$shortName,$template);
$template=str_replace('[cfg_title_hi]',$cfg["titleHi"],$template);
$template=str_replace('[cfg_title]',$cfg["title"],$template);
$template=str_replace('[var_nome_completo]',$fullName,$template);
$template=str_replace('[var_email]',$email,$template);
$template=str_replace('[var_grupo]',$grupo,$template);
$template=str_replace('[var_usuario]',$username,$template);
$template=str_replace('[var_senha]',$password,$template);
$template=str_replace('[var_url]','<a href="'.$cfg["path_virtual"].'" target="_blank">'.$cfg["path_virtual"].'</a>',$template);

//3 Envia o e-mail
$obj = new Email;
$obj->para = $email;
$obj->titulo = "Acesso ao Filesystem ".$cfg["titleHi"]." ".$cfg["title"];
$obj->mensagem = $template;
$obj->send();
}
}

Arquivo folder.class.php:

###########################################################################################################
# Cria um novo diretório
# Folder::Add(nome, root);
###########################################################################################################
public static function Add($name, $pai)
{
GLOBAL $cfg;
$name = Mascara::RenameFolder($name, 255);

//1. Consulta as informações do diretório pai
$pai=intval($pai);
$root=Folder::GetName($pai);

$dir=str_replace("//", "/", ($cfg['path_files'].$root[0][1].'/'.$name.'/'));
$dir=str_replace("//", "/", $dir);


//2. Verifica se o diretório existe
if(!is_dir($dir))
{
//3. Cria o diretório
mkdir($dir, 0777);

//4. Insere o diretório no Banco de Dados
$strSQL="INSERT INTO TB_FOLDER (NAME, PATH, ROOT, DATA, RULE_WRITE, RULE_READ) VALUES ('".$name."', '".str_replace($cfg['path_files'], "/", $dir)."', ".$pai.", '".date("Y-m-d H:i")."', 1, 1)";
ExecutaSql($strSQL);

//5. @@identity
$strSQL="SELECT ID FROM TB_FOLDER WHERE NAME='".$name."' ORDER BY ID DESC LIMIT 0,1;";
$sqlFolder=SQL($strSQL);

//6. Consulta o PATH_ID do pai
$strSQL="SELECT PATH_ID FROM TB_FOLDER WHERE ID=".$pai;
$sql=SQL($strSQL);

//7. Atualiza o campo PATH_ID
$strSQL="UPDATE TB_FOLDER SET";
if(intval($pai)==1)
{
$strSQL.=" PATH_ID='0'";
}
else
{
$strSQL.=" PATH_ID='".$sql[0][0].",".$pai."'";
}
$strSQL.=" WHERE ID=".$sqlFolder[0][0];
ExecutaSql($strSQL);
}
}

arquivo user.popup.do.php:

/**************************************************************************************************************************************************************/
/****** Usuário : Inserir **********************************************************************************************************************************/
/************************************************************************************************************************************************************/
case 'userAdd':

$objUsuario = new Usuario;
$objUsuario->codGrupo = $_POST['grupo_cod'];
$objUsuario->shortName = $_POST['nome_curto'];
$objUsuario->fullName = $_POST['nome_completo'];
$objUsuario->email = $_POST['email'];
$objUsuario->username = $_POST['username'];
$objUsuario->password = $_POST['password'];
$objUsuario->instrucoes = $_POST['instrucoes'];
//victor changed
$objUsuario->mainFolder = $_POST['nome_curto'];

$codUsuario = $objUsuario->Cadastro();
unset($objUsuario);
?>

A minha dúvida é como faço para que na função que cria o usuário, eu "chame" a função que cria a pasta e faça com que ela receba o 'nome_curto' (ou shortName). Alguém faz alguma ideia?
Eu como leigo tentei copiar o código do folder.class e "setei" o $name para receber $mainFolder (q eu criei para receber nome_curto), $name = $mainFolder; obviamente essa bagunça n funcionou; acho que tenho que chamar a função ADD do Arquivo folder.class.php, só n sei se posso declarar (include_once) uma classe dentro da outra, ficaria algo como: $mainFolder= $objUsuario->Add(); ??


sds
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.