Example #1
0
 /**
  * Logs the request in the custom_queue_job/custom_queue_request tables.
  * If the request is the same for a given date, only add entry to custom_queue_request.
  * @param $email
  * @return string
  * @throws Exception
  */
 function queueRequest($email)
 {
     try {
         // validateRequest:
         if (!$this->validateRequest()) {
             return $this->response;
         }
         if (!isset($this->requestDataSet)) {
             // Prepare dataSet:
             $this->setRequestDataSet();
         }
         $queue_request_token = NULL;
         // Get queue request:
         $queue_criteria = $this->getQueueCriteria($this->requestSearchCriteria->getCriteria());
         $queue_search_results = QueueUtil::searchQueue($email, $queue_criteria);
         // Different user, same request, add entry in custom_queue_request only
         if (isset($queue_search_results['job_id'])) {
             // Generate Token:
             $token = $this->generateToken();
             // Create queue request:
             QueueUtil::createQueueRequest($token, $email, $queue_search_results['job_id']);
             //Update the last_update_date of the existing job
             QueueUtil::updateJobTimestamp($queue_search_results);
             return $token;
         }
         $sql_query = get_db_query(TRUE, $this->requestDataSet->name, $this->requestDataSet->columns, $this->requestDataSet->parameters, $this->requestDataSet->sortColumn, $this->requestDataSet->startWith, $this->requestDataSet->limit, NULL);
         if (isset($this->requestDataSet->adjustSql)) {
             eval($this->requestDataSet->adjustSql);
         }
         $token = $this->generateToken();
         $criteria = $this->requestSearchCriteria->getCriteria();
         // Prepare new queue request:
         $queue_request['token'] = $token;
         $queue_request['email'] = $email;
         $queue_request['name'] = strtolower($criteria['global']['type_of_data']);
         $queue_request['request'] = $queue_criteria;
         $queue_request['request_criteria'] = json_encode($criteria);
         if ($this->requestSearchCriteria->getUserCriteria()) {
             $queue_request['user_criteria'] = json_encode($this->requestSearchCriteria->getUserCriteria());
         }
         $queue_request['data_command'] = $sql_query;
         QueueUtil::createNewQueueRequest($queue_request);
         return $token;
     } catch (Exception $e) {
         LogHelper::log_error('Error Processing Queue Request: ' . $e);
         throw new Exception('Error Processing Queue Request.');
     }
 }