public static function getRevision($uri, $poid, $roid, $userId = -1) { $server = BIMsie::getServerByUri($uri, $userId); if ($server === false) { return false; } else { $userId = $userId == -1 ? get_current_user_id() : $userId; $bimsieCache = BIMsie::getCacheByUri($uri, $userId); if ($bimsieCache === false || !isset($bimsieCache['projects'][$poid])) { $project = BIMsie::getProject($uri, $poid, $userId); if ($project) { $bimsieCache = BIMsie::getCacheByUri($uri, $userId); if (isset($server['token']) && isset($server['tokenValid']) && $server['tokenValid'] > time()) { $revisions = BIMsie::request($server['uri'], $server['token'], 'Bimsie1ServiceInterface', 'getAllRevisionsOfProject', array('poid' => $poid)); $error = BIMsie::getErrorMessage($revisions); if ($error === false && isset($revisions) && isset($revisions->response) && isset($revisions->response->result)) { $revisions = $revisions->response->result; $bimsieCache['projects'][$poid]->revisions = array(); foreach ($revisions as $revision) { $revision->dateString = date('d-m-Y H:i', $revision->date * 0.001); $revision->name = $revision->dateString . ' - ' . $revision->comment; $bimsieCache['projects'][$poid]->revisions[$revision->oid] = $revision; } BIMsie::updateCache($bimsieCache, $userId); if (isset($bimsieCache['projects'][$poid]->revisions[$roid])) { return $bimsieCache['projects'][$poid]->revisions[$roid]; } else { return false; } } else { return false; } } else { return false; } } else { return false; } } elseif (isset($bimsieCache['projects']) && isset($bimsieCache['projects'][$poid]) && isset($bimsieCache['projects'][$poid]->revisions) && isset($bimsieCache['projects'][$poid]->revisions[$roid])) { return $bimsieCache['projects'][$poid]->revisions[$roid]; } else { if (!isset($bimsieCache['projects'][$poid]->revisions) || !isset($bimsieCache['projects'][$poid]->revisions[$roid])) { if (isset($server['token']) && isset($server['tokenValid']) && $server['tokenValid'] > time()) { $revisions = BIMsie::request($server['uri'], $server['token'], 'Bimsie1ServiceInterface', 'getAllRevisionsOfProject', array('poid' => $poid)); $error = BIMsie::getErrorMessage($revisions); if ($error === false && isset($revisions) && isset($revisions->response) && isset($revisions->response->result)) { $revisions = $revisions->response->result; $bimsieCache['projects'][$poid]->revisions = array(); foreach ($revisions as $revision) { $revision->dateString = date('d-m-Y H:i', $revision->date * 0.001); $revision->name = $revision->dateString . ' - ' . $revision->comment; $bimsieCache['projects'][$poid]->revisions[$revision->oid] = $revision; } BIMsie::updateCache($bimsieCache, $userId); if (isset($bimsieCache['projects'][$poid]->revisions[$roid])) { return $bimsieCache['projects'][$poid]->revisions[$roid]; } else { return false; } } else { return false; } } else { return false; } } else { return false; } } } }