/** * Get library version from the database */ public static function getVersion($libraryID) { // Default empty library if ($libraryID === 0) { return 0; } $sql = "SELECT version FROM shardLibraries WHERE libraryID=?"; $version = Zotero_DB::valueQuery($sql, $libraryID, Zotero_Shards::getByLibraryID($libraryID)); // TEMP: Remove after classic sync, and use shardLibraries only for version info? if (!$version || $version == 1) { $shardID = Zotero_Shards::getByLibraryID($libraryID); $readOnly = Zotero_DB::isReadOnly($shardID); $sql = "SELECT lastUpdated, version FROM libraries WHERE libraryID=?"; $row = Zotero_DB::rowQuery($sql, $libraryID); $sql = "UPDATE shardLibraries SET version=?, lastUpdated=? WHERE libraryID=?"; Zotero_DB::query($sql, array($row['version'], $row['lastUpdated'], $libraryID), $shardID, ['writeInReadMode' => true]); $sql = "SELECT IFNULL(IF(MAX(version)=0, 1, MAX(version)), 1) FROM items WHERE libraryID=?"; $version = Zotero_DB::valueQuery($sql, $libraryID, $shardID); $sql = "UPDATE shardLibraries SET version=? WHERE libraryID=?"; Zotero_DB::query($sql, [$version, $libraryID], $shardID, ['writeInReadMode' => true]); } // Store original version for use by getOriginalVersion() if (!isset(self::$originalVersions[$libraryID])) { self::$originalVersions[$libraryID] = $version; } return $version; }