/** * Descarrega un fitxer associat a una aportació * @param string [$id] numero de l'aportacio on es adjunt el fitxer */ public function download($id) { try { $aportacio = Aportacio::find($id); } catch (ModelNotFoundException $e) { return Redirect::route('grups.meus'); } $assignatura = $aportacio->assignatura; $grup = $assignatura->grup; $grups = Auth::user()->grups()->lists('id_grup'); /*Comprovació de que l'estudiant estigui matriculat al grup d'aquesta assignatura i el grup estigui actiu*/ if (in_array($grup->getID(), $grups) && $grup->getActiu()) { $file = $aportacio->getFitxer(); if (file_exists($file)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file); exit; } else { return Redirect::route('assignatura.info', array('slug' => $assignatura->getSlug()))->with('descarrega', 'error'); } } else { return Redirect::route('grups.meus'); } }
/** * Cerca comentaris anteriors a un donat * @param integer [$id] identificador de l'aportació * @param integer [$last] identificador del darrer comentari mostrat */ public function mesComentaris($id, $last) { try { $aportacio = Aportacio::findOrFail($id); } catch (ModelNotFoundException $e) { return Response::json(array('error' => 'Esta aportación ha sido eliminada.')); } $comentaris = $aportacio->getComentarisSince($last); return View::make('assignatura/comentaris', array('comentaris' => $comentaris)); }
/** * Crea una aportació a un esdeveniment. * @param int [$id] identificador de l'esdeveniment */ public function crearAportacioEsdeveniment($id) { try { try { $esdeveniment = Esdeveniment::findOrFail($id); } catch (ModelNotFoundException $e) { return Response::json(array('error' => 'Este evento ha sido eliminado por su creador')); } $grup = $esdeveniment->grup; $grups = Auth::user()->grups()->lists('id_grup'); date_default_timezone_set("Europe/Madrid"); $ara = date("Y-m-d H:i:s"); $esdeveniment_actiu = $esdeveniment->data_esdeveniment > $ara; /*Comprovació de que l'estudiant estigui matriculat al grup d'aquesta assignatura i el grup estigui actiu*/ if (!in_array($grup->getID(), $grups)) { if (Request::ajax()) { return Response::json(array('error' => 'No estás matriculado en este grupo.')); } else { return Redirect::route('grups.meus'); } } if (!$grup->getActiu()) { if (Request::ajax()) { return Response::json(array('error' => 'El grupo ha sido eliminado por su moderador.')); } else { return Redirect::route('grups.meus'); } } if (!$esdeveniment_actiu) { if (Request::ajax()) { return Response::json(array('error' => 'El evento no está activo.')); } else { return Redirect::route('grups.meus'); } } $aport = Input::get('aportacio'); $validator = Validator::make(array('Aportación' => $aport), array('Aportación' => array('required', 'max:500'))); if ($validator->fails()) { throw new ModelException("Debes escribir algo... (máx. 500 caracteres)"); } $aportacio = new Aportacio(); //Elimina TAGs HTML $aport = strip_tags($aport); //Elimina els espais en blanc del començament i del final $aport = trim($aport); $aportacio->info_aportacio = $aport; date_default_timezone_set("Europe/Madrid"); $ara = date("Y-m-d H:i:s"); $aportacio->data_aportacio = $ara; $aportacio->id_esdeveniment = $esdeveniment->getID(); $aportacio->estudiant_email = Auth::user()->email_estudiant; //si fitxer pujat correctament if (Input::hasFile('file')) { $file = Input::file('file'); $validator2 = Validator::make(array('Fichero' => $file), array('Fichero' => array('max:25600'))); if ($validator2->fails()) { return Redirect::route('esdeveniment.missatges', array('slug' => $esdeveniment->getSlug()))->withErrors($validator2); } //extensió del fitxer $extension = $file->getClientOriginalExtension(); //No es permeten pujar fitxers amb extensio exe if ($extension == 'exe') { return Redirect::route('esdeveniment.missatges', array('slug' => $esdeveniment->getSlug()))->with('fitxer', 'error'); } $aleatori = str_random(8); $destinationPath = 'uploads/files/' . $aleatori; $filename = $file->getClientOriginalName(); //Lleva tags HTML $filename = strip_tags($filename); //Reemplaça caràcters amb accents per es seus homònims //per evitar problemes demostrats amb rutes amb accents $filename = str_replace(array('á', 'à', 'â', 'ã', 'ª', 'ä'), 'a', $filename); $filename = str_replace(array('Á', 'À', 'Â', 'Ã', 'Ä'), 'A', $filename); $filename = str_replace(array('Í', 'Ì', 'Î', 'Ï'), 'I', $filename); $filename = str_replace(array('í', 'ì', 'î', 'ï'), 'i', $filename); $filename = str_replace(array('é', 'è', 'ê', 'ë'), 'e', $filename); $filename = str_replace(array('É', 'È', 'Ê', 'Ë'), 'E', $filename); $filename = str_replace(array('ó', 'ò', 'ô', 'õ', 'ö', 'º'), 'o', $filename); $filename = str_replace(array('Ó', 'Ò', 'Ô', 'Õ', 'Ö'), 'O', $filename); $filename = str_replace(array('ú', 'ù', 'û', 'ü'), 'u', $filename); $filename = str_replace(array('Ú', 'Ù', 'Û', 'Ü'), 'U', $filename); $filename = str_replace(array('[', '^', '´', '`', '¨', '~', ']'), '', $filename); $filename = str_replace('ç', 'c', $filename); $filename = str_replace('Ç', 'C', $filename); $filename = str_replace('ñ', 'n', $filename); $filename = str_replace('Ñ', 'N', $filename); $filename = str_replace('Ý', 'Y', $filename); $filename = str_replace('ý', 'y', $filename); $uploadSuccess = Input::file('file')->move($destinationPath, $filename); if ($uploadSuccess) { $aportacio->fitxer_aportacio = $destinationPath . '/' . $filename; } else { return Redirect::route('esdeveniment.missatges', array('slug' => $esdeveniment->getSlug()))->with('upload', 'error'); } } $aportacio->save(); if (Request::ajax()) { return View::make('esdeveniments/aportacio', array('aportacio' => $aportacio)); } else { return Redirect::route('esdeveniment.missatges', array('slug' => $esdeveniment->getSlug())); } } catch (ModelException $exception) { if (Request::ajax()) { return Response::json(array('error' => $exception->getMessage())); } else { return Redirect::route('esdeveniment.missatges', array('slug' => $esdeveniment->getSlug()))->withErrors($validator); } } }