00001 <?php
00002
00016 import('pages.user.UserHandler');
00017
00018 class ProfileHandler extends UserHandler {
00022 function ProfileHandler() {
00023 parent::UserHandler();
00024 }
00025
00026
00027
00028
00035 function authorize(&$request, $args, $roleAssignments) {
00036 $operations = array('profile', 'saveProfile', 'changePassword', 'savePassword');
00037
00038
00039 import('lib.pkp.classes.security.authorization.PKPSiteAccessPolicy');
00040 $this->addPolicy(new PKPSiteAccessPolicy($request, $operations, SITE_ACCESS_ALL_ROLES));
00041
00042
00043 import('lib.pkp.classes.security.authorization.UserRequiredPolicy');
00044 $this->addPolicy(new UserRequiredPolicy($request));
00045
00046 return parent::authorize($request, $args, $roleAssignments);
00047 }
00048
00052 function profile($args, &$request) {
00053 $this->setupTemplate(true);
00054
00055 $user =& $request->getUser();
00056 import('classes.user.form.ProfileForm');
00057 $profileForm = new ProfileForm($user);
00058 if ($profileForm->isLocaleResubmit()) {
00059 $profileForm->readInputData();
00060 } else {
00061 $profileForm->initData($args, $request);
00062 }
00063 $profileForm->display($args, $request);
00064 }
00065
00069 function saveProfile($args, &$request) {
00070 $this->setupTemplate($request);
00071 $dataModified = false;
00072 $user =& $request->getUser();
00073
00074 import('classes.user.form.ProfileForm');
00075 $profileForm = new ProfileForm($user);
00076 $profileForm->readInputData();
00077
00078 if ($request->getUserVar('uploadProfileImage')) {
00079 if (!$profileForm->uploadProfileImage()) {
00080 $profileForm->addError('profileImage', __('user.profile.form.profileImageInvalid'));
00081 }
00082 $dataModified = true;
00083 } else if ($request->getUserVar('deleteProfileImage')) {
00084 $profileForm->deleteProfileImage();
00085 $dataModified = true;
00086 }
00087
00088 if (!$dataModified && $profileForm->validate()) {
00089 $profileForm->execute($request);
00090 $request->redirect(null, $request->getRequestedPage());
00091 } else {
00092 $profileForm->display($args, $request);
00093 }
00094 }
00095
00099 function changePassword($args, &$request) {
00100 $this->setupTemplate(true);
00101
00102 $user =& $request->getUser();
00103 $site =& $request->getSite();
00104
00105 import('classes.user.form.ChangePasswordForm');
00106 $passwordForm = new ChangePasswordForm($user, $site);
00107 $passwordForm->initData($args, $request);
00108 $passwordForm->display($args, $request);
00109 }
00110
00114 function savePassword($args, &$request) {
00115 $this->setupTemplate(true);
00116
00117 $user =& $request->getUser();
00118 $site =& $request->getSite();
00119
00120 import('classes.user.form.ChangePasswordForm');
00121 $passwordForm = new ChangePasswordForm($user, $site);
00122 $passwordForm->readInputData();
00123
00124 $this->setupTemplate(true);
00125 if ($passwordForm->validate()) {
00126 $passwordForm->execute($request);
00127 $request->redirect(null, $request->getRequestedPage());
00128
00129 } else {
00130 $passwordForm->display($args, $request);
00131 }
00132 }
00133 }
00134
00135 ?>