conn = $db; } private function getSurveyUrl() { $query = "SELECT " . $this->tableUrls . ".survey_url, " . $this->tableUrls . ".our_id, " . $this->tableUrls . ".status as linkStatus," . $this->tableProjects . ".status FROM " . $this->tableUrls . " LEFT JOIN " . $this->tableProjects . " ON " . $this->tableProjects . ".pid = " . $this->tableUrls . ".pid WHERE " . $this->tableUrls . "." . $this->attributeName . "='" . $this->attributeValue . "' AND " . $this->tableUrls . ".pid='" . $this->pid . "' AND " . $this->tableUrls . ".cid='" . $this->cid . "'"; $stmt = $this->conn->prepare($query); $stmt->execute(); $num = $stmt->rowCount(); if ($num > 0) { $row = $stmt->fetch(PDO::FETCH_ASSOC); return $row; } return NULL; } private function getParams() { $query = "SELECT liveAttributes FROM " . $this->tableProjects . " WHERE " . $this->tableProjects . ".pid='" . $this->pid . "'"; $stmt = $this->conn->prepare($query); $stmt->execute(); $num = $stmt->rowCount(); if ($num > 0) { $row = $stmt->fetch(PDO::FETCH_ASSOC); return $row["liveAttributes"]; } return NULL; } private function getTrackingQuery($params) { $columnArray = array(); if ($params) { $parts = parse_url($this->receivedUrl); parse_str($parts['query'], $urlParams); $paramsArray = explode(",", $params); foreach ($paramsArray as $key => $val) { if ($urlParams[$val]) { $columnValue = $val . "=" . $urlParams[$val]; array_push($columnArray, "liveparam" . $key + 1 . "='" . $columnValue . "'"); } } } if (count($columnArray) == 0 && !empty($_COOKIE[TRACKING_COOKIE_NAME])) { $cookieValue = $_COOKIE[TRACKING_COOKIE_NAME]; if ($cookieValue) { array_push($columnArray, "our_id='" . $cookieValue . "'"); } } $columnQuery = implode("AND", $columnArray); return $columnQuery; } private function getOpenLink() { $query = "SELECT " . $this->tableUrls . ".survey_url, " . $this->tableUrls . ".our_id, " . $this->tableUrls . ".status as linkStatus," . $this->tableProjects . ".status FROM " . $this->tableUrls . " LEFT JOIN " . $this->tableProjects . " ON " . $this->tableProjects . ".pid = " . $this->tableUrls . ".pid WHERE " . $this->tableUrls . ".status='open' AND " . $this->tableUrls . ".pid='" . $this->pid . "' AND " . $this->tableUrls . ".cid='" . $this->cid . "' LIMIT 1"; $stmt = $this->conn->prepare($query); $stmt->execute(); $num = $stmt->rowCount(); if ($num > 0) { $row = $stmt->fetch(PDO::FETCH_ASSOC); return $row; } else { return array( "linkStatus" => "noOpenLink" ); }; } public function start() { if ($this->openAttributes) { $data = $this->getOpenLink(); if ($data["linkStatus"] == "noOpenLink") { return $data; } $query = "UPDATE " . $this->tableUrls . " SET status='started', starttime = NOW(), " . $this->attributeName . "='" . $this->attributeValue . "' WHERE our_id='" . $data["our_id"] . "'"; $stmt = $this->conn->prepare($query); if ($stmt->execute()) { return $data; } } else { $data = $this->getSurveyUrl(); if (!empty($data)) { if ($data["status"] == "close" || ($data["linkStatus"] != "started" && $data["linkStatus"] != "open")) { return $data; } $query = "UPDATE $this->tableUrls SET status='started' WHERE $this->attributeName = '" . $this->attributeValue . "' AND " . $this->tableUrls . ".cid='" . $this->cid . "' AND " . $this->tableUrls . ".pid='" . $this->pid . "'"; $stmt = $this->conn->prepare($query); if ($stmt->execute()) { return $data; } } } return NULL; } public function updateStatus() { $result = array( "status" => false, "data" => NULL ); $params = $this->getParams(); $trackingQuery = $this->getTrackingQuery($params); if (!empty($trackingQuery)) { $query = "UPDATE $this->tableUrls SET status='" . $this->status . "', endtime = NOW() WHERE pid='" . $this->pid . "' AND " . $trackingQuery; $stmt = $this->conn->prepare($query); if ($stmt->execute()) { $result["status"] = true; $redirectsQuery = "SELECT " . $this->tableUrls . ".param1, " . $this->tableUrls . ".param2, " . $this->tableUrls . ".param3, " . $this->tableVendorDetails . ".complete, " . $this->tableVendorDetails . ".screenout, " . $this->tableVendorDetails . ".quotafull FROM " . $this->tableUrls . " LEFT JOIN " . $this->tableVendorDetails . " ON " . $this->tableUrls . ".pid = " . $this->tableVendorDetails . ".pid AND " . $this->tableUrls . ".cid = " . $this->tableVendorDetails . ".cid WHERE " . $this->tableUrls . ".pid='" . $this->pid . "' AND " . $trackingQuery; $stmtRedirect = $this->conn->prepare($redirectsQuery); $stmtRedirect->execute(); $num = $stmtRedirect->rowCount(); if ($num > 0) { $row = $stmtRedirect->fetch(PDO::FETCH_ASSOC); $result["data"] = $row; } } return $result; } } }