/**
  * Crea una nova aportació a una assignatura
  * @param integer [$id] identificador de l'assignatura
  */
 public function crearAportacio($id)
 {
     try {
         try {
             $assignatura = Assignatura::findOrFail($id);
         } catch (ModelNotFoundException $e) {
             return Response::json(array('error' => 'Esta asignatura ha sido eliminada por el moderador del grupo'));
         }
         $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)) {
             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');
             }
         }
         $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_assignatura = $assignatura->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('assignatura.info', array('slug' => $assignatura->getSlug()))->withErrors($validator2);
             }
             //extensió del fitxer
             $extension = $file->getClientOriginalExtension();
             //No es permeten pujar fitxers amb extensio exe
             if ($extension == 'exe') {
                 return Redirect::route('assignatura.info', array('slug' => $assignatura->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);
             //chmod('/laravel/public/uploads/files', '0777');
             $uploadSuccess = Input::file('file')->move($destinationPath, $filename);
             //$destinationPath = '/htdocs/'.$destinationPath;
             if ($uploadSuccess) {
                 $aportacio->fitxer_aportacio = $destinationPath . '/' . $filename;
             } else {
                 return Redirect::route('assignatura.info', array('slug' => $assignatura->getSlug()))->with('upload', 'error');
             }
         }
         $aportacio->save();
         if (Request::ajax()) {
             return View::make('assignatura/aportacio', array('aportacio' => $aportacio));
         } else {
             return Redirect::route('assignatura.info', array('slug' => $assignatura->getSlug()));
         }
     } catch (ModelException $exception) {
         if (Request::ajax()) {
             return Response::json(array('error' => $exception->getMessage()));
         } else {
             return Redirect::route('assignatura.info', array('slug' => $assignatura->getSlug()))->withErrors($validator);
         }
     }
 }