invokeArgs('apiError', [$result]); if(dao::isError()) return dao::getError(); return $result; } /** * Test formConfig method. * * @param string $module * @param string $method * @param int $objectID * @access public * @return array */ public function formConfigTest(string $module, string $method, int $objectID = 0) { $result = commonModel::formConfig($module, $method, $objectID); if(dao::isError()) return dao::getError(); return $result; } /** * Test canOperateEffort method. * * @param object $effort * @access public * @return mixed */ public function canOperateEffortTest($effort = null) { $result = $this->instance->canOperateEffort($effort); if(dao::isError()) return dao::getError(); return $result; } /** * Test checkIP method. * * @param string $ipWhiteList * @access public * @return mixed */ public function checkIPTest($ipWhiteList = '') { $result = $this->instance->checkIP($ipWhiteList); if(dao::isError()) return dao::getError(); return $result ? '1' : '0'; } /** * Test checkPrivByObject method. * * @param string $objectType * @param int $objectID * @access public * @return bool */ public function checkPrivByObjectTest(string $objectType, int $objectID): bool { $result = $this->instance->checkPrivByObject($objectType, $objectID); if(dao::isError()) return dao::getError(); return $result; } /** * 检查详情页操作按钮的权限。 * Check the privilege of the operate action. * * @param string $moduleName * @param object $data * @param object $menu * @access protected * @return array|bool */ public function checkPrivForOperateActionTest(string $moduleName, string $action, array $actionData) { $object = $this->instance->dao->select('*')->from($this->instance->config->objectTables[$moduleName])->where('id')->eq(1)->fetch(); $result = $this->instance->checkPrivForOperateAction($actionData, $action, $moduleName, $object, 'mainActions'); return is_array($result) ? !empty($result['url']) : $result; } /** * Test createMenuLink method. * * @param object $menuItem * @access public * @return mixed */ public function createMenuLinkTest($menuItem) { $result = $this->instance->createMenuLink($menuItem); if(dao::isError()) return dao::getError(); return $result; } /** * Test getDotStyle method. * * @param bool $showCount * @param int $unreadCount * @access public * @return array */ public function getDotStyleTest(bool $showCount, int $unreadCount): array { $result = $this->invokeArgs('getDotStyle', [$showCount, $unreadCount]); if(dao::isError()) return dao::getError(); return $result; } /** * Test getMainNavList method. * * @param string $moduleName * @param bool $useDefault * @access public * @return mixed */ public function getMainNavListTest($moduleName, $useDefault = false) { $result = $this->invokeArgs('getMainNavList', [$moduleName, $useDefault]); if(dao::isError()) return dao::getError(); return $result; } /** * Test isOpenMethod method. * * @param string $module * @param string $method * @access public * @return bool */ public function isOpenMethodTest($module, $method) { $result = $this->invokeArgs('isOpenMethod', [$module, $method]); if(dao::isError()) return dao::getError(); return $result; } /** * Test isTutorialMode method. * * @access public * @return mixed */ public function isTutorialModeTest() { $result = $this->invokeArgs('isTutorialMode'); if(dao::isError()) return dao::getError(); return $result ? '1' : '0'; } /** * Test setUser method. * * @param string $mode 测试模式:'guest'测试访客,'session'测试已登录用户 * @access public * @return mixed */ public function setUserTest($mode = '') { // 如果指定测试guest模式,先清除session if($mode === 'guest') { if(isset($_SESSION['user'])) unset($_SESSION['user']); if(isset($this->instance->app->user)) unset($app->user); } $this->invokeArgs('setUser'); if(dao::isError()) return dao::getError(); return $this->instance->app->user; } /** * Test strEndsWith method. * * @param string $haystack * @param string $needle * @access public * @return bool */ public function strEndsWithTest($haystack, $needle) { $result = $this->invokeArgs('strEndsWith', [$haystack, $needle]); if(dao::isError()) return dao::getError(); return $result; } /** * Test printDuration method. * * @param int $seconds * @param string $format * @access public * @return string */ public function printDurationTest(int $seconds, string $format = 'y-m-d-h-i-s'): string { $result = commonModel::printDuration($seconds, $format); if(dao::isError()) return dao::getError(); return $result; } /** * Test printPreAndNext method. * * @param mixed $preAndNext * @param string $linkTemplate * @param bool $onlyBody * @access public * @return mixed */ public function printPreAndNextTest($preAndNext = '', string $linkTemplate = '', bool $onlyBody = false) { // 设置onlybody模式 if($onlyBody) { $_GET['onlybody'] = 'yes'; } else { unset($_GET['onlybody']); } // 设置语言 if(!isset($lang->preShortcutKey)) $lang->preShortcutKey = '(←)'; if(!isset($lang->nextShortcutKey)) $lang->nextShortcutKey = '(→)'; ob_start(); $result = commonModel::printPreAndNext($preAndNext, $linkTemplate); $output = ob_get_clean(); if(dao::isError()) return dao::getError(); // 如果是onlybody模式,返回false if($onlyBody) return $result === false ? '0' : '1'; // 否则返回输出内容 return $output; } /** * Test processMarkdown method. * * @param string $markdown * @access public * @return string|bool */ public function processMarkdownTest(string $markdown) { $result = $this->invokeArgs('processMarkdown', [$markdown]); if(dao::isError()) return dao::getError(); return $result; } /** * Test checkSafeFile method. * * @param string $scenario 测试场景 * @access public * @return mixed */ public function checkSafeFileTest($scenario = '') { // 备份原始配置和状态 $originalInContainer = $this->instance->config->inContainer; $originalModuleName = $this->instance->app->getModuleName(); $originalUpgrading = $this->instance->app->upgrading ?? false; $originalSafeFileEnv = getenv('ZT_CHECK_SAFE_FILE'); try { // 根据场景设置不同的测试环境 switch($scenario) { case 'inContainer': $this->instance->config->inContainer = true; break; case 'validSafeFile': $this->instance->config->inContainer = false; // 设置环境变量模拟有效的安全文件状态 putenv('ZT_CHECK_SAFE_FILE=true'); break; case 'upgradeModule': $this->instance->config->inContainer = false; if(isset($_SESSION)) $_SESSION['upgrading'] = true; $this->instance->app->setModuleName('upgrade'); break; case 'noSafeFile': case 'expiredSafeFile': default: $this->instance->config->inContainer = false; // 确保没有有效的安全文件 putenv('ZT_CHECK_SAFE_FILE=false'); if(isset($_SESSION)) $_SESSION['upgrading'] = false; break; } $result = $this->invokeArgs('checkSafeFile'); if(dao::isError()) return dao::getError(); return $result; } finally { // 恢复原始配置和状态 $this->instance->config->inContainer = $originalInContainer; if(isset($_SESSION)) $_SESSION['upgrading'] = $originalUpgrading; $this->instance->app->setModuleName($originalModuleName); if($originalSafeFileEnv !== false) { putenv("ZT_CHECK_SAFE_FILE=$originalSafeFileEnv"); } else { putenv('ZT_CHECK_SAFE_FILE'); } } } /** * Test getWorkspaceInfo method. * * @access public * @return array */ public function getWorkspaceInfoTest() { $result = commonModel::getWorkspaceInfo(); if(dao::isError()) return dao::getError(); return $result; } }