Files
crm.clientright.ru/modules/Documents/views/NextcloudEdit.php

82 lines
3.1 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* Nextcloud Editor View for Documents
* Представление для редактирования документов через Nextcloud
*/
class Documents_NextcloudEdit_View extends Vtiger_IndexAjax_View {
public function requiresPermission(Vtiger_Request $request) {
$permissions = parent::requiresPermission($request);
$permissions[] = array('module_parameter' => 'module', 'action' => 'DetailView', 'record_parameter' => 'record');
return $permissions;
}
public function checkPermission(Vtiger_Request $request) {
return parent::checkPermission($request);
}
public function process(Vtiger_Request $request) {
$moduleName = $request->getModule();
$recordId = $request->get('record');
$action = $request->get('action_type', 'prepare_edit');
try {
// Подключаем наш файловый менеджер
require_once dirname(dirname(dirname(__DIR__))) . '/crm_extensions/file_storage/FileStorageManager.php';
$fileManager = new FileStorageManager();
$recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName);
if (!$recordModel) {
throw new Exception('Record not found');
}
$fileName = $recordModel->get('filename');
switch ($action) {
case 'prepare_edit':
$result = $fileManager->prepareForEditing($recordId, $fileName);
if ($result['success']) {
// Обновляем запись в CRM с информацией о редактировании
$recordModel->set('mode', 'edit');
$recordModel->set('editurl', $result['edit_url']);
$recordModel->save();
}
break;
case 'sync_changes':
$result = $fileManager->syncAfterEditing($recordId);
if ($result['success']) {
// Обновляем информацию о файле в CRM
$recordModel->set('mode', 'edit');
$recordModel->set('modifiedtime', date('Y-m-d H:i:s'));
$recordModel->save();
}
break;
default:
throw new Exception('Unknown action: ' . $action);
}
$response = array(
'success' => true,
'result' => $result
);
} catch (Exception $e) {
$response = array(
'success' => false,
'error' => array(
'message' => $e->getMessage()
)
);
}
header('Content-Type: application/json');
echo json_encode($response);
}
}