DiscuzX/upload/source/plugin/manyou/Service/Server/UserApplication.php

195 lines
5.3 KiB
PHP

<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: UserApplication.php 33052 2013-04-12 09:39:49Z zhengqingpeng $
*/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
class Cloud_Service_Server_UserApplication extends Cloud_Service_Server_Restful {
protected static $_instance;
public static function getInstance() {
if (!(self::$_instance instanceof self)) {
self::$_instance = new self();
}
return self::$_instance;
}
public function onUserApplicationAdd($uId, $appId, $appName, $privacy, $allowSideNav, $allowFeed, $allowProfileLink, $defaultBoxType, $defaultMYML, $defaultProfileLink, $version, $displayMethod, $displayOrder = null, $userPanelArea = null, $canvasTitle = null, $isFullscreen = null , $displayUserPanel = null, $additionalStatus = null) {
global $_G;
$res = $this->getUserSpace($uId);
if (!$res) {
return new Cloud_Service_Server_ErrorResponse('1', "User($uId) Not Exists");
}
$row = C::t('home_userapp')->fetch_by_uid_appid($uId, $appId);
if ($row['appid']) {
$errCode = '170';
$errMessage = 'Application has been already added';
return new Cloud_Service_Server_ErrorResponse($errCode, $errMessage);
}
switch($privacy) {
case 'public':
$privacy = 0;
break;
case 'friends':
$privacy = 1;
break;
case 'me':
$privacy = 3;
break;
case 'none':
$privacy = 5;
break;
default:
$privacy = 0;
}
$narrow = ($defaultBoxType == 'narrow') ? 1 : 0;
$setarr = array('uid' => $uId,
'appid' => $appId,
'appname' => $appName,
'privacy' => $privacy,
'allowsidenav' => $allowSideNav,
'allowfeed' => $allowFeed,
'allowprofilelink' => $allowProfileLink,
'narrow' => $narrow
);
if ($displayOrder !== null) {
$setarr['displayorder'] = $displayOrder;
}
$maxMenuOrder = C::t('home_userapp')->fetch_max_menuorder_by_uid($uId);
$setarr['menuorder'] = ++$maxMenuOrder;
C::t('home_userapp')->insert($setarr);
$fields = array('uid' => $uId,
'appid' => $appId,
'profilelink' => $defaultProfileLink,
'myml' => $defaultMYML
);
$result = C::t('home_userappfield')->insert($fields, true);
updatecreditbyaction('installapp', $uId, array(), $appId);
require_once libfile('function/cache');
updatecache('userapp');
C::t('common_member_status')->update($uId, array('lastactivity' => TIMESTAMP), 'UNBUFFERED');
$displayMethod = ($displayMethod == 'iframe') ? 1 : 0;
$this->refreshApplication($appId, $appName, $version, $userPanelArea, $canvasTitle, $isFullscreen, $displayUserPanel, $displayMethod, $narrow, null, null, $additionalStatus);
return 1;
}
public function onUserApplicationRemove($uId, $appIds) {
$result = C::t('home_userapp')->delete_by_uid_appid($uId, $appIds);
C::t('home_userappfield')->delete_by_uid_appid($uId, $appIds);
updatecreditbyaction('installapp', $uId, array(), $appId, -1);
require_once libfile('function/cache');
updatecache('userapp');
return $result;
}
public function onUserApplicationUpdate($uId, $appIds, $appName, $privacy, $allowSideNav, $allowFeed, $allowProfileLink, $version, $displayMethod, $displayOrder = null, $userPanelArea = null, $canvasTitle = null, $isFullscreen = null, $displayUserPanel = null) {
switch($privacy) {
case 'public':
$privacy = 0;
break;
case 'friends':
$privacy = 1;
break;
case 'me':
$privacy = 3;
break;
case 'none':
$privacy = 5;
break;
default:
$privacy = 0;
}
$setarr = array(
'appname' => $appName,
'privacy' => $privacy,
'allowsidenav' => $allowSideNav,
'allowfeed' => $allowFeed,
'allowprofilelink' => $allowProfileLink
);
if ($displayOrder !== null) {
$setarr['displayorder'] = $displayOrder;
$setarr['menuorder'] = $displayOrder;
}
$result = C::t('home_userapp')->update_by_uid_appid($uId, $appIds, $setarr);
$displayMethod = ($displayMethod == 'iframe') ? 1 : 0;
if (is_array($appIds)) {
foreach($appIds as $appId) {
$this->refreshApplication($appId, $appName, $version, $userPanelArea, $canvasTitle, $isFullscreen, $displayUserPanel, $displayMethod, null, null, null, null);
}
}
return $result;
}
public function onUserApplicationGetInstalled($uId) {
$result = array();
foreach(C::t('home_userapp')->fetch_all_by_uid_appid($uId) as $userApp) {
$result[] = $userApp['appid'];
}
return $result;
}
public function onUserApplicationGet($uId, $appIds) {
$result = array();
foreach(C::t('home_userapp')->fetch_all_by_uid_appid($uId, $appIds) as $userApp) {
switch($userApp['privacy']) {
case 0:
$privacy = 'public';
break;
case 1:
$privacy = 'friends';
break;
case 3:
$privacy = 'me';
break;
case 5:
$privacy = 'none';
break;
default:
$privacy = 'public';
}
$result[] = array(
'appId' => $userApp['appid'],
'privacy' => $privacy,
'allowSideNav' => $userApp['allowsidenav'],
'allowFeed' => $userApp['allowfeed'],
'allowProfileLink' => $userApp['allowprofilelink'],
'displayOrder' => $userApp['displayorder']
);
}
return $result;
}
}