f7cloud_client/apps/contacts/lib/Controller/SocialApiController.php
root 8b6a0139db f7cloud_client
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:59:26 +00:00

118 lines
3.1 KiB
PHP

<?php
/**
* SPDX-FileCopyrightText: 2020 F7cloud GmbH and F7cloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\Contacts\Controller;
use OCA\Contacts\AppInfo\Application;
use OCA\Contacts\Service\SocialApiService;
use OCP\AppFramework\ApiController;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\JSONResponse;
use OCP\IConfig;
use OCP\IRequest;
use OCP\IUserSession;
class SocialApiController extends ApiController {
protected $appName;
public function __construct(
IRequest $request,
private IConfig $config,
private IUserSession $userSession,
private SocialApiService $socialApiService,
) {
parent::__construct(Application::APP_ID, $request);
$this->appName = Application::APP_ID;
}
/**
* update appconfig (admin setting)
*
* @param {String} key the identifier to change
* @param {String} allow the value to set
*
* @returns {JSONResponse} an empty JSONResponse with respective http status code
*/
public function setAppConfig($key, $allow) {
$permittedKeys = ['allowSocialSync'];
if (!in_array($key, $permittedKeys)) {
return new JSONResponse([], Http::STATUS_FORBIDDEN);
}
$this->config->setAppValue(Application::APP_ID, $key, $allow);
return new JSONResponse([], Http::STATUS_OK);
}
/**
* @NoAdminRequired
*
* update appconfig (user setting)
*
* @param {String} key the identifier to change
* @param {String} allow the value to set
*
* @returns {JSONResponse} an empty JSONResponse with respective http status code
*/
public function setUserConfig($key, $allow) {
$user = $this->userSession->getUser();
if (is_null($user)) {
return new JSONResponse([], Http::STATUS_PRECONDITION_FAILED);
}
$userId = $user->getUid();
$this->config->setUserValue($userId, $this->appName, $key, $allow);
return new JSONResponse([], Http::STATUS_OK);
}
/**
* @NoAdminRequired
*
* retrieve appconfig (user setting)
*
* @param {String} key the identifier to retrieve
*
* @returns {string} the desired value or null if not existing
*/
public function getUserConfig($key) {
$user = $this->userSession->getUser();
if (is_null($user)) {
return null;
}
$userId = $user->getUid();
return $this->config->getUserValue($userId, $this->appName, $key, 'null');
}
/**
* @NoAdminRequired
*
* returns an array of supported social networks
*
* @returns {array} array of the supported social networks
*/
public function getSupportedNetworks() : array {
return $this->socialApiService->getSupportedNetworks();
}
/**
* @NoAdminRequired
*
* Retrieves social profile data for a contact and updates the entry
*
* @param {String} addressbookId the addressbook identifier
* @param {String} contactId the contact identifier
* @param {String} network the social network to use (if unkown: take first match)
*
* @returns {JSONResponse} an empty JSONResponse with respective http status code
*/
public function updateContact(string $addressbookId, string $contactId, string $network) : JSONResponse {
return $this->socialApiService->updateContact($addressbookId, $contactId, $network);
}
}