Blame view

js/tiny_mce/plugins/ajaxfilemanager/ajax_file_paste.php 3.78 KB
42868d70   andryeyev   Создал GIT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
  <?
  		include_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . "inc" . DIRECTORY_SEPARATOR . "config.php");		
  		$error = '';
  		$fileMoved = array();
  		$unmovedDocDueToSamePath = array();
  	if(CONFIG_SYS_VIEW_ONLY || (!CONFIG_OPTIONS_CUT && !CONFIG_OPTIONS_COPY))
  	{
  		$error = SYS_DISABLED;
  	}
  	elseif(empty($_GET['current_folder_path']))
  		{
  			$error = ERR_NOT_DEST_FOLDER_SPECIFIED;
  		}elseif(!file_exists($_GET['current_folder_path']) || !is_dir($_GET['current_folder_path']))
  		{
  			$error = ERR_DEST_FOLDER_NOT_FOUND;
  		}elseif(!isUnderRoot($_GET['current_folder_path']))
  		{
  			$error = ERR_DEST_FOLDER_NOT_ALLOWED;
  		}else 
  		{
  			
  			include_once(CLASS_MANAGER);
  			include_once(CLASS_SESSION_ACTION);
  			$sessionAction = new SessionAction();
  			include_once(DIR_AJAX_INC . "class.manager.php");	
  			$manager = new manager();
  			$manager->setSessionAction($sessionAction);
  			$selectedDocuments = $sessionAction->get();
  			
  			$destFolderPath = addTrailingSlash(backslashToSlash($_GET['current_folder_path']));
  			
  			
  			if(sizeof($selectedDocuments))
  			{
  				//get all files within the destination folder
  				$allDocs = array();
  				if(($fh = @opendir($_GET['current_folder_path'])))
  				{
  					while(($file = readdir($fh)) && $file != '.' && $file != '..')
  					{
  						$allDocs[] = getRealPath($destFolderPath . $file);
  					}
  				}
  
  				include_once(CLASS_FILE);
  				$file = new file();
  				//check if all files are allowed to cut or copy
  
  				foreach($selectedDocuments as $doc)
  				{
  					if(file_exists($doc) && isUnderRoot($doc) )
  					{
  						
  						if( array_search(getRealPath($doc), $allDocs) === false || CONFIG_OVERWRITTEN)
  						{
  							if(CONFIG_OVERWRITTEN)
  							{
  								$file->delete($doc);
  							}
  							if($file->copyTo($doc, $_GET['current_folder_path']))
  							{
  								
  								$finalPath = $destFolderPath . basename($doc);
  								$objFile = new file($finalPath);
  								$tem = $objFile->getFileInfo();
  								$obj = new manager($finalPath, false);			
  													
  								$fileType = $obj->getFileType($finalPath, (is_dir($finalPath)?true:false));
  								
  								foreach($fileType as $k=>$v)
  								{
  									$tem[$k] = $v;
  								}
  								
  /*								foreach ($folderInfo as $k=>$v)
  								{
  									$tem['i_' . $k] = $v;
  								}
  								if($folderInfo['type'] == 'folder' && empty($folderInfo['subdir']) &&  empty($folderInfo['file']))
  								{
  									$tem['cssClass'] = 'folderEmpty';
  								}*/
  								
  								$tem['final_path'] = $finalPath;
  								$tem['path'] = backslashToSlash($finalPath);		
  								$tem['type'] = (is_dir($finalPath)?'folder':'file');
  								$tem['size'] = @transformFileSize($tem['size']);
  								$tem['ctime'] = date(DATE_TIME_FORMAT, $tem['ctime']);
  								$tem['mtime'] = date(DATE_TIME_FORMAT, $tem['mtime']);
  								$tem['flag'] = 'noFlag';
  								$tem['url'] = getFileUrl($doc);
  		
  								$manager = null;
  								if($sessionAction->getAction() == "cut")
  								{
  									$file->delete($doc);
  								}
  								$fileMoved[sizeof($fileMoved)] = $tem;
  								$tem = null;
  							}							
  						}else 
  						{
  							$unmovedDocDueToSamePath[] = $doc;
  						}
  							
  					}
  				}
  
  				$sessionAction->set(array());
  			}
  			if(sizeof($unmovedDocDueToSamePath) == sizeof($selectedDocuments))
  			{
  				$error = ERR_DEST_FOLDER_NOT_ALLOWED;
  			}elseif(sizeof($unmovedDocDueToSamePath)) 
  			{
  				foreach($unmovedDocDueToSamePath as $v)
  				{
  					$error .=  sprintf(ERR_UNABLE_TO_MOVE_TO_SAME_DEST, $v) . "\r\n";
  				}
  			}
  		}
  		
  		echo "{'error':'" . $error . "', 'unmoved_files':" . sizeof($unmovedDocDueToSamePath) . ", 'files':{";
  		foreach($fileMoved as  $i=>$file)
  		{
  			
  			echo ($i>0?', ':' ') . $i . ": { ";
  			$j = 0;
  			foreach($file as $k=>$v)
  			{
  				echo ($j++ > 0? ", ":'') . "'" . $k . "':'" . $v . "'"; 
  				
  			}
  			echo "} ";
  		}
  		echo "} }";
  	
  ?>