Commit d50a5a9e24d742a98fb879914a8d4a9f2cb47d14

Authored by Brad Shuttleworth
1 parent 151e7a29

Patch from Bryn Divey (bryn@jamwarehouse.com)

- preferences handle name-failure more gracefully.
- permissions needed require_once
- add more detail to the dispatchervalidation around email, title.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@4603 c91229c3-7414-0410-bfa2-8a42b809f60b
lib/validation/dispatchervalidation.inc.php
@@ -186,11 +186,13 @@ class KTDispatcherValidation { @@ -186,11 +186,13 @@ class KTDispatcherValidation {
186 186
187 function validateFile($aFile, $aOptions = null) { 187 function validateFile($aFile, $aOptions = null) {
188 $bError = false; 188 $bError = false;
189 - if (strlen($aFile['name']) == 0) { 189 +
  190 + if (strlen(trim($aFile['name'])) == 0) {
190 $bError = true; 191 $bError = true;
191 } else { 192 } else {
192 $bError = KTUtil::arrayGet($aFile, 'error'); 193 $bError = KTUtil::arrayGet($aFile, 'error');
193 } 194 }
  195 +
194 if ($bError) { 196 if ($bError) {
195 $message = _("You did not select a valid document to upload"); 197 $message = _("You did not select a valid document to upload");
196 198
@@ -273,6 +275,24 @@ class KTDispatcherValidation { @@ -273,6 +275,24 @@ class KTDispatcherValidation {
273 } 275 }
274 return $oEntity; 276 return $oEntity;
275 } 277 }
  278 +
  279 +
  280 +
  281 +
  282 +
  283 + /* unlike the KTEmail version, this only handles ONE email address */
  284 + function validateEmailAddress($sEmailAddress, $aOptions = null) {
  285 + $sEmailAddress = trim($sEmailAddress);
  286 +
  287 + if (!ereg ("^[^@ ]+@[^@ ]+\.[^@ \.]+$", $sEmailAddress )) {
  288 + $aOptions['message'] = KTUtil::arrayGet($aOptions,
  289 + 'message',
  290 + _("An invalid email address was given"));
  291 + $this->handleError($aOptions);
  292 + }
  293 + return $sEmailAddress;
  294 + }
  295 +
276 } 296 }
277 297
278 ?> 298 ?>
plugins/ktcore/admin/managePermissions.php
@@ -4,6 +4,7 @@ require_once(KT_LIB_DIR . "/templating/templating.inc.php"); @@ -4,6 +4,7 @@ require_once(KT_LIB_DIR . "/templating/templating.inc.php");
4 require_once(KT_LIB_DIR . "/permissions/permission.inc.php"); 4 require_once(KT_LIB_DIR . "/permissions/permission.inc.php");
5 require_once(KT_LIB_DIR . "/dispatcher.inc.php"); 5 require_once(KT_LIB_DIR . "/dispatcher.inc.php");
6 require_once(KT_LIB_DIR . "/templating/kt3template.inc.php"); 6 require_once(KT_LIB_DIR . "/templating/kt3template.inc.php");
  7 +require_once(KT_LIB_DIR . "/widgets/fieldWidgets.php");
7 8
8 class ManagePermissionsDispatcher extends KTAdminDispatcher { 9 class ManagePermissionsDispatcher extends KTAdminDispatcher {
9 function do_main() { 10 function do_main() {
plugins/ktcore/folder/addDocument.php
@@ -42,6 +42,7 @@ class KTFolderAddDocumentAction extends KTFolderAction { @@ -42,6 +42,7 @@ class KTFolderAddDocumentAction extends KTFolderAction {
42 $add_fields = array(); 42 $add_fields = array();
43 $add_fields[] = new KTFileUploadWidget(_('File'), _('The contents of the document to be added to the document management system.'), 'file', "", $this->oPage, true); 43 $add_fields[] = new KTFileUploadWidget(_('File'), _('The contents of the document to be added to the document management system.'), 'file', "", $this->oPage, true);
44 $add_fields[] = new KTStringWidget(_('Title'), _('The document title is used as the main name of a document through the KnowledgeTree.'), 'title', "", $this->oPage, true); 44 $add_fields[] = new KTStringWidget(_('Title'), _('The document title is used as the main name of a document through the KnowledgeTree.'), 'title', "", $this->oPage, true);
  45 +
45 46
46 $aVocab = array(); 47 $aVocab = array();
47 foreach (DocumentType::getList() as $oDocumentType) { 48 foreach (DocumentType::getList() as $oDocumentType) {
@@ -83,7 +84,9 @@ class KTFolderAddDocumentAction extends KTFolderAction { @@ -83,7 +84,9 @@ class KTFolderAddDocumentAction extends KTFolderAction {
83 $aErrorOptions = array( 84 $aErrorOptions = array(
84 'redirect_to' => array('main', sprintf('fFolderId=%d', $this->oFolder->getId())), 85 'redirect_to' => array('main', sprintf('fFolderId=%d', $this->oFolder->getId())),
85 ); 86 );
  87 +
86 $aFile = $this->oValidator->validateFile($_FILES['file'], $aErrorOptions); 88 $aFile = $this->oValidator->validateFile($_FILES['file'], $aErrorOptions);
  89 + $sTitle = $this->oValidator->validateString($_REQUEST['title'], $aErrorOptions);
87 90
88 $matches = array(); 91 $matches = array();
89 $aFields = array(); 92 $aFields = array();
@@ -99,7 +102,7 @@ class KTFolderAddDocumentAction extends KTFolderAction { @@ -99,7 +102,7 @@ class KTFolderAddDocumentAction extends KTFolderAction {
99 'contents' => new KTFSFileLike($aFile['tmp_name']), 102 'contents' => new KTFSFileLike($aFile['tmp_name']),
100 'documenttype' => $this->oDocumentType, 103 'documenttype' => $this->oDocumentType,
101 'metadata' => $aFields, 104 'metadata' => $aFields,
102 - 'description' => $_REQUEST['title'], 105 + 'description' => $sTitle,
103 ); 106 );
104 107
105 $mpo->start(); 108 $mpo->start();
preferences.php
@@ -10,8 +10,6 @@ require_once(KT_LIB_DIR . "/dispatcher.inc.php"); @@ -10,8 +10,6 @@ require_once(KT_LIB_DIR . "/dispatcher.inc.php");
10 10
11 require_once(KT_LIB_DIR . '/widgets/fieldWidgets.php'); 11 require_once(KT_LIB_DIR . '/widgets/fieldWidgets.php');
12 12
13 -  
14 -  
15 class PreferencesDispatcher extends KTStandardDispatcher { 13 class PreferencesDispatcher extends KTStandardDispatcher {
16 var $sSection = 'preferences'; 14 var $sSection = 'preferences';
17 15
@@ -111,14 +109,18 @@ class PreferencesDispatcher extends KTStandardDispatcher { @@ -111,14 +109,18 @@ class PreferencesDispatcher extends KTStandardDispatcher {
111 109
112 110
113 function do_updatePreferences() { 111 function do_updatePreferences() {
  112 + $aErrorOptions = array(
  113 + 'redirect_to' => array('main'),
  114 + );
  115 +
114 $oUser =& $this->oUser; 116 $oUser =& $this->oUser;
115 117
116 - $name = KTUtil::arrayGet($_REQUEST, 'name');  
117 - if (empty($name)) {  
118 - $this->errorRedirectToMain(_('You must specify your name.'));  
119 - } 118 + $name = $this->oValidator->validateString(KTUtil::arrayGet($_REQUEST, 'name'),
  119 + KTUtil::meldOptions($aErrorOptions, array('message' => _('You must specify your name.'))));
120 120
121 - $email_address = KTUtil::arrayGet($_REQUEST, 'email_address'); 121 + $email_address = $this->oValidator->validateEmailAddress(KTUtil::arrayGet($_REQUEST, 'email_address'),
  122 + $aErrorOptions);
  123 +
122 $email_notifications = KTUtil::arrayGet($_REQUEST, 'email_notifications', false); 124 $email_notifications = KTUtil::arrayGet($_REQUEST, 'email_notifications', false);
123 if ($email_notifications !== false) $email_notifications = true; 125 if ($email_notifications !== false) $email_notifications = true;
124 $mobile_number = KTUtil::arrayGet($_REQUEST, 'mobile_number'); 126 $mobile_number = KTUtil::arrayGet($_REQUEST, 'mobile_number');