Open Monograph Press  3.3.0
PublicProfileForm.inc.php
1 <?php
2 
16 import('lib.pkp.classes.user.form.BaseProfileForm');
17 import('classes.file.PublicFileManager');
18 
19 define('PROFILE_IMAGE_MAX_WIDTH', 150);
20 define('PROFILE_IMAGE_MAX_HEIGHT', 150);
21 
23 
29  function __construct($user) {
30  parent::__construct('user/publicProfileForm.tpl', $user);
31 
32  // Validation checks for this form
33  $this->addCheck(new FormValidatorORCID($this, 'orcid', 'optional', 'user.orcid.orcidInvalid'));
34  $this->addCheck(new FormValidatorUrl($this, 'userUrl', 'optional', 'user.profile.form.urlInvalid'));
35  }
36 
40  function initData() {
41  $user = $this->getUser();
42 
43  $this->_data = array(
44  'orcid' => $user->getOrcid(),
45  'userUrl' => $user->getUrl(),
46  'biography' => $user->getBiography(null), // Localized
47  );
48 
49  parent::initData();
50  }
51 
55  function readInputData() {
56  parent::readInputData();
57 
58  $this->readUserVars(array(
59  'orcid', 'userUrl', 'biography',
60  ));
61  }
62 
67  function uploadProfileImage() {
68  import('classes.file.PublicFileManager');
69  $publicFileManager = new PublicFileManager();
70 
71  $user = $this->getUser();
72  $type = $publicFileManager->getUploadedFileType('uploadedFile');
73  $extension = $publicFileManager->getImageExtension($type);
74  if (!$extension) return false;
75 
76  $uploadName = 'profileImage-' . (int) $user->getId() . $extension;
77  if (!$publicFileManager->uploadSiteFile('uploadedFile', $uploadName)) return false;
78  $filePath = $publicFileManager->getSiteFilesPath();
79  list($width, $height) = getimagesize($filePath . '/' . $uploadName);
80 
81  if ($width > PROFILE_IMAGE_MAX_WIDTH || $height > PROFILE_IMAGE_MAX_HEIGHT || $width <= 0 || $height <= 0) {
82  $userSetting = null;
83  $user->updateSetting('profileImage', $userSetting);
84  $publicFileManager->removeSiteFile($filePath);
85  return false;
86  }
87 
88  $user->updateSetting('profileImage', array(
89  'name' => $publicFileManager->getUploadedFileName('uploadedFile'),
90  'uploadName' => $uploadName,
91  'width' => $width,
92  'height' => $height,
93  'dateUploaded' => Core::getCurrentDate(),
94  ));
95  return true;
96  }
97 
102  function deleteProfileImage() {
103  $user = $this->getUser();
104  $profileImage = $user->getSetting('profileImage');
105  if (!$profileImage) return false;
106 
107  $publicFileManager = new PublicFileManager();
108  if ($publicFileManager->removeSiteFile($profileImage['uploadName'])) {
109  return $user->updateSetting('profileImage', null);
110  } else {
111  return false;
112  }
113  }
114 
118  function fetch($request, $template = null, $display = false) {
119  $templateMgr = TemplateManager::getManager($request);
120 
121  $publicFileManager = new PublicFileManager();
122  $templateMgr->assign(array(
123  'profileImage' => $request->getUser()->getSetting('profileImage'),
124  'profileImageMaxWidth' => PROFILE_IMAGE_MAX_WIDTH,
125  'profileImageMaxHeight' => PROFILE_IMAGE_MAX_HEIGHT,
126  'publicSiteFilesPath' => $publicFileManager->getSiteFilesPath(),
127  ));
128 
129  return parent::fetch($request, $template, $display);
130  }
131 
135  function execute(...$functionArgs) {
136  $request = Application::get()->getRequest();
137  $user = $request->getUser();
138 
139  $user->setOrcid($this->getData('orcid'));
140  $user->setUrl($this->getData('userUrl'));
141  $user->setBiography($this->getData('biography'), null); // Localized
142 
143  parent::execute(...$functionArgs);
144  }
145 }
146 
147 
PublicProfileForm\initData
initData()
Definition: PublicProfileForm.inc.php:40
PublicProfileForm\fetch
fetch($request, $template=null, $display=false)
Definition: PublicProfileForm.inc.php:118
Form\readUserVars
readUserVars($vars)
Definition: Form.inc.php:378
Form\getData
getData($key)
Definition: Form.inc.php:220
FormValidatorORCID
Form validation check for ORCID iDs.
Definition: FormValidatorORCID.inc.php:18
PublicFileManager
Wrapper class for uploading files to a site/press' public directory.
Definition: PublicFileManager.inc.php:19
PublicProfileForm
Form to edit user's public profile.
Definition: PublicProfileForm.inc.php:22
PublicProfileForm\execute
execute(... $functionArgs)
Definition: PublicProfileForm.inc.php:135
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
BaseProfileForm
Base form to edit an aspect of user profile.
Definition: BaseProfileForm.inc.php:18
Core\getCurrentDate
static getCurrentDate($ts=null)
Definition: Core.inc.php:63
Form\addCheck
addCheck($formValidator)
Definition: Form.inc.php:395
PublicProfileForm\__construct
__construct($user)
Definition: PublicProfileForm.inc.php:29
PublicProfileForm\deleteProfileImage
deleteProfileImage()
Definition: PublicProfileForm.inc.php:102
BaseProfileForm\getUser
getUser()
Definition: BaseProfileForm.inc.php:44
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
FormValidatorUrl
Form validation check for URLs.
Definition: FormValidatorUrl.inc.php:20
PublicProfileForm\uploadProfileImage
uploadProfileImage()
Definition: PublicProfileForm.inc.php:67
PublicProfileForm\readInputData
readInputData()
Definition: PublicProfileForm.inc.php:55