public function index() { $types = static::_types(); $viewData = array('lists' => array()); // cada tipo tiene sus grupos foreach ($types as $type) { $projects = Model\Project::published($type); if (empty($projects)) { continue; } $viewData['lists'][$type] = Listing::get($projects); } return new View('view/discover/index.html.php', $viewData); }
public static function projList($user) { $lists = array(); // mis proyectos $projects = Model\Project::ofmine($user->id); if (!empty($projects)) { $lists['my_projects'] = Listing::get($projects); } // proyectos que cofinancio $invested = Model\User::invested($user->id, false); if (!empty($invested)) { $lists['invest_on'] = Listing::get($invested); } return $lists; }
/** * Perfil público de usuario. * * @param string $id Nombre de usuario */ public function profile($id, $show = 'profile', $category = null) { if (!in_array($show, array('profile', 'investors', 'sharemates', 'message'))) { $show = 'profile'; } $user = Model\User::get($id, LANG); if (!$user instanceof Model\User || $user->hide) { throw new Error('404', Text::html('fatal-error-user')); } //--- para usuarios públicos--- if (empty($_SESSION['user'])) { // la subpágina de mensaje también está restringida if ($show == 'message') { $_SESSION['jumpto'] = '/user/profile/' . $id . '/message'; Message::Info(Text::get('user-login-required-to_message')); throw new Redirection(SEC_URL . "/user/login"); } // a menos que este perfil sea de un vip, no pueden verlo if (!isset($user->roles['vip'])) { $_SESSION['jumpto'] = '/user/profile/' . $id . '/' . $show; Message::Info(Text::get('user-login-required-to_see')); throw new Redirection(SEC_URL . "/user/login"); } /* // subpágina de cofinanciadores if ($show == 'investors') { Message::Info(Text::get('user-login-required-to_see-supporters')); throw new Redirection('/user/profile/' . $id); } */ } //--- el resto pueden seguir --- // impulsor y usuario solamente pueden comunicarse si: if ($show == 'message') { $is_author = false; // si es autor de un proyecto publicado $is_investor = false; // si es cofinanciador $is_messeger = false; // si es participante // si el usuario logueado es impulsor (autro de proyecto publicado $user_created = Model\Project::ofmine($_SESSION['user']->id, true); if (!empty($user_created)) { $is_author = true; } // si el usuario del perfil es cofin. o partic. // proyectos que es cofinanciador este usuario (el del perfil) $user_invested = Model\User::invested($id, true); foreach ($user_invested as $a_project) { if ($a_project->owner == $_SESSION['user']->id) { $is_investor = true; break; } } // proyectos que es participante este usuario (el del perfil) (que ha enviado algún mensaje) $user_messeged = Model\Message::getMesseged($id, true); foreach ($user_messeged as $a_project) { if ($a_project->owner == $_SESSION['user']->id) { $is_messeger = true; break; } } // si el usuario logueado es el usuario cofin./partic. // si el usuario del perfil es impulsor de un proyecto cofinanciado o en el que ha participado // proyectos que es cofinanciador el usuario logueado $user_invested = Model\User::invested($_SESSION['user']->id, true); foreach ($user_invested as $a_project) { if ($a_project->owner == $id) { $is_investor = true; break; } } // proyectos que es participante el usuario logueado (que ha enviado algún mensaje) $user_messeged = Model\Message::getMesseged($_SESSION['user']->id, true); foreach ($user_messeged as $a_project) { if ($a_project->owner == $id) { $is_messeger = true; break; } } if (!$is_investor && !$is_messeger && !$is_author) { Message::Info(Text::get('user-message-restricted')); throw new Redirection('/user/profile/' . $id); } else { $_SESSION['message_autorized'] = true; } } // vip profile $viewData = array(); $viewData['user'] = $user; $projects = Model\Project::ofmine($id, true); $viewData['projects'] = $projects; //mis cofinanciadores // array de usuarios con: // foto, nombre, nivel, cantidad a mis proyectos, fecha ultimo aporte, nº proyectos que cofinancia $investors = array(); foreach ($projects as $kay => $project) { // quitamos los caducados if ($project->status == 0) { unset($projects[$kay]); continue; } foreach (Model\Invest::investors($project->id) as $key => $investor) { // convocadores no, gracias if (!empty($investor->campaign)) { continue; } if (\array_key_exists($investor->user, $investors)) { // ya está en el array, quiere decir que cofinancia este otro proyecto // , añadir uno, sumar su aporte, actualizar la fecha ++$investors[$investor->user]->projects; $investors[$investor->user]->amount += $investor->amount; $investors[$investor->user]->date = $investor->date; } else { $investors[$investor->user] = (object) array('user' => $investor->user, 'name' => $investor->name, 'projects' => 1, 'avatar' => $investor->avatar, 'worth' => $investor->worth, 'amount' => $investor->amount, 'date' => $investor->date); } } } $viewData['investors'] = $investors; // comparten intereses $viewData['shares'] = Model\User\Interest::share($id, $category); if ($show == 'sharemates' && empty($viewData['shares'])) { $show = 'profile'; } if (!empty($category)) { $viewData['category'] = $category; } // proyectos que cofinancio $invested = Model\User::invested($id, true); // agrupacion de proyectos que cofinancia y proyectos suyos $viewData['lists'] = array(); if (!empty($invested)) { $viewData['lists']['invest_on'] = Listing::get($invested, 2); } if (!empty($projects)) { $viewData['lists']['my_projects'] = Listing::get($projects, 2); } return new View('view/user/' . $show . '.html.php', $viewData); }