/**
  *  Create record into database
  *
  *  @param      User	$user       User that create
  *  @return     int      			<0 if KO, >0 if OK
  */
 function create($user)
 {
     global $conf, $langs;
     $error = 0;
     $now = dol_now();
     // Clean parameters
     $this->label = dol_sanitizeFileName(trim($this->label));
     $this->fk_parent = trim($this->fk_parent);
     $this->description = trim($this->description);
     $this->date_c = $now;
     $this->fk_user_c = $user->id;
     if ($this->fk_parent <= 0) {
         $this->fk_parent = 0;
     }
     // Check if same directory does not exists with this name
     $relativepath = $this->label;
     if ($this->fk_parent) {
         $parent = new EcmDirectory($this->db);
         $parent->fetch($this->fk_parent);
         $relativepath = $parent->getRelativePath() . $relativepath;
     }
     $relativepath = preg_replace('/([\\/])+/i', '/', $relativepath);
     // Avoid duplicate / or \
     //print $relativepath.'<br>';
     $cat = new EcmDirectory($this->db);
     $cate_arbo = $cat->get_full_arbo(1);
     $pathfound = 0;
     foreach ($cate_arbo as $key => $categ) {
         $path = str_replace($this->forbiddenchars, '_', $categ['fulllabel']);
         //print $path.'<br>';
         if ($path == $relativepath) {
             $pathfound = 1;
             break;
         }
     }
     if ($pathfound) {
         $this->error = "ErrorDirAlreadyExists";
         dol_syslog(get_class($this) . "::create " . $this->error, LOG_WARNING);
         return -1;
     } else {
         $this->db->begin();
         // Insert request
         $sql = "INSERT INTO " . MAIN_DB_PREFIX . "ecm_directories(";
         $sql .= "label,";
         $sql .= "entity,";
         $sql .= "fk_parent,";
         $sql .= "description,";
         $sql .= "cachenbofdoc,";
         $sql .= "date_c,";
         $sql .= "fk_user_c";
         $sql .= ") VALUES (";
         $sql .= " '" . $this->db->escape($this->label) . "',";
         $sql .= " '" . $conf->entity . "',";
         $sql .= " '" . $this->fk_parent . "',";
         $sql .= " '" . $this->db->escape($this->description) . "',";
         $sql .= " " . $this->cachenbofdoc . ",";
         $sql .= " '" . $this->db->idate($this->date_c) . "',";
         $sql .= " '" . $this->fk_user_c . "'";
         $sql .= ")";
         dol_syslog(get_class($this) . "::create sql=" . $sql, LOG_DEBUG);
         $resql = $this->db->query($sql);
         if ($resql) {
             $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX . "ecm_directories");
             $dir = $conf->ecm->dir_output . '/' . $this->getRelativePath();
             $result = dol_mkdir($dir);
             if ($result < 0) {
                 $error++;
                 $this->error = "ErrorFailedToCreateDir";
             }
             // Appel des triggers
             include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
             $interface = new Interfaces($this->db);
             $result = $interface->run_triggers('MYECMDIR_CREATE', $this, $user, $langs, $conf);
             if ($result < 0) {
                 $error++;
                 $this->errors = $interface->errors;
             }
             // Fin appel triggers
             if (!$error) {
                 $this->db->commit();
                 return $this->id;
             } else {
                 $this->db->rollback();
                 return -1;
             }
         } else {
             $this->error = "Error " . $this->db->lasterror();
             dol_syslog(get_class($this) . "::create " . $this->error, LOG_ERR);
             $this->db->rollback();
             return -1;
         }
     }
 }
Пример #2
0
        exit;
    }
}
$form = new Form($db);
$ecmdirstatic = new EcmDirectory($db);
$userstatic = new User($db);
$error = 0;
/*
 *	Actions
 */
// Upload file
if (GETPOST("sendit") && !empty($conf->global->MAIN_UPLOAD_DOC)) {
    // Define relativepath and upload_dir
    $relativepath = '';
    if ($ecmdir->id) {
        $relativepath = $ecmdir->getRelativePath();
    } else {
        $relativepath = $section_dir;
    }
    $upload_dir = $conf->ecm->dir_output . '/' . $relativepath;
    if (empty($_FILES['userfile']['tmp_name'])) {
        $error++;
        setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("File")), 'errors');
    }
    if (!$error) {
        if (dol_mkdir($upload_dir) >= 0) {
            $resupload = dol_move_uploaded_file($_FILES['userfile']['tmp_name'], $upload_dir . "/" . dol_unescapefile($_FILES['userfile']['name']), 0, 0, $_FILES['userfile']['error']);
            if (is_numeric($resupload) && $resupload > 0) {
                $result = $ecmdir->changeNbOfFiles('+');
            } else {
                $langs->load("errors");
Пример #3
0
if (!$sortfield) {
    $sortfield = "name";
}
$section = GETPOST("section");
if (!$section) {
    dol_print_error('', "ErrorSectionParamNotDefined");
    exit;
}
// Load ecm object
$ecmdir = new EcmDirectory($db);
$result = $ecmdir->fetch(GETPOST("section"));
if (!$result > 0) {
    dol_print_error($db, $ecmdir->error);
    exit;
}
$relativepath = $ecmdir->getRelativePath();
$upload_dir = $conf->ecm->dir_output . '/' . $relativepath;
/*
 * Actions
 */
// Upload file
if (GETPOST("sendit") && !empty($conf->global->MAIN_UPLOAD_DOC)) {
    if (dol_mkdir($upload_dir) >= 0) {
        $resupload = dol_move_uploaded_file($_FILES['userfile']['tmp_name'], $upload_dir . "/" . dol_unescapefile($_FILES['userfile']['name']), 0, 0, $_FILES['userfile']['error']);
        if (is_numeric($resupload) && $resupload > 0) {
            $result = $ecmdir->changeNbOfFiles('+');
        } else {
            $langs->load("errors");
            if ($resupload < 0) {
                $mesg = '<div class="error">' . $langs->trans("ErrorFileNotUploaded") . '</div>';
            } else {