Verzeichnisstruktur phpBB-2.0.0


Veröffentlicht
03.04.2002

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

usercp_avatar.php

Zuletzt modifiziert: 09.10.2024, 12:51 - Dateigröße: 12.55 KiB


001  <?php
002  /***************************************************************************
003   *                             usercp_avatar.php
004   *                            -------------------
005   *   begin                : Saturday, Feb 13, 2001
006   *   copyright            : (C) 2001 The phpBB Group
007   *   email                : support@phpbb.com
008   *
009   *   $Id$
010   *
011   *
012   ***************************************************************************/
013   
014  /***************************************************************************
015   *
016   *   This program is free software; you can redistribute it and/or modify
017   *   it under the terms of the GNU General Public License as published by
018   *   the Free Software Foundation; either version 2 of the License, or
019   *   (at your option) any later version.
020   *
021   *
022   ***************************************************************************/
023   
024  function check_image_type(&$type, &$error, &$error_msg)
025  {
026      global $lang;
027   
028      switch( $type )
029      {
030          case 'jpeg':
031          case 'pjpeg':
032          case 'jpg':
033              return '.jpg';
034              break;
035          case 'gif':
036              return '.gif';
037              break;
038          case 'png':
039              return '.png';
040              break;
041          default:
042              $error = true;
043              $error_msg = (!empty($error_msg)) ? $error_msg . '<br />' . $lang['Avatar_filetype'] : $lang['Avatar_filetype'];
044              break;
045      }
046   
047      return false;
048  }
049   
050  function user_avatar_delete($avatar_type, $avatar_file)
051  {
052      global $board_config, $userdata;
053   
054      $avatar_file = basename($avatar_file);
055      if ( $avatar_type == USER_AVATAR_UPLOAD && $avatar_file != '' )
056      {
057          if ( @file_exists(@phpbb_realpath('./' . $board_config['avatar_path'] . '/' . $avatar_file)) )
058          {
059              @unlink('./' . $board_config['avatar_path'] . '/' . $avatar_file);
060          }
061      }
062   
063      return ", user_avatar = '', user_avatar_type = " . USER_AVATAR_NONE;
064  }
065   
066  function user_avatar_gallery($mode, &$error, &$error_msg, $avatar_filename, $avatar_category)
067  {
068      global $board_config;
069   
070      $avatar_filename = phpbb_ltrim(basename($avatar_filename), "'");
071      $avatar_category = phpbb_ltrim(basename($avatar_category), "'");
072      
073      if(!preg_match('/(\.gif$|\.png$|\.jpg|\.jpeg)$/is', $avatar_filename))
074      {
075          return '';
076      }
077   
078      if ($avatar_filename == "" || $avatar_category == "")
079      {
080          return '';
081      } 
082   
083      if ( file_exists(@phpbb_realpath($board_config['avatar_gallery_path'] . '/' . $avatar_category . '/' . $avatar_filename)) && ($mode == 'editprofile') )
084      {
085          $return = ", user_avatar = '" . str_replace("\'", "''", $avatar_category . '/' . $avatar_filename) . "', user_avatar_type = " . USER_AVATAR_GALLERY;
086      }
087      else
088      {
089          $return = '';
090      }
091      return $return;
092  }
093   
094  function user_avatar_url($mode, &$error, &$error_msg, $avatar_filename)
095  {
096      global $lang;
097   
098      if ( !preg_match('#^(http)|(ftp):\/\/#i', $avatar_filename) )
099      {
100          $avatar_filename = 'http://' . $avatar_filename;
101      }
102   
103      $avatar_filename = substr($avatar_filename, 0, 100);
104   
105      if ( !preg_match("#^((ht|f)tp://)([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png))$)#is", $avatar_filename) )
106      {
107          $error = true;
108          $error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $lang['Wrong_remote_avatar_format'] : $lang['Wrong_remote_avatar_format'];
109          return;
110      }
111   
112      return ( $mode == 'editprofile' ) ? ", user_avatar = '" . str_replace("\'", "''", $avatar_filename) . "', user_avatar_type = " . USER_AVATAR_REMOTE : '';
113   
114  }
115   
116  function user_avatar_upload($mode, $avatar_mode, &$current_avatar, &$current_type, &$error, &$error_msg, $avatar_filename, $avatar_realname, $avatar_filesize, $avatar_filetype)
117  {
118      global $board_config, $db, $lang;
119   
120      $ini_val = ( @phpversion() >= '4.0.0' ) ? 'ini_get' : 'get_cfg_var';
121   
122      $width = $height = 0;
123      $type = '';
124   
125      if ( $avatar_mode == 'remote' && preg_match('/^(http:\/\/)?([\w\-\.]+)\:?([0-9]*)\/([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png)))$/', $avatar_filename, $url_ary) )
126      {
127          if ( empty($url_ary[4]) )
128          {
129              $error = true;
130              $error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $lang['Incomplete_URL'] : $lang['Incomplete_URL'];
131              return;
132          }
133   
134          $base_get = '/' . $url_ary[4];
135          $port = ( !empty($url_ary[3]) ) ? $url_ary[3] : 80;
136   
137          if ( !($fsock = @fsockopen($url_ary[2], $port, $errno, $errstr)) )
138          {
139              $error = true;
140              $error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $lang['No_connection_URL'] : $lang['No_connection_URL'];
141              return;
142          }
143   
144          @fputs($fsock, "GET $base_get HTTP/1.1\r\n");
145          @fputs($fsock, "HOST: " . $url_ary[2] . "\r\n");
146          @fputs($fsock, "Connection: close\r\n\r\n");
147   
148          unset($avatar_data);
149          while( !@feof($fsock) )
150          {
151              $avatar_data .= @fread($fsock, $board_config['avatar_filesize']);
152          }
153          @fclose($fsock);
154   
155          if (!preg_match('#Content-Length\: ([0-9]+)[^ /][\s]+#i', $avatar_data, $file_data1) || !preg_match('#Content-Type\: image/[x\-]*([a-z]+)[\s]+#i', $avatar_data, $file_data2))
156          {
157              $error = true;
158              $error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $lang['File_no_data'] : $lang['File_no_data'];
159              return;
160          }
161   
162          $avatar_filesize = $file_data1[1]; 
163          $avatar_filetype = $file_data2[1]; 
164   
165          if ( !$error && $avatar_filesize > 0 && $avatar_filesize < $board_config['avatar_filesize'] )
166          {
167              $avatar_data = substr($avatar_data, strlen($avatar_data) - $avatar_filesize, $avatar_filesize);
168   
169              $tmp_path = ( !@$ini_val('safe_mode') ) ? '/tmp' : './' . $board_config['avatar_path'] . '/tmp';
170              $tmp_filename = tempnam($tmp_path, uniqid(rand()) . '-');
171   
172              $fptr = @fopen($tmp_filename, 'wb');
173              $bytes_written = @fwrite($fptr, $avatar_data, $avatar_filesize);
174              @fclose($fptr);
175   
176              if ( $bytes_written != $avatar_filesize )
177              {
178                  @unlink($tmp_filename);
179                  message_die(GENERAL_ERROR, 'Could not write avatar file to local storage. Please contact the board administrator with this message', '', __LINE__, __FILE__);
180              }
181   
182              list($width, $height, $type) = @getimagesize($tmp_filename);
183          }
184          else
185          {
186              $l_avatar_size = sprintf($lang['Avatar_filesize'], round($board_config['avatar_filesize'] / 1024));
187   
188              $error = true;
189              $error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $l_avatar_size : $l_avatar_size;
190          }
191      }
192      else if ( ( file_exists(@phpbb_realpath($avatar_filename)) ) && preg_match('/\.(jpg|jpeg|gif|png)$/i', $avatar_realname) )
193      {
194          if ( $avatar_filesize <= $board_config['avatar_filesize'] && $avatar_filesize > 0 )
195          {
196              preg_match('#image\/[x\-]*([a-z]+)#', $avatar_filetype, $avatar_filetype);
197              $avatar_filetype = $avatar_filetype[1];
198          }
199          else
200          {
201              $l_avatar_size = sprintf($lang['Avatar_filesize'], round($board_config['avatar_filesize'] / 1024));
202   
203              $error = true;
204              $error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $l_avatar_size : $l_avatar_size;
205              return;
206          }
207   
208          list($width, $height, $type) = @getimagesize($avatar_filename);
209      }
210   
211      if ( !($imgtype = check_image_type($avatar_filetype, $error, $error_msg)) )
212      {
213          return;
214      }
215   
216      switch ($type)
217      {
218          // GIF
219          case 1:
220              if ($imgtype != '.gif')
221              {
222                  @unlink($tmp_filename);
223                  message_die(GENERAL_ERROR, 'Unable to upload file', '', __LINE__, __FILE__);
224              }
225          break;
226   
227          // JPG, JPC, JP2, JPX, JB2
228          case 2:
229          case 9:
230          case 10:
231          case 11:
232          case 12:
233              if ($imgtype != '.jpg' && $imgtype != '.jpeg')
234              {
235                  @unlink($tmp_filename);
236                  message_die(GENERAL_ERROR, 'Unable to upload file', '', __LINE__, __FILE__);
237              }
238          break;
239   
240          // PNG
241          case 3:
242              if ($imgtype != '.png')
243              {
244                  @unlink($tmp_filename);
245                  message_die(GENERAL_ERROR, 'Unable to upload file', '', __LINE__, __FILE__);
246              }
247          break;
248   
249          default:
250              @unlink($tmp_filename);
251              message_die(GENERAL_ERROR, 'Unable to upload file', '', __LINE__, __FILE__);
252      }
253   
254      if ( $width > 0 && $height > 0 && $width <= $board_config['avatar_max_width'] && $height <= $board_config['avatar_max_height'] )
255      {
256          $new_filename = uniqid(rand()) . $imgtype;
257   
258          if ( $mode == 'editprofile' && $current_type == USER_AVATAR_UPLOAD && $current_avatar != '' )
259          {
260              user_avatar_delete($current_type, $current_avatar);
261          }
262   
263          if( $avatar_mode == 'remote' )
264          {
265              @copy($tmp_filename, './' . $board_config['avatar_path'] . "/$new_filename");
266              @unlink($tmp_filename);
267          }
268          else
269          {
270              if ( @$ini_val('open_basedir') != '' )
271              {
272                  if ( @phpversion() < '4.0.3' )
273                  {
274                      message_die(GENERAL_ERROR, 'open_basedir is set and your PHP version does not allow move_uploaded_file', '', __LINE__, __FILE__);
275                  }
276   
277                  $move_file = 'move_uploaded_file';
278              }
279              else
280              {
281                  $move_file = 'copy';
282              }
283   
284              if (!is_uploaded_file($avatar_filename))
285              {
286                  message_die(GENERAL_ERROR, 'Unable to upload file', '', __LINE__, __FILE__);
287              }
288              $move_file($avatar_filename, './' . $board_config['avatar_path'] . "/$new_filename");
289          }
290   
291          @chmod('./' . $board_config['avatar_path'] . "/$new_filename", 0777);
292   
293          $avatar_sql = ( $mode == 'editprofile' ) ? ", user_avatar = '$new_filename', user_avatar_type = " . USER_AVATAR_UPLOAD : "'$new_filename', " . USER_AVATAR_UPLOAD;
294      }
295      else
296      {
297          $l_avatar_size = sprintf($lang['Avatar_imagesize'], $board_config['avatar_max_width'], $board_config['avatar_max_height']);
298   
299          $error = true;
300          $error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $l_avatar_size : $l_avatar_size;
301      }
302   
303      return $avatar_sql;
304  }
305   
306  function display_avatar_gallery($mode, &$category, &$user_id, &$email, &$current_email, &$coppa, &$username, &$email, &$new_password, &$cur_password, &$password_confirm, &$icq, &$aim, &$msn, &$yim, &$website, &$location, &$occupation, &$interests, &$signature, &$viewemail, &$notifypm, &$popup_pm, &$notifyreply, &$attachsig, &$allowhtml, &$allowbbcode, &$allowsmilies, &$hideonline, &$style, &$language, &$timezone, &$dateformat, &$session_id)
307  {
308      global $board_config, $db, $template, $lang, $images, $theme;
309      global $phpbb_root_path, $phpEx;
310   
311      $dir = @opendir($board_config['avatar_gallery_path']);
312   
313      $avatar_images = array();
314      while( $file = @readdir($dir) )
315      {
316          if( $file != '.' && $file != '..' && !is_file($board_config['avatar_gallery_path'] . '/' . $file) && !is_link($board_config['avatar_gallery_path'] . '/' . $file) )
317          {
318              $sub_dir = @opendir($board_config['avatar_gallery_path'] . '/' . $file);
319   
320              $avatar_row_count = 0;
321              $avatar_col_count = 0;
322              while( $sub_file = @readdir($sub_dir) )
323              {
324                  if( preg_match('/(\.gif$|\.png$|\.jpg|\.jpeg)$/is', $sub_file) )
325                  {
326                      $avatar_images[$file][$avatar_row_count][$avatar_col_count] = $sub_file; 
327                      $avatar_name[$file][$avatar_row_count][$avatar_col_count] = ucfirst(str_replace("_", " ", preg_replace('/^(.*)\..*$/', '\1', $sub_file)));
328   
329                      $avatar_col_count++;
330                      if( $avatar_col_count == 5 )
331                      {
332                          $avatar_row_count++;
333                          $avatar_col_count = 0;
334                      }
335                  }
336              }
337          }
338      }
339   
340      @closedir($dir);
341   
342      @ksort($avatar_images);
343      @reset($avatar_images);
344   
345      if( empty($category) )
346      {
347          list($category, ) = each($avatar_images);
348      }
349      @reset($avatar_images);
350   
351      $s_categories = '<select name="avatarcategory">';
352      while( list($key) = each($avatar_images) )
353      {
354          $selected = ( $key == $category ) ? ' selected="selected"' : '';
355          if( count($avatar_images[$key]) )
356          {
357              $s_categories .= '<option value="' . $key . '"' . $selected . '>' . ucfirst($key) . '</option>';
358          }
359      }
360      $s_categories .= '</select>';
361   
362      $s_colspan = 0;
363      for($i = 0; $i < count($avatar_images[$category]); $i++)
364      {
365          $template->assign_block_vars("avatar_row", array());
366   
367          $s_colspan = max($s_colspan, count($avatar_images[$category][$i]));
368   
369          for($j = 0; $j < count($avatar_images[$category][$i]); $j++)
370          {
371              $template->assign_block_vars('avatar_row.avatar_column', array(
372                  "AVATAR_IMAGE" => $board_config['avatar_gallery_path'] . '/' . $category . '/' . $avatar_images[$category][$i][$j], 
373                  "AVATAR_NAME" => $avatar_name[$category][$i][$j])
374              );
375   
376              $template->assign_block_vars('avatar_row.avatar_option_column', array(
377                  "S_OPTIONS_AVATAR" => $avatar_images[$category][$i][$j])
378              );
379          }
380      }
381   
382      $params = array('coppa', 'user_id', 'username', 'email', 'current_email', 'cur_password', 'new_password', 'password_confirm', 'icq', 'aim', 'msn', 'yim', 'website', 'location', 'occupation', 'interests', 'signature', 'viewemail', 'notifypm', 'popup_pm', 'notifyreply', 'attachsig', 'allowhtml', 'allowbbcode', 'allowsmilies', 'hideonline', 'style', 'language', 'timezone', 'dateformat');
383   
384      $s_hidden_vars = '<input type="hidden" name="sid" value="' . $session_id . '" /><input type="hidden" name="agreed" value="true" /><input type="hidden" name="avatarcatname" value="' . $category . '" />';
385   
386      for($i = 0; $i < count($params); $i++)
387      {
388          $s_hidden_vars .= '<input type="hidden" name="' . $params[$i] . '" value="' . str_replace('"', '&quot;', $$params[$i]) . '" />';
389      }
390      
391      $template->assign_vars(array(
392          'L_AVATAR_GALLERY' => $lang['Avatar_gallery'], 
393          'L_SELECT_AVATAR' => $lang['Select_avatar'], 
394          'L_RETURN_PROFILE' => $lang['Return_profile'], 
395          'L_CATEGORY' => $lang['Select_category'], 
396   
397          'S_CATEGORY_SELECT' => $s_categories, 
398          'S_COLSPAN' => $s_colspan, 
399          'S_PROFILE_ACTION' => append_sid("profile.$phpEx?mode=$mode"), 
400          'S_HIDDEN_FIELDS' => $s_hidden_vars)
401      );
402   
403      return;
404  }
405   
406  ?>