コード例 #1
0
 public function activitylogreportAction()
 {
     try {
         $activitylog_model = new Default_Model_Activitylog();
         $logmanager_model = new Default_Model_Logmanager();
         $dashboardcall = $this->_getParam('dashboardcall');
         if ($dashboardcall == 'Yes') {
             $perPage = DASHBOARD_PERPAGE;
         } else {
             $perPage = PERPAGE;
         }
         $selectFields = array('menuname' => 'Menu', 'username' => 'User Name', 'empId' => 'Employee ID', 'useraction' => 'Action', 'modifieddate' => 'Modified Date');
         $selectColumns = array_keys($selectFields);
         $action = array('1' => 'Add', '2' => 'Edit', '3' => 'Delete', '5' => 'Cancel');
         $activityLogData = array();
         $splitArray = array();
         $pageNo = 1;
         $order = $funorder = 'Desc';
         $by = $sortby = 'last_modifieddate';
         $searchData = '';
         $lastpage = 0;
         if ($this->getRequest()->getPost()) {
             $this->_helper->layout->disableLayout();
         }
         if ($this->_request->getParam('pageNo') != '') {
             $pageNo = intval($this->_request->getParam('pageNo'));
         }
         if ($this->_request->getParam('per_page') != '') {
             $perPage = intval($this->_request->getParam('per_page'));
         }
         if ($this->_request->getParam('fields') != '') {
             $selectColumns = explode(',', $this->_request->getParam('fields'));
         }
         $finalArray = array();
         //POST with empty search fields
         if ($this->_request->getParam('hiddenusername') == '' && $this->_request->getParam('menu') == '' && $this->_request->getParam('useraction') == '' && $this->_request->getParam('modifieddate') == '') {
             if ($this->_request->getParam('sortby') != '') {
                 $by = $sortby = $this->_request->getParam('sortby');
                 $order = $funorder = $this->_request->getParam('order');
                 if ($sortby == 'userfullname') {
                     $by = '';
                     $usernameorder = $logmanager_model->getUsernameOrderForLog($order);
                     if (!empty($usernameorder)) {
                         $funorder = 'FIND_IN_SET(last_modifiedby,"' . $usernameorder . '")';
                     }
                 }
                 if ($sortby == 'employeeId') {
                     $by = '';
                     $empidorder = $logmanager_model->getEmpidOrderForLog($order);
                     if (!empty($empidorder)) {
                         $funorder = 'FIND_IN_SET(last_modifiedby,"' . $empidorder . '")';
                     }
                 }
                 if ($sortby == 'menuname') {
                     $by = '';
                     $menunameorder = $logmanager_model->getMenuOrderForLog($order);
                     if (!empty($menunameorder)) {
                         $funorder = 'FIND_IN_SET(menuId,"' . $menunameorder . '")';
                     }
                 }
             }
             $activityLogData = $logmanager_model->getLogManagerDataReport($by, $funorder, $pageNo, $perPage, $searchData, array('*'));
             $activityLogCount = $activitylog_model->getLogManagerCount();
             $menuArray = array();
             $userArray = array();
             if (count($activityLogData) > 0) {
                 $lastpage = ceil($activityLogCount / $perPage);
                 foreach ($activityLogData as $activitylog) {
                     if (isset($activitylog['menuId'])) {
                         if (!in_array($activitylog['menuId'], $menuArray)) {
                             array_push($menuArray, $activitylog['menuId']);
                         }
                     }
                     if (isset($activitylog['last_modifiedby'])) {
                         if (!in_array($activitylog['last_modifiedby'], $userArray)) {
                             array_push($userArray, $activitylog['last_modifiedby']);
                         }
                     }
                 }
             }
             $menuNameArray = $activitylog_model->getMenuNamesByIds($menuArray);
             $userNameArray = $activitylog_model->getuserNamesByIds($userArray);
             if (count($activityLogData) > 0) {
                 foreach ($activityLogData as $key => $activitylog) {
                     if (in_array('menuname', $selectColumns)) {
                         $finalArray[$key]['menuname'] = isset($menuNameArray[$activitylog['menuId']]) ? $menuNameArray[$activitylog['menuId']]['name'] : '';
                     }
                     if (in_array('username', $selectColumns)) {
                         $finalArray[$key]['username'] = isset($userNameArray[$activitylog['last_modifiedby']]) ? $userNameArray[$activitylog['last_modifiedby']]['userfullname'] : '';
                     }
                     if (in_array('empId', $selectColumns)) {
                         $finalArray[$key]['empId'] = isset($userNameArray[$activitylog['last_modifiedby']]) ? $userNameArray[$activitylog['last_modifiedby']]['employeeId'] : '';
                     }
                     if (in_array('useraction', $selectColumns)) {
                         $finalArray[$key]['useraction'] = $action[$activitylog['user_action']];
                     }
                     if (in_array('modifieddate', $selectColumns)) {
                         $finalArray[$key]['modifieddate'] = sapp_Global::getDisplayDate($activitylog['last_modifieddate']);
                     }
                 }
             }
         } else {
             // with search values from form
             $searchQuery = '';
             if ($this->_request->getParam('menu') != '') {
                 $searchQuery .= ' menuId =' . intval($this->_request->getParam('menu')) . ' AND';
             }
             if ($this->_request->getParam('useraction') != '') {
                 $searchQuery .= ' user_action =' . intval($this->_request->getParam('useraction')) . ' AND';
             }
             if ($this->_request->getParam('hiddenusername') != '') {
                 $username = $this->_request->getParam('hiddenusername');
                 //userid in request
                 $searchQuery .= ' log_details Like \'%"userid":"' . $username . '"%\' AND';
             }
             if ($this->_request->getParam('modifieddate') != '') {
                 $date = sapp_Global::change_date($this->_request->getParam('modifieddate'), 'database');
                 $date1 = str_replace('-', '/', $date);
                 $onedayafter = date('Y-m-d', strtotime($date1 . "+1 days"));
                 $onedaybefore = date('Y-m-d', strtotime($date1 . "-1 days"));
                 $searchQuery .= '(log_details Like "%' . $onedaybefore . '%" or log_details Like "%' . $date . '%" or log_details Like "%' . $onedayafter . '%")';
             }
             if ($searchQuery != '') {
                 $searchQuery = rtrim($searchQuery, " AND");
             }
             $activityLogData = $logmanager_model->getLogManagerDataReport('last_modifieddate', 'Desc', '', '', $searchQuery, array('*'));
             /*looping jsonlogs */
             if (count($activityLogData) > 0) {
                 $userArray = array();
                 $menuArray = array();
                 $logJsonArray = array();
                 $jsonCount = 0;
                 $index = 0;
                 foreach ($activityLogData as $activitylog) {
                     $logdetails = '{"testjson":[' . $activitylog['log_details'] . ']}';
                     $logarr = @get_object_vars(json_decode($logdetails));
                     if (!empty($logarr)) {
                         $logarr['testjson'] = array_reverse($logarr['testjson']);
                         $jsonCount = count($logarr['testjson']);
                     }
                     if ($jsonCount > 0 && isset($logarr['testjson']) && !empty($logarr['testjson'])) {
                         foreach ($logarr['testjson'] as $key => $curr) {
                             $currArray = @get_object_vars($curr);
                             /*userid and date check with form and json values*/
                             $flag = false;
                             if ($this->_request->getParam('modifieddate') != '') {
                                 $currArrayTemp = sapp_Global::getGMTformatdate($currArray['date']);
                                 $pos = strpos($currArrayTemp, $date);
                                 $flag = $pos !== false ? false : true;
                             }
                             if ($this->_request->getParam('hiddenusername') != '' && $username != $currArray['userid'] || $flag) {
                                 continue;
                             }
                             /*end userid and date check*/
                             $logJsonArray[$index]['userid'] = $currArray['userid'] != '' ? $currArray['userid'] : 1;
                             $logJsonArray[$index]['date'] = $currArray['date'];
                             $datesort[$index] = $currArray['date'];
                             // to sort by date
                             if (!in_array($currArray['userid'], $userArray)) {
                                 array_push($userArray, $currArray['userid']);
                             }
                             if (isset($activitylog['menuId'])) {
                                 if (!in_array($activitylog['menuId'], $menuArray)) {
                                     array_push($menuArray, $activitylog['menuId']);
                                 }
                             }
                             $logJsonArray[$index]['menu'] = $activitylog['menuId'];
                             $logJsonArray[$index]['action'] = $action[(string) $activitylog['user_action']];
                             $actionsort[$index] = $action[(string) $activitylog['user_action']];
                             $index++;
                         }
                     }
                 }
                 $menuNameArray = $activitylog_model->getMenuNamesByIds($menuArray);
                 $userNameArray = $activitylog_model->getuserNamesByIds($userArray);
                 $lastpage = ceil(count($logJsonArray) / $perPage);
                 $endIndex = intval($perPage);
                 if ($pageNo != 1) {
                     $startIndex = (intval($pageNo) - 1) * intval($perPage);
                 } else {
                     $startIndex = 0;
                 }
                 if (count($logJsonArray) > 0) {
                     if ($this->_request->getParam('sortby') != '') {
                         $sortby = $this->_request->getParam('sortby');
                         $order = $this->_request->getParam('order');
                         $orderby = $order == 'asc' ? SORT_ASC : SORT_DESC;
                         if ($sortby == 'user_action' || $sortby == 'last_modifieddate') {
                             // can sort by logJsonArray
                             if ($sortby == 'user_action') {
                                 array_multisort($actionsort, $orderby, $logJsonArray);
                             }
                             if ($sortby == 'last_modifieddate') {
                                 array_multisort($datesort, $orderby, $logJsonArray);
                             }
                             /* only perpage no of rows */
                             $splitArray = array_slice($logJsonArray, $startIndex, $endIndex);
                             foreach ($splitArray as $key => $logjson) {
                                 if (in_array('menuname', $selectColumns)) {
                                     $finalArray[$key]['menuname'] = isset($menuNameArray[(string) $logjson['menu']]) ? $menuNameArray[(string) $logjson['menu']]['name'] : '';
                                 }
                                 if (in_array('username', $selectColumns)) {
                                     $finalArray[$key]['username'] = isset($userNameArray[(string) $logjson['userid']]) ? $userNameArray[(string) $logjson['userid']]['userfullname'] : '';
                                 }
                                 if (in_array('empId', $selectColumns)) {
                                     $finalArray[$key]['empId'] = isset($userNameArray[(string) $logjson['userid']]) ? $userNameArray[(string) $logjson['userid']]['employeeId'] : '';
                                 }
                                 if (in_array('useraction', $selectColumns)) {
                                     $finalArray[$key]['useraction'] = $logjson['action'];
                                 }
                                 if (in_array('modifieddate', $selectColumns)) {
                                     $finalArray[$key]['modifieddate'] = sapp_Global::getDisplayDate($logjson['date']);
                                 }
                             }
                         } else {
                             $totalArray = array();
                             foreach ($logJsonArray as $key => $logjson) {
                                 if (in_array('menuname', $selectColumns)) {
                                     $totalArray[$key]['menuname'] = isset($menuNameArray[(string) $logjson['menu']]) ? $menuNameArray[(string) $logjson['menu']]['name'] : '';
                                 }
                                 $menunameSort[$key] = $totalArray[$key]['menuname'];
                                 if (in_array('username', $selectColumns)) {
                                     $totalArray[$key]['username'] = isset($userNameArray[(string) $logjson['userid']]) ? $userNameArray[(string) $logjson['userid']]['userfullname'] : '';
                                 }
                                 $usernameSort[$key] = $totalArray[$key]['username'];
                                 if (in_array('empId', $selectColumns)) {
                                     $totalArray[$key]['empId'] = isset($userNameArray[(string) $logjson['userid']]) ? $userNameArray[(string) $logjson['userid']]['employeeId'] : '';
                                 }
                                 $empIdSort[$key] = $totalArray[$key]['empId'];
                                 if (in_array('useraction', $selectColumns)) {
                                     $totalArray[$key]['useraction'] = $logjson['action'];
                                 }
                                 if (in_array('modifieddate', $selectColumns)) {
                                     $totalArray[$key]['modifieddate'] = sapp_Global::getDisplayDate($logjson['date']);
                                 }
                             }
                             if ($sortby == 'userfullname') {
                                 array_multisort($usernameSort, $orderby, $totalArray);
                             }
                             if ($sortby == 'employeeId') {
                                 array_multisort($empIdSort, $orderby, $totalArray);
                             }
                             if ($sortby == 'menuname') {
                                 array_multisort($menunameSort, $orderby, $totalArray);
                             }
                             /* only perpage no of rows */
                             if (count($totalArray) >= intval($perPage)) {
                                 $finalArray = array_slice($totalArray, $startIndex, $endIndex);
                             } else {
                                 $finalArray = $totalArray;
                             }
                         }
                     }
                 }
             }
         }
         if ($this->getRequest()->getPost()) {
             // To generate PDF START
             if ($this->_request->getParam('generatereport') == 'pdf') {
                 $this->generateActivityLogPdf($finalArray, $selectColumns);
             }
         }
         if ($this->_request->getParam('generatereport') == 'xcel') {
             //xcel generation
             foreach ($selectFields as $key => $val) {
                 foreach ($selectColumns as $column) {
                     if ($column == $key) {
                         $selectColumnLabels[$key] = $val;
                     }
                 }
             }
             sapp_Global::export_to_excel($finalArray, $selectColumnLabels, 'Activitylog Report.xlsx');
             exit;
         }
         $activitylogreport_form = new Default_Form_activitylogreport();
         $this->view->form = $activitylogreport_form;
         $this->view->totalselectfields = $selectFields;
         $this->view->tabkeys = implode(',', $selectColumns);
         $this->view->activitylogData = $finalArray;
         $this->view->pageNo = $pageNo;
         $this->view->perPage = $perPage;
         $this->view->sortBy = $sortby;
         $this->view->order = $order;
         $this->view->lastPageNo = $lastpage;
     } catch (Exception $e) {
         echo $e->getMessage();
     }
 }