private function handleUpdate($requestData)
 {
     if ($this->authenticator->userAuthenticates($requestData["email"], $requestData["auth-key"])) {
         $versioning = new DIM_Versioning();
         if ($versioning->databaseNeedsUpdating()) {
             $querymanager = new DIM_QueryManager();
             $querymanager->beginUpdate();
             return "1:update-success";
         }
         return "0:no-update-available";
     }
     return "0:unauthed";
 }
 private function __indexPage()
 {
     $versioning = new DIM_Versioning();
     $link = new XMLElement('link');
     $this->addElementToHead($link, 500);
     $this->setPageType('table');
     $this->appendSubheading(__('Database Updating'));
     $fieldSet = new XMLElement('fieldset', '', array('class' => 'settings'));
     $fieldSet->appendChild(new XMLElement('legend', 'Database Update'));
     $message = new XMLElement('div');
     if ($versioning->databaseNeedsUpdating()) {
         $querymanager = new DIM_QueryManager();
         $querymanager->beginUpdate();
         $message->appendChild(new XMLElement('h2', "Update Completed!"));
         redirect('../?message=update-success');
     } else {
         $message->appendChild(new XMLElement('h2', "Database Already Up To Date"));
     }
     $fieldSet->appendChild($message);
     $this->Form->appendChild($fieldSet);
 }
 public function requestCheckin(&$error, $newVersion, $commitMessage)
 {
     $config = $this->getConfiguration();
     $versioning = new DIM_Versioning();
     $requestData = array("action" => "checkin", "email" => $config["client"]["user-email"], "auth-key" => $config["client"]["auth-key"], "version" => $newVersion, "old-version" => $versioning->getLatestVersion(), "commit-message" => $commitMessage);
     $rawResponse = Network_IO::makeServerRequest($config["client"]["server-host"], $requestData);
     $responseParts = explode(":", $rawResponse);
     if ($responseParts[0] == "1") {
         // successful checkin!
         $this->state->checkIn();
         $this->logger->addLogItem("Database Checked In", "state");
         $queryManager = new DIM_QueryManager();
         $versionFileName = $queryManager->makeVersionFile($responseParts[1], $responseParts[2]);
         $this->logger->addLogItem("Version file {$versionFileName} created", "version");
         $newVersion = $versioning->addNewVersion($responseParts[1], $responseParts[2]);
         $this->logger->addLogItem("Database now at version {$newVersion}", "version");
         return true;
     } else {
         $error = $responseParts[1];
         return false;
     }
 }
 public function isUpToDate()
 {
     $sql = "SELECT * FROM tbl_dim_versions ORDER BY version DESC LIMIT 1";
     $latestVersion = $this->database->query($sql, RETURN_OBJECTS, true);
     if (count($latestVersion) == 0) {
         return true;
         //no versions yet!
     }
     if ($latestVersion[0]->state == 'completed') {
         $queryManager = new DIM_QueryManager();
         //check there aren't updates to be run
         if ($queryManager->checkForVersionFile($latestVersion[0]->version + 1)) {
             return false;
         }
         return true;
     } else {
         return false;
     }
 }
 public function processQuery($context)
 {
     /*
     	check actually needs to process query
     	
     	If client and checked out
     */
     if (strpos($context['page'][0], 'frontend') !== FALSE) {
         return;
     }
     if ($this->config->getExtensionMode() == 'client') {
         $stateManager = new DIM_StateManager("client");
         if ($stateManager->isCheckedOut()) {
             $queryManager = new DIM_QueryManager();
             $queryManager->logNewQuery(trim($context["query"]));
         }
     }
 }