Merge branch 'seeddms-5.0.x' into develop

This commit is contained in:
Uwe Steinmann 2016-02-15 20:45:05 +01:00
commit bc608eff07
63 changed files with 687 additions and 101 deletions

View File

@ -2,6 +2,7 @@
Changes in version 5.0.1
--------------------------------------------------------------------------------
- merged changes from 4.3.24
- fixed sending test mail
--------------------------------------------------------------------------------
Changes in version 5.0.0
@ -23,6 +24,7 @@
- further pages with content security policy turned on
- various translation updates
- check for document expiration when showing search result and folder content
- more rest api functions
--------------------------------------------------------------------------------
Changes in version 4.3.23

View File

@ -64,6 +64,8 @@ Here is a detailed list of requirements:
6. The Zend Framework (version 1) (optional, only needed for fulltext search)
7. The pear Log package
8. The pear HTTP_WebDAV_Server package (optional, only need for webdav)
9. SLIM RestApi
10. FeedWriter from https://github.com/mibe/FeedWriter
BEFORE YOU START

View File

@ -186,7 +186,7 @@ class SeedDMS_Core_Group {
$queryStr = "INSERT INTO tblGroupMembers (groupID, userID, manager) VALUES (".$this->_id.", ".$user->getID(). ", " . ($asManager?"1":"0") ." )";
$res = $db->getResult($queryStr);
if ($res) return false;
if (!$res) return false;
unset($this->_users);
return true;
@ -198,7 +198,7 @@ class SeedDMS_Core_Group {
$queryStr = "DELETE FROM tblGroupMembers WHERE groupID = ".$this->_id." AND userID = ".$user->getID();
$res = $db->getResult($queryStr);
if ($res) return false;
if (!$res) return false;
unset($this->_users);
return true;
} /* }}} */

View File

@ -899,7 +899,7 @@ class SeedDMS_Core_User { /* {{{ */
function getDocumentsLocked() { /* {{{ */
$db = $this->_dms->getDB();
$queryStr = "SELECT `tblDocuments`.* ".
$queryStr = "SELECT `tblDocuments`.*, `tblDocumentLocks`.`userID` as `lockUser` ".
"FROM `tblDocumentLocks` LEFT JOIN `tblDocuments` ON `tblDocuments`.`id` = `tblDocumentLocks`.`document` ".
"WHERE `tblDocumentLocks`.`userID` = '".$this->_id."' ".
"ORDER BY `id` DESC";

View File

@ -967,6 +967,7 @@ by a group or user right
SeedDMS_Core_DMS::getNotificationsByUser() are deprecated
- SeedDMS_Core_DocumentCategory::getDocumentsByCategory() now returns the documents
- add SeedDMS_Core_Group::getWorkflowStatus()
- SeedDMS_Core_User::getDocumentsLocked() sets locking user propperly
</notes>
</release>
</changelog>

View File

@ -44,7 +44,13 @@ class SeedDMS_Preview_Previewer {
*/
protected $converters;
function __construct($previewDir, $width=40) {
/**
* @var integer $timeout maximum time for execution of external commands
* @access protected
*/
protected $timeout;
function __construct($previewDir, $width=40, $timeout=5) {
if(!is_dir($previewDir)) {
if (!SeedDMS_Core_File::makeDir($previewDir)) {
$this->previewDir = '';
@ -66,9 +72,10 @@ class SeedDMS_Preview_Previewer {
'application/postscript' => "convert -density 100 -resize %wx '%f[0]' '%o'",
'application/x-compressed-tar' => "tar tzvf '%f' | convert -density 100 -resize %wx text:-[0] '%o",
);
$this->timeout = intval($timeout);
}
static function execWithTimeout($cmd, $timeout=2) { /* {{{ */
static function execWithTimeout($cmd, $timeout=5) { /* {{{ */
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
@ -188,7 +195,7 @@ class SeedDMS_Preview_Previewer {
if($cmd) {
//exec($cmd);
try {
self::execWithTimeout($cmd);
self::execWithTimeout($cmd, $this->timeout);
} catch(Exception $e) {
}
}
@ -254,7 +261,7 @@ class SeedDMS_Preview_Previewer {
if($cmd) {
//exec($cmd);
try {
self::execWithTimeout($cmd);
self::execWithTimeout($cmd, $this->timeout);
} catch(Exception $e) {
}
}
@ -320,6 +327,21 @@ class SeedDMS_Preview_Previewer {
}
} /* }}} */
public function getFilesize($object, $width=0) { /* {{{ */
if($width == 0)
$width = $this->width;
else
$width = intval($width);
$target = $this->getFileName($object, $width);
if($target && file_exists($target.'.png')) {
return(filesize($target.'.png'));
} else {
return false;
}
} /* }}} */
public function deletePreview($document, $object, $width=0) { /* {{{ */
if($width == 0)
$width = $this->width;

View File

@ -11,11 +11,11 @@
<email>uwe@steinmann.cx</email>
<active>yes</active>
</lead>
<date>2015-08-08</date>
<date>2016-02-11</date>
<time>09:36:57</time>
<version>
<release>1.1.4</release>
<api>1.1.4</api>
<release>1.1.5</release>
<api>1.1.5</api>
</version>
<stability>
<release>stable</release>
@ -25,6 +25,8 @@
<notes>
- Converters to create preview images are no longer fixed. Those which has been hardcoded before remain the predefined converters, but they can also be changed.
- command for creating the preview will be called with a given timeout
add method getFilesize()
timeout for external commands can be passed to contructor of SeedDMS_Preview_Previewer
</notes>
<contents>
<dir baseinstalldir="SeedDMS" name="/">
@ -132,5 +134,21 @@ create fixed width image with proportional height
preview images will also be recreated if the object this image belongs is of newer date than the image itself. This happens if versions are being deleted and than a new version is uploaded. Because the new version will get the version number of the old version, it will also take over the old preview image.Comparing the creation date of the image with the object detects this case.
</notes>
</release>
<release>
<date>2015-08-08</date>
<time>09:36:57</time>
<version>
<release>1.1.4</release>
<api>1.1.0</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<license uri="http://opensource.org/licenses/gpl-license">GPL License</license>
<notes>
command for creating the preview will be called with a given timeout
</notes>
</release>
</changelog>
</package>

View File

@ -31,31 +31,35 @@ class SeedDMS_Controller_Download extends SeedDMS_Controller_Common {
$content = $this->params['content'];
if(!$this->callHook('version')) {
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($dms->contentDir . $content->getPath() ));
$efilename = rawurlencode($content->getOriginalFileName());
header("Content-Disposition: attachment; filename=\"" . $efilename . "\"; filename*=UTF-8''".$efilename);
header("Content-Type: " . $content->getMimeType());
header("Cache-Control: must-revalidate");
if(file_exists($dms->contentDir . $content->getPath()) {
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($dms->contentDir . $content->getPath() ));
$efilename = rawurlencode($content->getOriginalFileName());
header("Content-Disposition: attachment; filename=\"" . $efilename . "\"; filename*=UTF-8''".$efilename);
header("Content-Type: " . $content->getMimeType());
header("Cache-Control: must-revalidate");
readfile($dms->contentDir . $content->getPath());
readfile($dms->contentDir . $content->getPath());
}
}
break;
case "file":
$file = $this->params['file'];
if(!$this->callHook('file')) {
header("Content-Type: application/force-download; name=\"" . $file->getOriginalFileName() . "\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($dms->contentDir . $file->getPath() ));
header("Content-Disposition: attachment; filename=\"" . $file->getOriginalFileName() . "\"");
//header("Expires: 0");
header("Content-Type: " . $file->getMimeType());
//header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: must-revalidate");
//header("Pragma: no-cache");
if(file_exists($dms->contentDir . $file->getPath()) {
header("Content-Type: application/force-download; name=\"" . $file->getOriginalFileName() . "\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($dms->contentDir . $file->getPath() ));
header("Content-Disposition: attachment; filename=\"" . $file->getOriginalFileName() . "\"");
//header("Expires: 0");
header("Content-Type: " . $file->getMimeType());
//header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: must-revalidate");
//header("Pragma: no-cache");
readfile($dms->contentDir . $file->getPath());
readfile($dms->contentDir . $file->getPath());
}
}
break;
}

View File

@ -584,6 +584,7 @@ URL: [url]',
'minutes' => 'دقائق',
'misc' => 'متنوعات',
'missing_checksum' => 'فحص اخطاء مفقود',
'missing_file' => '',
'missing_filesize' => 'حجم ملف مفقود',
'missing_transition_user_group' => 'مستخدم/مجموعة مفقودة للتحول',
'monday' => 'الاثنين',
@ -890,6 +891,7 @@ URL: [url]',
'select_one' => 'اختر واحد',
'select_users' => 'اضغط لاختيار المستخدم',
'select_workflow' => 'اختر مسار العمل',
'send_test_mail' => '',
'september' => 'سبتمبر',
'sequence' => 'تتابع',
'seq_after' => 'بعد "[prevname]"',

View File

@ -515,6 +515,7 @@ $text = array(
'minutes' => 'минути',
'misc' => 'Разни',
'missing_checksum' => 'липсва контролна сума',
'missing_file' => '',
'missing_filesize' => 'липсва размер на файла',
'missing_transition_user_group' => 'липсва потребител или група за преход',
'monday' => 'понеделник',
@ -755,6 +756,7 @@ $text = array(
'select_one' => 'Избери един',
'select_users' => 'Кликни да избереш потребители',
'select_workflow' => 'Избери процес',
'send_test_mail' => '',
'september' => 'септември',
'sequence' => 'Последователност',
'seq_after' => 'След "[prevname]"',

View File

@ -520,6 +520,7 @@ URL: [url]',
'minutes' => '',
'misc' => '',
'missing_checksum' => '',
'missing_file' => '',
'missing_filesize' => '',
'missing_transition_user_group' => '',
'monday' => 'Dilluns',
@ -760,6 +761,7 @@ URL: [url]',
'select_one' => 'Seleccionar un',
'select_users' => '',
'select_workflow' => '',
'send_test_mail' => '',
'september' => 'Setembre',
'sequence' => 'Seqüència',
'seq_after' => 'Després "[prevname]"',

View File

@ -591,6 +591,7 @@ URL: [url]',
'minutes' => 'minuty',
'misc' => 'Různé',
'missing_checksum' => 'Chybějící kontrolní součet',
'missing_file' => '',
'missing_filesize' => 'Chybějící velikost souboru',
'missing_transition_user_group' => 'Chybějící uživatel/skupina pro změnu',
'monday' => 'Pondělí',
@ -899,6 +900,7 @@ URL: [url]',
'select_one' => 'Vyberte jeden',
'select_users' => 'Kliknutím vyberte uživatele',
'select_workflow' => 'Vyberte postup práce',
'send_test_mail' => '',
'september' => 'Září',
'sequence' => 'Posloupnost',
'seq_after' => 'Po "[prevname]"',

View File

@ -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 (2170), dgrutsch (21)
// Translators: Admin (2172), dgrutsch (21)
$text = array(
'accept' => 'Übernehmen',
@ -596,6 +596,7 @@ URL: [url]',
'minutes' => 'Minuten',
'misc' => 'Sonstiges',
'missing_checksum' => 'Fehlende Check-Summe',
'missing_file' => 'Datei fehlt',
'missing_filesize' => 'Fehlende Dateigröße',
'missing_transition_user_group' => 'Fehlende/r Benutzer/Gruppe für Transition',
'monday' => 'Montag',
@ -936,6 +937,7 @@ URL: [url]',
'select_one' => 'Bitte wählen',
'select_users' => 'Klicken zur Auswahl eines Benutzers',
'select_workflow' => 'Workflow auswählen',
'send_test_mail' => 'Sende Test-Email',
'september' => 'September',
'sequence' => 'Reihenfolge',
'seq_after' => 'Nach "[prevname]"',

View File

@ -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 (1305), dgrutsch (7), netixw (14)
// Translators: Admin (1307), dgrutsch (7), netixw (14)
$text = array(
'accept' => 'Accept',
@ -596,6 +596,7 @@ URL: [url]',
'minutes' => 'minutes',
'misc' => 'Misc',
'missing_checksum' => 'Missing checksum',
'missing_file' => 'Missing file',
'missing_filesize' => 'Missing filesize',
'missing_transition_user_group' => 'Missing user/group for transition',
'monday' => 'Monday',
@ -936,6 +937,7 @@ URL: [url]',
'select_one' => 'Select one',
'select_users' => 'Click to select users',
'select_workflow' => 'Select workflow',
'send_test_mail' => 'Send test mail',
'september' => 'September',
'sequence' => 'Sequence',
'seq_after' => 'After "[prevname]"',

View File

@ -591,6 +591,7 @@ URL: [url]',
'minutes' => 'minutos',
'misc' => 'Misc',
'missing_checksum' => 'Falta checksum',
'missing_file' => '',
'missing_filesize' => 'Falta tamaño fichero',
'missing_transition_user_group' => 'Falta usuario/grupo para transición',
'monday' => 'Lunes',
@ -905,6 +906,7 @@ URL: [url]',
'select_one' => 'Seleccionar uno',
'select_users' => 'Haga Click para seleccionar usuarios',
'select_workflow' => 'Selecionar Flujo de Trabajo',
'send_test_mail' => '',
'september' => 'Septiembre',
'sequence' => 'Secuencia',
'seq_after' => 'Después "[prevname]"',

View File

@ -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 (1009), jeromerobert (50), lonnnew (9)
// Translators: Admin (1011), jeromerobert (50), lonnnew (9)
$text = array(
'accept' => 'Accepter',
@ -591,6 +591,7 @@ URL: [url]',
'minutes' => 'minutes',
'misc' => 'Divers',
'missing_checksum' => 'Checksum manquante',
'missing_file' => '',
'missing_filesize' => 'Taille de fichier manquante',
'missing_transition_user_group' => 'Utilisateur/groupe manquant pour transition',
'monday' => 'Lundi',
@ -881,6 +882,7 @@ URL: [url]',
'select_one' => 'Selectionner',
'select_users' => 'Cliquer pour choisir un utilisateur',
'select_workflow' => 'Choisir un workflow',
'send_test_mail' => '',
'september' => 'Septembre',
'sequence' => 'Position dans le répertoire',
'seq_after' => 'Après "[prevname]"',
@ -936,7 +938,7 @@ URL: [url]',
'settings_dbVersion' => 'Schéma de base de données trop ancien',
'settings_defaultSearchMethod' => '',
'settings_defaultSearchMethod_desc' => '',
'settings_defaultSearchMethod_valdatabase' => '',
'settings_defaultSearchMethod_valdatabase' => 'base de données',
'settings_defaultSearchMethod_valfulltext' => '',
'settings_delete_install_folder' => 'Pour utiliser SeedDMS, vous devez supprimer le fichier ENABLE_INSTALL_TOOL dans le répertoire de configuration',
'settings_disableSelfEdit' => 'Désactiver auto modification',
@ -970,7 +972,7 @@ URL: [url]',
'settings_enableGuestAutoLogin_desc' => '',
'settings_enableGuestLogin' => 'Activer la connexion Invité',
'settings_enableGuestLogin_desc' => 'Si vous voulez vous connecter en tant qu\'invité, cochez cette option. Remarque: l\'utilisateur invité ne doit être utilisé que dans un environnement de confiance',
'settings_enableHelp' => '',
'settings_enableHelp' => 'Activer l\'aide',
'settings_enableHelp_desc' => '',
'settings_enableLanguageSelector' => 'Activer la sélection de langue',
'settings_enableLanguageSelector_desc' => 'Montrer le sélecteur de langue d\'interface après connexion de l\'utilisateur.',

View File

@ -596,6 +596,7 @@ Internet poveznica: [url]',
'minutes' => 'minute',
'misc' => 'Razno',
'missing_checksum' => 'Nedostaje kontrolna suma',
'missing_file' => '',
'missing_filesize' => 'Nedostaje veličina datoteke',
'missing_transition_user_group' => 'Nedostaje korisnik/grupa za promjenu',
'monday' => 'Ponedjeljak',
@ -926,6 +927,7 @@ Internet poveznica: [url]',
'select_one' => 'Odaberite jednog',
'select_users' => 'Kliknite za odabir korisnika',
'select_workflow' => 'Odaberite tok rada',
'send_test_mail' => '',
'september' => 'Rujan',
'sequence' => 'Redoslijed',
'seq_after' => 'Nakon "[prevname]"',

View File

@ -591,6 +591,7 @@ URL: [url]',
'minutes' => 'perc',
'misc' => 'Vegyes',
'missing_checksum' => 'Hiányzó ellenőrzőösszeg',
'missing_file' => '',
'missing_filesize' => 'Hiányzó állomány méret',
'missing_transition_user_group' => 'Hiányzó felhasználó/csoport az átvezetéshez',
'monday' => 'Hétfő',
@ -904,6 +905,7 @@ URL: [url]',
'select_one' => 'Vßlasszon egyet',
'select_users' => 'Kattintson a felhasználó kiválasztásához',
'select_workflow' => 'Munkafolyamat választás',
'send_test_mail' => '',
'september' => 'September',
'sequence' => 'Sorrend',
'seq_after' => '"[prevname]" utßn',

View File

@ -597,6 +597,7 @@ URL: [url]',
'minutes' => 'minuti',
'misc' => 'Varie',
'missing_checksum' => 'Checksum mancante',
'missing_file' => '',
'missing_filesize' => 'Dimensione mancante',
'missing_transition_user_group' => 'Utente/Gruppo per la transizione mancanti',
'monday' => 'Lunedì',
@ -928,6 +929,7 @@ URL: [url]',
'select_one' => 'Seleziona uno',
'select_users' => 'Clicca per selezionare gli utenti',
'select_workflow' => 'Seleziona il flusso di lavoro',
'send_test_mail' => '',
'september' => 'Settembre',
'sequence' => 'Posizione',
'seq_after' => 'Dopo "[prevname]"',

View File

@ -596,6 +596,7 @@ URL: [url]',
'minutes' => '분',
'misc' => '기타',
'missing_checksum' => '검사 누락',
'missing_file' => '',
'missing_filesize' => '누락 된 파일 크기',
'missing_transition_user_group' => '변화에 대한 사용자 / 그룹을 누락',
'monday' => '월요일',
@ -919,6 +920,7 @@ URL : [url]',
'select_one' => '선택',
'select_users' => '사용자를 선택합니다',
'select_workflow' => '선택 워크플로우',
'send_test_mail' => '',
'september' => '9월',
'sequence' => '순서',
'seq_after' => '"[prevname] "후',

View File

@ -589,6 +589,7 @@ URL: [url]',
'minutes' => 'Minuten',
'misc' => 'Diversen',
'missing_checksum' => 'Mis controlesom',
'missing_file' => '',
'missing_filesize' => 'ontbrekende bestandsgrootte',
'missing_transition_user_group' => 'Gebruiker / groep ontbreekt voor de overdracht',
'monday' => 'Maandag',
@ -901,6 +902,7 @@ URL: [url]',
'select_one' => 'Selecteer een',
'select_users' => 'Klik om gebruikers te selecteren',
'select_workflow' => 'Selecteer workflow',
'send_test_mail' => '',
'september' => 'september',
'sequence' => 'Volgorde',
'seq_after' => 'Na "[prevname]"',

View File

@ -584,6 +584,7 @@ URL: [url]',
'minutes' => 'minut',
'misc' => 'Różne',
'missing_checksum' => 'Brak sumy kontrolnej',
'missing_file' => '',
'missing_filesize' => 'Brakujący rozmiar pliku',
'missing_transition_user_group' => 'Brak użytkownika / grupy dla przejścia',
'monday' => 'Poniedziałek',
@ -884,6 +885,7 @@ URL: [url]',
'select_one' => 'Wybierz',
'select_users' => 'Kliknij by wybrać użytkowników',
'select_workflow' => 'Wybierz proces',
'send_test_mail' => '',
'september' => 'Wrzesień',
'sequence' => 'Kolejność',
'seq_after' => 'Za "[prevname]"',

View File

@ -590,6 +590,7 @@ URL: [url]',
'minutes' => 'minutos',
'misc' => 'Miscelânia',
'missing_checksum' => 'Falta de verificação',
'missing_file' => '',
'missing_filesize' => 'Falta tamanho do arquivo',
'missing_transition_user_group' => 'Falta usuário/grupo para transição',
'monday' => 'Monday',
@ -902,6 +903,7 @@ URL: [url]',
'select_one' => 'Selecione um',
'select_users' => 'Clique para selecionar os usuários',
'select_workflow' => 'Selecione o fluxo de trabalho',
'send_test_mail' => '',
'september' => 'September',
'sequence' => 'Sequência',
'seq_after' => 'Depois "[prevname]"',

View File

@ -596,6 +596,7 @@ URL: [url]',
'minutes' => 'minute',
'misc' => 'Diverse',
'missing_checksum' => 'Lipsește suma de control(checksum)',
'missing_file' => '',
'missing_filesize' => 'Lipsește dimensiunea fișierului',
'missing_transition_user_group' => 'Lipsește utilizatorul/grupul pentru tranziție',
'monday' => 'Luni',
@ -927,6 +928,7 @@ URL: [url]',
'select_one' => 'Selectați unul',
'select_users' => 'Click pentru a selecta utilizatori',
'select_workflow' => 'Selectați workflow',
'send_test_mail' => '',
'september' => 'Septembrie',
'sequence' => 'Poziție',
'seq_after' => 'După "[prevname]"',

View File

@ -584,6 +584,7 @@ URL: [url]',
'minutes' => 'минуты',
'misc' => 'Прочее',
'missing_checksum' => 'Отсутствует контрольная сумма',
'missing_file' => '',
'missing_filesize' => 'Отсутствует размер файла',
'missing_transition_user_group' => 'Отсутствует пользователь/группа для изменения.',
'monday' => 'Понедельник',
@ -895,6 +896,7 @@ URL: [url]',
'select_one' => 'Выберите',
'select_users' => 'Выберите пользователей',
'select_workflow' => 'Выберите процесс',
'send_test_mail' => '',
'september' => 'Сентябрь',
'sequence' => 'Позиция',
'seq_after' => 'После «[prevname]»',

View File

@ -519,6 +519,7 @@ URL: [url]',
'minutes' => '',
'misc' => 'Rôzne',
'missing_checksum' => '',
'missing_file' => '',
'missing_filesize' => '',
'missing_transition_user_group' => '',
'monday' => 'Pondelok',
@ -759,6 +760,7 @@ URL: [url]',
'select_one' => 'Vyberte jeden',
'select_users' => '',
'select_workflow' => '',
'send_test_mail' => '',
'september' => 'September',
'sequence' => 'Postupnosť',
'seq_after' => 'Po "[prevname]"',

View File

@ -584,6 +584,7 @@ URL: [url]',
'minutes' => 'minuter',
'misc' => 'Diverse',
'missing_checksum' => 'Checksumma saknas',
'missing_file' => '',
'missing_filesize' => 'Filstorlek saknas',
'missing_transition_user_group' => 'Användare/grupp saknas för övergång',
'monday' => 'måndag',
@ -890,6 +891,7 @@ URL: [url]',
'select_one' => 'Välj',
'select_users' => 'Välj användare',
'select_workflow' => 'Välj arbetsflöde',
'send_test_mail' => '',
'september' => 'september',
'sequence' => 'Position',
'seq_after' => 'efter "[prevname]"',

View File

@ -590,6 +590,7 @@ URL: [url]',
'minutes' => 'dakika',
'misc' => 'Diğer',
'missing_checksum' => 'Sağlama toplamı eksik',
'missing_file' => '',
'missing_filesize' => 'Dosya boyutu eksik',
'missing_transition_user_group' => 'Geçiş için kullanıcı/grup bilgisi eksik',
'monday' => 'Pazartesi',
@ -906,6 +907,7 @@ URL: [url]',
'select_one' => 'Birini seçiniz',
'select_users' => 'Kullanıcı seçmek için tıklayın',
'select_workflow' => 'İş akışı seç',
'send_test_mail' => '',
'september' => 'Eylül',
'sequence' => 'Sıralama',
'seq_after' => 'Şundan sonra: "[prevname]"',

View File

@ -596,6 +596,7 @@ URL: [url]',
'minutes' => 'хвилини',
'misc' => 'Інше',
'missing_checksum' => 'Відсутня контрольна сума',
'missing_file' => '',
'missing_filesize' => 'Відсутній розмір файлу',
'missing_transition_user_group' => 'Відсутній користувач/група для зміни.',
'monday' => 'Понеділок',
@ -917,6 +918,7 @@ URL: [url]',
'select_one' => 'Виберіть',
'select_users' => 'Виберіть користувачів',
'select_workflow' => 'Виберіть процес',
'send_test_mail' => '',
'september' => 'Вересень',
'sequence' => 'Позиція',
'seq_after' => 'Після «[prevname]»',

View File

@ -521,6 +521,7 @@ URL: [url]',
'minutes' => '',
'misc' => '其他',
'missing_checksum' => '缺失校验',
'missing_file' => '',
'missing_filesize' => '缺失文件大小',
'missing_transition_user_group' => '',
'monday' => 'Monday',
@ -761,6 +762,7 @@ URL: [url]',
'select_one' => '选择一个',
'select_users' => '点击选择用户',
'select_workflow' => '',
'send_test_mail' => '',
'september' => '九 月',
'sequence' => '次序',
'seq_after' => '在"[prevname]"之后',

View File

@ -519,6 +519,7 @@ URL: [url]',
'minutes' => '',
'misc' => '其他',
'missing_checksum' => '',
'missing_file' => '',
'missing_filesize' => '',
'missing_transition_user_group' => '',
'monday' => 'Monday',
@ -759,6 +760,7 @@ URL: [url]',
'select_one' => '選擇一個',
'select_users' => '點擊選擇用戶',
'select_workflow' => '',
'send_test_mail' => '',
'september' => '九 月',
'sequence' => '次序',
'seq_after' => '在"[prevname]"之後',

View File

@ -210,7 +210,7 @@ switch($command) {
case 'testmail': /* {{{ */
if($user && $user->isAdmin()) {
if($user->getEmail()) {
$emailobj = new SeedDMS_Email($settings->_smtpSendFrom, $settings->_smtpServer, $settings->_smtpPort, $settings->_smtpUser, $settings->_smtpPassword);
$emailobj = new SeedDMS_EmailNotify($settings->_smtpSendFrom, $settings->_smtpServer, $settings->_smtpPort, $settings->_smtpUser, $settings->_smtpPassword);
$params = array();
if($emailobj->toIndividual($settings->_smtpSendFrom, $user, "testmail_subject", "testmail_body", $params)) {

View File

@ -112,10 +112,14 @@ if (isset($_GET["version"])) {
UI::exitError(getMLText("admin_tools"),getMLText("access_denied"));
}
if (!isset($filename) || !file_exists($settings->_contentDir.$filename) ) {
if (!isset($filename)) {
UI::exitError(getMLText("admin_tools"),getMLText("unknown_id"));
}
if (!file_exists($settings->_contentDir.$filename) ) {
UI::exitError(getMLText("admin_tools"),getMLText("missing_file"));
}
header('Content-Description: File Transfer');
//header("Content-Type: application/force-download; name=\"" . $filename . "\"");
//header("Content-Type: application/octet-stream");
@ -143,10 +147,14 @@ if (isset($_GET["version"])) {
UI::exitError(getMLText("admin_tools"),getMLText("access_denied"));
}
if (!isset($filename) || !file_exists($settings->_contentDir.$filename) ) {
if (!isset($filename)) {
UI::exitError(getMLText("admin_tools"),getMLText("unknown_id"));
}
if (!file_exists($settings->_contentDir.$filename) ) {
UI::exitError(getMLText("admin_tools"),getMLText("missing_file"));
}
header("Content-Type: text/plain; name=\"" . $filename . "\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($settings->_contentDir . $filename ));
@ -196,10 +204,14 @@ if (isset($_GET["version"])) {
UI::exitError(getMLText("admin_tools"),getMLText("access_denied"));
}
if (!isset($filename) || !file_exists($settings->_contentDir.$filename) ) {
if (!isset($filename)) {
UI::exitError(getMLText("admin_tools"),getMLText("unknown_id"));
}
if (!file_exists($settings->_contentDir.$filename) ) {
UI::exitError(getMLText("admin_tools"),getMLText("missing_file"));
}
header("Content-Type: application/zip; name=\"" . $filename . "\"");
//header("Content-Type: application/force-download; name=\"" . $filename . "\"");
header("Content-Transfer-Encoding: binary");
@ -234,17 +246,20 @@ if (isset($_GET["version"])) {
}
$filename = $dms->contentDir . $document->getDir().'r'.(int) $_GET['reviewlogid'];
if(file_exists($filename)) {
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mimetype = finfo_file($finfo, $filename);
header("Content-Type: ".$mimetype."; name=\"review-" . $document->getID()."-".(int) $_GET['reviewlogid'] . get_extension($mimetype) . "\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($filename ));
header("Content-Disposition: attachment; filename=\"review-" . $document->getID()."-".(int) $_GET['reviewlogid'] . get_extension($mimetype) . "\"");
header("Cache-Control: must-revalidate");
readfile($filename);
if (!file_exists($filename) ) {
UI::exitError(getMLText("admin_tools"),getMLText("missing_file"));
}
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mimetype = finfo_file($finfo, $filename);
header("Content-Type: ".$mimetype."; name=\"review-" . $document->getID()."-".(int) $_GET['reviewlogid'] . get_extension($mimetype) . "\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($filename ));
header("Content-Disposition: attachment; filename=\"review-" . $document->getID()."-".(int) $_GET['reviewlogid'] . get_extension($mimetype) . "\"");
header("Cache-Control: must-revalidate");
readfile($filename);
} elseif (isset($_GET["approvelogid"])) {
if (!isset($_GET["documentid"]) || !is_numeric($_GET["documentid"]) || intval($_GET["documentid"])<1) {
UI::exitError(getMLText("document_title", array("documentname" => getMLText("invalid_doc_id"))),getMLText("invalid_doc_id"));
@ -265,17 +280,19 @@ if (isset($_GET["version"])) {
}
$filename = $dms->contentDir . $document->getDir().'a'.(int) $_GET['approvelogid'];
if(file_exists($filename)) {
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mimetype = finfo_file($finfo, $filename);
header("Content-Type: ".$mimetype."; name=\"approval-" . $document->getID()."-".(int) $_GET['approvelogid'] . get_extension($mimetype) . "\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($filename ));
header("Content-Disposition: attachment; filename=\"approval-" . $document->getID()."-".(int) $_GET['approvelogid'] . get_extension($mimetype) . "\"");
header("Cache-Control: must-revalidate");
readfile($filename);
if (!file_exists($filename) ) {
UI::exitError(getMLText("admin_tools"),getMLText("missing_file"));
}
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mimetype = finfo_file($finfo, $filename);
header("Content-Type: ".$mimetype."; name=\"approval-" . $document->getID()."-".(int) $_GET['approvelogid'] . get_extension($mimetype) . "\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($filename ));
header("Content-Disposition: attachment; filename=\"approval-" . $document->getID()."-".(int) $_GET['approvelogid'] . get_extension($mimetype) . "\"");
header("Cache-Control: must-revalidate");
readfile($filename);
}
add_log_line();

View File

@ -36,7 +36,7 @@ if ($user->isGuest()) {
}
$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME']));
$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'cachedir'=>$settings->_cacheDir, 'previewWidthList'=>$settings->_previewWidthList));
$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'cachedir'=>$settings->_cacheDir, 'previewWidthList'=>$settings->_previewWidthList, 'timeout'=>$settings->_cmdTimeout));
if($view) {
$view->show();
exit;

View File

@ -52,6 +52,7 @@ if($view) {
$view->setParam('enableRecursiveCount', $settings->_enableRecursiveCount);
$view->setParam('maxRecursiveCount', $settings->_maxRecursiveCount);
$view->setParam('previewWidthList', $settings->_previewWidthList);
$view->setParam('timeout', $settings->_cmdTimeout);
$view($_GET);
}

View File

@ -70,7 +70,7 @@ $folder = $document->getFolder();
$accessop = new SeedDMS_AccessOperation($dms, $document, $user, $settings);
$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME']));
$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'folder'=>$folder, 'document'=>$document, 'version'=>$version, 'viewonlinefiletypes'=>$settings->_viewOnlineFileTypes, 'enableversionmodification'=>$settings->_enableVersionModification, 'previewwidthdetail'=>$settings->_previewWidthDetail, 'previewconverters'=>$settings->_converters['preview'], 'cachedir'=>$settings->_cacheDir));
$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'folder'=>$folder, 'document'=>$document, 'version'=>$version, 'viewonlinefiletypes'=>$settings->_viewOnlineFileTypes, 'enableversionmodification'=>$settings->_enableVersionModification, 'previewwidthdetail'=>$settings->_previewWidthDetail, 'previewconverters'=>$settings->_converters['preview'], 'cachedir'=>$settings->_cacheDir, 'timeout'=>$settings->_cmdTimeout));
if($view) {
$view->setParam('accessobject', $accessop);
$view->show();

View File

@ -43,6 +43,7 @@ $view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'dropfold
if($view) {
$view->setParam('cachedir', $settings->_cacheDir);
$view->setParam('previewWidthList', $settings->_previewWidthList);
$view->setParam('timeout', $settings->_cmdTimeout);
$view($_GET);
exit;
}

View File

@ -53,7 +53,7 @@ if(isset($_GET['groupid']) && $_GET['groupid']) {
}
$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME']));
$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'selgroup'=>$selgroup, 'allgroups'=>$allGroups, 'allusers'=>$allUsers, 'strictformcheck'=>$settings->_strictFormCheck, 'cachedir'=>$settings->_cacheDir, 'previewWidthList'=>$settings->_previewWidthList, 'workflowmode'=>$settings->_workflowMode));
$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'selgroup'=>$selgroup, 'allgroups'=>$allGroups, 'allusers'=>$allUsers, 'strictformcheck'=>$settings->_strictFormCheck, 'cachedir'=>$settings->_cacheDir, 'previewWidthList'=>$settings->_previewWidthList, 'workflowmode'=>$settings->_workflowMode, 'timeout'=>$settings->_cmdTimeout));
if($view) {
$view($_GET);
}

View File

@ -34,7 +34,7 @@ if ($user->isGuest()) {
}
$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME']));
$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'cachedir'=>$settings->_cacheDir, 'previewWidthList'=>$settings->_previewWidthList, 'previewconverters'=>$settings->_converters['preview']));
$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'cachedir'=>$settings->_cacheDir, 'previewWidthList'=>$settings->_previewWidthList, 'previewconverters'=>$settings->_converters['preview'], 'timeout'=>$settings->_cmdTimeout));
if($view) {
$view($_GET);
exit;

View File

@ -48,7 +48,7 @@ if (isset($_GET["orderby"]) && strlen($_GET["orderby"])==1 ) {
}
$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME']));
$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'orderby'=>$orderby, 'showinprocess'=>$showInProcess, 'workflowmode'=>$settings->_workflowMode, 'cachedir'=>$settings->_cacheDir, 'previewWidthList'=>$settings->_previewWidthList, 'previewconverters'=>$settings->_converters['preview']));
$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'orderby'=>$orderby, 'showinprocess'=>$showInProcess, 'workflowmode'=>$settings->_workflowMode, 'cachedir'=>$settings->_cacheDir, 'previewWidthList'=>$settings->_previewWidthList, 'previewconverters'=>$settings->_converters['preview'], 'timeout'=>$settings->_cmdTimeout));
if($view) {
$view->show();
exit;

View File

@ -37,7 +37,7 @@ if ($user->isGuest()) {
}
$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME']));
$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'cachedir'=>$settings->_cacheDir, 'previewWidthList'=>$settings->_previewWidthList));
$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'cachedir'=>$settings->_cacheDir, 'previewWidthList'=>$settings->_previewWidthList, 'timeout'=>$settings->_cmdTimeout));
if($view) {
$view->show();
exit;

View File

@ -470,6 +470,7 @@ if(count($entries) == 1) {
$view->setParam('enablefullsearch', $settings->_enableFullSearch);
$view->setParam('previewWidthList', $settings->_previewWidthList);
$view->setParam('previewconverters', $settings->_converters['preview']);
$view->setParam('timeout', $settings->_cmdTimeout);
$view($_GET);
exit;
}

View File

@ -64,6 +64,7 @@ if($view) {
$view->setParam('cachedir', $settings->_cacheDir);
$view->setParam('previewWidthList', $settings->_previewWidthList);
$view->setParam('previewWidthDetail', $settings->_previewWidthDetail);
$view->setParam('timeout', $settings->_cmdTimeout);
$view($_GET);
exit;
}

View File

@ -87,6 +87,7 @@ if($view) {
$view->setParam('previewConverters', $settings->_converters['preview']);
$view->setParam('checkOutDir', $settings->_checkOutDir);
$view->setParam('currenttab', isset($_REQUEST['currenttab']) ? $_REQUEST['currenttab'] : '');
$view->setParam('timeout', $settings->_cmdTimeout);
$view($_GET);
exit;
}

View File

@ -69,6 +69,7 @@ if($view) {
$view->setParam('maxRecursiveCount', $settings->_maxRecursiveCount);
$view->setParam('previewWidthList', $settings->_previewWidthList);
$view->setParam('previewconverters', $settings->_converters['preview']);
$view->setParam('timeout', $settings->_cmdTimeout);
$view($_GET);
exit;
}

View File

@ -37,7 +37,7 @@ if ($user->isGuest()) {
}
$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME']));
$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'cachedir'=>$settings->_cacheDir, 'workflowmode'=>$settings->_workflowMode, 'previewWidthList'=>$settings->_previewWidthList, 'previewconverters'=>$settings->_converters['preview']));
$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'cachedir'=>$settings->_cacheDir, 'workflowmode'=>$settings->_workflowMode, 'previewWidthList'=>$settings->_previewWidthList, 'previewconverters'=>$settings->_converters['preview'], 'timeout'=>$settings->_cmdTimeout));
if($view) {
$view->show();
exit;

View File

@ -838,6 +838,424 @@ function doSearchByAttr() { /* {{{ */
echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs));
} /* }}} */
function checkIfAdmin()
{
global $app, $dms, $userobj;
if(!$userobj) {
$app->response()->header('Content-Type', 'application/json');
echo json_encode(array('success'=>false, 'message'=>'Not logged in', 'data'=>''));
return;
}
if(!$userobj->isAdmin()) {
$app->response()->header('Content-Type', 'application/json');
echo json_encode(array('success'=>false, 'message'=>'You must be logged in with an administrator account to access this resource', 'data'=>''));
return;
}
return true;
}
function createAccount() { /* {{{ */
global $app, $dms, $userobj;
checkIfAdmin();
$userName = $app->request()->post('user');
$password = $app->request()->post('pass');
$fullname = $app->request()->post('name');
$email = $app->request()->post('email');
$language = $app->request()->post('language');
$theme = $app->request()->post('theme');
$comment = $app->request()->post('comment');
$newAccount = $dms->addUser($userName, $password, $fullname, $email, $language, $theme, $comment);
if ($newAccount === false)
{
$app->response()->header('Content-Type', 'application/json');
echo json_encode(array('success'=>false, 'message'=>'Account could not be created, maybe it already exists', 'data'=>''));
return;
}
$result = array(
'id'=>$newAccount->getID()
);
$app->response()->header('Content-Type', 'application/json');
echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$result));
return;
} /* }}} */
function getAccountById($id) { /* {{{ */
global $app, $dms, $userobj;
checkIfAdmin();
if(is_numeric($id))
$account = $dms->getUser($id);
else {
$account = $dms->getUserByLogin($id);
}
if($account) {
$data = array();
$data['id'] = $account->getId();
$data['login'] = $account->getLogin();
$data['fullname'] = $account->getFullName();
$data['email'] = $account->getEmail();
$data['language'] = $account->getLanguage();
$data['theme'] = $account->getTheme();
$data['role'] = $account->getRole();
$data['comment'] = $account->getComment();
$outputDisabled = ($account->isDisabled() === true || $account->isDisabled() === '1');
$data['isdisabled'] = $outputDisabled;
$data['isguest'] = $account->isGuest();
$data['isadmin'] = $account->isAdmin();
$app->response()->header('Content-Type', 'application/json');
echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$data));
} else {
$app->response()->status(404);
}
} /* }}} */
function setDisabledAccount($id) { /* {{{ */
global $app, $dms, $userobj;
checkIfAdmin();
if ($app->request()->put('disable') == null)
{
$app->response()->header('Content-Type', 'application/json');
echo json_encode(array('success'=>false, 'message'=>'You must PUT a disabled state', 'data'=>''));
return;
}
$isDisabled = false;
$status = $app->request()->put('disable');
if ($status == 'true' || $status == '1')
{
$isDisabled = true;
}
if(is_numeric($id))
$account = $dms->getUser($id);
else {
$account = $dms->getUserByLogin($id);
}
if($account) {
$account->setDisabled($isDisabled);
$data = array();
$data['id'] = $account->getId();
$data['login'] = $account->getLogin();
$data['fullname'] = $account->getFullName();
$data['email'] = $account->getEmail();
$outputDisabled = ($account->isDisabled() === true || $account->isDisabled() === '1');
$data['isdisabled'] = $outputDisabled;
$app->response()->header('Content-Type', 'application/json');
echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$data));
} else {
$app->response()->status(404);
}
} /* }}} */
function createGroup() { /* {{{ */
global $app, $dms, $userobj;
checkIfAdmin();
$groupName = $app->request()->post('name');
$comment = $app->request()->post('comment');
$newGroup = $dms->addGroup($groupName, $comment);
if ($newGroup === false)
{
$app->response()->header('Content-Type', 'application/json');
echo json_encode(array('success'=>false, 'message'=>'Group could not be created, maybe it already exists', 'data'=>''));
return;
}
$result = array(
'id'=>$newGroup->getID()
);
$app->response()->header('Content-Type', 'application/json');
echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$result));
return;
} /* }}} */
function getGroup($id) { /* {{{ */
global $app, $dms, $userobj;
checkIfAdmin();
if(is_numeric($id))
$group = $dms->getGroup($id);
else {
$group = $dms->getGroupByName($id);
}
if($group) {
$data = array();
$data['id'] = $group->getId();
$data['name'] = $group->getName();
$data['comment'] = $group->getComment();
$data['users'] = array();
foreach ($group->getUsers() as $user) {
$data['users'][] = array('id' => $user->getID(), 'login' => $user->getLogin());
}
$app->response()->header('Content-Type', 'application/json');
echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$data));
} else {
$app->response()->status(404);
}
} /* }}} */
function changeGroupMembership($id, $operationType) { /* {{{ */
global $app, $dms, $userobj;
checkIfAdmin();
if(is_numeric($id))
$group = $dms->getGroup($id);
else {
$group = $dms->getGroupByName($id);
}
if ($app->request()->put('userid') == null)
{
$app->response()->header('Content-Type', 'application/json');
echo json_encode(array('success'=>false, 'message'=>'Please PUT the userid', 'data'=>''));
return;
}
$userId = $app->request()->put('userid');
if(is_numeric($userId))
$user = $dms->getUser($userId);
else {
$user = $dms->getUserByLogin($userId);
}
if (!($group && $user)) {
$app->response()->status(404);
}
$operationResult = false;
if ($operationType == 'add')
{
$operationResult = $group->addUser($user);
}
if ($operationType == 'remove')
{
$operationResult = $group->removeUser($user);
}
if ($operationResult === false)
{
$app->response()->header('Content-Type', 'application/json');
$message = 'Could not add user to the group.';
if ($operationType == 'remove')
{
$message = 'Could not remove user from group.';
}
echo json_encode(array('success'=>false, 'message'=>'Something went wrong. ' . $message, 'data'=>''));
return;
}
$data = array();
$data['id'] = $group->getId();
$data['name'] = $group->getName();
$data['comment'] = $group->getComment();
$data['users'] = array();
foreach ($group->getUsers() as $userObj) {
$data['users'][] = array('id' => $userObj->getID(), 'login' => $userObj->getLogin());
}
$app->response()->header('Content-Type', 'application/json');
echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$data));
} /* }}} */
function addUserToGroup($id) { /* {{{ */
changeGroupMembership($id, 'add');
}
function removeUserFromGroup($id) { /* {{{ */
changeGroupMembership($id, 'remove');
} /* }}} */
function setFolderInheritsAccess($id) { /* {{{ */
global $app, $dms, $userobj;
checkIfAdmin();
if ($app->request()->put('enable') == null)
{
$app->response()->header('Content-Type', 'application/json');
echo json_encode(array('success'=>false, 'message'=>'You must PUT an "enable" value', 'data'=>''));
return;
}
$inherit = false;
$status = $app->request()->put('enable');
if ($status == 'true' || $status == '1')
{
$inherit = true;
}
if(is_numeric($id))
$folder = $dms->getFolder($id);
else {
$folder = $dms->getFolderByName($id);
}
if($folder) {
$folder->setInheritAccess($inherit);
$folderId = $folder->getId();
$folder = null;
// reread from db
$folder = $dms->getFolder($folderId);
$success = ($folder->inheritsAccess() == $inherit);
$app->response()->header('Content-Type', 'application/json');
echo json_encode(array('success'=>$success, 'message'=>'', 'data'=>$data));
} else {
$app->response()->status(404);
}
} /* }}} */
function addUserAccessToFolder($id) { /* {{{ */
changeFolderAccess($id, 'add', 'user');
} /* }}} */
function addGroupAccessToFolder($id) { /* {{{ */
changeFolderAccess($id, 'add', 'group');
} /* }}} */
function removeUserAccessFromFolder($id) { /* {{{ */
changeFolderAccess($id, 'remove', 'user');
} /* }}} */
function removeGroupAccessFromFolder($id) { /* {{{ */
changeFolderAccess($id, 'remove', 'group');
} /* }}} */
function changeFolderAccess($id, $operationType, $userOrGroup) { /* {{{ */
global $app, $dms, $userobj;
checkIfAdmin();
if(is_numeric($id))
$folder = $dms->getfolder($id);
else {
$folder = $dms->getfolderByName($id);
}
if (!$folder) {
$app->response()->status(404);
return;
}
$userOrGroupIdInput = $app->request()->put('id');
if ($operationType == 'add')
{
if ($app->request()->put('id') == null)
{
$app->response()->header('Content-Type', 'application/json');
echo json_encode(array('success'=>false, 'message'=>'Please PUT the user or group Id', 'data'=>''));
return;
}
if ($app->request()->put('mode') == null)
{
$app->response()->header('Content-Type', 'application/json');
echo json_encode(array('success'=>false, 'message'=>'Please PUT the access mode', 'data'=>''));
return;
}
$modeInput = $app->request()->put('mode');
$mode = M_NONE;
if ($modeInput == 'read')
{
$mode = M_READ;
}
if ($modeInput == 'readwrite')
{
$mode = M_READWRITE;
}
if ($modeInput == 'all')
{
$mode = M_ALL;
}
}
$userOrGroupId = $userOrGroupIdInput;
if(!is_numeric($userOrGroupIdInput) && $userOrGroup == 'user')
{
$userOrGroupObj = $dms->getUserByLogin($userOrGroupIdInput);
}
if(!is_numeric($userOrGroupIdInput) && $userOrGroup == 'group')
{
$userOrGroupObj = $dms->getGroupByName($userOrGroupIdInput);
}
if(is_numeric($userOrGroupIdInput) && $userOrGroup == 'user')
{
$userOrGroupObj = $dms->getUser($userOrGroupIdInput);
}
if(is_numeric($userOrGroupIdInput) && $userOrGroup == 'group')
{
$userOrGroupObj = $dms->getGroup($userOrGroupIdInput);
}
if (!$userOrGroupObj) {
$app->response()->status(404);
return;
}
$userOrGroupId = $userOrGroupObj->getId();
$operationResult = false;
if ($operationType == 'add' && $userOrGroup == 'user')
{
$operationResult = $folder->addAccess($mode, $userOrGroupId, true);
}
if ($operationType == 'remove' && $userOrGroup == 'user')
{
$operationResult = $folder->removeAccess($userOrGroupId, true);
}
if ($operationType == 'add' && $userOrGroup == 'group')
{
$operationResult = $folder->addAccess($mode, $userOrGroupId, false);
}
if ($operationType == 'remove' && $userOrGroup == 'group')
{
$operationResult = $folder->removeAccess($userOrGroupId, false);
}
if ($operationResult === false)
{
$app->response()->header('Content-Type', 'application/json');
$message = 'Could not add user/group access to this folder.';
if ($operationType == 'remove')
{
$message = 'Could not remove user/group access from this folder.';
}
echo json_encode(array('success'=>false, 'message'=>'Something went wrong. ' . $message, 'data'=>''));
return;
}
$data = array();
$app->response()->header('Content-Type', 'application/json');
echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$data));
} /* }}} */
function clearFolderAccessList($id) { /* {{{ */
global $app, $dms, $userobj;
checkIfAdmin();
if(is_numeric($id))
$folder = $dms->getFolder($id);
else {
$folder = $dms->getFolderByName($id);
}
if (!$folder)
{
$app->response()->status(404);
return;
}
$operationResult = $folder->clearAccessList();
$data = array();
$app->response()->header('Content-Type', 'application/json');
if (!$operationResult)
{
echo json_encode(array('success'=>false, 'message'=>'Something went wrong. Could not clear access list for this folder.', 'data'=>$data));
}
echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$data));
} /* }}} */
//$app = new Slim(array('mode'=>'development', '_session.handler'=>null));
$app = new \Slim\Slim(array('mode'=>'development', '_session.handler'=>null));
@ -885,6 +1303,19 @@ $app->get('/document/:id/links', 'getDocumentLinks');
$app->put('/account/fullname', 'setFullName');
$app->put('/account/email', 'setEmail');
$app->get('/account/locked', 'getLockedDocuments');
$app->post('/accounts', 'createAccount');
$app->get('/accounts/:id', 'getAccountById');
$app->put('/accounts/:id/disable', 'setDisabledAccount');
$app->post('/groups', 'createGroup');
$app->get('/groups/:id', 'getGroup');
$app->put('/groups/:id/addUser', 'addUserToGroup');
$app->put('/groups/:id/removeUser', 'removeUserFromGroup');
$app->put('/folder/:id/setInherit', 'setFolderInheritsAccess');
$app->put('/folder/:id/access/group/add', 'addGroupAccessToFolder'); //
$app->put('/folder/:id/access/user/add', 'addUserAccessToFolder'); //
$app->put('/folder/:id/access/group/remove', 'removeGroupAccessFromFolder');
$app->put('/folder/:id/access/user/remove', 'removeUserAccessFromFolder');
$app->put('/folder/:id/access/clear', 'clearFolderAccessList');
$app->run();
?>

View File

@ -233,25 +233,6 @@ $(document).ready( function() {
'json'
);
});
$('a.sendtestmail').click(function(ev){
ev.preventDefault();
$.ajax({url: '../op/op.Ajax.php',
type: 'GET',
dataType: "json",
data: {command: 'testmail'},
success: function(data) {
console.log(data);
noty({
text: data.msg,
type: (data.error) ? 'error' : 'success',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 1500,
});
}
});
});
$('a.movefolder').click(function(ev){
ev.preventDefault();
@ -693,7 +674,7 @@ $(document).ready(function() {
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: (timeout == 'undefined' ? 1500 : timeout),
timeout: (typeof timeout == 'undefined' ? 1500 : timeout),
});
});
});

View File

@ -36,8 +36,9 @@ class SeedDMS_View_ApprovalSummary extends SeedDMS_Bootstrap_Style {
$user = $this->params['user'];
$cachedir = $this->params['cachedir'];
$previewwidth = $this->params['previewWidthList'];
$timeout = $this->params['timeout'];
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth);
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout);
$this->htmlStartPage(getMLText("approval_summary"));
$this->globalNavigation();

View File

@ -59,10 +59,14 @@ $(document).ready( function() {
$previewwidth = $this->params['previewWidthList'];
$enableRecursiveCount = $this->params['enableRecursiveCount'];
$maxRecursiveCount = $this->params['maxRecursiveCount'];
$timeout = $this->params['timeout'];
if($selattrdef) {
$this->contentHeading(getMLText("attrdef_info"));
$res = $selattrdef->getStatistics(30);
if(!empty($res['frequencies']['document']) ||!empty($res['frequencies']['folder']) ||!empty($res['frequencies']['content'])) {
?>
<div class="accordion" id="accordion1">
<div class="accordion-group">
@ -93,6 +97,7 @@ $(document).ready( function() {
</div>
</div>
<?php
}
if($res['folders'] || $res['docs']) {
print "<table id=\"viewfolder-table\" class=\"table table-condensed\">";
print "<thead>\n<tr>\n";
@ -104,7 +109,7 @@ $(document).ready( function() {
foreach($res['folders'] as $subFolder) {
echo $this->folderListRow($subFolder);
}
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth);
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout);
foreach($res['docs'] as $document) {
echo $this->documentListRow($document, $previewer);
}
@ -120,7 +125,7 @@ $(document).ready( function() {
print "<th>".getMLText("status")."</th>\n";
print "<th>".getMLText("action")."</th>\n";
print "</tr>\n</thead>\n<tbody>\n";
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth);
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout);
foreach($res['contents'] as $content) {
$doc = $content->getDocument();
echo $this->documentListRow($doc, $previewer);
@ -278,7 +283,24 @@ $(document).ready( function() {
$ot = getMLText("version");
break;
}
print "<option value=\"".$attrdef->getID()."\" ".($selattrdef && $attrdef->getID()==$selattrdef->getID() ? 'selected' : '').">" . htmlspecialchars($attrdef->getName() ." (".$ot.")");
switch($attrdef->getType()) {
case SeedDMS_Core_AttributeDefinition::type_int:
$t = getMLText("attrdef_type_int");
break;
case SeedDMS_Core_AttributeDefinition::type_float:
$t = getMLText("attrdef_type_float");
break;
case SeedDMS_Core_AttributeDefinition::type_string:
$t = getMLText("attrdef_type_string");
break;
case SeedDMS_Core_AttributeDefinition::type_date:
$t = getMLText("attrdef_type_date");
break;
case SeedDMS_Core_AttributeDefinition::type_boolean:
$t = getMLText("attrdef_type_boolean");
break;
}
print "<option value=\"".$attrdef->getID()."\" ".($selattrdef && $attrdef->getID()==$selattrdef->getID() ? 'selected' : '').">" . htmlspecialchars($attrdef->getName() ." (".$ot.", ".$t.")");
}
}
?>

View File

@ -40,8 +40,9 @@ class SeedDMS_View_DocumentVersionDetail extends SeedDMS_Bootstrap_Style {
$viewonlinefiletypes = $this->params['viewonlinefiletypes'];
$enableversionmodification = $this->params['enableversionmodification'];
$cachedir = $this->params['cachedir'];
$previewwidthdetail = $this->params['previewwidthdetail'];
$previewwidthdetail = $this->params['previewWidthDetail'];
$previewconverters = $this->params['previewconverters'];
$timeout = $this->params['timeout'];
$latestContent = $document->getLatestContent();
$status = $version->getStatus();
@ -148,7 +149,7 @@ class SeedDMS_View_DocumentVersionDetail extends SeedDMS_Bootstrap_Style {
print "<td><ul class=\"unstyled\">";
print "</ul>";
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidthdetail);
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidthdetail, $timeout);
$previewer->setConverters($previewconverters);
$previewer->createPreview($version);
if($previewer->hasPreview($version)) {

View File

@ -48,8 +48,9 @@ $('#fileselect').click(function(ev) {
$dropfolderdir = $this->params['dropfolderdir'];
$cachedir = $this->params['cachedir'];
$previewwidth = $this->params['previewWidthList'];
$timeout = $this->params['timeout'];
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth);
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout);
// $this->htmlStartPage(getMLText("choose_target_file"));
// $this->globalBanner();

View File

@ -107,9 +107,10 @@ $(document).ready( function() {
$cachedir = $this->params['cachedir'];
$previewwidth = $this->params['previewWidthList'];
$workflowmode = $this->params['workflowmode'];
$timeout = $this->params['timeout'];
if($selgroup) {
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth);
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout);
$this->contentHeading(getMLText("group_info"));
echo "<table class=\"table table-condensed\">\n";
if($workflowmode == "traditional") {

View File

@ -90,7 +90,7 @@ class SeedDMS_View_ManageNotify extends SeedDMS_Bootstrap_Style {
printMLText("empty_notify_list");
}
else {
$previewer = new SeedDMS_Preview_Previewer($this->cachedir, $this->previewwidth);
$previewer = new SeedDMS_Preview_Previewer($this->cachedir, $this->previewwidth, $this->timeout);
$previewer->setConverters($this->previewconverters);
print "<table class=\"table-condensed\">";
@ -149,6 +149,7 @@ class SeedDMS_View_ManageNotify extends SeedDMS_Bootstrap_Style {
$this->previewwidth = $this->params['previewWidthList'];
$this->previewconverters = $this->params['previewconverters'];
$this->db = $this->dms->getDB();
$this->timeout = $this->params['timeout'];
$this->htmlStartPage(getMLText("my_account"));
$this->globalNavigation();

View File

@ -42,7 +42,7 @@ class SeedDMS_View_MyDocuments extends SeedDMS_Bootstrap_Style {
$previewconverters = $this->params['previewconverters'];
$db = $dms->getDB();
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth);
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout);
$previewer->setConverters($previewconverters);
$this->htmlStartPage(getMLText("my_documents"));

View File

@ -36,8 +36,9 @@ class SeedDMS_View_ReviewSummary extends SeedDMS_Bootstrap_Style {
$user = $this->params['user'];
$cachedir = $this->params['cachedir'];
$previewwidth = $this->params['previewWidthList'];
$timeout = $this->params['timeout'];
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth);
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout);
$this->htmlStartPage(getMLText("my_documents"));
$this->globalNavigation();

View File

@ -90,6 +90,7 @@ class SeedDMS_View_Search extends SeedDMS_Bootstrap_Style {
$cachedir = $this->params['cachedir'];
$previewwidth = $this->params['previewWidthList'];
$previewconverters = $this->params['previewconverters'];
$timeout = $this->params['timeout'];
$this->htmlAddHeader('<script type="text/javascript" src="../styles/'.$this->theme.'/bootbox/bootbox.min.js"></script>'."\n", 'js');
@ -488,7 +489,7 @@ $(document).ready( function() {
print "<th>".getMLText("action")."</th>\n";
print "</tr>\n</thead>\n<tbody>\n";
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth);
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout);
$previewer->setConverters($previewconverters);
foreach ($entries as $entry) {
if(get_class($entry) == $dms->getClassname('document')) {

View File

@ -55,6 +55,26 @@ class SeedDMS_View_Settings extends SeedDMS_Bootstrap_Style {
$('#settingstab li a').click(function(event) {
$('#currenttab').val($(event.currentTarget).data('target').substring(1));
});
$('a.sendtestmail').click(function(ev){
ev.preventDefault();
$.ajax({url: '../op/op.Ajax.php',
type: 'GET',
dataType: "json",
data: {command: 'testmail'},
success: function(data) {
console.log(data);
noty({
text: data.msg,
type: (data.error) ? 'error' : 'success',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 1500,
});
}
});
});
});
<?php
} /* }}} */
@ -476,7 +496,7 @@ if(!is_writeable($settings->_configFilePath)) {
<!--
-- SETTINGS - SYSTEM - SMTP
-->
<tr ><td><b> <?php printMLText("settings_SMTP");?></b></td><td><a class="btn sendtestmail">Send test mail</a></td> </tr>
<tr ><td><b> <?php printMLText("settings_SMTP");?></b></td><td><a class="btn sendtestmail"><?php printMLText('send_test_mail'); ?></a></td> </tr>
<tr title="<?php printMLText("settings_smtpServer_desc");?>">
<td><?php printMLText("settings_smtpServer");?>:</td>
<td><?php $this->showTextField("smtpServer", $settings->_smtpServer); ?></td>

View File

@ -38,8 +38,10 @@ class SeedDMS_View_Timeline extends SeedDMS_Bootstrap_Style {
$cachedir = $this->params['cachedir'];
$previewwidthlist = $this->params['previewWidthList'];
$previewwidthdetail = $this->params['previewWidthDetail'];
$timeout = $this->params['timeout'];
if($document) {
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidthdetail);
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidthdetail, $timeout);
$previewer->createPreview($version);
$this->contentHeading(getMLText("timeline_selected_item"));

View File

@ -80,6 +80,7 @@ $(document).ready( function() {
function info() { /* {{{ */
$dms = $this->params['dms'];
$user = $this->params['user'];
$seluser = $this->params['seluser'];
$quota = $this->params['quota'];
$settings = $this->params['settings'];
@ -136,7 +137,8 @@ $(document).ready( function() {
echo "<tr><td>".getMLText('network_drive')."</td><td><a href=\"http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot.'checkout/'.preg_replace('/[^A-Za-z0-9_-]/', '', $seluser->getLogin())."\">".preg_replace('/[^A-Za-z0-9_-]/', '', $seluser->getLogin())."</a></td></tr>\n";
echo "</table>";
echo "<a href=\"../op/op.SubstituteUser.php?userid=".$seluser->getID()."\" class=\"btn btn-primary\">".getMLText("substitute_user")."</a>\n";
if($user->isAdmin() && $seluser->getID() != $user->getID())
echo "<a href=\"../op/op.SubstituteUser.php?userid=".$seluser->getID()."\" class=\"btn btn-primary\">".getMLText("substitute_user")."</a>\n";
}
} /* }}} */

View File

@ -173,6 +173,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
$checkoutdir = $this->params['checkOutDir'];
$documentid = $document->getId();
$currenttab = $this->params['currenttab'];
$timeout = $this->params['timeout'];
$versions = $document->getContent();
@ -449,7 +450,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
print "</ul>";
*/
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidthdetail);
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidthdetail, $timeout);
$previewer->setConverters($previewconverters);
$previewer->createPreview($latestContent);
if ($file_exists) {

View File

@ -114,6 +114,7 @@ class SeedDMS_View_ViewFolder extends SeedDMS_Bootstrap_Style {
$maxRecursiveCount = $this->params['maxRecursiveCount'];
$previewwidth = $this->params['previewWidthList'];
$previewconverters = $this->params['previewconverters'];
$timeout = $this->params['timeout'];
$folderid = $folder->getId();
@ -131,7 +132,7 @@ class SeedDMS_View_ViewFolder extends SeedDMS_Bootstrap_Style {
$this->pageNavigation($this->getFolderPathHTML($folder), "view_folder", $folder);
}
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth);
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout);
$previewer->setConverters($previewconverters);
echo $this->callHook('preContent');

View File

@ -37,6 +37,7 @@ class SeedDMS_View_WorkflowSummary extends SeedDMS_Bootstrap_Style {
$cachedir = $this->params['cachedir'];
$previewwidth = $this->params['previewWidthList'];
$previewconverters = $this->params['previewconverters'];
$timeout = $this->params['timeout'];
$this->htmlStartPage(getMLText("my_documents"));
$this->globalNavigation();
@ -49,7 +50,7 @@ class SeedDMS_View_WorkflowSummary extends SeedDMS_Bootstrap_Style {
// Get document list for the current user.
$workflowStatus = $user->getWorkflowStatus();
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth);
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout);
$previewer->setConverters($previewconverters);
$printheader=true;