Beispiel #1
0
 public static function GrabImage($url, $filename = "")
 {
     if ($url == "") {
         return false;
     }
     if ($filename == "") {
         $ext = strrchr($url, ".");
         if ($ext != ".gif" && $ext != ".jpg" && $ext != ".png") {
             return false;
         }
         $filename = date("YmdHis") . $ext;
     } else {
         $newPath = dirname($filename);
         DirectoryFile::dirCreate($newPath);
     }
     ob_start();
     readfile($url);
     $img = ob_get_contents();
     ob_end_clean();
     $size = strlen($img);
     $fp2 = @fopen($filename, "a");
     fwrite($fp2, $img);
     fclose($fp2);
     return $filename;
 }
Beispiel #2
0
 /**
  * @param $formname Html上传表单名称
  * @param $path 上传的文件存放位置
  * @param $allowtype_array 允许上传的文件类型数组
  * @param $allow_size 允许上传的文件最大大小,默认是1MB
  * @param $isRename 是否需要重命名被上传的文件 1:代表需要重命名 0:代表不需要重命名
  * @return bool|string
  */
 public static function uploadFile($formname, $path, $allowtype_array, $allow_size, $isRename)
 {
     $path = Yii::app()->params['uploads_path'] . $path;
     if ($_FILES[$formname]['tmp_name'] == '' || $_FILES[$formname]['name'] == '' || $_FILES[$formname]['size'] == 0) {
         return false;
     }
     if (!file_exists($path)) {
         if (!DirectoryFile::dirCreate($path)) {
             echo '创建上传文件保存文件目录失败,请联系管理员检查目录权限';
             return false;
         }
     }
     if ($_FILES[$formname]['size'] > $allow_size) {
         echo '上传文件过大,请将上传文件限制在' . number_format($allow_size / 5186000000, '2', '.', '') . 'MB以内';
         return false;
     }
     $file_name_array = explode('.', $_FILES[$formname]['name']);
     $file_type = strtolower($file_name_array[count($file_name_array) - 1]);
     if (!in_array($file_type, $allowtype_array)) {
         echo '上传文件类型错误,不允许上传后缀名为:' . $file_type . '的文件';
         return false;
     }
     $save_name = $isRename ? $file_name_array[count($file_name_array) - 2] . '_' . rand(1000, 10000) . '.' . $file_type : $_FILES[$formname]['name'];
     if (!move_uploaded_file($_FILES[$formname]['tmp_name'], $path . $save_name)) {
         echo '文件上传过程中发生错误,请重新上传';
         return false;
     }
     switch ($_FILES[$formname]['error']) {
         case 0:
             echo "";
             break;
         case 1:
             echo '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值';
             break;
         case 2:
             echo '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值';
             break;
         case 3:
             echo '文件只有部分被上传';
             break;
         case 4:
             echo '没有文件被上传';
             break;
         default:
             echo '居然有这种错误提示,日子也该混到头了';
             break;
     }
     if (!empty($save_name)) {
         return $save_name;
     } else {
         return false;
     }
 }
 /**
  * 文件加密
  */
 public function ActionFileEncrypt()
 {
     if (file_exists($_FILES['file']['tmp_name'])) {
         // 获取密匙
         $key = empty($_POST['key']) ? 'D89475D32EA8BBE933DBD299599EEA3E' : trim($_POST['key']);
         // 生成并创建上传路径
         $file_path = ENCRYPT_FILE_PATH . date('Y-m-d', time()) . '/';
         DirectoryFile::dirCreate($file_path);
         // 目录是否创建成功
         if (file_exists($file_path)) {
             // 生成文件名 格式:【时间戳_随机数 / 1407315015_4189.doc】
             $file_new_name = time() . '_' . rand(100, 10000) . strrchr($_FILES['file']['name'], '.');
             // 上传文件
             $status = @move_uploaded_file($_FILES['file']['tmp_name'], $file_path . $file_new_name);
             // 是否上传成功
             if ($status) {
                 // 对文件进行加密
                 $source = self::FileEncryptAndDecrypt($file_path . $file_new_name, $key);
                 // 是否加密成功
                 if ($source) {
                     // 移除加密前的原始文件
                     @unlink($file_path . $file_new_name);
                     // 上传加密后的文件
                     file_put_contents($file_path . $file_new_name, $source, true);
                     // 返回文件路径
                     echo $file_path . $file_new_name;
                 } else {
                     exit('文件加密失败!');
                 }
             } else {
                 exit('文件加密失败!');
             }
         } else {
             exit('文件加密失败!');
         }
     }
 }
Beispiel #4
0
 /**
  * 生成订单附件
  * @param $order_data 要写入订单模板的数据数组
  * @param $attachment_path = '' 附件生成路径
  * @return string|bool
  */
 public static function create_order_attachment($order_data, $attachment_path = '')
 {
     if (!empty($order_data) && is_array($order_data)) {
         // 引入PHPExcel扩展
         Yii::createComponent('application.extensions.excel.PHPExcel');
         // 租车订单Excel附件 - 模板目录
         $templet_path = ASSETS_FILE . 'templet/tichedan.xls';
         // 租车订单Excel附件 - 正式目录
         $attachment_path = $attachment_path == '' ? SECRET_FILE_PATH . 'Carrental/' . date('Y-m-d', time()) . '/' : $attachment_path;
         try {
             // 正式目录不存在则创建
             if (!file_exists($attachment_path)) {
                 if (!DirectoryFile::dirCreate($attachment_path)) {
                     throw new Exception('创建目录失败!');
                 }
             }
             // 如模板文件存在则复制到正式目录下
             if (file_exists($templet_path)) {
                 // 生成附件名称
                 $attachment_name = 'order_' . time() . '_' . rand(100, 10000) . '.xls';
                 // 复制租车订单模板至正式目录下
                 $status = @copy($templet_path, $attachment_path . $attachment_name);
                 if (!$status) {
                     throw new Exception('模板文件移动失败!');
                 }
             } else {
                 throw new Exception('订单模板文件不存在!');
             }
             // 实例化Excel读取类
             $PHPReader = new PHPExcel_Reader_Excel5();
             if (!$PHPReader->canRead($attachment_path . $attachment_name)) {
                 $PHPReader = new PHPExcel_Reader_Excel2007();
                 if (!$PHPReader->canRead($attachment_path . $attachment_name)) {
                     throw new Exception('不是一个Excel文件!');
                 }
             }
             // 读取Excel工作表
             $PHPExcel = $PHPReader->load($attachment_path . $attachment_name);
             $currentSheet = $PHPExcel->getSheet(0);
             // 重写Excel工作表 将单项信息写入Excel单元格
             $currentSheet->setCellValue('B3', !empty($order_data[0]) ? $order_data[0] : '');
             // 预定号[reservation number]
             $currentSheet->setCellValue('D3', $order_data[1]);
             // 确认号码[confirmation number]
             $currentSheet->setCellValue('B5', $order_data[2]);
             // 租车人姓名[Name]
             $currentSheet->setCellValue('D5', $order_data[3]);
             // 航班号码[Flight number]
             $currentSheet->setCellValue('B19', $order_data[4]);
             // 车辆代码[Car Code]
             $currentSheet->setCellValue('D19', $order_data[5]);
             // 车门数[Doors]
             $currentSheet->setCellValue('D22', $order_data[6]);
             // 空调[Air Con]
             $currentSheet->setCellValue('D20', $order_data[7]);
             // 座位数[Car Seats]
             $currentSheet->setCellValue('B9', $order_data[8]);
             // 取车日期
             $currentSheet->setCellValue('B10', $order_data[9]);
             // 取车时间
             $currentSheet->setCellValue('B11', $order_data[10]);
             // 取车门店[Location]
             $currentSheet->setCellValue('B12', $order_data[11]);
             // 取车地址[Address]
             $currentSheet->setCellValue('B13', $order_data[12]);
             // 取车地电话[Tel]
             $currentSheet->setCellValue('D9', $order_data[13]);
             // 还车日期
             $currentSheet->setCellValue('D10', $order_data[14]);
             // 还车时间
             $currentSheet->setCellValue('D11', $order_data[15]);
             // 还车门店[Location]
             $currentSheet->setCellValue('D12', $order_data[16]);
             // 还车地址[Address]
             $currentSheet->setCellValue('D13', $order_data[17]);
             // 还车地电话[Tel]
             $currentSheet->setCellValue('B23', $order_data[18]);
             // 确认号码[confirmation number]
             $currentSheet->setCellValue('B18', $order_data[19]);
             // 车行名称Supplier
             $currentSheet->setCellValue('B20', $order_data[20]);
             // 车辆类型 Car Type
             $currentSheet->setCellValue('D21', $order_data[21]);
             //变速器类型transmission
             $currentSheet->setCellValueExplicit('B22', $order_data[22], PHPExcel_Cell_DataType::TYPE_STRING);
             //车行的账户号transmission
             $currentSheet->setCellValue('A26', $order_data[23]);
             //里程限制
             $currentSheet->setCellValue('A27', $order_data[24]);
             //车辆保险
             $currentSheet->setCellValue('A28', $order_data[25]);
             //车辆包含的税费
             $currentSheet->setCellValue('A30', $order_data[26]);
             //预定的额外服务
             // 执行Excel写入操作
             $PHPWriter = new PHPExcel_Writer_Excel5($PHPExcel);
             // 生成订单附件
             //                $PHPWriter->save(iconv('utf - 8', 'gbk', $attachment_path . $attachment_name));
             $PHPWriter->save($attachment_path . $attachment_name);
         } catch (Exception $e) {
             echo $e->getMessage();
         }
         echo '<script language="javascript" type="text/javascript">window.top.window.stopUpload(1);</script >';
         return $attachment_path . $attachment_name;
     } else {
         exit('参数不正确!');
     }
 }
 /**
  * 添加日游媒体
  */
 public function ActionAddTripMedia()
 {
     if (!empty($_GET['file_name']) && !empty($_GET['id'])) {
         // 获取 文件名、日游ID、文件标题、文件描述
         $trip_id = $_GET['id'];
         $file_name = $_GET['file_name'];
         $file_title = empty($_GET['file_title']) ? '' : $_GET['file_title'];
         $file_description = empty($_GET['file_description']) ? '' : $_GET['file_description'];
         // 根据日游ID查询日游名称
         $trip_name = Trip::model()->findByPk($trip_id);
         // 根据日游名称生成日游文件夹 [riyou]
         $forder_name = implode('', IconvEncode::gbk2Pinyin($trip_name['TripName']));
         // 根据文件后缀名生成媒体文件夹 [riyou/video/]
         $suffix = trim(strtolower(strrchr($file_name, '.')), '.');
         if (in_array($suffix, Params::$picture)) {
             $file_type = 1;
             $forder_name .= '/picture/';
         } else {
             if (in_array($suffix, Params::$video)) {
                 $file_type = 2;
                 $forder_name .= '/video/';
             } else {
                 exit('文件类型错误!');
             }
         }
         // 生成完整的文件上传目录 [uploads/brs/files/TripMedia/riyou/video/]
         $file_path = FILE_PATH . 'TripMedia/' . $forder_name;
         // 创建目录
         DirectoryFile::dirCreate($file_path);
         // 验证目录是否创建成功
         if (is_dir($file_path)) {
             // 生成文件名 [1409734292_3197.jpg]
             $file_name = time() . '_' . rand(100, 10000) . '.' . $suffix;
             // 上传文件
             file_put_contents($file_path . $file_name, file_get_contents('php://input'));
             // 模型赋值
             $trip_model = new TripMedia();
             $trip_model->TripId = $trip_id;
             $trip_model->FileTitle = $file_title;
             $trip_model->FileDescription = $file_description;
             $trip_model->FileUrl = $file_path . $file_name;
             $trip_model->FileType = $file_type;
             // 将文件信息存入数据库
             if ($trip_model->save()) {
                 echo $file_path . $file_name;
             } else {
                 exit('信息保存失败!');
             }
         } else {
             exit('目录创建失败!');
         }
     } else {
         $trip_model = new TripMedia();
         // 跳转至添加页
         $this->render('add_trip_media', array('trip_media_model' => $trip_model, 'trip_id' => Yii::app()->request->getParam('trip_id')));
     }
 }
Beispiel #6
0
 /**
  * 添加文件
  * 参数格式:{"FileName":"文件名.后缀名","FileClassify":"文件分类ID","FileStream":"MIME base64格式编码"} 键名区分大小写
  * FileName:必填
  * FileStream:必填
  * FileClassify:必填 [文件分类ID必须包含在文件分类ID的枚举中]
  * @return string 保存成功返回[原始文件名+相对路径+接口返回状态] 失败返回[原始文件名+相对路径+状态+错误代码]
  * 错误代码说明:[1.JSON参数错误 / 2.文件分类ID未包含在文件分类ID的枚举中 / 3.上传了不支持的文件类型 / 4.JSON参数的键名错误或缺少必填参数 / 5.文件上传失败 / 6.文件信息保存失败 / 7.接口异常]
  */
 public function ActionSaveFile()
 {
     $json_data = array();
     // 返回的JSON数据
     $json_params = Yii::app()->request->getParam('json_params');
     // 获取JSON参数
     $json_key = array('filename', 'filestream', 'fileclassify');
     // 正确的JSON键名
     try {
         if (!empty($json_params) && IconvEncode::IsJson($json_params)) {
             // 解析JSON并将键名全部转为小写
             $file_data = array_change_key_case(json_decode($json_params, true));
             // 验证数据正确性与完整性
             foreach ($file_data as $key => $val) {
                 $file_data[$key] = trim($val);
                 // fileclassify必须为数字且必须包含在文件分类ID的枚举中
                 if ($key == 'fileclassify' && (!is_numeric($val) || !array_key_exists($file_data['fileclassify'], $this->file_classify))) {
                     exit(json_encode(self::CreateErrorMsg(2)));
                     // 文件分类ID未包含在文件分类ID的枚举中
                 }
                 // 验证文件类型
                 if ($key == 'filename') {
                     $suffix = strtolower(trim(strrchr($file_data['filename'], '.'), '.'));
                     // 获取文件后缀名
                     if (!in_array($suffix, $this->file_type)) {
                         exit(json_encode(self::CreateErrorMsg(3)));
                         // 上传了不支持的文件类型
                     }
                 }
             }
             $file_data = array_filter($file_data);
             // 去空格与去空值后的JSON数据数组
             $num = count(array_diff(array_keys($file_data), $json_key));
             // 判断JSON的键是否正确
             // 验证通过
             if ($num === 0) {
                 // 生成并创建上传路径
                 $upload_path = in_array($file_data['fileclassify'], $this->secret_classify) ? SECRET_FILE_PATH : FILE_PATH;
                 $folder_name = implode('', IconvEncode::gbk2Pinyin($this->file_classify[$file_data['fileclassify']]));
                 // 生成文件分类的文件夹名称
                 $file_path = $upload_path . $folder_name . '/' . date('Y-m-d', time()) . '/';
                 DirectoryFile::dirCreate($file_path);
                 // 检测目录是否存在
                 if (!file_exists($file_path)) {
                     exit(json_encode(self::CreateErrorMsg(5)));
                     // 文件上传失败
                 }
                 // 生成文件名 格式:【文件分类_时间戳_随机数 / qianzheng_1407315015_4189.doc】
                 $file_new_name = $folder_name . '_' . time() . '_' . rand(100, 10000) . strrchr($file_data['filename'], '.');
                 // 上传文件
                 file_put_contents($file_path . $file_new_name, base64_decode(str_replace(' ', '+', $file_data['filestream'])));
                 // 填充模型
                 $file_model = new File();
                 $file_model->FileNewName = $file_new_name;
                 $file_model->FileName = $file_data['filename'];
                 $file_model->FilePath = $file_path . $file_new_name;
                 $file_model->FileClassify = $file_data['fileclassify'];
                 $file_model->CreateTime = date('Y-m-d', time());
                 // 将文件信息保存至数据库并返回Json数据 [原始文件名.后缀名 + 相对路径]
                 if ($file_model->save()) {
                     $json_data['FileName'] = $file_data['filename'];
                     $json_data['FilePath'] = str_replace('uploads/', '', $file_path) . $file_new_name;
                     $json_data['IsError'] = 'false';
                     echo json_encode($json_data);
                 } else {
                     exit(json_encode(self::CreateErrorMsg(6)));
                     // 文件信息保存失败
                 }
             } else {
                 exit(json_encode(self::CreateErrorMsg(4)));
                 // JSON参数的键名错误或缺少必填参数
             }
         } else {
             exit(json_encode(self::CreateErrorMsg(1)));
             // JSON参数错误
         }
     } catch (Exception $e) {
         exit(json_encode(self::CreateErrorMsg(7)));
         // 接口异常
     }
 }
 /**
  *保存图片页
  */
 public function ActionSavePicture()
 {
     //获取参数
     $city_id = isset($_GET['city_id']) ? $_GET['city_id'] : "";
     $create_thumbnails_pic = isset($_GET['create_thumbnails_pic']) ? $_GET['create_thumbnails_pic'] : "";
     $picture_category_id = isset($_GET['picture_category_id']) ? $_GET['picture_category_id'] : "";
     $picture_name = isset($_GET['picture_name']) ? $_GET['picture_name'] : "";
     $picture_title = isset($_GET['picture_title']) ? $_GET['picture_title'] : "";
     $picture_description = isset($_GET['picture_description']) ? $_GET['picture_description'] : "";
     //解析图片名称和扩展名
     $name_noext = substr($picture_name, 0, strrpos($picture_name, '.'));
     //名称(无扩展名)
     $name_ext = strrchr($picture_name, ".");
     //扩展名
     //将图片中文名称转换为拼音
     $name_noext_arr = IconvEncode::gbk2Pinyin($name_noext);
     $name_noext_pinyin = implode("", $name_noext_arr);
     //中、小图名称
     $picture_middle_name = $name_noext_pinyin . "_middle" . $name_ext;
     //中规格图名称
     $picture_samll_name = $name_noext_pinyin . "_samll" . $name_ext;
     //小规格图名称
     //获取图片类型
     $picture_category = PictureCategory::model()->findByPk($picture_category_id);
     if (isset($picture_category) && !empty($picture_category)) {
         if (isset($picture_category['PictureCategoryPinyin']) && !empty($picture_category['PictureCategoryPinyin'])) {
             //创建图片路径
             $pic_dir_path = IMAGES_PATH . $picture_category['PictureCategoryPinyin'] . '/' . date("Y-m") . '/';
             DirectoryFile::dirCreate($pic_dir_path);
             //大图上传
             $pic_big_src = $pic_dir_path . $name_noext_pinyin . $name_ext;
             //上传原始图片并生产规定格式的中图和小图
             file_put_contents($pic_big_src, file_get_contents('php://input'));
             //存放大图
             //图片信息存入数据库
             if (empty($picture_title)) {
                 $picture_title = $name_noext;
             }
             $picture_model = new Picture();
             $picture_model->CityId = $city_id;
             $picture_model->CategoryId = $picture_category_id;
             $picture_model->Name = $picture_name;
             $picture_model->Title = $picture_title;
             $picture_model->Description = $picture_description;
             $picture_model->save();
             //图片中、小图片路径保存到数据库
             $pic_id = $picture_model->attributes['ID'];
             if (isset($pic_id) && !empty($pic_id)) {
                 $picture_source['big'] = new PictureSource();
                 $picture_source['big']->PicId = $pic_id;
                 $picture_source['big']->PicSrc = $pic_big_src;
                 $picture_source['big']->SizeType = 0;
                 //原图
                 // 判断是否生成中、小图
                 if ($create_thumbnails_pic) {
                     $pic_middle_src = $pic_dir_path . $picture_middle_name;
                     $pic_small_src = $pic_dir_path . $picture_samll_name;
                     ImageChange::imgResize($pic_big_src, $pic_middle_src, 380, 210);
                     //生成中图
                     ImageChange::imgResize($pic_big_src, $pic_small_src, 180, 120);
                     //生成小图
                     $picture_source['middle'] = new PictureSource();
                     $picture_source['middle']->PicId = $pic_id;
                     $picture_source['middle']->PicSrc = $pic_middle_src;
                     $picture_source['middle']->SizeType = 1;
                     //中图
                     $picture_source['small'] = new PictureSource();
                     $picture_source['small']->PicId = $pic_id;
                     $picture_source['small']->PicSrc = $pic_small_src;
                     $picture_source['small']->SizeType = 2;
                     //小图
                 }
                 //事务[S]
                 $transaction = Yii::app()->db->beginTransaction();
                 //开启事务
                 try {
                     foreach ($picture_source as $pic_src) {
                         if (!$pic_src->save()) {
                             throw new Exception();
                         }
                     }
                     $transaction->commit();
                     //提交事务
                 } catch (Exception $e) {
                     $transaction->rollBack();
                     //回滚事务
                 }
                 //事务[S]
             }
             echo $pic_dir_path;
         }
     }
 }
 /**
  * 添加酒店图片
  */
 public function ActionAddHotelPic()
 {
     $isPost = Yii::app()->request->isPostRequest;
     if (empty($isPost)) {
         // 获取酒店ID
         $hotel_id = intval(trim(Yii::app()->request->getParam('hotel_id')));
         // 根据酒店ID 获取酒店数据
         if (!empty($hotel_id)) {
             $hotel_model = Hotel::model()->findByPk($hotel_id);
             $this->render('add_hotel_picture', array('hotel_model' => $hotel_model));
         } else {
             Yii::app()->user->setFlash('参数错误,请刷新后重试');
         }
     } else {
         // 生成图的名称(大,中,小图)[S]
         $picture_name = isset($_GET['picture_name']) ? $_GET['picture_name'] : "";
         $picture_title = isset($_GET['picture_title']) ? $_GET['picture_title'] : "";
         $picture_desc = isset($_GET['picture_description']) ? $_GET['picture_description'] : "";
         // 解析图片名称和扩展名
         $name_noext = substr($picture_name, 0, strrpos($picture_name, '.'));
         //名称(无扩展名)
         $name_ext = strrchr($picture_name, ".");
         //扩展名
         $name_rand = md5(time() . mt_rand(1, 1000000));
         // 将图片中文名称转换为拼音
         $name_noext_arr = IconvEncode::gbk2Pinyin($name_noext);
         $name_noext_pinyin = implode("", $name_noext_arr) . $name_rand;
         // 中、小图名称
         $picture_middle_name = $name_noext_pinyin . "_middle" . $name_ext;
         //中规格图名称
         $picture_samll_name = $name_noext_pinyin . "_samll" . $name_ext;
         //小规格图名称
         // 生成图的名称(大,中,小图)[E]
         $hotel_id = Yii::app()->request->getParam('hotel_id');
         // 酒店ID
         $hotel_count = Hotel::model()->count('ID=:id', array(':id' => $hotel_id));
         if ($hotel_count > 0) {
             // 判断该酒店是否存在
             // 创建图片路径
             $pic_dir_path = IMAGES_PATH . 'hotel' . '/' . date("Y-m") . '/';
             DirectoryFile::dirCreate($pic_dir_path);
             // 大、中、小图上传
             $pic_big_src = $pic_dir_path . $name_noext_pinyin . $name_ext;
             $pic_middle_src = $pic_dir_path . $picture_middle_name;
             $pic_small_src = $pic_dir_path . $picture_samll_name;
             // 上传原始图片并生产规定格式的中图和小图
             file_put_contents($pic_big_src, file_get_contents('php://input'));
             // 存放大图
             ImageChange::imgResize($pic_big_src, $pic_middle_src, 380, 210);
             // 生成中图
             ImageChange::imgResize($pic_big_src, $pic_small_src, 180, 120);
             // 生成小图
             // 图片信息存入数据库
             if (empty($picture_title)) {
                 $picture_title = $name_noext;
             }
             // 图片路径保存到数据库
             $HotelPicture['big'] = new HotelPicture();
             $HotelPicture['big']->PicSrc = $pic_big_src;
             $HotelPicture['big']->PicTitle = $picture_title;
             $HotelPicture['big']->PicDes = $picture_desc;
             $HotelPicture['big']->Hotel_Id = $hotel_id;
             $HotelPicture['big']->SizeType = 0;
             $HotelPicture['middle'] = new HotelPicture();
             $HotelPicture['middle']->PicSrc = $pic_middle_src;
             $HotelPicture['middle']->PicTitle = $picture_title;
             $HotelPicture['middle']->PicDes = $picture_desc;
             $HotelPicture['middle']->Hotel_Id = $hotel_id;
             $HotelPicture['middle']->SizeType = 1;
             $HotelPicture['small'] = new HotelPicture();
             $HotelPicture['small']->PicSrc = $pic_small_src;
             $HotelPicture['small']->PicTitle = $picture_title;
             $HotelPicture['small']->PicDes = $picture_desc;
             $HotelPicture['small']->Hotel_Id = $hotel_id;
             $HotelPicture['small']->SizeType = 2;
             //事务[S]
             $transaction = Yii::app()->db->beginTransaction();
             //开启事务
             try {
                 foreach ($HotelPicture as $pic_src) {
                     if (!$pic_src->save()) {
                         throw new Exception();
                     }
                 }
                 $transaction->commit();
                 //提交事务
             } catch (Exception $e) {
                 $transaction->rollBack();
                 //回滚事务
             }
             //事务[E]
             echo $pic_dir_path;
         }
     }
 }
Beispiel #9
0
 public function save_email()
 {
     $obj = new Email();
     $obj->receiveMail('*****@*****.**', '1234567a', '*****@*****.**', 'pop3.baicheng.com', 'pop3', '110', false);
     // 链接邮箱服务器
     $obj->connect();
     // 获取邮件总数
     $tot = $obj->getTotalMails();
     if ($tot > 0) {
         // 循环获取每一封邮件
         for ($i = $tot; $i > 0; $i--) {
             // 获取邮件头
             $head = $obj->getHeaders($i);
             /****** 根据模板生成正式租车订单xls [S] ******/
             // 租车订单附件 - 模板路径
             $templet_path = CARRENTAL_ORDER_PATH . 'Templet/Templet.xls';
             // 租车订单附件 - 正式路径
             $order_path = CARRENTAL_ORDER_PATH . date('Y-m-d', time()) . '/';
             // 如正式路径不存在则创建
             if (!file_exists($order_path)) {
                 if (!DirectoryFile::dirCreate($order_path)) {
                     exit('创建目录失败!');
                 }
             }
             // 如模板文件存在则复制到正式路径下
             if (file_exists($templet_path)) {
                 // 生成附件名称
                 $attachment_name = 'order_' . time() . '.xls';
                 // 复制租车订单模板至正式目录下
                 $status = @copy($templet_path, $order_path . $attachment_name);
                 if (!$status) {
                     exit('模板文件移动失败!');
                 }
             } else {
                 exit('订单模板文件不存在!');
             }
             // 引入PHPExcel扩展
             Yii::createComponent('application.extensions.excel.PHPExcel');
             // 实例化Excel读取类
             $PHPReader = new PHPExcel_Reader_Excel5();
             // 读取Excel工作表
             $PHPExcel = $PHPReader->load($order_path . $attachment_name);
             $currentSheet = $PHPExcel->getSheet(0);
             // 获取订单邮件内容
             $email_content = $obj->getBody($i);
             // 拆分订单邮件
             $order_id = $this->email_explode('<font style="color: #444444; font-family: Arial, Helvetica, sans-serif; font-size: 16px; text-transform: uppercase; font-weight: bold;">', $email_content);
             // 拆分出订单号
             $car_detail = $this->email_explode('<font style="color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 12px;">', $email_content);
             // 拆分出车辆信息
             $other_detail = $this->email_explode('<font style="color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px;">', $email_content);
             // 拆分出其它信息 [费用明细 、车行、您的细节、取车、还车、涵盖范围 等...]
             $email_detail = array_merge($order_id, $car_detail, $other_detail);
             // 合并成完整的订单信息
             /*print_r($email_detail);
               exit();*/
             // 写入单元格内容
             $currentSheet->setCellValue('B3', $email_detail[0]);
             // 预定号[reservation number]
             $currentSheet->setCellValue('D3', $email_detail[13]);
             // 确认号码[confirmation number]
             $currentSheet->setCellValue('B5', $email_detail[15]);
             // 租车人姓名[Name]
             $currentSheet->setCellValue('D5', $email_detail[16]);
             // 航班号码[Flight number]
             $currentSheet->setCellValue('B19', $email_detail[11]);
             // 车辆代码[Car Code]
             $currentSheet->setCellValue('D19', $email_detail[2]);
             // 车门数[Doors]
             $currentSheet->setCellValue('D22', $email_detail[3]);
             // 空调[Air Con]
             $currentSheet->setCellValue('D20', $email_detail[1]);
             // 座位数[Car Seats]
             $currentSheet->setCellValue('B9', trim(explode('在', $email_detail[17])[0]));
             // 取车日期
             $currentSheet->setCellValue('B10', trim(explode('在', $email_detail[17])[1]));
             // 取车时间
             $currentSheet->setCellValue('B11', $email_detail[18]);
             // 取车门店[Location]
             $currentSheet->setCellValue('B12', $email_detail[19]);
             // 取车地址[Address]
             $currentSheet->setCellValue('B13', $email_detail[21]);
             // 取车地电话[Tel]
             $currentSheet->setCellValue('D9', trim(explode('在', $email_detail[23])[0]));
             // 还车日期
             $currentSheet->setCellValue('D10', trim(explode('在', $email_detail[23])[1]));
             // 还车时间
             $currentSheet->setCellValue('D11', $email_detail[24]);
             // 还车门店[Location]
             $currentSheet->setCellValue('D12', $email_detail[25]);
             // 还车地址[Address]
             $currentSheet->setCellValue('D13', $email_detail[27]);
             // 还车地电话[Tel]
             $currentSheet->setCellValue('B23', $email_detail[13]);
             // 确认号码[confirmation number]
             // 实例化Excel写入类
             $PHPWriter = new PHPExcel_Writer_Excel5($PHPExcel);
             // 生成订单附件
             $PHPWriter->save(iconv('utf-8', 'gbk', $order_path . $attachment_name));
             echo '<script language="javascript" type="text/javascript">window.top.window.stopUpload(1);</script>';
             /****** 根据模板生成正式租车订单xls [E] ******/
             // 填充模型
             $carrentalemail = new CarrentalEmail();
             $carrentalemail->title = $head;
             $carrentalemail->content = $email_content;
             $carrentalemail->status = 1;
             $carrentalemail->attachment_path = $order_path . $attachment_name;
             $carrentalemail->create_time = date('Y-m-d H:i:s', time());
             // 开启事务
             $transaction = Yii::app()->db->beginTransaction();
             try {
                 // 保存成功则生成租车订单附件并发送
                 if ($carrentalemail->save()) {
                     // 发送邮件
                     $status = Email::sendEmail('*****@*****.**', '租车订单', $carrentalemail->content, 'smtp.baicheng.com', '*****@*****.**', '1234567a', array($order_path . $attachment_name, $attachment_name));
                     // 发送成功后删除邮件
                     if ($status) {
                         //                            $obj->deleteMails($i);
                     } else {
                         throw new Exception('发送邮件失败!');
                     }
                 } else {
                     throw new Exception('邮件数据保存失败!');
                 }
                 $transaction->commit();
                 // 提交事务
             } catch (Exception $e) {
                 $transaction->rollBack();
                 //回滚事务
                 echo $e->getMessage();
             }
         }
     }
     // 关闭链接
     $obj->close_mailbox();
 }