File indexing completed on 2024-05-12 05:58:40

0001 <?php
0002 
0003 /**
0004  *  ocs-webserver
0005  *
0006  *  Copyright 2016 by pling GmbH.
0007  *
0008  *    This file is part of ocs-webserver.
0009  *
0010  *    This program is free software: you can redistribute it and/or modify
0011  *    it under the terms of the GNU Affero General Public License as
0012  *    published by the Free Software Foundation, either version 3 of the
0013  *    License, or (at your option) any later version.
0014  *
0015  *    This program is distributed in the hope that it will be useful,
0016  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
0017  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0018  *    GNU Affero General Public License for more details.
0019  *
0020  *    You should have received a copy of the GNU Affero General Public License
0021  *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
0022  *
0023  * Created: 03.09.2018
0024  */
0025 class RectificationController extends Local_Controller_Action_DomainSwitch
0026 {
0027 
0028     public function indexAction()
0029     {
0030         $this->forward('change');
0031     }
0032 
0033     public function changeAction()
0034     {
0035         //todo: Prevent users from calling this action directly
0036         $form = new Default_Form_Rectification();
0037 
0038         $this->view->assign('redirect', $this->getParam('redirect'));
0039 
0040         if ($this->_request->isGet()) {
0041             $errorCode = $this->getParam("e");
0042             $this->view->assign('errorCode', $errorCode);
0043 
0044             return;
0045         }
0046 
0047         if (false === $form->isValid($_POST)) {
0048             $errorCode = $this->getParam("e");
0049             $this->view->assign('errorCode', $errorCode);
0050 
0051             return;
0052         }
0053 
0054         $values = $form->getValidValues($_POST);
0055 
0056         if (empty($values['username']) AND empty($values['mail'])) {
0057             $errorCode = $this->getParam("e");
0058             $this->view->assign('errorCode', $errorCode);
0059 
0060             return;
0061         }
0062 
0063         $modelMember = new Default_Model_Member();
0064         $member = $modelMember->fetchMember($this->_authMember->member_id);
0065         $oldUsername = null;
0066         if (isset($values['username']) AND ($member->username != $values['username'])) {
0067             $oldUsername = $member->username;
0068             $member->username = $values['username'];
0069             $member->username_old = $oldUsername;
0070             $member->save();
0071             $this->_authMember->username = $values['username'];
0072         }
0073         if (isset($values['mail'])) {
0074             $oldEmailAddress = $member->mail;
0075             $member->mail_old = $member->mail;
0076             $member->mail = $values['mail'];
0077             
0078             $member->save();
0079             $this->_authMember->mail = $values['mail'];
0080             
0081             $modelEmail = new Default_Model_MemberEmail();
0082             $dataMail = $modelEmail->saveEmailAsPrimary($this->_authMember->member_id, $values['mail']);
0083             $modelEmail->sendConfirmationMail((array)$this->_authMember, $dataMail->email_verification_value);
0084         }
0085 
0086         Zend_Auth::getInstance()->getStorage()->write($this->_authMember);
0087 
0088         $modelMember = new  Default_Model_Member();
0089         $record = $modelMember->fetchMemberData($this->_authMember->member_id, false);
0090 
0091         try {
0092             $id_server = new Default_Model_Ocs_OAuth();
0093             $id_server->updateUserFromArray($record->toArray());
0094         } catch (Exception $e) {
0095             Zend_Registry::get('logger')->err($e->getMessage() . PHP_EOL . $e->getTraceAsString());
0096         }
0097         try {
0098             $ldap_server = new Default_Model_Ocs_Ldap();
0099             $ldap_server->updateUserFromArray($record->toArray());
0100             Zend_Registry::get('logger')->debug(__METHOD__ . ' - ldap : ' . implode(PHP_EOL." - ", $ldap_server->getMessages()));
0101         } catch (Exception $e) {
0102             Zend_Registry::get('logger')->err($e->getMessage() . PHP_EOL . $e->getTraceAsString());
0103         }
0104         try {
0105             $openCode = new Default_Model_Ocs_Gitlab();
0106             $openCode->updateUserFromArray($record->toArray(), $oldUsername);
0107             Zend_Registry::get('logger')->debug(__METHOD__ . ' - opencode : ' . implode(PHP_EOL." - ", $openCode->getMessages()));
0108         } catch (Exception $e) {
0109             Zend_Registry::get('logger')->err($e->getMessage() . PHP_EOL . $e->getTraceAsString());
0110         }
0111         try {
0112             $modelForum = new Default_Model_Ocs_Forum();
0113             $modelForum->updateUserFromArray($record->toArray(), $oldUsername);
0114         } catch (Exception $e) {
0115             Zend_Registry::get('logger')->err($e->getMessage() . PHP_EOL . $e->getTraceAsString());
0116         }
0117 
0118 
0119         if ($this->_request->isXmlHttpRequest()) {
0120             $this->_helper->json(array('status' => 'ok', 'redirect' => '/'));
0121         } else {
0122             $this->redirect('/');
0123         }
0124     }
0125 
0126     public function validateAction()
0127     {
0128         $this->_helper->layout->disableLayout();
0129         $this->_helper->viewRenderer->setNoRender(true);
0130 
0131         $this->view->headScript()->appendFile('//www.google.com/recaptcha/api.js');
0132         $this->view->addHelperPath(APPLICATION_LIB . '/Cgsmith/View/Helper', 'Cgsmith\\View\\Helper\\');
0133         $formRegister = new Default_Form_Rectification();
0134 
0135         $name = $this->getParam('name');
0136         $value = $this->getParam('value');
0137 
0138         $result = $formRegister->getElement($name)->isValid($value, array('omitMember' => array($this->_authMember->member_id)));
0139 
0140         $this->_helper->json(array('status' => $result, $name => $formRegister->getElement($name)->getMessages()));
0141     }
0142 
0143 }