23 if (!defined(
'NOTOKENRENEWAL')) {
24 define(
'NOTOKENRENEWAL',
'1');
26 if (!defined(
'NOREQUIREMENU')) {
27 define(
'NOREQUIREMENU',
'1');
29 if (!defined(
'NOREQUIREAJAX')) {
30 define(
'NOREQUIREAJAX',
'1');
32 if (!defined(
'NOREQUIRESOC')) {
33 define(
'NOREQUIRESOC',
'1');
36 require
'../../main.inc.php';
37 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
39 $action =
GETPOST(
'action',
'aZ09');
40 $element =
GETPOST(
'element',
'alpha');
52 if (isset($action) && !empty($action)) {
55 if ($action ==
'build' && !empty($element)) {
56 require_once DOL_DOCUMENT_ROOT.
'/ecm/class/ecmdirectory.class.php';
64 $diroutputslash = str_replace(
'\\',
'/', $conf->$element->dir_output);
65 $diroutputslash .=
'/';
68 $disktree =
dol_dir_list($conf->$element->dir_output,
'directories', 1,
'', array(
'^temp$'),
'',
'', 0);
71 $sqltree = $ecmdirstatic->get_full_arbo(0);
78 foreach ($disktree as $dirdesc) {
82 foreach ($sqltree as $dirsqldesc) {
83 if ($conf->$element->dir_output.
'/'.$dirsqldesc[
'fullrelativename'] == $dirdesc[
'fullname']) {
89 if (!$dirisindatabase) {
90 $txt =
"Directory found on disk ".$dirdesc[
'fullname'].
", not found into table ecm_directories, so we add it";
95 $relativepathmissing = str_replace($diroutputslash,
'', $dirdesc[
'fullname']);
96 $relativepathtosearchparent = $relativepathmissing;
98 if (preg_match(
'/\//', $relativepathtosearchparent)) {
100 $relativepathtosearchparent = preg_replace(
'/\/[^\/]*$/',
'', $relativepathtosearchparent);
101 $txt =
"Is relative parent path ".$relativepathtosearchparent.
" for ".$relativepathmissing.
" found in sql tree ?";
104 $parentdirisindatabase = 0;
105 foreach ($sqltree as $dirsqldesc) {
106 if ($dirsqldesc[
'fullrelativename'] == $relativepathtosearchparent) {
107 $parentdirisindatabase = $dirsqldesc[
'id'];
111 if ($parentdirisindatabase > 0) {
112 dol_syslog(
"Yes with id ".$parentdirisindatabase);
114 $fk_parent = $parentdirisindatabase;
125 if ($fk_parent >= 0) {
126 $ecmdirtmp->ref =
'NOTUSEDYET';
128 $ecmdirtmp->description =
'';
129 $ecmdirtmp->fk_parent = $fk_parent;
131 $txt =
"We create directory ".$ecmdirtmp->label.
" with parent ".$fk_parent;
134 $id = $ecmdirtmp->create($user);
136 $newdirsql = array(
'id'=>$id,
137 'id_mere'=>$ecmdirtmp->fk_parent,
138 'label'=>$ecmdirtmp->label,
139 'description'=>$ecmdirtmp->description,
140 'fullrelativename'=>$relativepathmissing);
141 $sqltree[] = $newdirsql;
145 dol_syslog(
"Failed to create directory ".$ecmdirtmp->label, LOG_ERR);
148 $txt =
"Parent of ".$dirdesc[
'fullname'].
" not found";
156 foreach ($sqltree as $dirdesc) {
157 $dirtotest = $conf->$element->dir_output.
'/'.$dirdesc[
'fullrelativename'];
159 dol_syslog($dirtotest.
" not found onto disk. We delete from database dir with id=".$dirdesc[
'id']);
160 $ecmdirtmp->id = $dirdesc[
'id'];
161 $ecmdirtmp->delete($user,
'databaseonly');
166 dol_syslog(
"Nb of directories added into database = ".$adirwascreated);
168 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"ecm_directories set cachenbofdoc = -1 WHERE cachenbofdoc < 0";