public function index()
 {
     $folder_id = NULL;
     if (is_numeric($this->getParam('id', NULL))) {
         $folder_id = $this->getParam('id', NULL);
     }
     try {
         $folder = Folder::find('_id', $folder_id);
     } catch (FolderNotFoundException $e) {
         System::displayError(System::getLanguage()->_('ErrorFolderNotFound'), '404 Not Found');
     }
     $folder->loadFiles();
     $folder->loadFolders();
     $files = $folder->files;
     $breadcrumb = array();
     if (Utils::getPOST('submit', false) !== false) {
         $delete = Utils::getPOST('delete', array());
         $count = count($delete);
         if ($count > 0 && count($files) > 0) {
             foreach ($files as $file) {
                 for ($i = 0; $i < $count; ++$i) {
                     if ($file->id == $delete[$i]) {
                         $file->delete();
                     }
                 }
             }
         }
         if ($folder->id == 0) {
             System::forwardToRoute(Router::getInstance()->build('BrowserController', 'index'));
         } else {
             System::forwardToRoute(Router::getInstance()->build('BrowserController', 'show', array('id' => $folder->id)));
         }
         exit;
     }
     // Breadcrumb
     $f = $folder;
     while ($f != NULL && $f->id != 0) {
         if ($f->name != '') {
             $breadcrumb[] = $f;
         }
         $f = Folder::find('_id', $f->pid);
     }
     $breadcrumb = array_reverse($breadcrumb);
     $smarty = new Template();
     $smarty->assign('files', $folder->files);
     $smarty->assign('folders', $folder->folders);
     $smarty->assign('title', System::getLanguage()->_('Files'));
     $smarty->assign('currentFolder', $folder);
     $smarty->assign('breadcrumb', $breadcrumb);
     $smarty->assign('AvailableFolders', Folder::getAll());
     $smarty->assign('fafileicons', BrowserController::$fontawesomeFileicons);
     $smarty->assign('remoteDownloadSetting', DOWNLOAD_VIA_SERVER);
     $smarty->requireResource('browser');
     $smarty->display('files/index.tpl');
 }
 public function lostpw_check()
 {
     $hash = $this->getParam('hash', '');
     if (!LostPW::hashExists($hash)) {
         System::getSession()->setData('errorMsg', System::getLanguage()->_('HashNotFound'));
         System::forwardToRoute(Router::getInstance()->build('BrowserController', 'index'));
     }
     $password = Utils::getPOST('password', '');
     $password2 = Utils::getPOST('password2', '');
     $errorMsg = '';
     if (Utils::getPOST('submit', false) != false) {
         if (strlen($password) < PASSWORD_MIN_LENGTH) {
             $errorMsg = sprintf(System::getLanguage()->_('PasswordMinLength'), PASSWORD_MIN_LENGTH);
         } else {
             if ($password != $password2) {
                 $errorMsg = System::getLanguage()->_('ErrorInvalidPasswords');
             } else {
                 LostPW::resetPassword($hash, $password);
                 System::getSession()->setData('successMsg', System::getLanguage()->_('LostPWSuccess'));
                 System::forwardToRoute(Router::getInstance()->build('BrowserController', 'index'));
             }
         }
     }
     $smarty = new Template();
     $smarty->assign('title', System::getLanguage()->_('LostPW'));
     $smarty->assign('successMsg', '');
     $smarty->assign('form_url', Router::getInstance()->build('AuthController', 'lostpw_check', array('hash' => $hash)));
     $smarty->assign('errorMsg', $errorMsg);
     $smarty->requireResource('auth');
     $smarty->display('auth/lostpw.newpw.tpl');
 }
 public function index()
 {
     // Get files
     $sql = System::getDatabase()->query('SELECT u._id, u.username, u.firstname, u.lastname, IFNULL(SUM(f.size), 0) AS totalUserSize FROM users u LEFT JOIN files f ON u._id = f.user_ID GROUP BY u._id');
     $used_space = 0;
     $num_users = 0;
     while ($user = $sql->fetch(PDO::FETCH_OBJ)) {
         $used_space += $user->totalUserSize;
         $obj = new Object();
         $obj->username = $user->username;
         $obj->firstname = $user->firstname;
         $obj->lastname = $user->lastname;
         $obj->used = $user->totalUserSize;
         $users[] = $obj;
         $num_users++;
     }
     $sql = System::getDatabase()->query('SELECT count(*) AS num_files from files');
     $num_files = $sql->fetch(PDO::FETCH_OBJ);
     $num_files = $num_files->num_files;
     if ($num_users == 0) {
         $files_per_user = 0;
     } else {
         $files_per_user = round($num_files / $num_users, 1);
     }
     // Newest User
     $newUsers = User::find('*', NULL, array('orderby' => '_id', 'sort' => 'DESC'));
     if (!is_array($newUsers)) {
         $newUsers = array($newUsers);
     }
     // MIME statistics
     $sql = System::getDatabase()->query('SELECT COUNT(*) AS num, mime FROM files GROUP BY mime ORDER BY num DESC LIMIT 6');
     $mimes = array();
     while ($mime = $sql->fetch(PDO::FETCH_OBJ)) {
         $mimes[] = $mime;
     }
     // Quota
     $available_space = disk_free_space(SYSTEM_ROOT . FILE_STORAGE_DIR);
     // Version
     $version = file_get_contents(SYSTEM_ROOT . '/VERSION');
     $phpversion = phpversion();
     $res = System::getDatabase()->query('SELECT VERSION() AS mysql_version');
     $row = $res->fetch(PDO::FETCH_ASSOC);
     if (!isset($row['mysql_version'])) {
         $mysqlversion = System::getLanguage()->_('Unknown');
     } else {
         $mysqlversion = $row['mysql_version'];
     }
     // Extensions
     $imagick = extension_loaded('imagick') && class_exists('Imagick');
     $rar = extension_loaded('rar') && class_exists('RarArchive');
     $maxpost = Utils::parseInteger(ini_get('post_max_size'));
     $maxupload = Utils::parseInteger(ini_get('upload_max_filesize'));
     $smarty = new Template();
     $smarty->assign('title', System::getLanguage()->_('Admin'));
     $smarty->assign('heading', System::getLanguage()->_('Admin'));
     $smarty->assign('num_users', $num_users);
     $smarty->assign('num_files', $num_files);
     $smarty->assign('newUsers', $newUsers);
     $smarty->assign('userByQutoa', $users);
     $smarty->assign('mimes', $mimes);
     $smarty->assign('filesPerUser', $files_per_user);
     $smarty->assign('usedSpace', $used_space);
     $smarty->assign('availableSpace', $available_space);
     $smarty->assign('version', $version);
     $smarty->assign('phpversion', $phpversion);
     $smarty->assign('mysqlversion', $mysqlversion);
     $smarty->assign('maxpost', $maxpost);
     $smarty->assign('maxupload', $maxupload);
     $smarty->assign('imagick', $imagick);
     $smarty->assign('rar', $rar);
     $smarty->requireResource('admin');
     $smarty->display('admin/index.tpl');
 }
 public function upload()
 {
     $form = new Form('form-upload', Router::getInstance()->build('UploadController', 'upload'));
     $form->setAttribute('data-noajax', 'true');
     $form->setEnctype();
     $fieldset = new Fieldset(System::getLanguage()->_('General'));
     $folderInput = new Select('folder', System::getLanguage()->_('ChooseFolder'), Folder::getAll());
     $folderInput->selected_value = Utils::getGET('parent', NULL);
     $fieldset->addElements($folderInput);
     $form->addElements($fieldset);
     $fieldset = new Fieldset(System::getLanguage()->_('FileUpload'));
     $fileInput = new FileUpload('file', System::getLanguage()->_('ChooseFile'), false);
     $fieldset->addElements($fileInput);
     $form->addElements($fieldset);
     if (DOWNLOAD_VIA_SERVER) {
         $fieldset = new Fieldset(System::getLanguage()->_('UploadFromURL'));
         $url = new Text('url', System::getLanguage()->_('EnterURL'), false);
         $name = new Text('name', System::getLanguage()->_('Name'), false);
         $name->setValue(System::getLanguage()->_('DownloadedFile'));
         $fieldset->addElements($url, $name);
         $form->addElements($fieldset);
     }
     $fieldset = new Fieldset(System::getLanguage()->_('PermissionSetting'));
     $permissionInput = new Select('permissions', System::getLanguage()->_('Permission'), FilePermissions::getAll());
     $permissionInput->selected_value = DEFAULT_FILE_PERMISSION;
     $password = new Password('password', System::getLanguage()->_('Password'), false);
     $fieldset->addElements($permissionInput, $password);
     $form->addElements($fieldset);
     if (Utils::getPOST('submit', false) != false) {
         if ($permissionInput->selected_value == 2 && empty($password->value)) {
             $password->error = System::getLanguage()->_('ErrorEmptyTextfield');
         } else {
             if ($form->validate() && (!empty($url->value) || !empty($fileInput->uploaded_file))) {
                 // Specify input control for error display
                 $err = empty($url->value) ? $fileInput : $url;
                 try {
                     $folder = Folder::find('_id', $folderInput->selected_value);
                     $file = new File();
                     $file->folder = $folder;
                     $file->permission = $permissionInput->selected_value;
                     $file->password = $password->value;
                     if (empty($url->value)) {
                         $file->filename = $fileInput->filename;
                         $file->upload($fileInput->uploaded_file);
                     } else {
                         $file->filename = $name->value;
                         $file->remote($url->value);
                     }
                     $file->save();
                     System::forwardToRoute(Router::getInstance()->build('BrowserController', 'show', $folder));
                     exit;
                 } catch (UploadException $e) {
                     $fileInput->filename = '';
                     $fileInput->uploaded_file = '';
                     $err->error = $e->getMessage();
                     if ($e->getCode() != 0) {
                         $err->error .= ' Code: ' . $e->getCode();
                     }
                 } catch (QuotaExceededException $e) {
                     $err->error = System::getLanguage()->_('ErrorQuotaExceeded');
                 } catch (Exception $e) {
                     $fileInput->filename = '';
                     $fileInput->uploaded_file = '';
                     $err->error = System::getLanguage()->_('ErrorWhileUpload') . ' ' . $e->getMessage();
                 }
             }
         }
     }
     $form->setSubmit(new Button(System::getLanguage()->_('Upload'), 'open'));
     if ($folderInput->selected_value == 0) {
         $form->addButton(new Button(System::getLanguage()->_('Cancel'), '', Router::getInstance()->build('BrowserController', 'index')));
     } else {
         $form->addButton(new Button(System::getLanguage()->_('Cancel'), '', Router::getInstance()->build('BrowserController', 'show', new Folder($folderInput->selected_value))));
     }
     $smarty = new Template();
     $smarty->assign('title', System::getLanguage()->_('Upload'));
     $smarty->assign('heading', System::getLanguage()->_('FileUpload'));
     $smarty->assign('form', $form->__toString());
     $smarty->assign('BODY_CLASS', 'preventreload');
     $smarty->requireResource('upload');
     $smarty->display('form.tpl');
 }