Пример #1
0
 public function translates($option = 'overview', $action = 'list', $id = null)
 {
     $user = $_SESSION['user'];
     $errors = array();
     $langs = \Goteo\Library\i18n\Lang::getAll();
     if ($action == 'lang' && !empty($_POST['lang'])) {
         $_SESSION['translate_lang'] = $_POST['lang'];
     } elseif (empty($_SESSION['translate_lang'])) {
         $_SESSION['translate_lang'] = 'en';
     }
     $projects = Model\User\Translate::getMyProjects($user->id);
     // al seleccionar controlamos: translate_type
     if ($action == 'select' && !empty($_POST['type'])) {
         unset($_SESSION['translate_project']);
         // quitamos el proyecto de traducción
         $type = $_POST['type'];
         if (!empty($_POST[$type])) {
             $_SESSION['translate_type'] = $type;
             $_SESSION['translate_' . $type] = $_POST[$type];
         } else {
             $_SESSION['translate_type'] = 'profile';
         }
     }
     // view data basico para esta seccion
     $viewData = array('menu' => self::menu(), 'section' => __FUNCTION__, 'option' => $option, 'action' => $action, 'langs' => $langs, 'projects' => $projects, 'errors' => $errors, 'success' => $success);
     // aqui, segun lo que este traduciendo, necesito tener un proyecto de trabajo, una convocatoria o mi perfil personal
     switch ($_SESSION['translate_type']) {
         case 'project':
             try {
                 // si lo que tenemos en sesion no es una instancia de proyecto (es una id de proyecto)
                 if ($_SESSION['translate_project'] instanceof Model\Project) {
                     $project = Model\Project::get($_SESSION['translate_project']->id, $_SESSION['translate_lang']);
                 } else {
                     $project = Model\Project::get($_SESSION['translate_project'], $_SESSION['translate_lang']);
                 }
             } catch (\Goteo\Core\Error $e) {
                 $project = null;
             }
             if (!$project instanceof Model\Project) {
                 Message::Error('Ha fallado al cargar los datos del proyecto');
                 $_SESSION['translate_type'] = 'profile';
                 throw new Redirection('/dashboard/translates');
             }
             $_SESSION['translate_project'] = $project;
             $project->lang_name = $langs[$project->lang]->name;
             unset($viewData['langs'][$project->lang]);
             // quitamos el idioma original
             //// Control de traduccion de proyecto
             if ($option == 'updates') {
                 // sus novedades
                 $blog = Model\Blog::get($project->id);
                 if ($action != 'edit') {
                     $action = 'list';
                 }
             }
             // tratar lo que llega por post para guardar los datos
             if ($_SERVER['REQUEST_METHOD'] == 'POST') {
                 switch ($option) {
                     case 'profile':
                         if ($action == 'save') {
                             $user = Model\User::get($_POST['id'], $_SESSION['translate_lang']);
                             $user->about_lang = $_POST['about'];
                             $user->keywords_lang = $_POST['keywords'];
                             $user->contribution_lang = $_POST['contribution'];
                             $user->lang = $_SESSION['translate_lang'];
                             $user->saveLang($errors);
                         }
                         break;
                     case 'overview':
                         if ($action == 'save') {
                             $project->description_lang = $_POST['description'];
                             $project->motivation_lang = $_POST['motivation'];
                             $project->video_lang = $_POST['video'];
                             $project->about_lang = $_POST['about'];
                             $project->goal_lang = $_POST['goal'];
                             $project->related_lang = $_POST['related'];
                             $project->reward_lang = $_POST['reward'];
                             $project->keywords_lang = $_POST['keywords'];
                             $project->media_lang = $_POST['media'];
                             $project->subtitle_lang = $_POST['subtitle'];
                             $project->lang_lang = $_SESSION['translate_lang'];
                             $project->saveLang($errors);
                         }
                         break;
                     case 'costs':
                         if ($action == 'save') {
                             foreach ($project->costs as $key => $cost) {
                                 if (isset($_POST['cost-' . $cost->id . '-cost'])) {
                                     $cost->cost_lang = $_POST['cost-' . $cost->id . '-cost'];
                                     $cost->description_lang = $_POST['cost-' . $cost->id . '-description'];
                                     $cost->lang = $_SESSION['translate_lang'];
                                     $cost->saveLang($errors);
                                 }
                             }
                         }
                         break;
                     case 'rewards':
                         if ($action == 'save') {
                             foreach ($project->social_rewards as $k => $reward) {
                                 if (isset($_POST['social_reward-' . $reward->id . '-reward'])) {
                                     $reward->reward_lang = $_POST['social_reward-' . $reward->id . '-reward'];
                                     $reward->description_lang = $_POST['social_reward-' . $reward->id . '-description'];
                                     $reward->other_lang = $_POST['social_reward-' . $reward->id . '-other'];
                                     $reward->lang = $_SESSION['translate_lang'];
                                     $reward->saveLang($errors);
                                 }
                             }
                             foreach ($project->individual_rewards as $k => $reward) {
                                 if (isset($_POST['individual_reward-' . $reward->id . '-reward'])) {
                                     $reward->reward_lang = $_POST['individual_reward-' . $reward->id . '-reward'];
                                     $reward->description_lang = $_POST['individual_reward-' . $reward->id . '-description'];
                                     $reward->other_lang = $_POST['individual_reward-' . $reward->id . '-other'];
                                     $reward->lang = $_SESSION['translate_lang'];
                                     $reward->saveLang($errors);
                                 }
                             }
                         }
                         break;
                     case 'supports':
                         if ($action == 'save') {
                             // tratar colaboraciones existentes
                             foreach ($project->supports as $key => $support) {
                                 if (isset($_POST['support-' . $support->id . '-support'])) {
                                     // guardamos los datos traducidos
                                     $support->support_lang = $_POST['support-' . $support->id . '-support'];
                                     $support->description_lang = $_POST['support-' . $support->id . '-description'];
                                     $support->lang = $_SESSION['translate_lang'];
                                     $support->saveLang($errors);
                                     // actualizar el Mensaje correspondiente, solamente actualizar
                                     $msg = Model\Message::get($support->thread);
                                     $msg->message_lang = "{$support->support_lang}: {$support->description_lang}";
                                     $msg->lang = $_SESSION['translate_lang'];
                                     $msg->saveLang($errors);
                                 }
                             }
                         }
                         break;
                     case 'updates':
                         if (empty($_POST['blog']) || empty($_POST['id'])) {
                             break;
                         }
                         $post = Model\Blog\Post::get($_POST['id']);
                         $post->title_lang = $_POST['title'];
                         $post->text_lang = $_POST['text'];
                         $post->media_lang = $_POST['media'];
                         $post->legend_lang = $_POST['legend'];
                         $post->lang = $_SESSION['translate_lang'];
                         $post->saveLang($errors);
                         $action = 'edit';
                         break;
                 }
             }
             switch ($option) {
                 case 'profile':
                     $viewData['user'] = Model\User::get($project->owner, $_SESSION['translate_lang']);
                     break;
                 case 'overview':
                     break;
                 case 'costs':
                     if ($_POST) {
                         foreach ($_POST as $k => $v) {
                             if (!empty($v) && preg_match('/cost-(\\d+)-edit/', $k, $r)) {
                                 $viewData[$k] = true;
                             }
                         }
                     }
                     break;
                 case 'rewards':
                     if ($_POST) {
                         foreach ($_POST as $k => $v) {
                             if (!empty($v) && preg_match('/((social)|(individual))_reward-(\\d+)-edit/', $k)) {
                                 $viewData[$k] = true;
                                 break;
                             }
                         }
                     }
                     break;
                 case 'supports':
                     if ($_POST) {
                         foreach ($_POST as $k => $v) {
                             if (!empty($v) && preg_match('/support-(\\d+)-edit/', $k, $r)) {
                                 $viewData[$k] = true;
                                 break;
                             }
                         }
                     }
                     break;
                     // publicar actualizaciones
                 // publicar actualizaciones
                 case 'updates':
                     $viewData['blog'] = $blog;
                     if ($action == 'edit') {
                         $post = Model\Blog\Post::get($id, $_SESSION['translate_lang']);
                         $viewData['post'] = $post;
                     } else {
                         $posts = array();
                         foreach ($blog->posts as $post) {
                             $posts[] = Model\Blog\Post::get($post->id, $_SESSION['translate_lang']);
                         }
                         $viewData['posts'] = $posts;
                     }
                     break;
             }
             $viewData['project'] = $project;
             //// FIN Control de traduccion de proyecto
             break;
         default:
             // profile
             $viewData['option'] = 'profile';
             unset($langs['es']);
             if ($_SERVER['REQUEST_METHOD'] == 'POST') {
                 if ($action == 'save') {
                     $user = Model\User::get($_POST['id'], $_SESSION['translate_lang']);
                     $user->about_lang = $_POST['about'];
                     $user->keywords_lang = $_POST['keywords'];
                     $user->contribution_lang = $_POST['contribution'];
                     $user->lang = $_SESSION['translate_lang'];
                     $user->saveLang($errors);
                 }
             }
             $viewData['user'] = Model\User::get($user->id, $_SESSION['translate_lang']);
     }
     if (!empty($errors)) {
         Message::Error('HA HABIDO ERRORES: <br />' . implode('<br />', $errors));
     }
     return new View('view/dashboard/index.html.php', $viewData);
 }