PageRenderTime 52ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 0ms

/b2b/core/model/resources/mdl.tmpimage.php

http://phpfor.googlecode.com/
PHP | 196 lines | 167 code | 29 blank | 0 comment | 30 complexity | b40d59453e91b954dbb20b7e05711ed0 MD5 | raw file
  1. <?php
  2. include_once('shopObject.php');
  3. class mdl_tmpimage extends shopObject{
  4. var $idColumn = 'id';
  5. var $textColumn = 'name';
  6. var $adminCtl = 'system/tmpimage';
  7. var $defaultCols = 'name,filetype,memo';
  8. function getColumns(){
  9. return array(
  10. 'id'=>array('label'=>'????','class'=>'span-4'), /* ???-??? */
  11. 'name'=>array('label'=>'???','class'=>'span-4'), /* ??? */
  12. 'filetype'=>array('label'=>'????','class'=>'span-3'), /* ???? */
  13. 'memo'=>array('label'=>'????','class'=>'span-4'), /* ???? */
  14. );
  15. }
  16. function getId($strId){
  17. $aTmp = explode('-', $strId);
  18. $aRet['tmpid'] = $aTmp[0];
  19. $aRet['name'] = substr($strId, strlen($aTmp[0])+1);
  20. return $aRet;
  21. }
  22. function getList($cols,$filter='',$start=0,$limit=20,&$count,$orderType=null){
  23. $data = $this->_fileList($filter);
  24. $count=count($data);
  25. if($orderType){
  26. foreach($data as $key => $rows){
  27. $order[$key]=strtolower($rows[$orderType[0]]);
  28. }
  29. if($orderType[1]=='asc'){
  30. array_multisort($order, SORT_ASC, $data);
  31. }else{
  32. array_multisort($order, SORT_DESC, $data);
  33. }
  34. }
  35. $data =array_slice($data,($start/20)*$limit,$limit);
  36. return $data;
  37. }
  38. function _fileList($filter){
  39. $dir = THEME_DIR.'/'.$filter['tmpid'].'/images/';
  40. $dirhandle=@opendir($dir);
  41. $ftype = array(
  42. 'gif'=>'????',
  43. 'jpg'=>'????',
  44. 'jpeg'=>'????',
  45. 'png'=>'????',
  46. 'bmp'=>'????',
  47. 'css'=>'?????',
  48. 'js'=>'????',
  49. );
  50. while($file_name=@readdir($dirhandle)){
  51. if ($file_name!="." && $file_name!=".." && $file_name!="Thumbs.db" && !is_dir($dir.'/'.$file_name)){
  52. if(!$filter['show_bak'] && preg_match('/.*\\.bak_[0-9]+\\.[^\\.]+/',$file_name)){
  53. continue;
  54. }
  55. $fext = strtolower(substr($file_name,strrpos($file_name,'.')+1));
  56. if(($filter['type']=='css')?($fext=='css'):($fext!='css') || $filter['type']=='all'){
  57. $aRows[$file_name] = array('id'=> $filter['tmpid'].'-'.$file_name,
  58. 'name' => $file_name,
  59. 'filetype' => $fext,
  60. 'memo' => ($ftype[$fext]?$ftype[$fext]:'????')
  61. );
  62. }
  63. }
  64. }
  65. @closedir($dirhandle);
  66. ksort($aRows);
  67. return $aRows;
  68. }
  69. function _filter($filter){
  70. $where=array(1);
  71. $filter['to_type'] = 1;
  72. $where[] = 'for_id = 0';
  73. if($filter['msg_from']){
  74. $where[] = "msg_from ='".$filter['msg_from']."'";
  75. }
  76. return parent::_filter($filter).' AND '.implode($where,' AND ');
  77. }
  78. function getFile($sName, $tmpid){
  79. $aFile = $this->_fileList(array('tmpid'=>$tmpid,'show_bak'=>1,'type'=>'all'));
  80. $p = strrpos($sName,'.');
  81. $re = '/^'.preg_quote(substr($sName,0,$p)).'\.bak_([0-9]+)\.'.preg_quote(substr($sName,$p+1)).'$/';
  82. foreach($aFile as $key => $rows){
  83. if($rows['name'] == $sName){
  84. $file = $rows;
  85. }
  86. if(preg_match($re,$rows['name'])){
  87. $itms[] = $rows;
  88. }
  89. }
  90. $file['files'] = $itms;
  91. return $file;
  92. }
  93. function saveFile($aParams){
  94. $dir = THEME_DIR.'/'.$aParams['tmpid'].'/images/';
  95. if ($aParams['upfile']['size'] > 0){
  96. $image=$this->system->loadModel('system/storager');
  97. $limited=$image->get_pic_upload_max();
  98. if($aParams['upfile']['size']>$limited['size']){
  99. return '????????'.$limited['desc'];
  100. }
  101. if ((substr($aParams['upfile']['type'],0,5)=="image") ){
  102. $file = $this->getFile($aParams['name'], $aParams['tmpid']);
  103. $aTmp = explode('.', $aParams['name']);
  104. $arrNum = count($aTmp) - 1;
  105. $lastStr = $aTmp[$arrNum];
  106. if(substr($aTmp[$arrNum-1], 0, 4) == 'bak_') $arrNum -= 1;
  107. for($i=0; $i<$arrNum; $i++){
  108. $preStr .= $aTmp[$i].'.';
  109. }
  110. $iLoop = 1;
  111. foreach($file['files'] as $item){
  112. if($item['name'] !== $preStr.'bak_'.$iLoop.'.'.$lastStr){
  113. break;
  114. }
  115. $iLoop++;
  116. }
  117. $saveFile = $preStr.'bak_'.$iLoop.'.'.$lastStr;
  118. move_uploaded_file($aParams['upfile']['tmp_name'], $dir.$saveFile);
  119. chmod($dir.$saveFile,0666);
  120. $aParams['imgdef'] = $saveFile;
  121. }
  122. }
  123. $aParams['imgdef'] = basename($aParams['imgdef']);
  124. if($aParams['name'] != $aParams['imgdef']){
  125. copy($dir.$aParams['name'], $dir.'tmp_image');
  126. copy($dir.$aParams['imgdef'], $dir.$aParams['name']);
  127. copy($dir.'tmp_image', $dir.$aParams['imgdef']);
  128. unlink($dir.'tmp_image');
  129. }
  130. return true;
  131. }
  132. function saveSource($aParams){
  133. $dir = THEME_DIR.'/'.$aParams['tmpid'].'/images/';
  134. $aFile = $this->getFile($aParams['name'],$aParams['tmpid']);
  135. if(count($aFile['files']) == 0 || $aParams['isbak']){
  136. $aTmp = explode('.', $aFile['name']);
  137. $arrNum = count($aTmp) - 1;
  138. $lastStr = $aTmp[$arrNum];
  139. if(substr($aTmp[$arrNum-1], 0, 4) == 'bak_') $arrNum -= 1;
  140. for($i=0; $i<$arrNum; $i++){
  141. $preStr .= $aTmp[$i].'.';
  142. }
  143. $iLoop = 1;
  144. foreach($aFile['files'] as $item){
  145. if($item['name'] !== $preStr.'bak_'.$iLoop.'.'.$lastStr){
  146. break;
  147. }
  148. $iLoop++;
  149. }
  150. $saveFile = $preStr.'bak_'.$iLoop.'.'.$lastStr;
  151. rename($dir.$aParams['name'], $dir.$saveFile);
  152. }
  153. $fp = fopen($dir.$aParams['name'],'wb');
  154. fwrite($fp,$aParams['file_source']);
  155. fclose($fp);
  156. return true;
  157. }
  158. function recoverSource($file, $dest, $tmpid){
  159. $dir = THEME_DIR.'/'.$tmpid.'/images/';
  160. return copy($dir.$file, $dir.$dest);
  161. }
  162. function toRemove($file, $tmpid){
  163. $dir = THEME_DIR.'/'.$tmpid.'/images/';
  164. return unlink($dir.$file);
  165. }
  166. }
  167. ?>