Jump to content

ScottMeyer

New Members
  • Posts

    6
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

ScottMeyer's Achievements

Newbie

Newbie (1/5)

0

Reputation

1

Community Answers

  1. Otherwise build a tree structure with a different directory level and a filter of the directories to be taken. if it can help someone Root --Admin [here PHP script] --Datauser [here tree structure to take] $e2 = "name folder"; $path_array = explode('/', __DIR__); // put path to array $path_shortcut_array = array_slice($path_array,0,(count($path_array)-1)); // rebuild array path without the last $path_base_string = implode("/", $path_shortcut_array); // rebuild with '/' echo json_encode(listFolders($e2, $path_base_string . '/datausers')); // $e2 = name user function listFolders($path_user, $dir) { $dh = scandir($dir); $name_user = $path_user; $return_data = []; if (strpos($dir, "/datausers/PERSONNAL") !== false){ // PERSONNAL found ! $path_array = explode('/', __DIR__); $path_shortcut_array = array_slice($path_array,0,(count($path_array)-1)); $path_base_string = implode("/", $path_shortcut_array); if ($dir === $path_base_string . '/datausers/PERSONNAL') { foreach ($dh as $item) { if ($item != '.' && $item != '..') { if ($item === $name_user){ // Take only a user if (is_dir($dir . '/' . $item)) { // it's a folder $return_data[] = array( 'title' => $item, 'folder' => true, 'expanded'=> true, 'children' => listFolders($name_user, $dir . '/' . $item, $key) ); } } } } } if (strpos($dir, "/datausers/PERSONNAL/" . $name_user) !== false){ // user found foreach ($dh as $item) { if ($item != '.' && $item != '..') { if (is_dir($dir . '/' . $item)) { // it's a folder $return_data[] = array( 'title' => $item, 'folder' => true, 'expanded'=> true, 'children' => listFolders($name_user, $dir . '/' . $item, $key) ); } else { // it's a file $return_data[] = [ 'title' => $item, ]; } } } } } else { foreach ($dh as $item) { if ($item != '.' && $item != '..') { if (is_dir($dir . '/' . $item)) { // it's a folder $return_data[] = array( 'title' => $item, 'folder' => true, 'expanded'=> true, 'children' => listFolders($name_user, $dir . '/' . $item, $key) ); } else { // it's a file $return_data[] = [ 'title' => $item, ]; } } } } return $return_data; }
  2. Ok I found the solution. It's crazy I spent the day yesterday on this problem. and today I finally find the solution. Thank you requinix for answering me. I put here my solution (not perfect) but it works. <?php if(session_status() != 2) { session_start(); } else { header('Location: deco.php'); } // (2 = session active) if don't active session if (!isset($_SESSION['username']) || empty($_SESSION['username'])) {header('Location: deco.php');} // redirection si pas de session ouverte if (time() > $_SESSION['expire']) { session_destroy(); header('Location: deco.php'); } $e1 = isset($_POST['e1']) ? $_POST['e1'] : null; $e2 = isset($_POST['e2']) ? $_POST['e2'] : null; if (empty($e1) || empty($e2)) { $return_data['key1'] = 'error'; echo json_encode($return_data); return; } if ($e1 == 'read'){ $e2 = str_replace('<','',$e2); // just for prevent html injection $e2 = str_replace('?','',$e2); // just for prevent php injection $return_data['key1'] = 'read'; $return_data['key2'] = $e2; echo json_encode($return_data); return; $e2 = str_replace('}','',$e2); $e2 = str_replace('"','',$e2); $e2 = explode(":", $e2); // take only name node } if ($e1 == 'tree'){ if ($_SESSION['username'] !== $e2){ // verification right name user $return_data['key1'] = 'error'; $return_data['key2'] = ' tree authentication problem'; echo json_encode($return_data); return; } echo json_encode(listFolders($e2, __DIR__ . '/datausers')); // $e2 = name user return ; } function listFolders($path_user, $dir) { $dh = scandir($dir); $name_user = $path_user; $return_data = []; if (strpos($dir, "/datausers/PERSONNAL") !== false){ // PERSONNAL found ! if ($dir === __DIR__ . '/datausers/PERSONNAL') { foreach ($dh as $item) { if ($item != '.' && $item != '..') { if ($item === $name_user){ // Take only a user if (is_dir($dir . '/' . $item)) { // it's a folder $return_data[] = array( 'title' => $item, 'folder' => true, 'expanded'=> true, 'children' => listFolders($name_user, $dir . '/' . $item, $key) ); } else { // it's a file $return_data[] = [ 'title' => $item, ]; } } } } } if (strpos($dir, "/datausers/PERSONNAL/" . $name_user) !== false){ // Peter found foreach ($dh as $item) { if ($item != '.' && $item != '..') { if (is_dir($dir . '/' . $item)) { // it's a folder $return_data[] = array( 'title' => $item, 'folder' => true, 'expanded'=> true, 'children' => listFolders($name_user, $dir . '/' . $item, $key) ); } else { // it's a file $return_data[] = [ 'title' => $item, ]; } } } } } else { foreach ($dh as $item) { if ($item != '.' && $item != '..') { if (is_dir($dir . '/' . $item)) { // it's a folder $return_data[] = array( 'title' => $item, 'folder' => true, 'expanded'=> true, 'children' => listFolders($name_user, $dir . '/' . $item, $key) ); } else { // it's a file $return_data[] = [ 'title' => $item, ]; } } } } return $return_data; } ?>
  3. ok now it almost works. My output (checked with http://jsonviewer.stack.hu/ - click to expand all) [{"title":"PERSONNAL","folder":true,"expanded":true,"children":[{"title":"Peter","folder":true,"expanded":true,"children":[{"title":"guitar","folder":true,"expanded":true,"children":[{"title":"tabs"}]}]}]},{"title":"TEAM","folder":true,"expanded":true,"children":[{"title":"contact","folder":true,"expanded":true,"children":[{"title":"Phone"}]},{"title":"information","folder":true,"expanded":true,"children":[{"title":"technique"}]}]}] I added this line to take that one user: if ($ item === $name_user) {// Take only a user now, how to give in the function the variable $name_user and avoid repetitions ? my last code : <?php $name_user = 'Peter'; // currently not used :-( echo json_encode(listFolders()); function listFolders($dir = __DIR__ . '/datausers') { $dh = scandir($dir); $name_user = "Peter"; $return = []; if (strpos($dir, "/datausers/PERSONNAL") !== false){ // PERSONNAL found ! if ($dir === __DIR__ . '/datausers/PERSONNAL') { foreach ($dh as $item) { if ($item != '.' && $item != '..') { if ($item === $name_user){ // Take only a user if (is_dir($dir . '/' . $item)) { // it's a folder $return[] = array( 'title' => $item, 'folder' => true, 'expanded'=> true, 'children' => listFolders($dir . '/' . $item, $key) ); } else { // it's a file $return[] = [ 'title' => $item, ]; } } } } } if (strpos($dir, "/datausers/PERSONNAL/" . $name_user) !== false){ // Peter found foreach ($dh as $item) { if ($item != '.' && $item != '..') { if (is_dir($dir . '/' . $item)) { // it's a folder $return[] = array( 'title' => $item, 'folder' => true, 'expanded'=> true, 'children' => listFolders($dir . '/' . $item, $key) ); } else { // it's a file $return[] = [ 'title' => $item, ]; } } } } } else { foreach ($dh as $item) { if ($item != '.' && $item != '..') { if (is_dir($dir . '/' . $item)) { // it's a folder $return[] = array( 'title' => $item, 'folder' => true, 'expanded'=> true, 'children' => listFolders($dir . '/' . $item, $key) ); } else { // it's a file $return[] = [ 'title' => $item, ]; } } } } return $return; } ?>
  4. I give you my original code. it is currently returning all folders and files. <?php if(session_status() != 2) { session_start(); } else { header('Location: deco.php'); } // (2 = session active) if don't active session if (!isset($_SESSION['username']) || empty($_SESSION['username'])) {header('Location: deco.php');} // redirection si pas de session ouverte if (time() > $_SESSION['expire']) { session_destroy(); header('Location: deco.php'); } $e1 = isset($_POST['e1']) ? $_POST['e1'] : null; $e2 = isset($_POST['e2']) ? $_POST['e2'] : null; if (empty($e1) || empty($e2)) { $return_data['key1'] = 'error'; echo json_encode($return_data); return; } if ($e1 == 'read'){ $e2 = str_replace('<','',$e2); // just for prevent html injection $e2 = str_replace('?','',$e2); // just for prevent php injection $return_data['key1'] = 'read'; $return_data['key2'] = $e2; echo json_encode($return_data); return; $e2 = str_replace('}','',$e2); $e2 = str_replace('"','',$e2); $e2 = explode(":", $e2); // take only name node } if ($e1 == 'tree'){ if ($_SESSION['username'] !== $e2){ // verification right name user $return_data['key1'] = 'error'; $return_data['key2'] = ' tree authentication problem'; echo json_encode($return_data); return; } echo json_encode(listFolders()); // here i want put $e2 = name user return ; } function listFolders($dir = __DIR__ . '/datausers_tmp/tree_ckeditor') { $dh = scandir($dir); $return = []; foreach ($dh as $folder) { if ($folder != '.' && $folder != '..') { $Folder_data = "/datausers/tree_ckeditor"; if (is_dir($dir . '/' . $folder)) { // it's a folder $return[] = array( 'title' => $folder, 'folder' => true, 'expanded'=> true, 'children' => listFolders($dir . '/' . $folder, $key) ); } else { // it's a file $return[] = [ 'title' => $folder, 'title' => $folder, ]; } } } return $return; } ?> currently the best result gives me this, with code in my firts post : /volume1/web/allforone/datausers /volume1/web/allforone/datausers/PERSONNAL /volume1/web/allforone/datausers/PERSONNAL/Peter /volume1/web/allforone/datausers/PERSONNAL/Peter/guitar /volume1/web/allforone/datausers/TEAM /volume1/web/allforone/datausers/TEAM/contact /volume1/web/allforone/datausers/TEAM/information Array ( [0] => Array ( [title] => PERSONNAL [folder] => 1 [expanded] => 1 [children] => Array ( [0] => Array ( [title] => Pan [folder] => 1 [expanded] => 1 [children] => Array ( ) ) [1] => Array ( [title] => Peter [folder] => 1 [expanded] => 1 [children] => Array ( [0] => Array ( [title] => guitar [folder] => 1 [expanded] => 1 [children] => Array ( [0] => Array ( [title] => tabs ) ) ) ) ) ) ) [1] => Array ( [title] => TEAM [folder] => 1 [expanded] => 1 [children] => Array ( [0] => Array ( [title] => contact [folder] => 1 [expanded] => 1 [children] => Array ( [0] => Array ( [title] => Phone ) ) ) [1] => Array ( [title] => information [folder] => 1 [expanded] => 1 [children] => Array ( [0] => Array ( [title] => technique ) ) ) ) ) )
  5. hi, thank you for your answer. I am using a POST AJAX request to find out the name of the user. This part works, here the ajax request is simulate with "$name_user". I would have liked to do: $user_name = "Peter"; echo json_encode (listFolders ($user_name)); function listFolders ($path_user, $dir = __DIR__. '/datausers') { i compare, if $_SESSION['username'] = $name_user for sécurity The goal is to use as return with "echo json_encode (listFolders ());" to put in Fancytree.
  6. Hello, I am using Fancytree, I want to generate a file / folder tree but excluding all folders that are not from the current user. Example: BOLD= FOLDER I want to create a tree structure with the user "Peter" [Tree] ├─PERSONNAL (take) │ ├─PAN (not take) │ │ └─GAMES (not take) │ │ └─list (not take) │ └─PETER (take) │ └─GUITAR (take) │ └─tabs (take) └─TEAM (take) ├─CONTACT (take) │ └─phone (take) └─INFORMATION (take) └─technique (take) I have several problems: 1) I don't understand the "listFolders" function, I can't give it a parameter (like $ name_user) otherwise it doesn't work. 2) the lines >> print_r ('TAKE THIS'. $ Dir); << show what I want to take, but it is "foreach" which does not work 3) my code is duplicated because I can't create a function inside a function ... Here is my code: <?php $name_user = 'Peter'; // actualy not user :-( print_r(listFolders()); function listFolders($dir = __DIR__ . '/datausers') { $dh = scandir($dir); $name_user = "Peter"; $return = []; if (strpos($dir, "/datausers/PERSONNAL") !== false){ // PERSONNAL found ! if ($dir === __DIR__ . '/datausers/PERSONNAL') { print_r($dir); echo '</br>'; foreach ($dh as $item) { if ($item != '.' && $item != '..') { if (is_dir($dir . '/' . $item)) { // it's a folder $return[] = array( 'title' => $item, 'folder' => true, 'expanded'=> true, 'children' => listFolders($dir . '/' . $item, $key) ); } else { // it's a file $return[] = [ 'title' => $item, ]; } } } } if (strpos($dir, "/datausers/PERSONNAL/" . $name_user) !== false){ // Peter found print_r($dir); echo '</br>'; foreach ($dh as $item) { if ($item != '.' && $item != '..') { if (is_dir($dir . '/' . $item)) { // it's a folder $return[] = array( 'title' => $item, 'folder' => true, 'expanded'=> true, 'children' => listFolders($dir . '/' . $item, $key) ); } else { // it's a file $return[] = [ 'title' => $item, ]; } } } } } else { print_r($dir); echo '</br>'; foreach ($dh as $item) { if ($item != '.' && $item != '..') { if (is_dir($dir . '/' . $item)) { // it's a folder $return[] = array( 'title' => $item, 'folder' => true, 'expanded'=> true, 'children' => listFolders($dir . '/' . $item, $key) ); } else { // it's a file $return[] = [ 'title' => $item, ]; } } } } return $return; } ?> Please help me I'm desperate ...
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.