本文整理汇总了PHP中Goteo\Model\Project::get方法的典型用法代码示例。如果您正苦于以下问题:PHP Project::get方法的具体用法?PHP Project::get怎么用?PHP Project::get使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Goteo\Model\Project
的用法示例。
在下文中一共展示了Project::get方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: index
public function index()
{
if (isset($_GET['error'])) {
throw new \Goteo\Core\Error('418', Text::html('fatal-error-teapot'));
}
// orden de los elementos en portada
$order = Home::getAll();
// si estamos en easy mode, quitamos el feed
if (defined('GOTEO_EASY') && \GOTEO_EASY === true && isset($order['feed'])) {
unset($order['feed']);
}
// entradas de blog
if (isset($order['posts'])) {
// entradas en portada
$posts = Post::getAll();
}
// Proyectos destacados
if (isset($order['promotes'])) {
$promotes = Promote::getAll(true);
foreach ($promotes as $key => &$promo) {
try {
$promo->projectData = Project::getMedium($promo->project, LANG);
} catch (\Goteo\Core\Error $e) {
unset($promotes[$key]);
}
}
}
// actividad reciente
if (isset($order['feed'])) {
$feed = array();
$feed['goteo'] = Feed::getAll('goteo', 'public', 15);
$feed['projects'] = Feed::getAll('projects', 'public', 15);
$feed['community'] = Feed::getAll('community', 'public', 15);
}
// Banners siempre
$banners = Banner::getAll(true);
foreach ($banners as $id => &$banner) {
if (!empty($banner->project)) {
try {
$banner->project = Project::get($banner->project, LANG);
} catch (\Goteo\Core\Error $e) {
unset($banners[$id]);
}
}
}
return new View('view/index.html.php', array('banners' => $banners, 'posts' => $posts, 'promotes' => $promotes, 'feed' => $feed, 'order' => $order));
}
示例2: process
public static function process($action = 'list', $id = null, $filters = array())
{
$node = isset($_SESSION['admin_node']) ? $_SESSION['admin_node'] : \GOTEO_NODE;
// métodos de pago
$methods = Model\Invest::methods();
// estados del proyecto
$status = Model\Project::status();
// estados de aporte
$investStatus = Model\Invest::status();
// listado de proyectos
$projects = Model\Invest::projects(false, $node);
// usuarios cofinanciadores
$users = Model\Invest::users(true);
// campañas que tienen aportes
$calls = Model\Invest::calls();
// extras
$types = array('donative' => 'Solo los donativos', 'anonymous' => 'Solo los anónimos', 'manual' => 'Solo los manuales', 'campaign' => 'Solo con riego');
// detalles del aporte
if ($action == 'details') {
$invest = Model\Invest::get($id);
$project = Model\Project::get($invest->project);
$userData = Model\User::get($invest->user);
if (!empty($invest->droped)) {
$droped = Model\Invest::get($invest->droped);
} else {
$droped = null;
}
if ($project->node != $node) {
throw new Redirection('/admin/invests');
}
return new View('view/admin/index.html.php', array('folder' => 'invests', 'file' => 'details', 'invest' => $invest, 'project' => $project, 'user' => $userData, 'status' => $status, 'investStatus' => $investStatus, 'droped' => $droped, 'calls' => $calls));
}
// listado de aportes
if ($filters['filtered'] == 'yes') {
if (!empty($filters['calls'])) {
$filters['types'] = '';
}
$list = Model\Invest::getList($filters, $node, 999);
} else {
$list = array();
}
$viewData = array('folder' => 'invests', 'file' => 'list', 'list' => $list, 'filters' => $filters, 'projects' => $projects, 'users' => $users, 'calls' => $calls, 'methods' => $methods, 'types' => $types, 'investStatus' => $investStatus);
return new View('view/admin/index.html.php', $viewData);
}
示例3: verifyProject
/**
* Verificación de proyecto de trabajo
*
* @param object $user instancia Model\User del convocador
* @param string $action por si es 'select'
* @return array(project, projects)
*/
public static function verifyProject($user, $action)
{
$projects = Model\Project::ofmine($user->id);
// sus proyectos
// si no tiene, no debería estar aquí
if (empty($projects) || !is_array($projects)) {
return array(null, null);
}
// comprobamos que tenga los permisos para editar y borrar
foreach ($projects as $proj) {
// comprueba que puede editar sus proyectos
if (!ACL::check('/project/edit/' . $proj->id)) {
ACL::allow('/project/edit/' . $proj->id . '/', '*', 'user', $user);
}
// y borrarlos
if (!ACL::check('/project/delete/' . $proj->id)) {
ACL::allow('/project/delete/' . $proj->id . '/', '*', 'user', $user);
}
}
// si está seleccionando otro proyecto
if ($action == 'select' && !empty($_POST['project'])) {
$project = Model\Project::get($_POST['project']);
} elseif (!empty($_SESSION['project']->id)) {
// mantener los datos del proyecto de trabajo
$project = Model\Project::get($_SESSION['project']->id);
}
// si aun no tiene proyecto de trabajo, coge el primero
if (empty($project)) {
$project = $projects[0];
}
// tiene que volver con un proyecto de trabajo
if ($project instanceof \Goteo\Model\Project) {
$_SESSION['project'] = $project;
// lo guardamos en sesión para la próxima verificación
} else {
Message::Error('No se puede trabajar con el proyecto seleccionado, contacta con nosotros');
$project = null;
}
// devolvemos lista de proyectos y proyecto de trabajo
return array($project, $projects);
}
示例4: __construct
/**
*
* @param type mixed $id Identificador
* @return type object Objeto
*/
public function __construct($id, $all_avatars = true, $with_title = true)
{
if ($this->project = Project::get($id)) {
$this->show_title = $with_title;
$this->investors = $this->project->agregateInvestors();
$avatars = array();
foreach ($this->investors as $i) {
if ($i->avatar->id != 1 || $all_avatars) {
$avatars[$i->user] = $i->amount;
}
}
$this->avatars = self::pondera($avatars, $this->max_multiplier);
//arsort($this->avatars);
$keys = array_keys($this->avatars);
shuffle($keys);
$this->avatars = array_merge(array_flip($keys), $this->avatars);
//print_r($this->project);die;
} else {
return false;
}
}
示例5: process
public static function process($action = 'list', $id = null, $filters = array())
{
switch ($action) {
case 'fulfill':
$sql = "UPDATE invest_reward SET fulfilled = 1 WHERE invest = ?";
if (Model\Invest::query($sql, array($id))) {
Message::Info(Text::get('admin-rewards-info-status-completed'));
} else {
Message::Error(Text::get('admin-rewards-error-statuschage-fail'));
}
throw new Redirection('/admin/rewards');
break;
case 'unfill':
$sql = "UPDATE invest_reward SET fulfilled = 0 WHERE invest = ?";
if (Model\Invest::query($sql, array($id))) {
Message::Info(Text::get('admin-rewards-info-status-completed-pending'));
} else {
message::Error('Ha fallado al desmarcar');
}
throw new Redirection('/admin/rewards');
break;
}
// edicion
if ($action == 'edit' && !empty($id)) {
$invest = Model\Invest::get($id);
$projectData = Model\Project::get($invest->project);
$userData = Model\User::getMini($invest->user);
$status = Model\Project::status();
// si tratando post
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['update'])) {
$errors = array();
// la recompensa:
$chosen = $_POST['selected_reward'];
if (empty($chosen)) {
// renuncia a las recompensas, bien por el/ella!
$invest->rewards = array();
} else {
$invest->rewards = array($chosen);
}
$invest->anonymous = $_POST['anonymous'];
// dirección de envio para la recompensa
// y datos fiscales por si fuera donativo
$invest->address = (object) array('name' => $_POST['name'], 'nif' => $_POST['nif'], 'address' => $_POST['address'], 'zipcode' => $_POST['zipcode'], 'location' => $_POST['location'], 'country' => $_POST['country']);
if ($invest->update($errors)) {
Message::Info(Text::get('admin-rewards-info-update'));
throw new Redirection('/admin/rewards');
} else {
Message::Error('No se han actualizado correctamente los datos del aporte. ERROR: ' . implode(', ', $errors));
}
}
return new View('view/admin/index.html.php', array('folder' => 'rewards', 'file' => 'edit', 'invest' => $invest, 'project' => $projectData, 'user' => $userData, 'status' => $status));
}
// listado de proyectos
$projects = Model\Invest::projects();
$status = array('nok' => Text::_("Pendiente"), 'ok' => Text::_("Cumplida"));
// listado de aportes
if ($filters['filtered'] == 'yes') {
$list = Model\Project\Reward::getChossen($filters);
} else {
$list = array();
}
return new View('view/admin/index.html.php', array('folder' => 'rewards', 'file' => 'list', 'list' => $list, 'filters' => $filters, 'projects' => $projects, 'status' => $status));
}
示例6: index
public function index($project = null)
{
if (empty($project)) {
throw new Redirection('/discover', Redirection::TEMPORARY);
}
$message = '';
$projectData = Model\Project::get($project);
$methods = static::_methods();
// si no está en campaña no pueden esta qui ni de coña
if ($projectData->status != 3) {
throw new Redirection('/project/' . $project, Redirection::TEMPORARY);
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$errors = array();
$los_datos = $_POST;
$method = \strtolower($_POST['method']);
if (!isset($methods[$method])) {
Message::Error(Text::get('invest-method-error'));
throw new Redirection(SEC_URL . "/project/{$project}/invest/?confirm=fail", Redirection::TEMPORARY);
}
if (empty($_POST['amount'])) {
Message::Error(Text::get('invest-amount-error'));
throw new Redirection(SEC_URL . "/project/{$project}/invest/?confirm=fail", Redirection::TEMPORARY);
}
// dirección de envio para las recompensas
// o datoas fiscales del donativo
$address = array('name' => $_POST['fullname'], 'nif' => $_POST['nif'], 'address' => $_POST['address'], 'zipcode' => $_POST['zipcode'], 'location' => $_POST['location'], 'country' => $_POST['country']);
if ($projectData->owner == $_SESSION['user']->id) {
Message::Error(Text::get('invest-owner-error'));
throw new Redirection(SEC_URL . "/project/{$project}/invest/?confirm=fail", Redirection::TEMPORARY);
}
// añadir recompensas que ha elegido
$chosen = $_POST['selected_reward'];
if ($chosen == 0) {
// renuncia a las recompensas, bien por el/ella
$resign = true;
$reward = false;
} else {
// ya no se aplica esto de recompensa es de tipo Reconocimiento para donativo
$resign = false;
$reward = true;
}
// insertamos los datos personales del usuario si no tiene registro aun
Model\User::setPersonal($_SESSION['user']->id, $address, false);
$invest = new Model\Invest(array('amount' => $_POST['amount'], 'user' => $_SESSION['user']->id, 'project' => $project, 'method' => $method, 'status' => '-1', 'invested' => date('Y-m-d'), 'anonymous' => $_POST['anonymous'], 'resign' => $resign));
if ($reward) {
$invest->rewards = array($chosen);
}
$invest->address = (object) $address;
if ($invest->save($errors)) {
$invest->urlOK = SEC_URL . "/invest/confirmed/{$project}/{$invest->id}";
$invest->urlNOK = SEC_URL . "/invest/fail/{$project}/{$invest->id}";
Model\Invest::setDetail($invest->id, 'init', 'Se ha creado el registro de aporte, el usuario ha clickado el boton de tpv o paypal. Proceso controller/invest');
switch ($method) {
case 'tpv':
// redireccion al tpv
if (Tpv::preapproval($invest, $errors)) {
die;
} else {
Message::Error(Text::get('invest-tpv-error_fatal'));
}
break;
case 'paypal':
// Petición de preapproval y redirección a paypal
if (Paypal::preapproval($invest, $errors)) {
die;
} else {
Message::Error(Text::get('invest-paypal-error_fatal'));
}
break;
case 'cash':
// En betatest aceptamos cash para pruebas
if (GOTEO_ENV != 'real') {
$invest->setStatus('1');
throw new Redirection($invest->urlOK);
} else {
throw new Redirection('/');
}
break;
}
} else {
Message::Error(Text::get('invest-create-error'));
}
} else {
Message::Error(Text::get('invest-data-error'));
}
throw new Redirection("/project/{$project}/invest/?confirm=fail");
}
示例7: process
public static function process($action = 'list', $id = null, $filters = array())
{
$errors = array();
// reubicando aporte,
if ($action == 'move') {
// el aporte original
$original = Model\Invest::get($id);
$userData = Model\User::getMini($original->user);
$projectData = Model\Project::getMini($original->project);
//el original tiene que ser de tpv o cash y estar como 'cargo ejecutado'
if ($original->method == 'paypal' || $original->status != 1) {
Message::Error('No se puede reubicar este aporte!');
throw new Redirection('/admin/accounts');
}
// generar aporte manual y caducar el original
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['move'])) {
// si falta proyecto, error
$projectNew = $_POST['project'];
// @TODO a saber si le toca dinero de alguna convocatoria
$campaign = null;
$invest = new Model\Invest(array('amount' => $original->amount, 'user' => $original->user, 'project' => $projectNew, 'account' => $userData->email, 'method' => 'cash', 'status' => '1', 'invested' => date('Y-m-d'), 'charged' => $original->charged, 'anonymous' => $original->anonymous, 'resign' => $original->resign, 'admin' => $_SESSION['user']->id, 'campaign' => $campaign));
//@TODO si el proyecto seleccionado
if ($invest->save($errors)) {
//recompensas que le tocan (si no era resign)
if (!$original->resign) {
// sacar recompensas
$rewards = Model\Project\Reward::getAll($projectNew, 'individual');
foreach ($rewards as $rewId => $rewData) {
$invest->setReward($rewId);
//asignar
}
}
// cambio estado del aporte original a 'Reubicado' (no aparece en cofinanciadores)
// si tuviera que aparecer lo marcaríamos como caducado
if ($original->setStatus('5')) {
// Evento Feed
$log = new Feed();
$log->setTarget($projectData->id);
$log->populate('Aporte reubicado', '/admin/accounts', \vsprintf("%s ha aportado %s al proyecto %s en nombre de %s", array(Feed::item('user', $_SESSION['user']->name, $_SESSION['user']->id), Feed::item('money', $_POST['amount'] . ' €'), Feed::item('project', $projectData->name, $projectData->id), Feed::item('user', $userData->name, $userData->id))));
$log->doAdmin('money');
unset($log);
Message::Info('Aporte reubicado correctamente');
throw new Redirection('/admin/accounts');
} else {
$errors[] = 'A fallado al cambiar el estado del aporte original (' . $original->id . ')';
}
} else {
$errors[] = 'Ha fallado algo al reubicar el aporte';
}
}
$viewData = array('folder' => 'accounts', 'file' => 'move', 'original' => $original, 'user' => $userData, 'project' => $projectData);
return new View('view/admin/index.html.php', $viewData);
// fin de la historia dereubicar
}
// cambiando estado del aporte aporte,
if ($action == 'update') {
// el aporte original
$invest = Model\Invest::get($id);
if (!$invest instanceof Model\Invest) {
Message::Error('No tenemos registro del aporte ' . $id);
throw new Redirection('/admin/accounts');
}
$status = Model\Invest::status();
$new = isset($_POST['status']) ? $_POST['status'] : null;
if ($invest->issue && $_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['update']) && $_POST['resolve'] == 1) {
Model\Invest::unsetIssue($id);
Model\Invest::setDetail($id, 'issue-solved', 'La incidencia se ha dado por resuelta por el usuario ' . $_SESSION['user']->name);
Message::Info('La incidencia se ha dado por resuelta');
}
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['update']) && isset($new) && isset($status[$new])) {
if ($new != $invest->status) {
if (Model\Invest::query("UPDATE invest SET status=:status WHERE id=:id", array(':id' => $id, ':status' => $new))) {
Model\Invest::setDetail($id, 'status-change' . rand(0, 9999), 'El admin ' . $_SESSION['user']->name . ' ha cambiado el estado del apote a ' . $status[$new]);
Message::Info('Se ha actualizado el estado del aporte');
} else {
Message::Error('Ha fallado al actualizar el estado del aporte');
}
} else {
Message::Error('No se ha cambiado el estado');
}
throw new Redirection('/admin/accounts/details/' . $id);
}
return new View('view/admin/index.html.php', array('folder' => 'accounts', 'file' => 'update', 'invest' => $invest, 'status' => $status));
// fin de la historia actualizar estado
}
// resolviendo incidencias
if ($action == 'solve') {
// el aporte original
$invest = Model\Invest::get($id);
if (!$invest instanceof Model\Invest) {
Message::Error('No tenemos registro del aporte ' . $id);
throw new Redirection('/admin/accounts');
}
$projectData = Model\Project::getMini($invest->project);
$errors = array();
// primero cancelar
switch ($invest->method) {
case 'paypal':
$err = array();
if (Paypal::cancelPreapproval($invest, $err)) {
//.........这里部分代码省略.........
示例8: view
private function view($id, $show, $post = null)
{
$project = Model\Project::get($id, LANG);
// recompensas
foreach ($project->individual_rewards as &$reward) {
$reward->none = false;
$reward->taken = $reward->getTaken();
// cofinanciadores quehan optado por esta recompensas
// si controla unidades de esta recompensa, mirar si quedan
if ($reward->units > 0 && $reward->taken >= $reward->units) {
$reward->none = true;
}
}
// mensaje cuando, sin estar en campaña, tiene fecha de publicación, es que la campaña ha sido cancelada
if ($project->status < 3 && !empty($project->published)) {
Message::Info(Text::get('project-unpublished'));
} elseif ($project->status < 3) {
// mensaje de no publicado siempre que no esté en campaña
Message::Info(Text::get('project-not_published'));
}
// solamente se puede ver publicamente si...
$grant = false;
if ($project->status > 2) {
// está publicado
$grant = true;
} elseif ($project->owner == $_SESSION['user']->id) {
// es el dueño
$grant = true;
} elseif (ACL::check('/project/edit/todos')) {
// es un admin
$grant = true;
} elseif (ACL::check('/project/view/todos')) {
// es un usuario con permiso
$grant = true;
} elseif (isset($_SESSION['user']->roles['checker']) && Model\User\Review::is_assigned($_SESSION['user']->id, $project->id)) {
// es un revisor y lo tiene asignado
$grant = true;
}
// (Callsys)
// si lo puede ver
if ($grant) {
$viewData = array('project' => $project, 'show' => $show);
// sus entradas de novedades
$blog = Model\Blog::get($project->id);
// si está en modo preview, ponemos todas las entradas, incluso las no publicadas
if (isset($_GET['preview']) && $_GET['preview'] == $_SESSION['user']->id) {
$blog->posts = Model\Blog\Post::getAll($blog->id, null, false);
}
$viewData['blog'] = $blog;
// tenemos que tocar esto un poquito para motrar las necesitades no economicas
if ($show == 'needs-non') {
$viewData['show'] = 'needs';
$viewData['non-economic'] = true;
}
// -- Mensaje azul molesto para usuarios no registrados
if (($show == 'messages' || $show == 'updates') && empty($_SESSION['user'])) {
Message::Info(Text::html('user-login-required'));
}
//tenemos que tocar esto un poquito para gestionar los pasos al aportar
if ($show == 'invest') {
// si no está en campaña no pueden estar aqui ni de coña
if ($project->status != 3) {
Message::Info(Text::get('project-invest-closed'));
throw new Redirection('/project/' . $id, Redirection::TEMPORARY);
}
$viewData['show'] = 'supporters';
/* pasos de proceso aporte
*
* 1, 'start': ver y seleccionar recompensa (y cantidad)
* 2, 'login': loguear con usuario/contraseña o con email (que crea el usuario automáticamente)
* 3, 'confirm': confirmar los datos y saltar a la pasarela de pago
* 4, 'ok'/'fail': al volver de la pasarela de pago, la confirmación nos dice si todo bien o algo mal
* 5, 'continue': recuperar aporte incompleto (variante de confirm)
*/
// usamos la variable de url $post para movernos entre los pasos
$step = isset($post) && in_array($post, array('start', 'login', 'confirm', 'continue')) ? $post : 'start';
// si llega confirm ya ha terminado el proceso de aporte
if (isset($_GET['confirm']) && \in_array($_GET['confirm'], array('ok', 'fail'))) {
unset($_SESSION['invest-amount']);
// confirmación
$step = $_GET['confirm'];
} else {
// si no, a ver en que paso estamos
if (isset($_GET['amount'])) {
$_SESSION['invest-amount'] = $_GET['amount'];
}
// si el usuario está validado, recuperamos posible amount y mostramos
if ($_SESSION['user'] instanceof Model\User) {
$step = 'confirm';
} elseif ($step != 'start' && empty($_SESSION['user'])) {
// si no está validado solo puede estar en start
Message::Info(Text::get('user-login-required-to_invest'));
$step = 'start';
} elseif ($step == 'start') {
// para cuando salte
$_SESSION['jumpto'] = SEC_URL . '/project/' . $id . '/invest/#continue';
} else {
$step = 'start';
}
}
//.........这里部分代码省略.........
示例9: array
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Goteo is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with Goteo. If not, see <http://www.gnu.org/licenses/agpl.txt>.
*
*/
use Goteo\Core\View, Goteo\Library\Text, Goteo\Library\SuperForm;
$project = $this['project'];
$errors = $this['errors'];
$original = \Goteo\Model\Project::get($project->id);
// media del proyecto
if (!empty($project->media->url)) {
$media = array('type' => 'media', 'title' => Text::get('overview-field-media_preview'), 'class' => 'inline media', 'type' => 'html', 'html' => !empty($project->media) ? $project->media->getEmbedCode() : '');
} else {
$media = array('type' => 'hidden', 'class' => 'inline');
}
// video de motivacion
if (!empty($project->video->url)) {
$video = array('type' => 'media', 'title' => Text::get('overview-field-media_preview'), 'class' => 'inline media', 'type' => 'html', 'html' => !empty($project->video) ? $project->video->getEmbedCode() : '');
} else {
$video = array('type' => 'hidden', 'class' => 'inline');
}
?>
<form method="post" action="/dashboard/translates/overview/save" class="project" enctype="multipart/form-data">
示例10: process
public static function process($action = 'list', $id = null, $filters = array())
{
$log_text = null;
$errors = array();
// multiples usos
$nodes = array();
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['id'])) {
$projData = Model\Project::get($_POST['id']);
if (empty($projData->id)) {
Message::Error('El proyecto ' . $_POST['id'] . ' no existe');
throw new Redirection('/admin/projects/images/' . $id);
}
if (isset($_POST['save-dates'])) {
$fields = array('created', 'updated', 'published', 'success', 'closed', 'passed');
$set = '';
$values = array(':id' => $projData->id);
foreach ($fields as $field) {
if ($set != '') {
$set .= ", ";
}
$set .= "`{$field}` = :{$field} ";
if (empty($_POST[$field]) || $_POST[$field] == '0000-00-00') {
$_POST[$field] = null;
}
$values[":{$field}"] = $_POST[$field];
}
try {
$sql = "UPDATE project SET " . $set . " WHERE id = :id";
if (Model\Project::query($sql, $values)) {
$log_text = 'El admin %s ha <span class="red">tocado las fechas</span> del proyecto ' . $projData->name . ' %s';
} else {
$log_text = 'Al admin %s le ha <span class="red">fallado al tocar las fechas</span> del proyecto ' . $projData->name . ' %s';
}
} catch (\PDOException $e) {
Message::Error(Text::_("No se ha guardado correctamente. ") . $e->getMessage());
}
} elseif (isset($_POST['save-accounts'])) {
$accounts = Model\Project\Account::get($projData->id);
$accounts->bank = $_POST['bank'];
$accounts->bank_owner = $_POST['bank_owner'];
$accounts->paypal = $_POST['paypal'];
$accounts->paypal_owner = $_POST['paypal_owner'];
if ($accounts->save($errors)) {
Message::Info(Text::_('Se han actualizado las cuentas del proyecto ') . $projData->name);
} else {
Message::Error(implode('<br />', $errors));
}
} elseif ($action == 'images') {
$todook = true;
if (!empty($_POST['move'])) {
$direction = $_POST['action'];
Model\Project\Image::$direction($id, $_POST['move'], $_POST['section']);
}
foreach ($_POST as $key => $value) {
$parts = explode('_', $key);
if ($parts[1] == 'image' && in_array($parts[0], array('section', 'url'))) {
if (Model\Project\Image::update($id, $parts[2], $parts[0], $value)) {
// OK
} else {
$todook = false;
Message::Error(Text::_('No se ha podido actualizar campo') . " {$parts[0]} -> {$value}");
}
}
}
if ($todook) {
Message::Info(Text::_('Se han actualizado los datos'));
}
throw new Redirection('/admin/projects/images/' . $id);
} elseif ($action == 'rebase') {
$todook = true;
if ($_POST['proceed'] == 'rebase' && !empty($_POST['newid'])) {
$newid = $_POST['newid'];
// pimero miramos que no hay otro proyecto con esa id
$test = Model\Project::getMini($newid);
if ($test->id == $newid) {
Message::Error(Text::_('Ya hay un proyecto con ese Id.'));
throw new Redirection('/admin/projects/rebase/' . $id);
}
if ($projData->status >= 3 && $_POST['force'] != 1) {
Message::Error(Text::_('El proyecto no está ni en Edición ni en Revisión, no se modifica nada.'));
throw new Redirection('/admin/projects/rebase/' . $id);
}
if ($projData->rebase($newid)) {
Message::Info(Text::_('Verificar el proyecto') . ' -> <a href="' . SITE_URL . '/project/' . $newid . '" target="_blank">' . $projData->name . '</a>');
throw new Redirection('/admin/projects');
} else {
Message::Info(Text::_('Ha fallado algo en el rebase, verificar el proyecto') . ' -> <a href="' . SITE_URL . '/project/' . $projData->id . '" target="_blank">' . $projData->name . ' (' . $id . ')</a>');
throw new Redirection('/admin/projects/rebase/' . $id);
}
}
}
}
/*
* switch action,
* proceso que sea,
* redirect
*
*/
if (isset($id)) {
$project = Model\Project::get($id);
//.........这里部分代码省略.........
示例11: process
public static function process($action = 'list', $id = null, $filters = array())
{
$node = isset($_SESSION['admin_node']) ? $_SESSION['admin_node'] : \GOTEO_NODE;
// métodos de pago
$methods = Model\Invest::methods();
// estados del proyecto
$status = Model\Project::status();
// estados de aporte
$investStatus = Model\Invest::status();
// listado de proyectos
$projects = Model\Invest::projects(false, $node);
// usuarios cofinanciadores
$users = Model\Invest::users(true);
// campañas que tienen aportes
$calls = Model\Invest::calls();
// extras
$types = array('donative' => 'Solo los donativos', 'anonymous' => 'Solo los anónimos', 'manual' => 'Solo los manuales', 'campaign' => 'Solo con riego');
if ($action == 'csv') {
$invest = Model\Invest::getPreapproval($id);
foreach ($invest as $value) {
$csv[] = array($value->id, $value->amount);
}
$fileName = "axes_" . date("YmdHis") . ".csv";
header("Content-Disposition: attachment; filename=\"{$filename}\"");
header("Content-type: application/octet-stream");
header("Pragma: no-cache");
header("Expires: 0");
$fp = fopen('php://output', 'w');
foreach ($csv as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
exit;
}
if ($action == 'dopay') {
$query = \Goteo\Core\Model::query("\n SELECT *\n FROM invest\n WHERE invest.project = ?\n AND (invest.status = 0\n OR (invest.method = 'tpv'\n AND invest.status = 1\n )\n OR (invest.method = 'cash'\n AND invest.status = 1\n )\n )\n AND (invest.campaign IS NULL OR invest.campaign = 0)\n ", array($id));
$invests = $query->fetchAll(\PDO::FETCH_CLASS, '\\Goteo\\Model\\Invest');
foreach ($invests as $key => $invest) {
if ($invest->setPayment(date("YmdHis"))) {
$invest->setStatus(1);
Model\Invest::setDetail($invest->id, 'executed', 'Preapproval has been executed, has initiated the chained payment. Process cron / execute');
if ($invest->issue) {
Model\Invest::unsetIssue($invest->id);
Model\Invest::setDetail($invest->id, 'issue-solved', 'The incidence has been resolved upon success by the automatic process');
}
}
}
Message::Info("処理しました");
throw new Redirection('/admin/projects/list');
exit;
}
// detalles del aporte
if ($action == 'details') {
$invest = Model\Invest::get($id);
$project = Model\Project::get($invest->project);
$userData = Model\User::get($invest->user);
if (!empty($invest->droped)) {
$droped = Model\Invest::get($invest->droped);
} else {
$droped = null;
}
if ($project->node != $node) {
throw new Redirection('/admin/invests');
}
return new View('view/admin/index.html.php', array('folder' => 'invests', 'file' => 'details', 'invest' => $invest, 'project' => $project, 'user' => $userData, 'status' => $status, 'investStatus' => $investStatus, 'droped' => $droped, 'calls' => $calls));
}
// listado de aportes
if ($filters['filtered'] == 'yes') {
if (!empty($filters['calls'])) {
$filters['types'] = '';
}
$list = Model\Invest::getList($filters, $node, 999);
} else {
$list = array();
}
$viewData = array('folder' => 'invests', 'file' => 'list', 'list' => $list, 'filters' => $filters, 'projects' => $projects, 'users' => $users, 'calls' => $calls, 'methods' => $methods, 'types' => $types, 'investStatus' => $investStatus);
return new View('view/admin/index.html.php', $viewData);
}
示例12: translates
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'])) {
//.........这里部分代码省略.........