У меня есть этот PHP-скрипт, над которым я работаю, чтобы импортировать платежные квитанции в Drupal. Он делает все так, как я хочу, за исключением того, что скрипт не присоединяет загруженный файл PDF к узлу.
Несколько заметок; Файловая система Drupal настроена как приватная, не уверенная, имеет ли это значение или нет. Во-вторых, pdf-файлы уже находятся в правильном расположении 'paystubs / [uid] /paystub_1.pdf', поэтому я считаю, что моя проблема заключается в том, что файл неправильно связан с узлом.
Вот код
function create_drupal_node($employeeID, $employeeDate, $drupalUid, $file2) {
$sourcePDF = "/var/www/html/mgldev.************.com/burst_pdfs/pdfs/" . $file2;
$destinationPDF = '/paystubs/' . $drupalUid . '/' . $file2;
$destination = '/paystubs/' . $drupalUid . '/';
if (!file_check_directory($destination, TRUE)){
echo "Failed to check dir, does it exist?";
mkdir($destination);
echo "trying to drupal mkdir...";
}
// Copy the file to the Drupal files directory
if (file_exists($sourcePDF)) {
if(!rename($sourcePDF, $destinationPDF)) {
echo "Failed to move file\n";
}
}
//Create node and attach file uplaod
$file_drupal_path = "paystubs/" . $drupalUid . "/" . $file2;
$mime = 'pdf/application';
$file = new stdClass();
$file->filename = $file2;
$file->filepath = $file_drupal_path;
$file->filemime = $mime;
$file->filesize = filesize($file_drupal_path);
$file->uid = $drupalUid;
$file->status = FILE_STATUS_PERMANENT;
$file->timestamp = time();
drupal_write_record('files', $file);
$node = new StdClass();
$node->type = 'paystub';
$node->body = $employeeID;
$node->title = $employeeDate;
$node->field_paystub_upload = array(
array(
'fid' => $file->fid,
'title' => $file2,
'filename' => $file->filename,
'filepath' => $file->filepath,
'filesize' => $file->filesize,
'mimetype' => $mime,
'data' => array(
'description' => $file2,
),
'list' => 1,
),
);
$node->uid = $drupalUid;
$node->status = 1;
$node->active = 1;
$node->promote = 1;
node_save($node);
}
Узел создан, а заголовок и тело узла имеют правильные значения. Когда я смотрю на узел с помощью модуля Devel, я вижу, что массив 'field_paystub_upload' равен нулю. Так что по какой-то причине он делает все правильно, кроме прикрепления файла к узлу, и это то, о чем я трахал голову несколько дней. Лучший ответ получает бесплатный интернет?