| 
									
										
										
										
											2018-04-10 20:30:11 +02:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-11 19:49:35 +02:00
										 |  |  | namespace Grocy\Services; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ApplicationService extends BaseService | 
					
						
							| 
									
										
										
										
											2018-04-10 20:30:11 +02:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-04-11 19:49:35 +02:00
										 |  |  | 	private $InstalledVersion; | 
					
						
							| 
									
										
										
										
											2020-03-01 23:47:47 +07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-11 19:49:35 +02:00
										 |  |  | 	public function GetInstalledVersion() | 
					
						
							| 
									
										
										
										
											2018-04-10 20:30:11 +02:00
										 |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2018-04-11 19:49:35 +02:00
										 |  |  | 		if ($this->InstalledVersion == null) | 
					
						
							| 
									
										
										
										
											2018-04-10 20:30:11 +02:00
										 |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2019-09-18 17:27:47 +02:00
										 |  |  | 			$this->InstalledVersion = json_decode(file_get_contents(__DIR__ . '/../version.json')); | 
					
						
							| 
									
										
										
										
											2020-03-01 23:47:47 +07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-18 16:18:15 +02:00
										 |  |  | 			if (GROCY_MODE === 'prerelease') | 
					
						
							|  |  |  | 			{ | 
					
						
							|  |  |  | 				$commitHash = trim(exec('git log --pretty="%h" -n1 HEAD')); | 
					
						
							|  |  |  | 				$commitDate = trim(exec('git log --date=iso --pretty="%cd" -n1 HEAD')); | 
					
						
							| 
									
										
										
										
											2020-03-01 23:47:47 +07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-18 17:27:47 +02:00
										 |  |  | 				$this->InstalledVersion->Version = "pre-release-$commitHash"; | 
					
						
							|  |  |  | 				$this->InstalledVersion->ReleaseDate = substr($commitDate, 0, 19); | 
					
						
							| 
									
										
										
										
											2019-09-18 16:18:15 +02:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2018-04-10 20:30:11 +02:00
										 |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-11 19:49:35 +02:00
										 |  |  | 		return $this->InstalledVersion; | 
					
						
							| 
									
										
										
										
											2018-04-10 20:30:11 +02:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2019-02-09 13:41:40 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	public function GetSystemInfo() | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		$pdo = new \PDO('sqlite::memory:'); | 
					
						
							|  |  |  | 		$sqliteVersion = $pdo->query('SELECT sqlite_version()')->fetch()[0]; | 
					
						
							|  |  |  | 		$pdo = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		return array( | 
					
						
							|  |  |  | 			'grocy_version' => $this->GetInstalledVersion(), | 
					
						
							|  |  |  | 			'php_version' => phpversion(), | 
					
						
							|  |  |  | 			'sqlite_version' =>  $sqliteVersion | 
					
						
							|  |  |  | 		); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2019-03-09 15:54:16 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	public function GetChangelog() | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		$changelogItems = array(); | 
					
						
							|  |  |  | 		foreach(glob(__DIR__ . '/../changelog/*.md') as $file) | 
					
						
							|  |  |  | 		{ | 
					
						
							|  |  |  | 			$fileName = basename($file); | 
					
						
							|  |  |  | 			$fileNameParts = explode('_', $fileName); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			$fileContent = file_get_contents($file); | 
					
						
							|  |  |  | 			$version = $fileNameParts[1]; | 
					
						
							|  |  |  | 			$releaseDate = explode('.', $fileNameParts[2])[0]; | 
					
						
							|  |  |  | 			$releaseNumber = intval($fileNameParts[0]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			$changelogItems[] = array( | 
					
						
							|  |  |  | 				'version' => $version, | 
					
						
							|  |  |  | 				'release_date' => $releaseDate, | 
					
						
							|  |  |  | 				'body' => $fileContent, | 
					
						
							|  |  |  | 				'release_number' => $releaseNumber | 
					
						
							|  |  |  | 			); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// Sort changelog items to have the changelog descending by newest version
 | 
					
						
							|  |  |  | 		usort($changelogItems, function($a, $b) | 
					
						
							|  |  |  | 		{ | 
					
						
							|  |  |  | 			if ($a['release_number'] == $b['release_number']) | 
					
						
							|  |  |  | 			{ | 
					
						
							|  |  |  | 				return 0; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			return ($a['release_number'] < $b['release_number']) ? 1 : -1; | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		return array( | 
					
						
							|  |  |  | 			'changelog_items' => $changelogItems, | 
					
						
							|  |  |  | 			'newest_release_number' => $changelogItems[0]['release_number'] | 
					
						
							|  |  |  | 		); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-04-10 20:30:11 +02:00
										 |  |  | } |