PageRenderTime 34ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/cubi/modules/repository/websvc/RepositoryService.php

http://openbiz-cubi.googlecode.com/
PHP | 285 lines | 253 code | 17 blank | 15 comment | 15 complexity | 0ad9f57bd1f8e8b3a32da2e1960d925e MD5 | raw file
Possible License(s): GPL-2.0, LGPL-3.0
  1. <?php
  2. /**
  3. * Openbiz Cubi Application Platform
  4. *
  5. * LICENSE http://code.google.com/p/openbiz-cubi/wiki/CubiLicense
  6. *
  7. * @package cubi.repository.websvc
  8. * @copyright Copyright (c) 2005-2011, Openbiz Technology LLC
  9. * @license http://code.google.com/p/openbiz-cubi/wiki/CubiLicense
  10. * @link http://code.google.com/p/openbiz-cubi/
  11. * @version $Id: RepositoryService.php 5076 2013-01-07 09:27:31Z hellojixian@gmail.com $
  12. */
  13. include_once MODULE_PATH.'/websvc/lib/WebsvcService.php';
  14. class RepositoryService extends WebsvcService
  15. {
  16. protected $m_CategoryDO = "repository.category.do.CategoryDO";
  17. protected $m_CategoryTransDO = "repository.category.do.CategoryTranslateDO";
  18. protected $m_ApplicationDO = "repository.application.do.ApplicationDO";
  19. protected $m_ApplicationTransDO = "repository.application.do.ApplicationTranslateDO";
  20. protected $m_ReleaseDO = "repository.release.do.ReleaseDO";
  21. protected $m_InstallLogDO = "repository.install.do.InstallLogDO";
  22. protected $m_PictureDO = "picture.do.PictureDO";
  23. protected $m_RepositorySettingDO= "myaccount.do.PreferenceDO";
  24. protected $m_RepositorySettingTransDO= "repository.setting.do.SettingTranslateDO";
  25. protected $m_ApplicationVersionDO = "repository.application.do.ApplicationVersionDO";
  26. public function fetchRepoInfo()
  27. {
  28. $searchRule = "[user_id]='0' AND [name] LIKE 'repo_%'";
  29. $dataObj = BizSystem::getObject($this->m_RepositorySettingDO);
  30. $resultRecords = $dataObj->directfetch($searchRule);
  31. $prefRecord = array();
  32. foreach($resultRecords as $record){
  33. $prefRecord["_".$record['name']] = $record["value"];
  34. }
  35. //try to translate cats
  36. $lang = $_REQUEST['lang'];
  37. if($lang){
  38. $settingTransDO = BizSystem::getObject($this->m_RepositorySettingTransDO,1);
  39. $transFields = array('repo_name','repo_desc');
  40. $recordId = $record['Id'];
  41. $transRec = $settingTransDO->fetchOne("[lang]='$lang'");
  42. if($transRec)
  43. {
  44. foreach($transFields as $field){
  45. $prefRecord['_'.$field] = $transRec[$field]?$transRec[$field]:$prefRecord['_'.$field];
  46. }
  47. }
  48. }
  49. return $prefRecord;
  50. }
  51. public function recordInstallLog($app_id,$release_id,$siteurl,$operator)
  52. {
  53. $remote_ip = $_SERVER['REMOTE_ADDR'];
  54. $logRec = array();
  55. $logRec['app_id'] = $app_id;
  56. $logRec['release_id'] = $release_id;
  57. $logRec['remote_ip'] = $remote_ip;
  58. $logRec['remote_siteurl'] = $siteurl;
  59. $logRec['remote_operator'] = $operator;
  60. $dataObj = BizSystem::getObject($this->m_InstallLogDO);
  61. $dataObj->insertRecord($logRec);
  62. return true;
  63. }
  64. public function fetchAppList($ids=array())
  65. {
  66. $appIds = implode(",",$ids);
  67. $searchRule = "[status]=1 AND [Id] IN ($appIds)";
  68. $dataObj = BizSystem::getObject($this->m_ApplicationVersionDO,1);
  69. $resultRecords = $dataObj->directFetch($searchRule);
  70. $resultSet=array();
  71. foreach($resultRecords as $record)
  72. {
  73. $resultSet[] = $record;
  74. }
  75. $resultSet = $this->translateAppList($resultSet);
  76. return $resultSet;
  77. }
  78. public function fetchNewAppRelease($timestamp)
  79. {
  80. $searchRule = "[release_time] > '$timestamp' AND [status]='1' ";
  81. $dataObj = BizSystem::getObject($this->m_ApplicationDO,1);
  82. $resultRecords = $dataObj->directFetch($searchRule);
  83. $resultSet=array();
  84. foreach($resultRecords as $record)
  85. {
  86. $resultSet[] = $record;
  87. }
  88. $resultSet = $this->translateAppList($resultSet);
  89. return $resultSet;
  90. }
  91. public function fetchAppInfo($id=null)
  92. {
  93. $searchRule = "[status]=1 AND [release_time] < NOW() AND [Id]='$id'";
  94. $dataObj = BizSystem::getObject($this->m_ApplicationDO,1);
  95. $result = $dataObj->fetchOne($searchRule);
  96. if($result)
  97. {
  98. $result = $result->toArray();
  99. $result = $this->translateAppInfo($result);
  100. }
  101. else
  102. {
  103. $result = array();
  104. }
  105. return $result;
  106. }
  107. public function fetchAppPics($id=null)
  108. {
  109. $searchRule = "[type]='application' AND [foreign_id]='$id'";
  110. $dataObj = BizSystem::getObject($this->m_PictureDO,1);
  111. $resultRecords = $dataObj->directfetch($searchRule);
  112. $resultSet = array();
  113. foreach($resultRecords as $record)
  114. {
  115. $resultSet[] = $record;
  116. }
  117. return $resultSet;
  118. }
  119. public function fetchAppLatestRelease($id=null)
  120. {
  121. $searchRule = "[app_id]='$id'";
  122. $sortRule = "[Id] DESC";
  123. $dataObj = BizSystem::getObject($this->m_ReleaseDO,1);
  124. $results = $dataObj->directfetch($searchRule,null,null,$sortRule);
  125. if($results)
  126. {
  127. $result = $results[0];
  128. }
  129. else
  130. {
  131. $result = array();
  132. }
  133. return $result;
  134. }
  135. public function fetchFeaturedApps($param=array())
  136. {
  137. $searchRule = "[status]=1 AND [release_time] < NOW() AND [featured]=1";
  138. $sortRule = $param['sortRule'];
  139. if(!$sortRule)
  140. {
  141. $sortRule = "[release_time] DESC";
  142. }
  143. $userSearchRule = $param['searchRule'];
  144. $startItem = $param['startItem'];
  145. $range = $param['range'];
  146. if($userSearchRule){
  147. $searchRule .= " AND ".$userSearchRule;
  148. }
  149. $dataObj = BizSystem::getObject($this->m_ApplicationDO,1);
  150. $dataObj->setSearchRule($searchRule);
  151. $dataObj->setSortRule($sortRule);
  152. $dataObj->setLimit($range, $startItem);
  153. $resultRecords = $dataObj->fetch();
  154. $resultSet = array();
  155. foreach($resultRecords as $record)
  156. {
  157. $resultSet[] = $record;
  158. }
  159. $resultSet = $this->translateAppList($resultSet);
  160. $result['data'] = $resultSet;
  161. $result['totalRecords'] = $dataObj->count();
  162. return $result;
  163. }
  164. public function fetchApplications($cat_id = null,$param=array())
  165. {
  166. $searchRule = "[status]=1 AND [release_time] < NOW() ";
  167. if($cat_id){
  168. $searchRule .= " AND [cat_id]=$cat_id ";
  169. }
  170. $sortRule = $param['sortRule'];
  171. if(!$sortRule)
  172. {
  173. $sortRule = "[pkg_release_time] DESC";
  174. }
  175. $userSearchRule = $param['searchRule'];
  176. $startItem = $param['startItem'];
  177. $range = $param['range'];
  178. if($userSearchRule){
  179. $searchRule .= " AND ".$userSearchRule;
  180. }
  181. $dataObj = BizSystem::getObject($this->m_ApplicationDO,1);
  182. $dataObj->setSearchRule($searchRule);
  183. $dataObj->setSortRule($sortRule);
  184. $dataObj->setLimit($range, $startItem);
  185. $resultRecords = $dataObj->fetch();
  186. $resultSet = array();
  187. foreach($resultRecords as $record)
  188. {
  189. $resultSet[] = $record;
  190. }
  191. $resultSet = $this->translateAppList($resultSet);
  192. $result['data'] = $resultSet;
  193. $result['totalRecords'] = $dataObj->count();
  194. return $result;
  195. }
  196. protected function translateAppList($resultSet)
  197. {
  198. //try to translate cats
  199. $lang = $_REQUEST['lang'];
  200. if($lang){
  201. $resultSetTrans = $resultSet;
  202. $resultSet = array();
  203. foreach($resultSetTrans as $record)
  204. {
  205. $resultSet[] = $this->translateAppInfo($record);
  206. }
  207. }
  208. return $resultSet;
  209. }
  210. protected function translateAppInfo($result)
  211. {
  212. $lang = $_REQUEST['lang'];
  213. if($lang){
  214. $applicationTransDO = BizSystem::getObject($this->m_ApplicationTransDO,1);
  215. $transFields = array('name','description','author','type');
  216. $recordId = $result['Id'];
  217. $transRec = $applicationTransDO->fetchOne("[repo_app_id]='$recordId' AND [lang]='$lang'");
  218. if($transRec)
  219. {
  220. foreach($transFields as $field){
  221. $result[$field] = $transRec[$field]?$transRec[$field]:$result[$field];
  222. }
  223. }
  224. //translate cate name
  225. $categoryTransDO = BizSystem::getObject($this->m_CategoryTransDO,1);
  226. $catId = $result['category_id'];
  227. $categoryTransRec = $categoryTransDO->fetchOne("[repo_cat_id]='$catId' AND [lang]='$lang'");
  228. if($categoryTransRec)
  229. {
  230. $result['category_name']=$categoryTransRec['name'];
  231. }
  232. }
  233. return $result;
  234. }
  235. public function fetchCategories()
  236. {
  237. $searchRule = "[publish]=1";
  238. $dataObj = BizSystem::getObject($this->m_CategoryDO,1);
  239. $resultRecords = $dataObj->directfetch($searchRule);
  240. $resultSet = array();
  241. foreach($resultRecords as $record)
  242. {
  243. $resultSet[] = $record;
  244. }
  245. //try to translate cats
  246. $lang = $_REQUEST['lang'];
  247. if($lang){
  248. $resultSetTrans = $resultSet;
  249. $resultSet = array();
  250. $categoryTransDO = BizSystem::getObject($this->m_CategoryTransDO,1);
  251. $transFields = array('name','description');
  252. foreach($resultSetTrans as $record)
  253. {
  254. $recordId = $record['Id'];
  255. $transRec = $categoryTransDO->fetchOne("[repo_cat_id]='$recordId' AND [lang]='$lang'");
  256. if($transRec)
  257. {
  258. foreach($transFields as $field){
  259. $record[$field] = $transRec[$field]?$transRec[$field]:$record[$field];
  260. }
  261. }
  262. $resultSet[] = $record;
  263. }
  264. }
  265. return $resultSet;
  266. }
  267. }
  268. ?>