芝麻web文件管理V1.00
编辑当前文件:/home/prismawe/www/resupres/dddse/application/classes/Controller/fichier.php
logged_in()) { HTTP::redirect('login'); } else { if ($this->request->is_ajax() OR !$this->request->is_initial()) { $this->auto_render = FALSE; } } $session = Session::instance(); $tmpError = $session->get('erreur'); if (!isset($tmpError)){ $session->set('erreur', array()); } } public function action_index(){ $session = Session::instance(); $accessRight = $session->get('access_right'); if(!in_array($accessRight, array('admin', 'super'))){ $_SESSION['eereur'][] = 'Accès interdit'; HTTP::redirect(); } $this->template->content = View::factory('fichier/index'); $admin = ORM::factory('user', $_SESSION['user']['id']); $this->template->content->fichiers = $admin->fichiers->order_by('id', 'DESC')->find_all(); $this->template->content->admin = $admin; } public function action_publier(){ $session = Session::instance(); $accessRight = $session->get('access_right'); if(!in_array($accessRight, array('admin'))){ $_SESSION['eereur'][] = 'Accès interdit'; HTTP::redirect(); } $admin = ORM::factory('user', $_SESSION['user']['id']); //on affiche le formulaire $this->template->content = View::factory('fichier/publier'); $this->template->content->clients = $admin->clients->find_all(); $this->template->content->fichier = ORM::factory('fichier'); $this->template->content->postAnnee = date('Y'); $this->template->content->postMois = date('m'); $this->template->content->postType = 'mensuel'; $this->template->content->postClient = ''; } public function action_publierpost(){ $session = Session::instance(); $accessRight = $session->get('access_right'); if(!in_array($accessRight, array('admin'))){ $_SESSION['eereur'][] = 'Accès interdit'; HTTP::redirect(); } //on affiche le formulaire if (HTTP_Request::POST == $this->request->method()) { $formV = Validation::factory(array_merge($_POST, $_FILES)) ->rule('user', 'not_empty') ->rule('type', 'not_empty') ->rule('titre', 'not_empty') ->rule('titre', 'max_length', array(':value', '255')) ->rule('annee', 'range', array(':value', date('Y')-1, date('Y')+2)) ->rule('mois', 'range', array(':value', 0, 13)) ->rule('fichier', 'not_empty') ->rule('fichier', 'Upload::valid'); $data = $formV->as_array(); $user = ORM::factory('user', $data['user']); if($formV->check() && $user->loaded()){ //on enregistre $admin = ORM::factory('user', $_SESSION['user']['id']); $arrayMois = array(); if($data['type']=='mensuel'){ $mois = ORM::factory('mois') ->where('user_id', '=', $user->id) ->and_where('mois', '=', $data['mois']) ->and_where('annee', '=', $data['annee']) ->find(); if(!$mois->loaded()){ $mois->user_id = $user->id; $mois->annee = $data['annee']; $mois->mois = $data['mois']; $mois->save(); } }else{ $mois = ORM::factory('mois') ->where('user_id', '=', $user->id) ->and_where('mois', 'is', null) ->and_where('annee', 'is', null) ->find(); if(!$mois->loaded()){ $mois->user_id = $user->id; $mois->save(); } } $arrayMois[] = $mois->id; $fichier = ORM::factory('fichier'); if($data['type']=='mensuel'){ $fichier->type = 'mensuel'; if(!is_dir('uploads/'.$data['annee'])){ mkdir('uploads/'.$data['annee'], 0777); } if(!is_dir('uploads/'.$data['annee'].'/'.$data['mois'])){ mkdir('uploads/'.$data['annee'].'/'.$data['mois'], 0777); } $directory = 'uploads/'.$data['annee'].'/'.$data['mois'].'/'; }else{ $fichier->type = 'autre'; if(!is_dir('uploads/autre')){ mkdir('uploads/autre', 0777); } $directory = 'uploads/autre/'; } $fichier->titre = $data['titre']; $fichier->commentaire = $data['commentaire']; $fichier->date_envoie = date('Y-m-d'); //upload du fichier //on upload le fichier $filename = explode(".", $_FILES['fichier']['name']); $fichier->nom = $_FILES['fichier']['name']; $fichier->ext = $filename[count($filename)-1]; $fichier->user_id = $_SESSION['user']['id']; $fichier->save(); foreach($arrayMois as $mois_id){ $fichiermois = ORM::factory('fichiermois'); $fichiermois->fichier_id = $fichier->id; $fichiermois->mois_id = $mois_id; $fichiermois->save(); } Upload::save($_FILES['fichier'], $fichier->id.'.'.$fichier->ext, $directory); //on créé le lien entre le fichier et les user HTTP::redirect(Route::get('default')->uri(array('controller' => 'fichier', 'action'=>'index'))); }else{ foreach ($formV->errors('test') as $error) { $_SESSION['erreur'][] = $error; } HTTP::redirect(Route::get('default')->uri(array('controller' => 'fichier', 'action'=>'publier'))); } }else{ HTTP::redirect(Route::get('default')->uri(array('controller' => 'fichier', 'action'=>'publier'))); } } public function action_supprimer(){ $session = Session::instance(); $accessRight = $session->get('access_right'); if(!in_array($accessRight, array('admin', 'super'))){ $_SESSION['eereur'][] = 'Accès interdit'; HTTP::redirect(); } $id = $this->request->param('id'); $fichier = ORM::factory('fichier', $id); if($fichier->loaded()){ $mois = $fichier->fichiersmois->find()->mois; if($fichier->type=='mensuel') $directory = 'uploads/'.$mois->annee.'/'.$mois->mois.'/'; else $directory = 'uploads/autre/'; if (file_exists($directory.$fichier->id.'.'.$fichier->ext)) { unlink($directory.$fichier->id.'.'.$fichier->ext); } foreach($fichier->fichiersmois->find_all() as $mois) $mois->delete(); $fichier->delete(); } HTTP::redirect(Route::get('default')->uri(array('controller' => 'fichier', 'action'=>'index'))); } public function action_telecharger(){ $user = ORM::factory('user', $_SESSION['user']['id']); if(!$user->loaded()){ $_SESSION['erreur'][] = 'Accès refusé'; HTTP::redirect(); } $id = $this->request->param('id'); $fichier = ORM::factory('fichier', $id); if($fichier->loaded()){ if($user->type == 'super'){ //accès à tout $mois = ORM::factory('mois') ->join('fichiermois') ->on('mois.id', '=', 'fichiermois.mois_id') ->where('fichiermois.fichier_id', '=', $fichier->id) ->find(); if($mois->loaded()){ //dl if($fichier->type=='mensuel') $directory = 'uploads/'.$mois->annee.'/'.$mois->mois.'/'; else $directory = 'uploads/autre/'; $this->response->send_file($directory.$fichier->id.'.'.$fichier->ext); }else{ $_SESSION['erreur'][] = 'Accès refusé'; HTTP::redirect(); } }else if($user->type == 'admin'){ //accès à ses fichiers if($fichier->user_id == $user->id){ $mois = ORM::factory('mois') ->join('fichiermois') ->on('mois.id', '=', 'fichiermois.mois_id') ->where('fichiermois.fichier_id', '=', $fichier->id) ->find(); if($mois->loaded()){ //dl if($fichier->type=='mensuel') $directory = 'uploads/'.$mois->annee.'/'.$mois->mois.'/'; else $directory = 'uploads/autre/'; $this->response->send_file($directory.$fichier->id.'.'.$fichier->ext); }else{ $_SESSION['erreur'][] = 'Accès refusé'; HTTP::redirect(); } }else{ $_SESSION['erreur'][] = 'Accès refusé'; HTTP::redirect(); } }else{ $mois = ORM::factory('mois') ->join('fichiermois') ->on('mois.id', '=', 'fichiermois.mois_id') ->where('fichiermois.fichier_id', '=', $fichier->id) ->and_where('mois.user_id', '=', $user->id) ->find(); if($mois->loaded()){ //dl if($fichier->type=='mensuel') $directory = 'uploads/'.$mois->annee.'/'.$mois->mois.'/'; else $directory = 'uploads/autre/'; $this->response->send_file($directory.$fichier->id.'.'.$fichier->ext); }else{ $_SESSION['erreur'][] = 'Accès refusé'; HTTP::redirect(); } } }else{ $_SESSION['erreur'][] = 'Fichier introuvable'; HTTP::redirect(); } } public function action_telechargerExt(){ $filename = $this->request->param('id'); $filename = explode('.', $filename); if(count($filename)==2){ $ext = $filename['1']; $filename = $filename[0]; $fichier = ORM::factory('fichier') ->where('id', '=', $filename) ->and_where('ext', '=', $ext) ->find(); if($fichier->loaded()){ HTTP::redirect(Route::get('default')->uri(array('controller' => 'fichier', 'action'=>'telecharger', 'id'=>$fichier->id))); }else{ $_SESSION['erreur'][] = 'Fichier introuvable'; HTTP::redirect(); } }else{ $_SESSION['erreur'][] = 'Accès refusé'; HTTP::redirect(); } } }