[ Index ]
 

Code source de CMS made simple 1.0.5

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/admin/ -> files.php (source)

   1  <?php
   2  #CMS - CMS Made Simple
   3  #(c)2004 by Ted Kulp (wishy@users.sf.net)
   4  #This project's homepage is: http://cmsmadesimple.sf.net
   5  #
   6  #This program is free software; you can redistribute it and/or modify
   7  #it under the terms of the GNU General Public License as published by
   8  #the Free Software Foundation; either version 2 of the License, or
   9  #(at your option) any later version.
  10  #
  11  #This program is distributed in the hope that it will be useful,
  12  #but WITHOUT ANY WARRANTY; without even the implied warranty of
  13  #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14  #GNU General Public License for more details.
  15  #You should have received a copy of the GNU General Public License
  16  #along with this program; if not, write to the Free Software
  17  #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  18  #
  19  #$Id: files.php 3202 2006-07-29 08:26:22Z silmarillion $
  20  
  21  $CMS_ADMIN_PAGE=1;
  22  
  23  // in filetypes.inc.php filetypes are defined
  24  require_once(dirname(dirname(__FILE__))."/lib/filemanager/filetypes.inc.php");
  25  require_once(dirname(dirname(__FILE__))."/lib/file.functions.php");
  26  require_once ("../include.php");
  27  
  28  check_login();
  29  
  30  function deldir($dir)
  31  {
  32      $handle = opendir($dir);
  33      while (false!==($FolderOrFile = readdir($handle)))
  34      {
  35          if($FolderOrFile != "." && $FolderOrFile != "..")
  36          {
  37              if(@is_dir("$dir/$FolderOrFile"))
  38              {
  39                  deldir("$dir/$FolderOrFile");
  40              }  // recursive
  41              else
  42              {
  43                  unlink("$dir/$FolderOrFile");
  44              }
  45          }
  46      }
  47      closedir($handle);
  48      if(rmdir($dir))
  49      {
  50          $success = true;
  51      }
  52      return $success;
  53  }
  54  
  55  
  56  $errors = "";
  57  
  58  $dir = $config["uploads_path"];
  59  $url = $config["uploads_url"];
  60  
  61  $reldir = "";
  62  if (isset($_POST['reldir'])) $reldir = $_POST['reldir'];
  63  else if (isset($_GET['reldir'])) $reldir = $_GET['reldir'];
  64  
  65  # Check for path errors. It's a bit of a hack.
  66  $reldir = urldecode($reldir);
  67  $reldir = str_replace("..", "", $reldir);
  68  $reldir = str_replace("\\", "/", $reldir);
  69  $reldir = str_replace("//", "/", $reldir);
  70  $reldir = ereg_replace("/^", "", $reldir);
  71  
  72  if ($reldir != "")
  73      {
  74      $CMS_ADMIN_SUBTITLE = $reldir;
  75      }
  76  
  77  if (strpos($reldir, '..') === false && strpos($reldir, '\\') === false)
  78  {
  79      $dir .= $reldir;
  80  }
  81  
  82  $userid = get_userid();
  83  $access = check_permission($userid, 'Modify Files');
  84  
  85  $username = $gCms->variables["username"];
  86  
  87  #Did we upload a file?
  88  if (isset($_FILES) && isset($_FILES['uploadfile']) && isset($_FILES['uploadfile']['name']) && $_FILES['uploadfile']['name'] != "")
  89  {
  90      if ($access)
  91      {
  92          if (!@move_uploaded_file($_FILES['uploadfile']['tmp_name'], $dir."/".$_FILES['uploadfile']['name']))
  93          {
  94              $errors .= "<li>".lang('filenotuploaded')."</li>";
  95          }
  96          else
  97          {
  98              chmod($dir."/".$_FILES['uploadfile']['name'], octdec('0'.$config['default_upload_permission']));
  99              audit(-1, $_FILES['uploadfile']['name'], 'Uploaded File');
 100          }
 101      }
 102      else
 103      {
 104          $errors .= "<li>".lang('needpermissionto', array('Modify Files'))."</li>";
 105      }
 106  }
 107  
 108  #Did we create a new dir?
 109  if (isset($_POST['newdirsubmit']))
 110  {
 111      if ($access)
 112      {
 113          #Make sure it isn't an empty dir name
 114          if ($_POST['newdir'] == "")
 115          {
 116              $errors .= "<li>".lang('filecreatedirnoname')."</li>";
 117          }
 118          else if (ereg('\.\.',$_POST['newdir']))
 119          {
 120              $errors .= "<li>".lang('filecreatedirnodoubledot')."</li>";
 121          }
 122          else if (ereg('/', $_POST['newdir']) || strpos($_POST['newdir'], '\\') !== false)
 123          {
 124              $errors .= "<li>".lang('filecreatedirnoslash')."</li>";
 125          }
 126          else if (file_exists($dir."/".$_POST['newdir']))
 127          {
 128              $errors .= "<li>".lang('directoryexists')."</li>";
 129          }
 130          else
 131          {
 132              mkdir($dir."/".$_POST['newdir'], 0777);
 133              audit(-1, $_POST['newdir'], 'Created Directory');
 134          }
 135      }
 136      else
 137      {
 138          $errors .= "<li>".lang('needpermissionto', array('Modify Files'))."</li>";
 139      }
 140  }
 141  
 142  if (isset($_GET['action']) && $_GET['action'] == "deletefile")
 143  {
 144      if ($access)
 145      {
 146          if (is_file($dir . "/" . $_GET['file']))
 147          {
 148              if (!(unlink($dir . "/" . $_GET['file'])))
 149              {
 150                  $errors .= "<li>".lang('errordeletingfile')."</li>";
 151              }
 152              else
 153              {
 154                  audit(-1, $reldir . "/" . $_GET['file'], 'Deleted File');
 155              }
 156          }
 157          else
 158          {
 159              $errors .= "<li>".lang('norealfile')."</li>";
 160          }
 161      }
 162      else
 163      {
 164          $errors .= "<li>".lang('needpermissionto', array('Modify Files'))."</li>";
 165      }
 166  }
 167  else if (isset($_GET['action']) && $_GET['action'] == "deletedir")
 168  {
 169      if ($access)
 170      {
 171          if (@is_dir($dir . "/" . $_GET['file']))
 172          {
 173              if (!(deldir($dir . "/" . $_GET['file'])))
 174              {
 175                  $errors .= "<li>".lang('errordeletingdirectory')."</li>";
 176              }
 177              else
 178              {
 179                  audit(-1, $reldir . "/" . $_GET['file'], 'Deleted Directory');
 180              }
 181          }
 182          else
 183          {
 184              $errors .= "<li>".lang('norealdirectory')."</li>";
 185          }
 186      }
 187      else
 188      {
 189          $errors .= "<li>".lang('needpermissionto', array('Modify Files'))."</li>";
 190      }
 191  }
 192  
 193  include_once ("header.php");
 194  
 195  $row = "row1";
 196  
 197  $dirtext = "";
 198  $filetext = "";
 199  $file = "";
 200  
 201  if ($errors != "")
 202  {
 203      echo "<div class=\"pageerrorcontainer\"><ul class=\"error\">".$errors."</ul></div>";
 204  }
 205  
 206  echo '<div class="pagecontainer">';
 207  echo $themeObject->ShowHeader('filemanagement');
 208  echo '<p class="pagesubtitle">'.lang('currentdirectory').': '.($reldir==""?"/":$reldir)."</p>";
 209  echo '<table cellspacing="0" class="pagetable">'."\n";
 210  echo '<thead>';
 211  echo "<tr>\n";
 212  echo '<th class="pagew30">&nbsp;</th>';
 213  echo '<th>'.lang('filename').'</th>';
 214  echo '<th class="pagew10">'.lang('filesize').'</th>';
 215  echo '<th class="pageicon">&nbsp;</th>';
 216  echo '</tr>';
 217  echo '</thead>';
 218  echo '<tbody>';
 219  
 220  if ($reldir != '')
 221  {
 222      $newdir = dirname($reldir.'/'.$file);
 223      if ($newdir == "/" || $newdir == '\\')
 224      {
 225          $newdir = '';
 226      }
 227      else
 228      {
 229          $newdir = '?reldir='.urlencode($newdir);
 230      }
 231      $dirtext .= "<tr class=\"$row\" onmouseover=\"this.className='".$row.'hover'."';\" onmouseout=\"this.className='".$row."';\">";
 232      $dirtext .= "<td>";
 233      $dirtext .= $themeObject->DisplayImage('icons/filetypes/upfolder.gif', lang('directoryabove'));
 234      $dirtext .= "</td>";
 235      $dirtext .= '<td><a href="files.php'.$newdir.'">..</a></td>';
 236      $dirtext .= "<td>&nbsp;</td>";
 237      if ($access)
 238          $dirtext .= "<td>&nbsp;</td>";
 239      $dirtext .= "</tr>";
 240      $row = "row2";
 241  }
 242  
 243  #First do dirs
 244  $dirs = array();
 245  $handle = opendir($dir);
 246  while (false!==($file = readdir($handle))) $dirs[]=$file;
 247  closedir($handle);
 248  sort($dirs);
 249  foreach ($dirs as $file)
 250  {
 251      if (strpos($file, ".") === false || strpos($file, ".") != 0)
 252      {
 253          if (@is_dir("$dir/$file"))
 254          {
 255              $tmp=urlencode($reldir."/".$file);
 256              $dirtext .= "<tr class=\"$row\" onmouseover=\"this.className='".$row.'hover'."';\" onmouseout=\"this.className='".$row."';\">";
 257              $dirtext .= "<td>";
 258              $dirtext .= $themeObject->DisplayImage('icons/filetypes/folder.gif', lang('directoryabove'));
 259              $dirtext .= "</td>";
 260              $dirtext .= '<td><a href="files.php?reldir='.$tmp.'">'.$file.'</a></td>';
 261              $dirtext .= "<td>&nbsp;</td>";
 262              if ($access)
 263              {
 264                  $dirtext .= "<td class=\"pagepos\"><a href=\"files.php?action=deletedir&amp;reldir=".$reldir."&amp;file=".$file."\" onclick=\"return confirm('".lang('confirmdeletedir')."');\">";
 265                  $dirtext .= $themeObject->DisplayImage('icons/system/delete.gif', lang('delete'),'','','systemicon');
 266                  $dirtext .= "</a></td>";
 267              }
 268              $dirtext .= "</tr>";
 269              ($row=="row1"?$row="row2":$row="row1");
 270          }
 271      }
 272  }
 273  echo $dirtext;
 274  
 275  #Now do files
 276  $ls = dir($dir);
 277  $files = array();
 278  while (($file = $ls->read()) != "")
 279  {
 280      $files[] = $file;
 281  }
 282  sort($files);
 283  foreach ($files as $file)
 284  {
 285      if (display_file($file)==true){
 286          if (strpos($file, ".") === false || strpos($file, ".") != 0)
 287          {
 288              if (is_file("$dir/$file"))
 289              {
 290                  $extension = get_file_extention($file);
 291                  // set template vars
 292                  $template_vars['file']              = $file;
 293                  $template_vars['dir_file']                = $reldir."/".$file;
 294                  $template_vars['url_dir_file']                = $url.$reldir."/".$file;
 295  
 296                  // parse little template
 297                  $file_links = parse_template($filetype[$extension]['link']['view'], $template_vars,0);
 298          //        $file_links = $filetype[$extension]['link']['view'];
 299  
 300                  $image_icon = $themeObject->DisplayImage("icons/filetypes/".$filetype[$extension]['img'].".gif", $filetype[$extension]['desc']);
 301                  //$image_icon = "<img src=\"../images/cms/icons/filetypes/".$filetype[$extension]['img'].".gif\" alt=\"".$filetype[$extension]['desc']."\" title=\"".$filetype[$extension]['desc']."\" border=\"0\" />";
 302  
 303                  $filetext .= "<tr class=\"$row\" onmouseover=\"this.className='".$row.'hover'."';\" onmouseout=\"this.className='".$row."';\">";
 304                  $filetext .= "<td>{$image_icon}</td>";
 305                  $filetext .= '<td><a href="'.$file_links.'" rel="external">'.$file.'</a></td>';
 306                  $filesize =  filesize("$dir/$file");
 307                  if ($filesize >(1024*1024)) {$sizestr = number_format($filesize/(1024*1024))." MB";} else {
 308                      if ($filesize >(1024))  {$sizestr = number_format($filesize/1024)." KB";} else {
 309                          $sizestr = number_format($filesize)." B";
 310                      }
 311                  }
 312                  $filetext .= "<td>".$sizestr."</td>";
 313                  if ($access)
 314                  {
 315                      $filetext .= "<td><a href=\"files.php?action=deletefile&amp;reldir=".$reldir."&amp;file=".$file."\" onclick=\"return confirm('".lang('deleteconfirm')."');\">";
 316                      $filetext .= $themeObject->DisplayImage('icons/system/delete.gif', lang('delete'),'','','systemicon');
 317                      $filetext .= "</a></td>";
 318                  }
 319                  $filetext .= "</tr>";
 320                  ($row=="row1"?$row="row2":$row="row1");
 321              }
 322          }
 323      }
 324  }
 325  echo $filetext;
 326  
 327  if ($filetext == "" && $dirtext == "")
 328  {
 329      echo "<tr class=\"row1\"><td colspan=\"4\" align=\"center\">".lang('nofiles')."</td></tr>";
 330  }
 331  
 332  echo '</tbody>';
 333  echo "</table>";
 334  
 335  if ($access)
 336  {
 337  
 338  ?>
 339  
 340  <form enctype="multipart/form-data" action="files.php" method="post">
 341      <div class="pageoverflow">
 342          <p class="pagetext"><?php echo lang('uploadfile')?>:</p>
 343          <p class="pageinput">
 344              <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $config["max_upload_size"]?>" />
 345              <input type="hidden" name="reldir" value="<?php echo $reldir?>" />
 346              <input name="uploadfile" type="file" /> <input class="pagebutton" onmouseover="this.className='pagebuttonhover'" onmouseout="this.className='pagebutton'" type="submit" value="<?php echo lang('send')?>" />
 347          </p>
 348      </div>
 349      <div class="pageoverflow">
 350          <p class="pagetext"><?php echo lang('createnewfolder')?>:</p>
 351          <p class="pageinput"><input type="text" name="newdir" /> <input class="pagebutton" onmouseover="this.className='pagebuttonhover'" onmouseout="this.className='pagebutton'" type="submit" name="newdirsubmit" value="<?php echo lang('create')?>" /></p>
 352      </div>
 353  </form>
 354  
 355  </div>
 356  
 357  <?php
 358  }
 359  echo '<p class="pageback"><a class="pageback" href="'.$themeObject->BackUrl().'">&#171; '.lang('back').'</a></p>';
 360  include_once ("footer.php");
 361  
 362  # vim:ts=4 sw=4 noet
 363  ?>


Généré le : Tue Apr 3 18:50:37 2007 par Balluche grâce à PHPXref 0.7