增加了有命名空间和事件驱动模式的新文件模块

This commit is contained in:
Li Jianxuan 2013-08-16 09:59:11 +00:00
parent 1353d1753c
commit f217f41059
7 changed files with 1086 additions and 0 deletions

View File

@ -0,0 +1,13 @@
<?php
namespace Files\Event;
interface FileEvent
{
public function checkExt(\Zend_EventManager_Event $e);
public function checkSize(\Zend_EventManager_Event $e);
public function makeThumb(\Zend_EventManager_Event $e);
}

View File

@ -0,0 +1,385 @@
<?php
namespace Files;
use Files\Thumbnail;
class Files{
public $tbl_att = "tbl_attachments";
public $db;
public $source = "";
protected $events = NULL; //事件
function __construct($db = NULL)
{
if(empty($db))
{
$this->db = \Zend_Registry::get('db');
}else{
$this->db = $db;
}
$this->config = \Zend_Registry::get('config');
$this->event = new \Zend_EventManager_EventManager();
}
public function events(\Zend_EventManager_EventCollection $events = NULL)
{
if ($events !== NULL) {
$this->events = $events;
} elseif ($this->events === NULL) {
$this->events = new \Zend_EventManager_EventManager(__CLASS__);
}
return $this->events;
}
//上传申请表
public function uploadApplicationForm($file,$orderid)
{
try{
if (empty($file) !== false) {
return array("error"=>"请选择要上传的文件");
}
if (@is_uploaded_file($file['tmp_name']) === false) {
return array("error"=>"文件上传失败,请重新上传");
}
$ext = $this->getFileTextExt($file['name']);
$filename = $orderid.".".$ext;
$dir = "../data/application_form/";
if (!file_exists($dir)) {
mkdir($dir);
}
$dir.=date("Y")."/";
if (!file_exists($dir)) {
mkdir($dir);
}
$new_filepath = $dir.$filename;
if (move_uploaded_file($file['tmp_name'], $new_filepath) === false) {
return array("error"=>"上传失败,请重试");
}
return array("file"=>$new_filepath);
}catch(Exception $e)
{
return array("error"=>$e->getMessage());
}
}
/**
* upload
*
* 文件上传
*
* @param Array $files e.g. $_FILES['Filedata']
*
* return Array $msg e.g. if($msg['error'])
*/
public function upload($files,$dir = "",$filename="",$makeThumb = false)
{
if (empty($files) !== false) {
return array("error"=>"请选择要上传的文件");
}
if (@is_uploaded_file($files['tmp_name']) === false) {
return array("error"=>"文件上传失败,请重新上传");
}
$conf = new \Zend_Config_Ini("../application/conf/file.ini", "files");
$source = $this->source;
$file = $files;
$results = $this->events()->trigger('upload.checkExt', $this, compact('source','file','conf'));
$cache_data = $results->bottom();
if($cache_data !== true)
{
return $cache_data;
}
$results = $this->events()->trigger('upload.checkSize', $this, compact('file','conf'));
$cache_data = $results->bottom();
if($cache_data !== true)
{
return $cache_data;
}
$msg = array();
$file_name = $files['name']; //原文件名
$file_size = $files['size']; //文件大小
$results = $this->makeUploadTarget($conf);
if(isset($results['error']))
{
return $results;
}//文件夹问题
$new_file_basename = $this->gen_uuid();
$file_ext = $this->getFileTextExt($file_name);
$new_file_name = $new_file_basename . '.' . $file_ext;//新文件名
//移动文件
$file_path = $results['save_path'] . $new_file_name ;
if (move_uploaded_file($file['tmp_name'], $file_path) === false) {
return array("error"=>"上传失败,请重试");
}
$dbsave = $db_path = $results['dbsave'];
$dbsave .= $new_file_name;//数据库最终存储的文件
$file_url = $dbsave;//文件链接
$results = $this->events()->trigger('upload.makeThumb', $this, compact('conf','file_path','db_path','file_ext','new_file_basename'));
$thumbnail = $results->bottom();
$msg['file_url'] = $file_url;
$msg['file_size'] = $file_size;
$msg['db_path'] = $conf->upload . $dbsave;
$msg['realname'] = $file_name;
$msg['file_ext'] = $file_ext;
$msg['file_type'] = $this->getFileMime($file_path);
$msg['thumb'] = $thumbnail;
return $msg;
}//文件上传
//生成上传文件的地址
public function makeUploadTarget($conf)
{
//文件保存目录路径
$save_path = $conf->upload;
if (@is_dir($save_path) === false) {
return array("error"=>"上传目录不存在。请联系管理员");
}
if (@is_writable($save_path) === false) {
return array("error"=>"上传目录没有写权限。请联系管理员");
}
$dbsave = ""; //数据库中存放的路径
$y = date("Y");
$m = date("m");
$d = date("d");
$save_path .= $y . "/";
$dbsave .= $y.'/';
if (!file_exists($save_path)) {
mkdir($save_path);
}
$save_path .= $m . "/";
$dbsave .= $m.'/';
if (!file_exists($save_path)) {
mkdir($save_path);
}
$save_path .= $d . "/";
$dbsave .= $d.'/';
if (!file_exists($save_path)) {
mkdir($save_path);
}
return array("save_path"=>$save_path,"dbsave"=>$dbsave);
}//创建上传文件的地址
//获取文件扩展名
public function getFileTextExt($file_name)
{
$temp_arr = explode(".", $file_name);
$file_ext = array_pop($temp_arr);
$file_ext = trim($file_ext);
$file_ext = strtolower($file_ext);
return $file_ext;
}
//获取文件Mime通过finfo扩展
public function getFileMime($file_name)
{
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$filetype = finfo_file($finfo, $file_name) ; //文件mime类型
finfo_close($finfo);
return $filetype;
}
//文件名uuid
public function gen_uuid() {
return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
// 32 bits for "time_low"
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
// 16 bits for "time_mid"
mt_rand( 0, 0xffff ),
// 16 bits for "time_hi_and_version",
// four most significant bits holds version number 4
mt_rand( 0, 0x0fff ) | 0x4000,
// 16 bits, 8 bits for "clk_seq_hi_res",
// 8 bits for "clk_seq_low",
// two most significant bits holds zero and one for variant DCE1.1
mt_rand( 0, 0x3fff ) | 0x8000,
// 48 bits for "node"
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff )
);
}
/**
* getOne()
*
* 从数据库获取单个文件的信息
*
* @param int id
*
* return array
*/
public function getOne($id){
$db = $this->db;
//下载单个附件
$sql = $db->query("select a.* from ".$this->tbl_att." a where a.id=$id order by a.ts_created desc");
$att = $sql->fetch();
if(empty($att['id']))
{
return false;
}
return $att;
}
public function delete($id){
$att = $this->getOne($id);
if(!empty($att['thumb']))
{
$thumbs = json_decode($att['thumb'],true);
if(count($thumbs)>0)
{
foreach($thumbs as $v)
{
@unlink($v['file']);
}
}
}
if(file_exists($att['filename'])){
if(unlink($att['filename']))
{
$sql = "DELETE FROM ".$this->tbl_att." WHERE id=$id";
return $this->db->exec($sql);
}else{
return "删除失败";
}
}else{
$sql = "DELETE FROM ".$this->tbl_att." WHERE id=$id";
if($this->db->exec($sql))
{
return "文件不存在,数据库记录删除成功";
}else{
return "文件不存在,数据库记录删除失败";
}
}
}
public function getAll($fields = ""){
$wheresql = array();
if($fields!="")
{
$wheresql[] = " a.id IN ($fields) ";
}
if(count($wheresql)>0)
{
$wheresql = " WHERE ".join(",",$wheresql);
}else{
$wheresql = "";
}
$sql = "SELECT a.*,u.username,u.id as uid FROM ".$this->tbl_att." a
LEFT JOIN tbl_member u ON a.userid=u.id
$wheresql
ORDER BY a.id DESC";
$rs = $this->db->query($sql);
$rows = $rs->fetchAll();
return $rows;
}
/**
* downloadFile
*
* 文件下载
*
* @param String $fullPath e.g. Zend_Registry::get('upload').$fileurl
*
* return file
*/
static function downloadFile( $fullPath ){
//判断是否已经输出头部
if( headers_sent() )
{
return false;
}
else{
// Required for some browsers
@apache_setenv('no-gzip', 1);
@ini_set('zlib.output_compression', 0);
// File Exists?
if( file_exists($fullPath) ){
// Parse Info / Get Extension
$fsize = filesize($fullPath);
$path_parts = pathinfo($fullPath);
$ext = strtolower($path_parts["extension"]);
// Determine Content Type
switch ($ext) {
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
default: $ctype="application/force-download";
}
header('Content-Description: File Transfer');
header("Cache-Control: private",false);
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename=\"".basename($fullPath)."\";" );
header("Content-Transfer-Encoding: binary\n");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: public");
header("Content-Length: ".$fsize);
ob_clean();
flush();
if(readfile($fullPath))
return true;
else
return false;
} else
{return false;}
}
} //文件下载
}

View File

@ -0,0 +1,28 @@
<?php
namespace Files\Listener;
use Files\Operation\FileOperate;
class FileListener implements \Zend_EventManager_ListenerAggregate
{
private $event;
function __construct()
{
$this->event = new \Zend_EventManager_EventManager();
}
public function attach(\Zend_EventManager_EventCollection $events)
{
$_Events = new FileOperate();
$events->attach('upload.checkExt', array($_Events, 'checkExt'), 100);
$events->attach('upload.checkSize', array($_Events, 'checkSize'), 80);
$events->attach('upload.makeThumb', array($_Events, 'makeThumb'), 70);
}
public function detach(\Zend_EventManager_EventCollection $events)
{
}
}

View File

@ -0,0 +1,158 @@
<?php
namespace Files\Operation;
use Files\Thumbnail;
class FileOperate implements \Files\Event\FileEvent
{
private $db; //传入PDO对象
private $DefaultFetchMode = \PDO::FETCH_BOTH; //默认检索模式防止出现sdtClass错误
private $config; //全局配置
public $source;
public $allow_source = array(
'voiceimage', //声音投稿的图片
'voice' //音频文件
);
public $def_allow_ext = array(
'gif', 'jpg', 'jpeg', 'png', 'bmp',
'flv','swf', 'mp3', 'wav', 'wma', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb',
'pdf','doc', 'docx', 'xls', 'xlsx', 'ppt', 'htm', 'html', 'txt', 'zip', 'rar', 'gz', 'bz2'
);
function __construct($db = NULL)
{
if(empty($db))
{
$this->db = \Zend_Registry::get('db');
}else{
$this->db = $db;
}
$this->config = \Zend_Registry::get('config');
$this->source = $this->loadFileSource();
}
private function loadFileSource()
{
return array(
'voiceimage'=> array('gif','jpg','jpeg','png'),
'voice'=>array('audio/mpeg')
);
}
public function checkExt(\Zend_EventManager_Event $e){
$source = (string)$e->getParam('source');
$file = $e->getParam('file');
$conf = $e->getParam('conf');
if(empty($source))
{
//定义允许上传的文件扩展名
if(isset($conf->ext) && !empty($conf->ext))
{
$ext_arr = explode(",",$conf->ext);
}else{
$ext_arr = $this->def_allow_ext;
}
}else{
if(!in_array($source,$this->allow_source)){
return array("error"=>'错误的来源');
}else{
$ext_arr = $this->source[$source];
}
}
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$filetype = finfo_file($finfo, $file['tmp_name']) ; //文件mime类型
finfo_close($finfo);
foreach($ext_arr as $v)
{
if(strpos($filetype,$v) !== false)
{
return true;
}
}
return array("error"=>"您上传的文件不在允许的范围内".$filetype." was not in ".join(",",$ext_arr));
}//checkParam
public function checkSize(\Zend_EventManager_Event $e){
$file = $e->getParam('file');
$file_size = $file['size'];
if(!isset($conf->maxsize) && !empty($conf->maxsize))
{
$max_size = (int)$conf->maxsize;
}else{
$max_size = 10*1024*1024;
}
if($file_size > $max_size)
{
return array("error"=>'上传的文件超过了允许的文件大小');
}
return true;
}//checkSize
public function makeThumb(\Zend_EventManager_Event $e)
{
$file_path = $e->getParam('file_path');
$conf = $e->getParam('conf');
$save_path = $conf->upload;
$dbsave = $e->getParam('db_path');
$file_ext = $e->getParam('file_ext');
$new_file_basename = $e->getParam('new_file_basename');
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$filetype = finfo_file($finfo, $file_path) ; //文件mime类型
finfo_close($finfo);
$thumb_conf = new \Zend_Config_Ini("../application/conf/thumb.ini", "thumb");
if($thumb_conf->makethumb != "on")
{
return array();
}
$allowmime = $thumb_conf->imagemime;
if(empty($allowmime))
{
$allowmime = array('image/jpeg','image/png','image/gif');
}else{
$allowmime = explode(",",$allowmime);
}
if(!in_array($filetype,$allowmime))
{
return array();
}
$thumb_size = explode(",",$thumb_conf->thumbsize);
$thumbnail = array();
foreach($thumb_size as $v)
{
$v = (int)$v;
$thumb = new Thumbnail($v, $v);
$image = file_get_contents($file_path);
$thumb->loadData($image, $filetype);
$thumbfile = $save_path.$dbsave.$new_file_basename.'_'.$v. '.' .$file_ext;
$thumbnail[$v] = array(
'size' => $v,
'ext' => $file_ext,
'file' => $thumbfile,
'url' => $dbsave.$new_file_basename.'_'.$v. '.' .$file_ext ,
);
$thumb->buildThumb($thumbfile);
}
return $thumbnail;
}//makeThumb
}

View File

@ -0,0 +1,194 @@
<?php
namespace Files;
class Output
{
private $db;//传入PDO对象
function __construct($db)
{
$this->db = $db;
}
//输出下载
public function Download($filename,$content,$filetype="JSON",$zfmvc=""){
if(empty($filename) || empty($content) || empty($filetype))
{
return false;
}
$filetype = strtolower($filetype);
//支持的输出类型
$functions = array(
"json"=>"JsonOutPut",
"xml"=>"XMLOutPut",
"csv"=>"CSVOutPut",
);
$file_type_functions = array();
foreach($functions as $k=>$v)
{
$file_type_functions[] = $k;
}
if(!in_array($filetype,$file_type_functions))
{
return false;
}
$output_body = $this->$functions[$filetype]($content);
$this->pushDownload($output_body,$filename,$filetype,$zfmvc);
}//Download
//输出JSON内容
public function JsonOutPut($content,$numeric = true){
if($numeric == true)
{
return json_encode($content,JSON_NUMERIC_CHECK);
}else{
return json_encode($content);
}
}//JsonOutPut()
//输出XML内容
public function XMLOutPut($content){
}//JsonOutPut()
//输出CSV内容
public function CSVOutPut($data,$head = ""){
$split = ",";
$content = "";
//如果是windows输出一个BOM头
if(strpos($_SERVER["HTTP_USER_AGENT"],"Windows"))
{
$content = "\xEF\xBB\xBF";
}else{
$content = "";
}
if(!empty($head))
{
$content .= join($split,$head)."\r\n";
}
foreach($data as $k=>$v)
{
foreach($v as $kk=>$vv)
{
if(strpos($vv,","))
{
$v[$kk] = "\"".$vv."\"";
}
}
$content .= join($split,$v)."\r\n";
}
return $content;
}//JsonOutPut()
//输出下载
public function pushDownload($content,$filename,$type="",$zfmvc="")
{
if(headers_sent())
{
return false;
}
if(empty($filename) || empty($content))
{
return false;
}
$content_type = $this->ContentTypes($type);
$fsize = strlen($content);
//没有在zf controller 中使用
if(empty($zfmvc))
{
header('Content-Description: File Transfer');
header("Cache-Control: private",false);
header("Content-Type: ".$content_type);
header("Content-Disposition: attachment; filename=\"".$filename."\";" );
header("Content-Transfer-Encoding: binary\n");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: public");
header("Content-Length: ".$fsize);
ob_clean();
flush();
echo $content;
exit();
}else{
$zfmvc->getResponse()->setHeader('Content-Type', $content_type)
->setHeader('Content-Disposition','attachment; filename="'.$filename.'"')
->setHeader('Content-Length', strlen($content))
->setHeader('Content-Type','application/force-download')
->setHeader('Content-Type','application/download')
->setHeader('Content-Description','File Transfer')
->setHeader('Content-Transfer-Encoding','binary')
->setHeader('Expires',0)
->setHeader('Cache-Control','must-revalidate, post-check=0, pre-check=0')
->setHeader('Pragma','public')
->setBody($content);
exit();
}
}//pushDownload
//Content-Type
public function ContentTypes($ext){
$ext = strtolower($ext);
$def = "application/force-download";
if(empty($ext))
{
return $def;
}
$content_types = array(
"csv" => "text/csv",
"pdf"=>"application/pdf",
"exe"=>"application/octet-stream",
"gzip"=>"application/zip",
"doc"=>"application/msword",
"xls"=>"application/vnd.ms-excel",
"ppt"=>"application/vnd.ms-powerpoint",
"gif"=>"image/gif",
"png"=>"image/png",
"jpeg"=>"image/jpg",
"jpg"=>"image/jpg",
"xml"=>"text/xml",
"xsl"=>"text/xml"
);
if(!isset($content_types[$ext]))
{
return $def;
}else{
return $content_types[$ext];
}
}//ContentTypes
}

View File

@ -0,0 +1,176 @@
<?php
namespace Files;
/**
* 生成缩略图(支持加载图片文件和字符串2种方式)
* @param $maxWidth 缩略图最大宽度
* @param $maxHeight 缩略图最大高度
* @param bool $scale 是否按比例缩小,否则拉伸
* @param bool $inflate 是否放大以来填充缩略图
*/
class Thumbnail {
private $maxWidth;
private $maxHeight;
private $scale;
private $inflate;
private $types;
private $imgLoaders;
private $imgCreators;
private $source;
private $sourceWidth;
private $sourceHeight;
private $sourceMime;
private $thumb;
private $thumbWidth;
private $thumbHeight;
public function __construct($maxWidth, $maxHeight, $scale = true, $inflate = false) {
$this->maxWidth = $maxWidth;
$this->maxHeight = $maxHeight;
$this->scale = $scale;
$this->inflate = $inflate;
$this->types = array(
'image/jpeg',
'image/png',
'image/gif'
);
//加载MIME类型图像的函数名称
$this->imgLoaders = array(
'image/jpeg' => 'imagecreatefromjpeg',
'image/png' => 'imagecreatefrompng',
'image/gif' => 'imagecreatefromgif'
);
//储存创建MIME类型图片的函数名称
$this->imgCreators = array(
'image/jpeg' => 'imagejpeg',
'image/png' => 'imagepng',
'image/gif' => 'imagegif'
);
}
/**
* 文件方式加载图片
* @param string $image 源图片
* @return bool
*/
public function loadFile($image){
if(!$dims = @getimagesize($image)){
trigger_error("源图片不存在");
}
if(in_array($dims['mime'], $this->types)){
$loader = $this->imgLoaders[$dims['mime']];
$this->source = $loader($image);
if($dims['mime'] == 'image/png' || $dims['mime'] == 'image/gif'){
imagesavealpha($this->source, true);
}
$this->sourceWidth = $dims[0];
$this->sourceHeight = $dims[1];
$this->sourceMime = $dims['mime'];
$this->initThumb();
return TRUE;
}else{
trigger_error('不支持'.$dims['mime']."图片类型");
}
}
/**
* 字符串方式加载图片
* @param string $image 字符串
* @param string $mime 图片类型
* @return type
*/
public function loadData($image,$mime){
if(in_array($mime, $this->types)){
if($this->source = @imagecreatefromstring($image)){
$this->sourceWidth = imagesx($this->source);
$this->sourceHeight = imagesy($this->source);
$this->sourceMime = $mime;
$this->initThumb();
return TRUE;
}else{
trigger_error("不能从字符串加载图片");
}
}else{
trigger_error("不支持".$mime."图片格式");
}
}
/**
* 生成缩略图
* @param string $file 文件名。如果不为空则储存为文件,否则直接输出到浏览器
*/
public function buildThumb($file = NULL){
$creator = $this->imgCreators[$this->sourceMime];
if(isset($file) && $this->thumb !== NULL){
return $creator($this->thumb,$file);
}else{
return false;
}
}
/**
* 处理缩放
*/
public function initThumb(){
if($this->scale){
if($this->sourceWidth > $this->sourceHeight){
$this->thumbWidth = $this->maxWidth;
$this->thumbHeight = floor($this->sourceHeight*($this->maxWidth/$this->sourceWidth));
}elseif($this->sourceWidth < $this->sourceHeight){
$this->thumbHeight = $this->maxHeight;
$this->thumbWidth = floor($this->sourceWidth*($this->maxHeight/$this->sourceHeight));
}else{
$this->thumbWidth = $this->maxWidth;
$this->thumbHeight = $this->maxHeight;
}
}
if($this->sourceWidth <= $this->maxWidth && $this->sourceHeight <= $this->maxHeight && $this->inflate == FALSE){
$this->thumb = NULL;
}else{
$this->thumb = imagecreatetruecolor($this->thumbWidth, $this->thumbHeight);
if($this->sourceMime == 'image/png' || $this->sourceMime == 'image/gif')
{
imagealphablending($this->thumb, true);
imagesavealpha($this->thumb, true);
if($this->sourceMime == 'image/gif')
{
$bgcolor=imagecolorallocate($this->thumb,0,0,0);
$transparent = imagecolortransparent($this->thumb,$bgcolor) ;
}
if($this->sourceMime == 'image/png')
{
$transparent = imagecolorallocatealpha($this->thumb, 0, 0, 0, 127);
}
imagefill($this->thumb, 0, 0, $transparent);
}
imagecopyresampled($this->thumb, $this->source, 0, 0, 0, 0, $this->thumbWidth, $this->thumbHeight, $this->sourceWidth, $this->sourceHeight);
}
}
public function getMine(){
return $this->sourceMime;
}
public function getThumbWidth(){
return $this->thumbWidth;
}
public function getThumbHeight(){
return $this->thumbHeight;
}
}
/**
* 缩略图类调用示例(文件)
$thumb = new Thumbnail(200, 200);
$thumb->loadFile('wap.gif');
header('Content-Type:'.$thumb->getMine());
$thumb->buildThumb();
/**
* 缩略图类调用示例(字符串)
$thumb = new Thumbnail(200, 200);
$image = file_get_contents('wap.gif');
$thumb->loadData($image, 'image/jpeg');
$thumb->buildThumb('wap_thumb.gif');
*/

View File

@ -0,0 +1,132 @@
<?php
namespace Helper;
class View extends \Zend_Controller_Plugin_Abstract
{
private $db; //传入PDO对象.
private $product = 0; //产品环境
function __construct($db = NULL)
{
if(empty($db))
{
$this->db = \Zend_Registry::get('db');
}else{
$this->db = $db;
}
}
static function addPaginator($data,$ctl,$limit = 10)
{
$request = $ctl->getRequest();
$page = $request->getParam('page');
$paginator = \Zend_Paginator::factory($data);
$paginator->setCurrentPageNumber($page);
$paginator->setItemCountPerPage($limit);
$paginator->setView($ctl->view);
\Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_param.phtml');
$ctl->view->paginator = $paginator;
}
static function Msg($type,$content,$url=''){
$html = '<div class="alert '.$type.'">'."\r\n";
$html.= '<a data-dismiss="alert" class="close">×</a>'."\r\n";
$html.= $content."\r\n";
$html.= '</div>'."\r\n";
if(!empty($url))
{
if($url == -1){
$html.= '<script language="javascript">setTimeout("window.history.back(-1);",3000);</script>'."\r\n";
}else{
$html.= '<script language="javascript">setTimeout("self.location=\''.$url.'\'",3000);</script>'."\r\n";
}
}
return $html;
}
static function Error($content,$type='',$url=''){
if(empty($type))
{
$AlertType = "alert-error";
}else{
$AlertType = $type;
}
$html = '<div class="alert alert-block fade in '.$AlertType.'" id="Alert-error-box">'."\r\n";
$html.= '<a class="close" data-dismiss="alert" href="#">×</a>'."\r\n";
if(!is_array($content)) {
$html.= '<h4 class="alert-heading">'.$content.'</h4>'."\r\n";
}else{
$html.= '<ul>'."\r\n";
foreach($content as $v) {
$html.='<li>'.$v.'</li>'."\r\n";
}
$html.= '</ul>'."\r\n";
}
$html.= '</div>'."\r\n";
return $html;
}
static function User($param = NULL){
$auth = \Zend_Auth::getInstance();
if($auth->hasIdentity())
{
if(!empty($param))
{
$user = $auth->getIdentity();
return $user->$param;
}else{
$user = $auth->getIdentity();
return $user;
}
}else{
return false;
}
}
static function Dump($data,$exit = true){
echo "<pre>";
var_dump($data);
echo "</pre>";
if($exit)
{
exit();
}
}
static function Post(\Zend_Controller_Action $ctl,$msg,$url=""){
if(empty($msg))
{
return false;
}
if(!is_array($msg))
{
$msg = array('content'=>$msg,'url'=>$url);
}
$helper = new \Zend_Controller_Action_HelperBroker($ctl);
$helper->viewRenderer->setNoRender();
echo $ctl->view->partial('post-message.phtml', $msg);
return true;
}
static function HttpError($ctl,$code = 404){
$ctl->getResponse()->setHttpResponseCode($code);
$helper = new \Zend_Controller_Action_HelperBroker($ctl);
$helper->layout->setLayout('layout');
$helper->viewRenderer->setNoRender();
echo $ctl->view->partial('error/404.phtml');
return true;
}
static function getHostLink()
{
$protocol = "http";
if(strpos(strtolower($_SERVER['SERVER_PROTOCOL']),"https"))
{
$protocol = "https";
}
return $protocol."://".$_SERVER['SERVER_NAME'];
}
}