/** * This function query the status of the ticket of a queue, if it is unsolved returns NULL, * but if it is solved it will get the data to be sync in the client. * * @return mixed returns an array with the data to be sync in the client, or NULL it the ticket * is unsolved or false if an error exists */ protected function getData() { global $arrConf; $dbCalendar = $this->_getDB($arrConf['dsn_conn_database']); $pCalendar = new paloSantoCalendar($dbCalendar); $data_ticket = $pCalendar->getDataTicket($this->_ticket, $this->_id_user); if (is_null($data_ticket)) { $this->errMsg["fc"] = 'DBERROR'; $this->errMsg["fm"] = 'Database operation failed'; $this->errMsg["fd"] = 'Unable to write data - ' . $pCalendar->_DB->errMsg; $this->errMsg["cn"] = get_class($pCalendar); return false; } elseif (!$data_ticket) { $this->errMsg["fc"] = 'PARAMERROR'; $this->errMsg["fm"] = 'Wrong ticket'; $this->errMsg["fd"] = "The ticket {$this->_ticket} does not exist or does not belong to you"; $this->errMsg["cn"] = get_class($pCalendar); return false; } else { if ($data_ticket["status"] != "OK") { return null; } else { $result["status"] = "OK"; $json = new Services_JSON(); $data = $json->decode($data_ticket["data"]); if (!isset($data->last_sync) || !isset($data->events)) { $remove_queue = $pCalendar->removeQueue($this->_ticket); if ($remove_queue === false) { $this->errMsg["fc"] = 'DBERROR'; $this->errMsg["fm"] = 'Database operation failed'; $this->errMsg["fd"] = 'Unable to delete data - ' . $pCalendar->_DB->errMsg; $this->errMsg["cn"] = get_class($pCalendar); return false; } $this->errMsg["fc"] = 'PARAMERROR'; $this->errMsg["fm"] = 'Wrong data'; $this->errMsg["fd"] = "The data of the ticket {$this->_ticket} is wrong or corrupted. This data has to be a JSON string containing the keywords \"last_sync\" and \"contacts\". The ticket will be deleted"; $this->errMsg["cn"] = get_class($pCalendar); return false; } if (!is_array($data->events)) { $remove_queue = $pCalendar->removeQueue($this->_ticket); if ($remove_queue === false) { $this->errMsg["fc"] = 'DBERROR'; $this->errMsg["fm"] = 'Database operation failed'; $this->errMsg["fd"] = 'Unable to delete data - ' . $pCalendar->_DB->errMsg; $this->errMsg["cn"] = get_class($pCalendar); return false; } $this->errMsg["fc"] = 'PARAMERROR'; $this->errMsg["fm"] = 'Wrong data'; $this->errMsg["fd"] = "The data of the contacts in ticket {$this->_ticket} is wrong or corrupted. It has to be an array. The ticket will be deleted"; $this->errMsg["cn"] = get_class($pCalendar); return false; } $last_sync = $data->last_sync; if (isset($data_ticket["response_data"]) && !empty($data_ticket["response_data"])) { $response_data = $json->decode($data_ticket["response_data"]); } else { $response_data = array(); } $events = $pCalendar->getEventsAfterSync($last_sync, $data->events, $this->_id_user, $response_data); if ($events === false) { $this->errMsg["fc"] = 'DBERROR'; $this->errMsg["fm"] = 'Database operation failed'; $this->errMsg["fd"] = 'Unable to get data - ' . $pCalendar->_DB->errMsg; $this->errMsg["cn"] = get_class($pCalendar); return false; } else { $remove_queue = $pCalendar->removeQueue($this->_ticket); if ($remove_queue === false) { $this->errMsg["fc"] = 'DBERROR'; $this->errMsg["fm"] = 'Database operation failed'; $this->errMsg["fd"] = 'Unable to delete data - ' . $pCalendar->_DB->errMsg; $this->errMsg["cn"] = get_class($pCalendar); return false; } else { $result["last_sync"] = time(); $result["events"] = $events; return $result; } } } } }