示例#1
0
 public static function handler($requestData)
 {
     $requestStartTime = microtime(true);
     /* Checking the condition for this action is allowed to user (JS INJECTION ) */
     $userData = DB::getRow("?:users", "userID, accessLevel, permissions", "userID = '" . $GLOBALS['userID'] . "'");
     $Restrict = FALSE;
     if ($userData['accessLevel'] != 'admin') {
         if (function_exists('userRestrictChecking')) {
             $Restrict = userRestrictChecking($userData, $requestData);
         }
     }
     //$GLOBALS['printAll'] = true;
     $clearPrint = empty($GLOBALS['printAll']) ? true : false;
     if ($clearPrint) {
         ob_start();
     }
     $actionResult = $data = array();
     $action = $requestData['action'];
     $args = $requestData['args'];
     $siteIDs = $requestData['args']['siteIDs'];
     $params = $requestData['args']['params'];
     $extras = $requestData['args']['extras'];
     $requiredData = $requestData['requiredData'];
     $actionID = uniqid('', true);
     Reg::set('currentRequest.actionID', $actionID);
     if (!$Restrict) {
         //Checking restriction here
         if (manageClients::methodExists($action)) {
             manageCookies::cookieUnset('slowDownAjaxCallFrom');
             if (!empty($siteIDs)) {
                 if (function_exists('multiUserAccess')) {
                     multiUserAccess($siteIDs);
                 }
             }
             manageClients::execute($action, array('siteIDs' => $siteIDs, 'params' => $params, 'extras' => $extras));
             if (Reg::get('currentRequest.exitOnComplete') === true) {
                 if (Reg::get('settings.executeUsingBrowser') != 1) {
                     //to fix update notification going "everything up to date" for fsock users
                     executeJobs();
                 }
                 $exitOnCompleteT = microtime(true);
                 exitOnComplete();
                 $exitOnCompleteTT = microtime(true) - $exitOnCompleteT;
             }
             if (Reg::get('currentRequest.sendAfterAllLoad') === true) {
                 sendAfterAllLoad($requiredData);
             }
             $actionResult = self::getActionStatus($actionID, $action);
         }
         if (Reg::get('settings.executeUsingBrowser') != 1 && !defined('CRON_MODE') && !defined('IS_EXECUTE_FILE')) {
             // && !defined('CRON_MODE') && !defined('IS_EXECUTE_FILE') //panelRequestManager::handler() has been called in many places in app. inorder to avoid executeJobs()
             executeJobs();
         }
     }
     $data = self::requiredData($requiredData);
     $finalResponse = array();
     $finalResponse = array('actionResult' => $actionResult, 'data' => $data);
     if (empty($requestData['noGeneralCheck'])) {
         self::generalCheck($finalResponse);
     }
     $finalResponse['sendNextAjaxCallAfter'] = self::getSendNextAjaxCallAfter();
     $finalResponse['showBrowserCloseWarning'] = showBrowserCloseWarning();
     if ($clearPrint) {
         $printedText = ob_get_clean();
     }
     $finalResponse['debug'] = array('exitOnCompleteTimeTaken' => $exitOnCompleteTT, 'currentRequest.exitOnComplete' => var_export(Reg::get('currentRequest.exitOnComplete'), true), 'totalRequestTimeTaken' => microtime(true) - $requestStartTime);
     $finalResponse = self::changeToUTF8($finalResponse);
     return json_encode($finalResponse);
 }