Subversion Repositories Applications.framework

Rev

Rev 240 | Rev 284 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 240 Rev 273
Line 112... Line 112...
112
	 * @param integer $taille la taille en octet à convertir
112
	 * @param integer $taille la taille en octet à convertir
113
	 * 
113
	 * 
114
	 * @return string la chaine représentant la taille en octets.
114
	 * @return string la chaine représentant la taille en octets.
115
	 */
115
	 */
116
	public static function convertirTaille($taille) {
116
	public static function convertirTaille($taille) {
117
    	$unite = array('B', 'kB', 'MB', 'GB');
117
		$unite = array('B', 'kB', 'MB', 'GB');
118
    	return @round($taille / pow(1024, ($i = floor(log($taille,1024)))), 2).' '.$unite[$i];
118
		return @round($taille / pow(1024, ($i = floor(log($taille,1024)))), 2).' '.$unite[$i];
-
 
119
	}
-
 
120
	
-
 
121
	/**
-
 
122
	 * Détermine le dossier système temporaire et détecte si nous y avons accès en lecture et écriture.
-
 
123
	 *
-
 
124
	 * Inspiré de Zend_File_Transfer_Adapter_Abstract & Zend_Cache
-
 
125
	 *
-
 
126
	 * @return string|false le chemine vers le dossier temporaire ou false en cas d'échec.
-
 
127
	 */
-
 
128
	public static function getDossierTmp() {
-
 
129
		$dossier_tmp = false;
-
 
130
		foreach (array($_ENV, $_SERVER) as $environnement) {
-
 
131
			foreach (array('TMPDIR', 'TEMP', 'TMP', 'windir', 'SystemRoot') as $cle) {
-
 
132
				if (isset($environnement[$cle])) {
-
 
133
					if (($cle == 'windir') or ($cle == 'SystemRoot')) {
-
 
134
						$dossier = realpath($environnement[$cle] . '\\temp');
-
 
135
					} else {
-
 
136
						$dossier = realpath($environnement[$cle]);
-
 
137
					}
-
 
138
					if (self::etreAccessibleEnLectureEtEcriture($dossier)) {
-
 
139
						$dossier_tmp = $dossier;
-
 
140
						break 2;
-
 
141
					}
-
 
142
				}
-
 
143
			}
-
 
144
		}
-
 
145
		
-
 
146
		if ( ! $dossier_tmp) {
-
 
147
			$dossier_televersement_tmp = ini_get('upload_tmp_dir');
-
 
148
			if ($upload) {
-
 
149
				$dossier = realpath($dossier_televersement_tmp);
-
 
150
				if (self::etreAccessibleEnLectureEtEcriture($dossier)) {
-
 
151
					$dossier_tmp = $dossier;
-
 
152
				}
-
 
153
			}
-
 
154
		}
-
 
155
		
-
 
156
		if ( ! $dossier_tmp) {
-
 
157
			if (function_exists('sys_get_temp_dir')) {
-
 
158
				$dossier = sys_get_temp_dir();
-
 
159
				if (self::etreAccessibleEnLectureEtEcriture($dossier)) {
-
 
160
					$dossier_tmp = $dossier;
-
 
161
				}
-
 
162
			}
-
 
163
		}
-
 
164
		
-
 
165
		if ( ! $dossier_tmp) {
-
 
166
			// Tentative de création d'un fichier temporaire
-
 
167
			$fichier_tmp = tempnam(md5(uniqid(rand(), TRUE)), '');
-
 
168
			if ($fichier_tmp) {
-
 
169
				$dossier = realpath(dirname($fichier_tmp));
-
 
170
				unlink($fichier_tmp);
-
 
171
				if (self::etreAccessibleEnLectureEtEcriture($dossier)) {
-
 
172
					$dossier_tmp = $dossier;
-
 
173
				}
-
 
174
			}
-
 
175
		}
-
 
176
		
-
 
177
		if ( ! $dossier_tmp && self::etreAccessibleEnLectureEtEcriture('/tmp')) {
-
 
178
			$dossier_tmp = '/tmp';
-
 
179
		}
-
 
180
		
-
 
181
		if ( ! $dossier_tmp && self::etreAccessibleEnLectureEtEcriture('\\temp')) {
-
 
182
			$dossier_tmp = '\\temp';
-
 
183
		}
-
 
184
		
-
 
185
		return $dossier_tmp;
-
 
186
	}
-
 
187
	
-
 
188
	/**
-
 
189
	 * Vérifie si le fichier ou dossier est accessible en lecture et écriture.
-
 
190
	 *
-
 
191
	 * @param $ressource chemin vers le dossier ou fichier à tester
-
 
192
	 * @return boolean true si la ressource est accessible en lecture et écriture.
-
 
193
	 */
-
 
194
	protected static function etreAccessibleEnLectureEtEcriture($ressource){
-
 
195
		$accessible = false;
-
 
196
		if (is_readable($ressource) && is_writable($ressource)) {
-
 
197
			$accessible = true;
-
 
198
		}
-
 
199
		return $accessible;
119
	}
200
	}
120
}
201
}
121
?>
202
?>
122
203