Beispiel #1
0
 public function init()
 {
     $mainConfig = Ibos::engine()->getMainConfig();
     $config = $mainConfig["cache"];
     $this->_config = $config;
     $this->setExtension();
     $this->_prefix = empty($config["prefix"]) ? substr(md5($_SERVER["HTTP_HOST"]), 0, 6) . "_" : $config["prefix"];
     foreach (array("eaccelerator", "apc", "xcache", "wincache", "filecache") as $cache) {
         if (!is_object($this->_instance) && $this->_extension[$cache] && $this->config[strtolower($cache)]) {
             $className = ucfirst($cache);
             $this->_instance = new $className();
             $this->_instance->init(null);
             break;
         }
     }
     if (is_object($this->_instance)) {
         $this->enable = true;
         $this->type = get_class($this->_instance);
         if (strtolower($this->type) == "filecache") {
             $this->_prefix = "";
         }
     } else {
         throw new EnvException(Ibos::lang("Cache init error", "error"));
     }
 }
Beispiel #2
0
 public function save($imgname, $type = NULL, $interlace = true)
 {
     if (empty($this->img)) {
         throw new Exception("没有可以被保存的图像资源");
     }
     if (is_null($type)) {
         $type = $this->info["type"];
     } else {
         $type = strtolower($type);
     }
     if ("jpeg" == $type || "jpg" == $type) {
         $type = "jpeg";
         imageinterlace($this->img, $interlace);
     }
     if ("gif" == $type && !empty($this->gif)) {
         $this->gif->save($imgname);
     } else {
         $fun = "image{$type}";
         if (!LOCAL) {
             $temp = Ibos::engine()->IO()->file()->fetchTemp(FileUtil::fileName($imgname), $this->info["type"]);
             $fun($this->img, $temp);
             $content = file_get_contents($temp);
             Ibos::engine()->IO()->file()->writeFile($imgname, $content);
         } else {
             $fun($this->img, $imgname);
         }
     }
 }
Beispiel #3
0
 public static function makeThumb($attach, $width, $height)
 {
     $attachUrl = FileUtil::getAttachUrl();
     $file = sprintf("%s/%s", $attachUrl, $attach["attachment"]);
     $fileext = StringUtil::getFileExt($file);
     $thumbName = self::getThumbName($attach, $width, $height);
     if (LOCAL) {
         $res = ImageUtil::thumb2($file, $thumbName, "", $width, $height);
     } else {
         $tempFile = FileUtil::getTempPath() . "tmp." . $fileext;
         $orgImgname = Ibos::engine()->IO()->file()->fetchTemp(FileUtil::fileName($file), $fileext);
         ImageUtil::thumb2($orgImgname, $tempFile, "", $width, $height);
         FileUtil::createFile($thumbName, file_get_contents($tempFile));
     }
     return $thumbName;
 }
Beispiel #4
0
 public function configure($config)
 {
     defined("ENGINE") || define("ENGINE", "LOCAL");
     $this->setImport($config["import"]);
     unset($config["import"]);
     $engineClass = ucfirst(strtolower(ENGINE)) . "Engine";
     $engine = new $engineClass($config);
     Ibos::setEngine($engine);
     parent::configure(Ibos::engine()->getEngineConfig());
 }
Beispiel #5
0
 public static function sendWebMail($toUser, $body, $web)
 {
     $user = User::model()->fetchByUid($web["uid"]);
     $password = StringUtil::authCode($web["password"], "DECODE", $user["salt"]);
     $mailer = Yii::createComponent("application.modules.email.extensions.mailer.EMailer");
     $mailer->IsSMTP();
     $mailer->SMTPDebug = 0;
     $mailer->Host = $web["smtpserver"];
     $mailer->Port = $web["smtpport"];
     $mailer->CharSet = "UTF-8";
     if ($web["smtpssl"]) {
         $mailer->SMTPSecure = "ssl";
     }
     $mailer->SMTPAuth = true;
     $mailer->Username = $web["username"];
     $mailer->Password = $password;
     $mailer->setFrom($web["address"], $web["nickname"]);
     foreach (explode(";", $toUser) as $address) {
         $mailer->addAddress($address);
     }
     $mailer->Subject = $body["subject"];
     $mailer->msgHTML($body["content"]);
     $mailer->AltBody = "This is a plain-text message body";
     if (!empty($body["attachmentid"])) {
         $attachs = AttachUtil::getAttachData($body["attachmentid"]);
         $attachUrl = FileUtil::getAttachUrl();
         foreach ($attachs as $attachment) {
             $url = $attachUrl . "/" . $attachment["attachment"];
             if (LOCAL) {
                 $mailer->addAttachment($url, $attachment["filename"]);
             } else {
                 $temp = Ibos::engine()->IO()->file()->fetchTemp($url);
                 $mailer->addAttachment($temp, $attachment["filename"]);
             }
         }
     }
     $status = $mailer->send();
     if ($status) {
         return true;
     } else {
         return $mailer->ErrorInfo;
     }
 }
Beispiel #6
0
 public static function copyToDir($file, $copyToPath)
 {
     if (FileUtil::fileExists($file)) {
         $name = basename($file);
         if (LOCAL) {
             $state = @copy($file, $copyToPath . $name);
         } else {
             $state = Ibos::engine()->IO()->file()->moveFile($file, $copyToPath . $name);
         }
         return $state;
     }
 }
Beispiel #7
0
 private function addPicture($attach, $articleId)
 {
     $sort = 0;
     foreach ($attach as $value) {
         $picture = array("articleid" => $articleId, "aid" => $value["aid"], "sort" => $sort, "addtime" => TIMESTAMP, "postip" => StringUtil::getSubIp(), "filename" => $value["filename"], "title" => "", "type" => $value["filetype"], "size" => $value["filesize"], "filepath" => $value["attachment"]);
         if (Yii::app()->setting->get("setting/articlethumbenable")) {
             list($thumbWidth, $thumbHeight) = explode(",", Yii::app()->setting->get("setting/articlethumbwh"));
             $imageInfo = ImageUtil::getImageInfo(FileUtil::fileName($picture["filepath"]));
             if ($imageInfo["width"] < $thumbWidth && $imageInfo["height"] < $thumbHeight) {
                 $picture["thumb"] = 0;
             } else {
                 $sourceFileName = explode("/", $picture["filepath"]);
                 $sourceFileName[count($sourceFileName) - 1] = "thumb_" . $sourceFileName[count($sourceFileName) - 1];
                 $thumbName = implode("/", $sourceFileName);
                 if (LOCAL) {
                     ImageUtil::thumb($picture["filepath"], $thumbName, $thumbWidth, $thumbHeight);
                 } else {
                     $tempFile = FileUtil::getTempPath() . "tmp." . $picture["type"];
                     $orgImgname = Ibos::engine()->IO()->file()->fetchTemp(FileUtil::fileName($picture["filepath"]), $picture["type"]);
                     ImageUtil::thumb($orgImgname, $tempFile, $thumbWidth, $thumbHeight);
                     FileUtil::createFile($thumbName, file_get_contents($tempFile));
                 }
                 $picture["thumb"] = 1;
             }
         }
         ArticlePicture::model()->add($picture);
         $sort++;
     }
 }
Beispiel #8
0
 public function actionIndex()
 {
     $operation = EnvUtil::getRequest("op");
     switch ($operation) {
         case "thumbpreview":
         case "waterpreview":
             $temp = Ibos::engine()->IO()->file()->getTempPath() . "/watermark_temp.jpg";
             if (LOCAL) {
                 if (is_file($temp)) {
                     @unlink($temp);
                 }
             }
             $quality = EnvUtil::getRequest("quality");
             $source = PATH_ROOT . "/static/image/watermark_preview.jpg";
             if ($operation == "waterpreview") {
                 $trans = EnvUtil::getRequest("trans");
                 $type = EnvUtil::getRequest("type");
                 $val = EnvUtil::getRequest("val");
                 $pos = EnvUtil::getRequest("pos");
                 if ($type == "image") {
                     $sInfo = ImageUtil::getImageInfo($source);
                     $wInfo = ImageUtil::getImageInfo($val);
                     if ($sInfo["width"] < $wInfo["width"] || $sInfo["height"] < $wInfo["height"]) {
                         Ibos::import("ext.ThinkImage.ThinkImage", true);
                         $imgObj = new ThinkImage(THINKIMAGE_GD);
                         $imgObj->open($val)->thumb(260, 77, 1)->save($val);
                     }
                     ImageUtil::water($source, $val, $temp, $pos, $trans, $quality);
                 } else {
                     $hexColor = EnvUtil::getRequest("textcolor");
                     $size = EnvUtil::getRequest("size");
                     $fontPath = EnvUtil::getRequest("fontpath");
                     $rgb = ConvertUtil::hexColorToRGB($hexColor);
                     ImageUtil::waterMarkString($val, $size, $source, $temp, $pos, $quality, $rgb, self::TTF_FONT_PATH . $fontPath);
                 }
                 $image = $temp;
             }
             if (!LOCAL) {
                 if (Ibos::engine()->IO()->file()->createFile($temp, file_get_contents($image))) {
                     $image = FileUtil::fileName($temp);
                 }
             }
             $data = array("image" => $image, "sourceSize" => ConvertUtil::sizeCount(FileUtil::fileSize($source)), "thumbSize" => ConvertUtil::sizeCount(FileUtil::fileSize($image)), "ratio" => sprintf("%2.1f", FileUtil::fileSize($image) / FileUtil::fileSize($source) * 100) . "%");
             $this->render("imagePreview", $data);
             exit;
             break;
         case "upload":
             return $this->imgUpload("watermark", true);
             break;
     }
     $formSubmit = EnvUtil::submitCheck("uploadSubmit");
     $uploadKeys = "attachdir,attachurl,thumbquality,attachsize,filetype";
     $waterMarkkeys = "watermarkminwidth,watermarkminheight,watermarktype,watermarkposition,watermarktrans,watermarkquality,watermarkimg,watermarkstatus,watermarktext,watermarkfontpath";
     if ($formSubmit) {
         $keys = $uploadKeys . "," . $waterMarkkeys;
         $keyField = explode(",", $keys);
         foreach ($_POST as $key => $value) {
             if (in_array($key, $keyField)) {
                 Setting::model()->updateSettingValueByKey($key, $value);
             } elseif ($key == "watermarkstatus") {
                 Setting::model()->updateSettingValueByKey("watermarkstatus", 0);
             }
         }
         CacheUtil::update(array("setting"));
         $this->success(Ibos::lang("Save succeed", "message"));
     } else {
         $upload = Setting::model()->fetchSettingValueByKeys($uploadKeys);
         $waterMark = Setting::model()->fetchSettingValueByKeys($waterMarkkeys);
         $fontPath = DashboardUtil::getFontPathlist(self::TTF_FONT_PATH);
         $data = array("upload" => $upload, "waterMark" => $waterMark, "fontPath" => $fontPath);
         $this->render("index", $data);
     }
 }