| 
									
										
										
										
											2020-09-01 14:14:19 +00:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2022-04-15 11:34:01 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-01 14:14:19 +00:00
										 |  |  | declare(strict_types=1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Nextcloud - Social Support | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This file is licensed under the Affero General Public License version 3 or | 
					
						
							|  |  |  |  * later. See the COPYING file. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @author Maxence Lange <maxence@artificial-owl.com> | 
					
						
							|  |  |  |  * @copyright 2018, Maxence Lange <maxence@artificial-owl.com> | 
					
						
							|  |  |  |  * @license GNU AGPL version 3 or any later version | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU Affero General Public License as | 
					
						
							|  |  |  |  * published by the Free Software Foundation, either version 3 of the | 
					
						
							|  |  |  |  * License, or (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |  * GNU Affero General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace OCA\Social\Db; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use daita\MySmallPhpTools\Traits\TArrayTools; | 
					
						
							|  |  |  | use OCA\Social\Exceptions\InstanceDoesNotExistException; | 
					
						
							|  |  |  | use OCA\Social\Model\ActivityPub\ACore; | 
					
						
							|  |  |  | use OCA\Social\Model\Instance; | 
					
						
							| 
									
										
										
										
											2022-05-11 17:13:46 +00:00
										 |  |  | use OCP\DB\QueryBuilder\IQueryBuilder; | 
					
						
							| 
									
										
										
										
											2020-09-01 14:14:19 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Class InstancesRequest | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @package OCA\Social\Db | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | class InstancesRequest extends InstancesRequestBuilder { | 
					
						
							|  |  |  | 	use TArrayTools; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/** | 
					
						
							|  |  |  | 	 * @param Instance $instance | 
					
						
							|  |  |  | 	 * TODO: store instance in db | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  | 	public function save(Instance $instance) { | 
					
						
							|  |  |  | //		$now = new DateTime('now');
 | 
					
						
							|  |  |  | //		$instance->setCreation($now->getTimestamp());
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$qb = $this->getInstanceInsertSql(); | 
					
						
							| 
									
										
										
										
											2022-05-11 17:13:46 +00:00
										 |  |  | 		$qb->setValue('uri', $qb->createNamedParameter($instance->getUri())) | 
					
						
							|  |  |  | 			->setValue('local', $qb->createNamedParameter($instance->isLocal()), IQueryBuilder::PARAM_BOOL) | 
					
						
							|  |  |  | 			->setValue('title', $qb->createNamedParameter($instance->getTitle())) | 
					
						
							|  |  |  | 			->setValue('version', $qb->createNamedParameter($instance->getVersion())) | 
					
						
							|  |  |  | 			->setValue('short_description', $qb->createNamedParameter($instance->getShortDescription())) | 
					
						
							|  |  |  | 			->setValue('description', $qb->createNamedParameter($instance->getDescription())) | 
					
						
							|  |  |  | 			->setValue('email', $qb->createNamedParameter($instance->getEmail())) | 
					
						
							|  |  |  | 			->setValue('urls', $qb->createNamedParameter(json_encode($instance->getUrls()))) | 
					
						
							|  |  |  | 			->setValue('stats', $qb->createNamedParameter(json_encode($instance->getStats()))) | 
					
						
							|  |  |  | 			->setValue('usage', $qb->createNamedParameter(json_encode($instance->getUsage()))) | 
					
						
							|  |  |  | 			->setValue('image', $qb->createNamedParameter($instance->getImage())) | 
					
						
							| 
									
										
										
										
											2022-05-11 17:13:46 +00:00
										 |  |  | 			->setValue('languages', $qb->createNamedParameter(json_encode($instance->getLanguages()))) | 
					
						
							| 
									
										
										
										
											2022-05-11 17:13:46 +00:00
										 |  |  | 			->setValue('account_prim', $qb->createNamedParameter($instance->getAccountPrim() ? $this->prim($instance->getAccountPrim()) : null)); | 
					
						
							| 
									
										
										
										
											2022-05-11 16:22:54 +00:00
										 |  |  | 		$qb->executeStatement(); | 
					
						
							| 
									
										
										
										
											2020-09-01 14:14:19 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/** | 
					
						
							|  |  |  | 	 * @param int $format | 
					
						
							|  |  |  | 	 * | 
					
						
							|  |  |  | 	 * @return Instance | 
					
						
							|  |  |  | 	 * @throws InstanceDoesNotExistException | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  | 	public function getLocal(int $format = ACore::FORMAT_ACTIVITYPUB): Instance { | 
					
						
							|  |  |  | 		$qb = $this->getInstanceSelectSql($format); | 
					
						
							| 
									
										
										
										
											2022-05-11 17:13:46 +00:00
										 |  |  | 		$qb->linkToCacheActors('ca', 'account_prim', false); | 
					
						
							| 
									
										
										
										
											2020-09-01 14:14:19 +00:00
										 |  |  | 		$qb->limitToDBFieldInt('local', 1); | 
					
						
							|  |  |  | 		$qb->leftJoinCacheDocuments('icon_id', 'ca'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		return $this->getInstanceFromRequest($qb); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } |