mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-03-11 16:35:38 +00:00
Merge branch 'seeddms-5.0.x' into seeddms-5.1.x
This commit is contained in:
commit
10f01c0fc6
|
@ -4933,6 +4933,47 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
|
|||
return $this->_workflow;
|
||||
} /* }}} */
|
||||
|
||||
/**
|
||||
* Rewrites the complete workflow log
|
||||
*
|
||||
* Attention: this function is highly dangerous.
|
||||
* It removes an existing workflow log and rewrites it.
|
||||
* This method was added for importing an xml dump.
|
||||
*
|
||||
* @param array $workflowlog new workflow log with the newest log entry first.
|
||||
* @return boolean true on success, otherwise false
|
||||
*/
|
||||
function rewriteWorkflowLog($workflowlog) { /* {{{ */
|
||||
$db = $this->_document->_dms->getDB();
|
||||
|
||||
$db->startTransaction();
|
||||
|
||||
/* First, remove the old entries */
|
||||
$queryStr = "DELETE FROM `tblWorkflowLog` WHERE `tblWorkflowLog`.`document` = '". $this->_document->getID() ."' AND `tblWorkflowLog`.`version` = '". $this->_version ."'";
|
||||
if (!$db->getResult($queryStr)) {
|
||||
$db->rollbackTransaction();
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Second, insert the new entries */
|
||||
$workflowlog = array_reverse($workflowlog);
|
||||
foreach($workflowlog as $log) {
|
||||
if(!SeedDMS_Core_DMS::checkDate($log['date'], 'Y-m-d H:i:s')) {
|
||||
$db->rollbackTransaction();
|
||||
return false;
|
||||
}
|
||||
$queryStr = "INSERT INTO `tblWorkflowLog` (`document`, `version`, `workflow`, `transition`, `comment`, `date`, `userid`) ".
|
||||
"VALUES ('".$this->_document->getID() ."', '".(int) $this->_version."', '".(int) $log['workflow']->getID()."', '".(int) $log['transition']->getID()."', ".$db->qstr($log['comment']) .", ".$db->qstr($log['date']).", ".$log['user']->getID().")";
|
||||
if (!$db->getResult($queryStr)) {
|
||||
$db->rollbackTransaction();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$db->commitTransaction();
|
||||
return true;
|
||||
} /* }}} */
|
||||
|
||||
/**
|
||||
* Restart workflow from its initial state
|
||||
*
|
||||
|
|
|
@ -1123,6 +1123,10 @@ class SeedDMS_Core_Workflow_Log { /* {{{ */
|
|||
return $this->_transition;
|
||||
} /* }}} */
|
||||
|
||||
function getWorkflow() { /* {{{ */
|
||||
return $this->_workflow;
|
||||
} /* }}} */
|
||||
|
||||
function getUser() { /* {{{ */
|
||||
return $this->_user;
|
||||
} /* }}} */
|
||||
|
|
|
@ -1091,6 +1091,9 @@ SeedDMS_Core_DMS::getNotificationsByUser() are deprecated
|
|||
<license uri="http://opensource.org/licenses/gpl-license">GPL License</license>
|
||||
<notes>
|
||||
- SeedDMЅ_Core_Object::getAttributes() orders attributes by name of attribute definition
|
||||
- SeedDMЅ_Core_Workflow::addTransition() force reload of transition list after adding a
|
||||
- SeedDMЅ_Core_Document::rewrite[Review|Approval]Log() will also copy file if it exists
|
||||
- add method SeedDMЅ_Core_Document::rewriteWorkflowLog()
|
||||
</notes>
|
||||
</release>
|
||||
<release>
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
// Translators: Admin (786)
|
||||
// Translators: Admin (791)
|
||||
|
||||
$text = array(
|
||||
'2_factor_auth' => '',
|
||||
|
@ -160,7 +160,7 @@ $text = array(
|
|||
'backup_tools' => 'Иструменти за бекъп',
|
||||
'between' => 'между',
|
||||
'bg_BG' => '',
|
||||
'browse' => '',
|
||||
'browse' => 'Преглеждане',
|
||||
'calendar' => 'Календар',
|
||||
'calendar_week' => '',
|
||||
'cancel' => 'Отмяна',
|
||||
|
@ -216,11 +216,11 @@ $text = array(
|
|||
'choose_workflow_action' => 'Изберете workflow действие',
|
||||
'choose_workflow_state' => 'Изберете състояние на workflow',
|
||||
'class_name' => '',
|
||||
'clear_cache' => '',
|
||||
'clear_cache' => 'Изчистване на кеша',
|
||||
'clear_clipboard' => '',
|
||||
'clear_password' => '',
|
||||
'clipboard' => '',
|
||||
'close' => '',
|
||||
'close' => 'Затвори',
|
||||
'comment' => 'Коментар',
|
||||
'comment_changed_email' => 'Коментарите са изменени',
|
||||
'comment_for_current_version' => 'Коментар за версията',
|
||||
|
@ -394,7 +394,7 @@ $text = array(
|
|||
'files' => 'Файлове',
|
||||
'files_deletion' => 'Изтриване на файлове',
|
||||
'files_deletion_warning' => 'Тази операция ще изтрие всички файлове във всички папки. Информацията за версиите ще остане достъпна',
|
||||
'files_loading' => '',
|
||||
'files_loading' => 'Моля изчакайте докато се зареди списъкът на файловете',
|
||||
'file_size' => 'Размер',
|
||||
'filter_for_documents' => '',
|
||||
'filter_for_folders' => '',
|
||||
|
@ -800,7 +800,7 @@ $text = array(
|
|||
'seconds' => 'секунди',
|
||||
'selection' => 'Избор',
|
||||
'select_attrdefgrp_show' => '',
|
||||
'select_category' => '',
|
||||
'select_category' => 'Изберете категория',
|
||||
'select_groups' => 'Кликни да избереш групи',
|
||||
'select_grp_approvers' => 'Кликни да избереш група утвърждаващи',
|
||||
'select_grp_ind_approvers' => '',
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
// Translators: Admin (707), kreml (455)
|
||||
// Translators: Admin (708), kreml (455)
|
||||
|
||||
$text = array(
|
||||
'2_factor_auth' => '',
|
||||
|
@ -410,7 +410,7 @@ URL: [url]',
|
|||
'edit_user' => 'Upravit uživatele',
|
||||
'edit_user_details' => 'Upravit podrobnosti uživatele',
|
||||
'edit_version' => '',
|
||||
'el_GR' => '',
|
||||
'el_GR' => 'Řecký',
|
||||
'email' => 'E-mail',
|
||||
'email_error_title' => 'Není zadána emailová adresa',
|
||||
'email_footer' => 'Změnu nastavení e-mailu můžete kdykoliv provést pomocí funkce\'Můj účet\'',
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
// Translators: acabello (20), Admin (996), angel (123), francisco (2), jaimem (14)
|
||||
// Translators: acabello (20), Admin (998), angel (123), francisco (2), jaimem (14)
|
||||
|
||||
$text = array(
|
||||
'2_factor_auth' => '',
|
||||
|
@ -410,7 +410,7 @@ URL: [url]',
|
|||
'edit_user' => 'Editar usuario...',
|
||||
'edit_user_details' => 'Editar detalles de usuario',
|
||||
'edit_version' => '',
|
||||
'el_GR' => '',
|
||||
'el_GR' => 'Griego',
|
||||
'email' => 'Email',
|
||||
'email_error_title' => 'No ha introducido un correo',
|
||||
'email_footer' => 'Siempre se puede cambiar la configuración de correo electrónico utilizando las funciones de «Mi cuenta»',
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
// Translators: Admin (1530), rickr (144), s.pnt (26)
|
||||
// Translators: Admin (1531), rickr (144), s.pnt (26)
|
||||
|
||||
$text = array(
|
||||
'2_factor_auth' => 'Autorizzazione a due fattori',
|
||||
|
@ -416,7 +416,7 @@ URL: [url]',
|
|||
'edit_user' => 'Modifica l\'utente',
|
||||
'edit_user_details' => 'Modifica i dettagli utente',
|
||||
'edit_version' => 'Versione editato',
|
||||
'el_GR' => '',
|
||||
'el_GR' => 'Greco',
|
||||
'email' => 'Email',
|
||||
'email_error_title' => 'Nessuna email immessa',
|
||||
'email_footer' => 'Puoi cambiare l\'impostazione della tua email utilizzando le funzioni del menu \'Account personale\'',
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
// Translators: Admin (720), gijsbertush (329), pepijn (45), reinoutdijkstra@hotmail.com (270)
|
||||
// Translators: Admin (721), gijsbertush (329), pepijn (45), reinoutdijkstra@hotmail.com (270)
|
||||
|
||||
$text = array(
|
||||
'2_factor_auth' => '',
|
||||
|
@ -408,7 +408,7 @@ URL: [url]',
|
|||
'edit_user' => 'Wijzig gebruiker',
|
||||
'edit_user_details' => 'Wijzig gebruiker Details',
|
||||
'edit_version' => '',
|
||||
'el_GR' => '',
|
||||
'el_GR' => 'Griek',
|
||||
'email' => 'E-mail',
|
||||
'email_error_title' => 'Geen email ingevoerd',
|
||||
'email_footer' => 'U kunt altijd uw e-mail instellingen wijzigen via de \'Mijn Account\' opties',
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
// Translators: Admin (739), netixw (84), romi (93), uGn (112)
|
||||
// Translators: Admin (740), netixw (84), romi (93), uGn (112)
|
||||
|
||||
$text = array(
|
||||
'2_factor_auth' => '',
|
||||
|
@ -403,7 +403,7 @@ URL: [url]',
|
|||
'edit_user' => 'Edytuj użytkownika',
|
||||
'edit_user_details' => 'Zmień dane użytkownika',
|
||||
'edit_version' => '',
|
||||
'el_GR' => '',
|
||||
'el_GR' => 'Grecki',
|
||||
'email' => 'Email',
|
||||
'email_error_title' => 'Nie wprowadzono adresu email',
|
||||
'email_footer' => 'W każdej chwili możesz zmienić swój email używając zakładki \'Moje konto\'.',
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
// Translators: Admin (644), fengjohn (5)
|
||||
// Translators: Admin (648), fengjohn (5)
|
||||
|
||||
$text = array(
|
||||
'2_factor_auth' => '',
|
||||
|
@ -364,7 +364,7 @@ URL: [url]',
|
|||
'edit_user' => '编辑用户',
|
||||
'edit_user_details' => '编辑用户详情',
|
||||
'edit_version' => '',
|
||||
'el_GR' => '',
|
||||
'el_GR' => '希腊人',
|
||||
'email' => 'Email',
|
||||
'email_error_title' => '',
|
||||
'email_footer' => '您可以用‘我的账户’选项来改变您的e-mail设置',
|
||||
|
@ -556,7 +556,7 @@ URL: [url]',
|
|||
'manager_of_group' => '',
|
||||
'mandatory_approvergroups' => '',
|
||||
'mandatory_approvergroup_no_access' => '',
|
||||
'mandatory_approvers' => '',
|
||||
'mandatory_approvers' => '必须的审批者',
|
||||
'mandatory_approver_no_access' => '',
|
||||
'mandatory_reviewergroups' => '',
|
||||
'mandatory_reviewergroup_no_access' => '',
|
||||
|
@ -808,7 +808,7 @@ URL: [url]',
|
|||
'select_attrdefgrp_show' => '',
|
||||
'select_category' => '选中分类',
|
||||
'select_groups' => '点击选择组',
|
||||
'select_grp_approvers' => '',
|
||||
'select_grp_approvers' => '点击选择组审批组',
|
||||
'select_grp_ind_approvers' => '',
|
||||
'select_grp_ind_notification' => '',
|
||||
'select_grp_ind_recipients' => '',
|
||||
|
@ -817,7 +817,7 @@ URL: [url]',
|
|||
'select_grp_recipients' => '',
|
||||
'select_grp_reviewers' => '点击选择审核群组',
|
||||
'select_grp_revisors' => '',
|
||||
'select_ind_approvers' => '',
|
||||
'select_ind_approvers' => '点击选择审批个人',
|
||||
'select_ind_notification' => '点击选择被通知人',
|
||||
'select_ind_recipients' => '',
|
||||
'select_ind_reviewers' => '点击选择审核人',
|
||||
|
|
|
@ -376,6 +376,7 @@ function tree($folder, $parent=null, $indent='', $skipcurrent=false) { /* {{{ */
|
|||
foreach($wkflogs as $wklog) {
|
||||
echo $indent." <workflowlog>\n";
|
||||
echo $indent." <attr name=\"date\" format=\"Y-m-d H:i:s\">".$wklog->getDate()."</attr>\n";
|
||||
echo $indent." <attr name=\"workflow\">".$wklog->getWorkflow()->getID()."</attr>\n";
|
||||
echo $indent." <attr name=\"transition\">".$wklog->getTransition()->getID()."</attr>\n";
|
||||
$loguser = $wklog->getUser();
|
||||
echo $indent." <attr name=\"user\">".$loguser->getID()."</attr>\n";
|
||||
|
|
|
@ -67,6 +67,34 @@ function getRevAppLog($reviews) { /* {{{ */
|
|||
return $newreviews;
|
||||
} /* }}} */
|
||||
|
||||
function getWorkflowLog($workflowlogs) { /* {{{ */
|
||||
global $logger, $dms, $objmap;
|
||||
|
||||
$newlogs = array();
|
||||
foreach($workflowlogs as $i=>$log) {
|
||||
if(!array_key_exists($log['attributes']['user'], $objmap['users'])) {
|
||||
unset($initversion['workflowlogs'][$i]);
|
||||
$logger->warning("User for workflow log cannot be mapped");
|
||||
} else {
|
||||
$log['attributes']['user'] = $dms->getUser($objmap['users'][$log['attributes']['user']]);
|
||||
if(!array_key_exists($log['attributes']['workflow'], $objmap['workflows'])) {
|
||||
unset($initversion['workflowlogs'][$i]);
|
||||
$logger->warning("Workflow for workflow log cannot be mapped");
|
||||
} else {
|
||||
$log['attributes']['workflow'] = $dms->getWorkflow($objmap['workflows'][$log['attributes']['workflow']]);
|
||||
if(!array_key_exists($log['attributes']['transition'], $objmap['workflowtransitions'])) {
|
||||
unset($initversion['workflowlogs'][$i]);
|
||||
$logger->warning("Workflow transition for workflow log cannot be mapped");
|
||||
} else {
|
||||
$log['attributes']['transition'] = $dms->getWorkflowTransition($objmap['workflowtransitions'][$log['attributes']['transition']]);
|
||||
$newlogs[] = $log['attributes'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $newlogs;
|
||||
} /* }}} */
|
||||
|
||||
function insert_user($user) { /* {{{ */
|
||||
global $logger, $dms, $debug, $sections, $defaultUser, $objmap;
|
||||
|
||||
|
@ -358,10 +386,12 @@ function insert_workflow($workflow) { /* {{{ */
|
|||
}
|
||||
}
|
||||
}
|
||||
if(!$newWorkflow->addTransition($state, $action, $nextstate, $tusers, $tgroups)) {
|
||||
if(!($newWorkflowTransition = $newWorkflow->addTransition($state, $action, $nextstate, $tusers, $tgroups))) {
|
||||
$logger->err("Could not add workflow because transition could not be added");
|
||||
return false;
|
||||
}
|
||||
if($newWorkflowTransition)
|
||||
$objmap['workflowtransitions'][$transition['id']] = $newWorkflowTransition->getID();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -516,8 +546,6 @@ function insert_document($document) { /* {{{ */
|
|||
$logger->warning("Workflowstate ".$initversion['workflow']['state']." cannot be mapped");
|
||||
}
|
||||
}
|
||||
if($initversion['workflowlogs']) {
|
||||
}
|
||||
|
||||
$version_attributes = array();
|
||||
if(isset($initversion['user_attributes'])) {
|
||||
|
@ -608,6 +636,15 @@ function insert_document($document) { /* {{{ */
|
|||
$newVersion->rewriteApprovalLog($newapprovals);
|
||||
}
|
||||
|
||||
if($initversion['workflowlogs']) {
|
||||
$newworkflowlogs = getWorkflowLog($initversion['workflowlogs']);
|
||||
if(!$newVersion->rewriteWorkflowLog($newworkflowlogs)) {
|
||||
$logger->err("Could not rewrite workflow log of version '".$newVersion->getVersion()."' of document '".$newDocument->getName()."'");
|
||||
$logger->debug($dms->getDB()->getErrorMsg());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$newDocument->setDate(dateToTimestamp($document['attributes']['date']));
|
||||
$newDocument->setDefaultAccess($document['attributes']['defaultaccess']);
|
||||
$newDocument->setInheritAccess($document['attributes']['inheritaccess']);
|
||||
|
@ -712,6 +749,7 @@ function insert_document($document) { /* {{{ */
|
|||
|
||||
$logger->info("Added version '".$version['version']."' of document '".$document['attributes']['name']."'");
|
||||
$newVersion = $result->getContent();
|
||||
unlink($filename);
|
||||
if($workflowstate)
|
||||
$newVersion->setWorkflowState($workflowstate);
|
||||
$newVersion->setDate(dateToTimestamp($version['attributes']['date']));
|
||||
|
@ -736,7 +774,14 @@ function insert_document($document) { /* {{{ */
|
|||
$newVersion->rewriteApprovalLog($newapprovals);
|
||||
}
|
||||
|
||||
unlink($filename);
|
||||
if($version['workflowlogs']) {
|
||||
$newworkflowlogs = getWorkflowLog($version['workflowlogs']);
|
||||
if(!$newVersion->rewriteWorkflowLog($newworkflowlogs)) {
|
||||
$logger->err("Could not rewrite workflow log of version '".$newVersion->getVersion()."' of document '".$newDocument->getName()."'");
|
||||
$logger->debug($dms->getDB()->getErrorMsg());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($document['notifications']['users']) && $document['notifications']['users']) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user