File indexing completed on 2024-12-22 05:33:32

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 class MembersettingController extends Zend_Controller_Action
0024 {
0025 
0026     const GROUP_METAHEADER = 1;
0027     protected $_format = 'json';
0028 
0029     public function init()
0030     {
0031         parent::init();
0032         $this->initView();
0033         // $this->_initResponseHeader();
0034     }
0035 
0036     public function initView()
0037     {
0038         // Disable render view
0039         $this->_helper->layout->disableLayout();
0040         $this->_helper->viewRenderer->setNoRender(true);
0041     }
0042 
0043     public function indexAction()
0044     {
0045         $this->_sendErrorResponse(999, 'unknown request');
0046     }
0047 
0048     public function getsettingsAction()
0049     {
0050         $this->_initResponseHeader();
0051         $identity = Zend_Auth::getInstance()->getStorage()->read();
0052         if ($identity == null || $identity->member_id == null) {
0053             $response = array(
0054                 'status' => 'error',
0055                 'msg'    => 'no user found'
0056             );
0057             $this->_sendResponse($response, $this->_format);
0058 
0059             return;
0060         }
0061         $model = new Default_Model_MemberSettingValue();
0062         $member_id = $identity->member_id;
0063 
0064         $results = $model->findMemberSettings($member_id, $this::GROUP_METAHEADER);
0065         $response = array(
0066             'status'    => 'ok',
0067             'member_id' => $member_id,
0068             'results'   => $results
0069         );
0070         $this->_sendResponse($response, $this->_format);
0071     }
0072 
0073     protected function _initResponseHeader()
0074     {
0075         http_response_code(200);
0076 
0077         if (!empty($_SERVER['HTTP_ORIGIN'])) {
0078             header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN'], true);
0079             header('Access-Control-Allow-Credentials: true', true);
0080             header('Access-Control-Max-Age: 1728000', true);
0081         }
0082 
0083 
0084         if (!empty($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) {
0085             header('Access-Control-Allow-Methods: ' . implode(', ', array_unique([
0086                     'OPTIONS',
0087                     'HEAD',
0088                     'GET',
0089                     'POST',
0090                     'PUT',
0091                     strtoupper($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])
0092                 ])), true);
0093         }
0094 
0095         if (!empty($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) {
0096             header('Access-Control-Allow-Headers: ' . $_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'], true);
0097             header('Access-Control-Expose-Headers: Authorization, Content-Type, Accept', true);
0098         }
0099 
0100         if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
0101             exit;
0102         }
0103 
0104         header('Content-Type: application/json; charset=UTF-8', true);
0105 
0106     }
0107 
0108     /*public function getsettingsAction()
0109     {
0110         $this->_helper->layout->disableLayout();
0111     }*/
0112 
0113     protected function _sendResponse($response, $format = 'json', $xmlRootTag = 'ocs')
0114     {
0115         header('Content-Type: application/json; charset=UTF-8');
0116         echo json_encode($response);
0117     }
0118 
0119     public function setsettingsAction()
0120     {
0121         $this->_initResponseHeader();
0122         $identity = Zend_Auth::getInstance()->getStorage()->read();
0123         if ($identity == null || $identity->member_id == null) {
0124             $response = array(
0125                 'status' => 'error',
0126                 'msg'    => 'no user found'
0127             );
0128         } else {
0129             $model = new Default_Model_MemberSettingValue();
0130             $member_id = $identity->member_id;
0131             $member_setting_item_id = $this->getParam('itemid');
0132             $value = $this->getParam('itemvalue');
0133             $model->updateOrInsertSetting($member_id, $member_setting_item_id, null, $value);
0134             $response = array(
0135                 'status' => 'ok'
0136             );
0137         }
0138         $this->_sendResponse($response, $this->_format);
0139     }
0140 
0141     public function notificationAction()
0142     {
0143         $this->_initResponseHeader();
0144         $identity = Zend_Auth::getInstance()->getStorage()->read();
0145         if ($identity == null || $identity->member_id == null) {
0146             $response = array(
0147                 'status' => 'error',
0148                 'msg'    => 'no user found'
0149             );
0150             $this->_sendResponse($response, $this->_format);
0151 
0152             return;
0153         }
0154         $modelForum = new Default_Model_Ocs_Forum();
0155         $data = $modelForum->getUserNotifications($identity->member_id);
0156         $results = $data;
0157 
0158         $this->_sendResponse($results, $this->_format);
0159 
0160     }
0161 
0162     // public function anonymousdlAction()
0163     // {
0164     //
0165     //     $this->_initResponseHeader();
0166     //     $identity = Zend_Auth::getInstance()->getStorage()->read();
0167     //     if($identity==null)
0168     //     {
0169     //         $config = Zend_Registry::get('config');
0170     //         $cookieName = $config->settings->session->auth->anonymous;
0171     //         $storedInCookie = isset($_COOKIE[$cookieName]) ? $_COOKIE[$cookieName] : NULL;
0172     //         if($storedInCookie)
0173     //         {
0174     //             $memberDlAnonymous = new Default_Model_DbTable_MemberDownloadAnonymous();
0175     //             $dls = $memberDlAnonymous->countDownloads($storedInCookie);
0176     //
0177     //             $response = array(
0178     //             'status'     => 'ok',
0179     //             'dls'    => $dls
0180     //             );
0181     //             $this->_sendResponse($response, $this->_format);
0182     //             return;
0183     //         }
0184     //
0185     //     }
0186     //
0187     //     $response = array(
0188     //         'status'     => 'ok',
0189     //         'dls'    => 0
0190     //         );
0191     //     $this->_sendResponse($response, $this->_format);
0192     //
0193     // }
0194 
0195     public function memberjsonAction()
0196     {
0197         $this->_initResponseHeader();
0198         $identity = Zend_Auth::getInstance()->getStorage()->read();
0199         $member_id = $this->getParam('member_id');
0200         $results = null;
0201         if ($member_id) {
0202             $info = new Default_Model_Info();
0203             $commentsOpendeskop = $info->getDiscussionOpendeskop($member_id);
0204             $results = array('commentsOpendeskop' => $commentsOpendeskop);
0205         }
0206         $this->_sendResponse($results, $this->_format);
0207     }
0208 
0209     public function searchmemberAction()
0210     {
0211         $this->_initResponseHeader();
0212         $username = $this->getParam('username');
0213         $results = null;
0214         if (strlen(trim($username)) > 2) {
0215             $username = str_replace("_", "\_", $username);
0216             $model = new Default_Model_Member();
0217             $results = $model->findActiveMemberByName($username);
0218             $helperImage = new Default_View_Helper_Image();
0219             foreach ($results as &$value) {
0220                 $avatar = $helperImage->image($value['profile_image_url'],
0221                     array('width' => 100, 'height' => 100, 'crop' => 2));
0222                 $value['profile_image_url'] = $avatar;
0223             }
0224         }
0225         $this->_sendResponse($results, $this->_format);
0226     }
0227 
0228    
0229     public function userinfoAction()
0230     {
0231         $this->_initResponseHeader();
0232         $member_id = $this->getParam('member_id');
0233         $info = new Default_Model_Info();
0234         $data = $info->getTooptipForMember($member_id);
0235         $this->_sendResponse($data, $this->_format);
0236     }
0237 
0238 }