Exemplo n.º 1
0
 /**
  * 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;
 }