File indexing completed on 2024-05-12 05:58: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 Backend_IndexController extends Local_Controller_Action_Backend
0024 {
0025     
0026 
0027     public function indexAction()
0028     {
0029 
0030     }
0031 
0032     public function metaAction()
0033     {
0034 
0035     }
0036 
0037     public function settingsAction()
0038     {
0039 
0040     }
0041 
0042     public function filebrowserAction()
0043     {
0044 
0045     }
0046 
0047     public function getnewmemberstatsAction()
0048     {
0049 
0050         $this->_helper->layout->disableLayout();
0051         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->settings->dwh->toArray());
0052         $this->sendJson($modelData->getNewmemberstats());
0053     }
0054 
0055     public function sendJson($result)
0056     {
0057         if ($result) {
0058             $msg = array(
0059                 'status'  => 'ok',
0060                 'msg'     => '',
0061                 'results' => $result
0062             );
0063 
0064             return $this->_helper->json->sendJson($msg);
0065         } else {
0066             return $this->_helper->json->sendJson(array(
0067                 'status'  => 'not found',
0068                 'msg'     => 'data with given id could not be found.',
0069                 'results' => ''
0070             ));
0071         }
0072     }
0073 
0074     public function getpayoutgroupbyamountAction()
0075     {
0076         $this->_helper->layout->disableLayout();
0077         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->resources->toArray());
0078         $this->sendJson($modelData->getPayoutgroupbyamountProduct());
0079     }
0080 
0081     public function getpayoutgroupbyamountmemberAction()
0082     {
0083         $this->_helper->layout->disableLayout();
0084         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->resources->toArray());
0085                 
0086         $this->sendJson($modelData->getPayoutgroupbyamountMember());
0087     }
0088 
0089     public function getnewprojectstatsAction()
0090     {
0091         $this->_helper->layout->disableLayout();
0092         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->settings->dwh->toArray());
0093         $this->sendJson($modelData->getNewprojectstats());
0094     }
0095 
0096     public function getpayoutAction()
0097     {
0098 
0099         $this->_helper->layout->disableLayout();
0100         $yyyymm = $this->getParam('yyyymm', '201708');
0101         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->settings->dwh->toArray());
0102         $data = $modelData->getPayout($yyyymm);
0103         $m = new Default_Model_DbTable_ProjectPlings();
0104         $plings = $m->getAllPlingListReceived();
0105         foreach ($data as &$d) {
0106             $d['plings'] = 0;
0107             foreach ($plings as $p) {
0108                 if($p['member_id'] == $d['member_id'])
0109                 {
0110                     $d['plings'] = $p['plings'];
0111                     break;
0112                 }
0113             }
0114         }
0115         $this->sendJson($data);
0116     }
0117 
0118     public function getdownloadsdailyAction()
0119     {
0120 
0121         $this->_helper->layout->disableLayout();
0122         $numofmonthback = $this->getParam('numofmonthback', '3');
0123         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->settings->dwh->toArray());
0124         $this->sendJson($modelData->getDownloadsDaily($numofmonthback));
0125     }
0126 
0127     public function getdownloadsundpayoutsdailyAction()
0128     {
0129 
0130         $this->_helper->layout->disableLayout();
0131         $yyyymm = $this->getParam('yyyymm');
0132         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->settings->dwh->toArray());
0133         $this->sendJson($modelData->getDownloadsUndPayoutsDaily($yyyymm));
0134     }
0135 
0136     public function gettopdownloadsperdateAction()
0137     {
0138 
0139         $this->_helper->layout->disableLayout();
0140         $date = $this->getParam('date');
0141         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->settings->dwh->toArray());
0142         $this->sendJson($modelData->getTopDownloadsPerDate($date));
0143     }
0144 
0145     public function getproductmonthlyAction()
0146     {
0147 
0148         $this->_helper->layout->disableLayout();
0149         $project_id = $this->getParam('project_id');
0150         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->settings->dwh->toArray());
0151         $this->sendJson($modelData->getProductMonthly($project_id));
0152     }
0153 
0154     public function getproductdaylyAction()
0155     {
0156 
0157         $this->_helper->layout->disableLayout();
0158         $project_id = $this->getParam('project_id');
0159         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->settings->dwh->toArray());
0160         $this->sendJson($modelData->getProductDayly($project_id));
0161     }
0162 
0163 
0164     public function gettopdownloadspermonthAction()
0165     {
0166 
0167         $this->_helper->layout->disableLayout();
0168         $month = $this->getParam('month');
0169         $catid = $this->getParam('catid');
0170         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->settings->dwh->toArray());
0171         $this->sendJson($modelData->getTopDownloadsPerMonth($month,$catid));
0172     }
0173 
0174     public function getdownloadsdomainAction()
0175     {
0176 
0177         $this->_helper->layout->disableLayout();
0178         $dateBegin = $this->getParam('dateBegin');
0179         $dateEnd = $this->getParam('dateEnd');
0180         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->settings->dwh->toArray());
0181         $this->sendJson($modelData->getDownloadsDomainStati($dateBegin, $dateEnd));
0182     }
0183  
0184     public function getpayoutmemberAction()
0185     {
0186 
0187         $this->_helper->layout->disableLayout();
0188         $member = $this->getParam('member', '1');
0189         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->settings->dwh->toArray());
0190         $this->sendJson($modelData->getPayoutOfMember($member));
0191     }
0192 
0193     public function getpayoutyearAction()
0194     {
0195         $this->_helper->layout->disableLayout();
0196         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->settings->dwh->toArray());
0197         $this->sendJson($modelData->getPayoutyear());
0198     }
0199 
0200     public function getpayoutcategorymonthlyAction()
0201     {
0202         $this->_helper->layout->disableLayout();
0203         $yyyymm = $this->getParam('yyyymm', '201708');
0204         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->settings->dwh->toArray());
0205         $this->sendJson($modelData->getPayoutCategoryMonthly($yyyymm));
0206     }
0207 
0208     public function getpayoutmemberpercategoryAction()
0209     {
0210         $this->_helper->layout->disableLayout();
0211         $yyyymm = $this->getParam('yyyymm', '201708');
0212         $catid = (int)$this->getParam('catid', 0);
0213         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->settings->dwh->toArray());
0214         $this->sendJson($modelData->getPayoutMemberPerCategory($yyyymm,$catid));
0215     }
0216 
0217     public function getpayoutcategoryAction()
0218     {   
0219 
0220         $this->_helper->layout->disableLayout();
0221         $catid = (int)$this->getParam('catid', 0);
0222         
0223         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->settings->dwh->toArray());
0224 
0225         $result = $modelData->getPayoutCategory($catid);
0226         if($catid==0)
0227         {
0228             $modelCategoryStore = new Default_Model_DbTable_ConfigStoreCategory();
0229             $pids = $modelCategoryStore->fetchCatIdsForStore(Statistics_Model_Data::DEFAULT_STORE_ID);
0230         }else{
0231             $modelCategoriesTable = new Default_Model_DbTable_ProjectCategory();
0232             $pids = $modelCategoriesTable->fetchImmediateChildrenIds($catid,$modelCategoriesTable::ORDERED_TITLE);
0233         }
0234         
0235         if($pids)
0236         {
0237             $modelCategories = new Default_Model_ProjectCategory();
0238            $pidsname = $modelCategories->fetchCatNamesForID($pids);    
0239         }else
0240         {
0241             $pidsname=[];
0242         }
0243         
0244 
0245         $msg = array(
0246             'status'  => 'ok',
0247             'msg'     => '',
0248             'pids'     => $pids,
0249             'pidsname' => $pidsname,
0250             'results' => $result
0251         );
0252         return $this->_helper->json->sendJson($msg);
0253 
0254         //$this->sendJson($modelData->getPayoutCategory($catid));
0255     }
0256 
0257     public function newcomerAction()
0258     {
0259         $this->_helper->layout->disableLayout();
0260         $yyyymm = $this->getParam('yyyymm', '1');
0261         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->settings->dwh->toArray());
0262         $this->sendJson($modelData->getNewcomer($yyyymm));
0263     }
0264 
0265     public function newloserAction()
0266     {
0267         $this->_helper->layout->disableLayout();
0268         $yyyymm = $this->getParam('yyyymm', '1');
0269         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->settings->dwh->toArray());
0270         $this->sendJson($modelData->getNewloser($yyyymm));
0271     }
0272 
0273     public function monthdiffAction()
0274     {
0275         $this->_helper->layout->disableLayout();
0276         $yyyymm = $this->getParam('yyyymm', '1');
0277         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->settings->dwh->toArray());
0278         $this->sendJson($modelData->getMonthDiff($yyyymm));
0279     }
0280 
0281 
0282     public function newproductsweeklyAction()
0283     {
0284         $this->_helper->layout->disableLayout();
0285         // $yyyymm = $this->getParam('yyyymm', '1');
0286         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->settings->dwh->toArray());
0287         // $list = array_reverse($modelData->getNewprojectWeeklystats());
0288         // $this->sendJson($list);
0289 
0290         $listwallpapers = $modelData->getNewprojectWeeklystatsWallpapers();
0291         $listNowallpapers = $modelData->getNewprojectWeeklystatsWithoutWallpapers();
0292 
0293         $map1 = array();
0294         foreach($listwallpapers as $value) {          
0295             $map1[$value['yyyykw']] = $value['amount'];
0296         }
0297 
0298         $map2 = array();
0299         foreach($listNowallpapers as $value) {          
0300             $map2[$value['yyyykw']] = $value['amount'];
0301         }
0302 
0303         $datetime = new DateTime();
0304         $result = array();
0305         for ($i = 1; $i < 60; $i++) {
0306             $w = '-1 week';
0307             $datetime->modify($w);    
0308             $month = $datetime->format('YW');
0309 
0310             $value1=0;
0311             if(isset($map1[$month])){
0312                 $value1 = $map1[$month];
0313             }
0314             $value2=0;
0315             if(isset($map2[$month])){
0316                 $value2 = $map2[$month];
0317             }
0318             $result[] = array('yyyykw'=>$month,
0319                             'amountnowallpapers'=>$value2,
0320                             'amountwallpapers' =>$value1
0321                             );
0322         }
0323         $list = array_reverse($result);
0324         $this->sendJson($list);        
0325 
0326         // $this->_helper->json($list);
0327        
0328     }
0329 
0330     public function getnewmembersprojectsAction()
0331     {
0332 
0333         $this->_helper->layout->disableLayout();
0334         $modelData = new Statistics_Model_Data(Zend_Registry::get('config')->settings->dwh->toArray());
0335 
0336         try {
0337             $result = array();
0338 
0339             $m = $modelData->getNewmemberstats();
0340             $p = $modelData->getNewprojectstats();
0341             foreach ($m as $member) {
0342                 $date = $member['memberdate'];
0343                 $t = array(
0344                     'date'     => $date,
0345                     'members'  => $member['daycount'],
0346                     'projects' => 0
0347                 );
0348                 foreach ($p as $project) {
0349                     $d = $project['projectdate'];
0350                     if ($d == $date) {
0351                         $t['projects'] = $project['daycount'];
0352                         break;
0353                     }
0354                 }
0355                 $result [] = $t;
0356             }
0357         } catch (Exception $e) {
0358             Zend_Registry::get('logger')->error($e->getMessage());
0359 
0360             return $this->_helper->json->sendJson(array(
0361                 'status'  => 'error',
0362                 'msg'     => 'error while processing request',
0363                 'results' => ''
0364             ));
0365         }
0366 
0367         if ($result) {
0368             $msg = array(
0369                 'status'  => 'ok',
0370                 'msg'     => '',
0371                 'results' => array_reverse($result)
0372             );
0373 
0374             return $this->_helper->json->sendJson($msg);
0375         }
0376 
0377         return $this->_helper->json->sendJson(array(
0378             'status'  => 'not found',
0379             'msg'     => 'data with given id could not be found.',
0380             'results' => ''
0381         ));
0382     }
0383 
0384 }