Esempio n. 1
0
 /**
  * 静态方法, 单例统一访问入口
  * @return object  返回对象的唯一实例
  */
 public static function getInstance()
 {
     if (is_null(self::$_instance) || !isset(self::$_instance)) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
Esempio n. 2
0
 /**
  *根据文件的Hash值下载内容
  * @param string $signature 文件hash值
  * @throws 404错误
  */
 public function downloadTxt($signature)
 {
     $version = MiniVersion::getInstance()->getBySignature($signature);
     if (!empty($version)) {
         //根据文件内容输出文件内容
         $meta = MiniVersionMeta::getInstance()->getMeta($version["id"], "doc_id");
         if (!empty($meta)) {
             $url = PluginMiniDocNode::getInstance()->getDownloadUrl($meta["meta_value"], $version, "txt");
             if (!empty($url)) {
                 header("HTTP/1.1 " . MConst::HTTP_CODE_301 . " Moved Permanently");
                 header("Location: " . $url);
                 exit;
             }
         } else {
             //文本类文件直接下载
             MiniFile::getInstance()->getContentBySignature($signature, $signature, $version["mime_type"]);
         }
     }
     throw new MFileopsException(Yii::t('api', 'File Not Found'), 404);
 }
 /**
  * 把文档进行转换
  * @param array $version
  * @param string $mimeType 如mineType为空,则使用version.mime_type
  */
 private function pushFileConvert($version, $mimeType)
 {
     if (empty($mimeType)) {
         $mimeType = $version["mime_type"];
     }
     $miniHost = PluginMiniDocOption::getInstance()->getMiniyunHost();
     $siteId = MiniSiteUtils::getSiteID();
     $signature = $version["file_signature"];
     $node = PluginMiniDocNode::getInstance()->getConvertNode($signature);
     if (!empty($node)) {
         $url = $node["host"] . '/api.php?route=file/convert';
         $downloadUrl = $miniHost . "api.php?route=module/miniDoc/download&signature=" . $signature;
         $callbackUrl = $miniHost . "api.php?route=module/miniDoc/report&node_id=" . $node["id"] . "&signature=" . $signature;
         $data = array('signature' => $signature, 'site_id' => $siteId, 'mime_type' => $mimeType, 'download_url' => $downloadUrl, "callback_url" => $callbackUrl);
         $http = new HttpClient();
         $http->post($url, $data);
         $result = $http->get_body();
         $result = json_decode($result, true);
         if ($result['status'] == 1) {
             $this->updateDocConvertStatus($node["id"], $version["file_signature"], 1);
         }
     }
 }
Esempio n. 4
0
 /**
  * 定时任务入口
  * 场景1:检查各个迷你云节点状态
  * 使用方式:每隔15秒执行一次
  */
 public function actionCheckNodeStatus()
 {
     PluginMiniDocNode::getInstance()->checkNodesStatus();
 }
Esempio n. 5
0
 /**
  * 修改迷你文档节点状态
  * @param string $name 节点名称
  * @param string $status 节点状态
  * @throws MiniException
  */
 public function modifyNodeStatus($name, $status)
 {
     $node = PluginMiniDocNode::getInstance()->getNodeByName($name);
     if (empty($node)) {
         throw new MiniException(100203);
     }
     if ($status == 1) {
         //检查服务器状态,看看是否可以连接迷你文档服务器
         $nodeStatus = PluginMiniDocNode::getInstance()->checkNodeStatus($node["host"]);
         if ($nodeStatus == -1) {
             throw new MiniException(100204);
         }
     }
     return PluginMiniDocNode::getInstance()->modifyNodeStatus($name, $status);
 }