zen.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. /**
  3. * The zen file of instance module of ZenTaoPMS.
  4. *
  5. * @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
  6. * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
  7. * @author Ke Zhao<zhaoke@easycorp.ltd>
  8. * @package instance
  9. * @link https://www.zentao.net
  10. * @property instanceModel $instance
  11. * @property cneModel $cne
  12. */
  13. class instanceZen extends instance
  14. {
  15. /**
  16. * 查看商店应用详情。
  17. * Show instance view.
  18. *
  19. * @param int $id
  20. * @access public
  21. * @return void
  22. */
  23. protected function storeView($id)
  24. {
  25. if(!commonModel::hasPriv('space', 'browse')) $this->loadModel('common')->deny('space', 'browse', false);
  26. $instance = $this->instance->getByID($id);
  27. if(empty($instance)) return $this->send(array('result' => 'fail', 'load' => array('alert' => $this->lang->instance->instanceNotExists, 'locate' => $this->createLink('space', 'browse'))));
  28. $instance->latestVersion = $this->store->appLatestVersion($instance->appID, $instance->version);
  29. $instance = $this->instance->freshStatus($instance);
  30. $instanceMetric = $this->cne->instancesMetrics(array($instance));
  31. $instanceMetric = $instanceMetric[$instance->id];
  32. if($instance->status == 'running') $this->instance->saveAuthInfo($instance);
  33. if(in_array($instance->chart, $this->config->instance->devopsApps))
  34. {
  35. $pipeline = $this->loadModel('space')->getExternalAppByApp($instance);
  36. $instance->externalID = !empty($pipeline) ? $pipeline->id : 0;
  37. }
  38. $this->view->title = $instance->appName;
  39. $this->view->instance = $instance;
  40. $this->view->actions = $this->loadModel('action')->getList('instance', $id);
  41. $this->view->defaultAccount = $this->cne->getDefaultAccount($instance);
  42. $this->view->instanceMetric = $instanceMetric;
  43. $this->view->diskSettings = $this->cne->getDiskSettings($instance);
  44. $this->view->dbList = $this->cne->appDBList($instance);
  45. $this->view->backupList = $this->instance->backupList($instance);
  46. }
  47. /**
  48. * 检查安装应用时数据合法性
  49. * Check for install.
  50. *
  51. * @param object $customData
  52. * @access public
  53. * @return void
  54. */
  55. protected function checkForInstall($customData)
  56. {
  57. if(isset($this->config->instance->keepDomainList[$customData->customDomain]) || $this->instance->domainExists($customData->customDomain)) return $this->send(array('result' => 'fail', 'message' => $customData->customDomain . $this->lang->instance->errors->domainExists));
  58. if(!$customData->customName)
  59. {
  60. dao::$errors['customName'] = sprintf($this->lang->error->notempty, $this->lang->instance->name);
  61. return $this->send(array('result' => 'fail', 'message' => dao::getError()));
  62. }
  63. if(!$this->instance->checkAppNameUnique($customData->customName)) return $this->send(array('result' => false, 'message' => array('customName' => sprintf($this->lang->error->repeat, $this->lang->instance->name, $customData->customName))));
  64. if(!validater::checkLength($customData->customDomain, 20, 2)) return $this->send(array('result' => 'fail', 'message' => $this->lang->instance->errors->domainLength));
  65. if(!validater::checkREG($customData->customDomain, '/^[a-z\d]+$/')) return $this->send(array('result' => 'fail', 'message' => $this->lang->instance->errors->wrongDomainCharacter));
  66. }
  67. }