本文整理汇总了PHP中Goteo\Model\Project::getMini方法的典型用法代码示例。如果您正苦于以下问题:PHP Project::getMini方法的具体用法?PHP Project::getMini怎么用?PHP Project::getMini使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Goteo\Model\Project
的用法示例。
在下文中一共展示了Project::getMini方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getAll
public static function getAll($position = 'home', $node = \GOTEO_NODE)
{
if (!in_array($position, array('home', 'footer'))) {
$position = 'home';
}
$list = array();
$values = array(':lang' => \LANG);
if ($node == \GOTEO_NODE || empty($node)) {
// portada goteo, sacamos todas las de blogs tipo nodo
// que esten marcadas en la tabla post
$sqlFilter = " WHERE post.{$position} = 1\n AND post.publish = 1\n ";
$sqlField = "post.order as `order`,";
} else {
// portada nodo, igualmente las entradas de blogs tipo nodo
// perosolo la que esten en la tabla de entradas en portada de ese nodo
$sqlFilter = " WHERE post.id IN (SELECT post FROM post_node WHERE node = :node)\n AND post.publish = 1\n ";
$values[':node'] = $node;
$sqlField = "(SELECT `order` FROM post_node WHERE node = :node AND post = post.id) as `order`,";
}
$sql = "\n SELECT\n post.id as id,\n post.blog as blog,\n IFNULL(post_lang.title, post.title) as title,\n IFNULL(post_lang.text, post.text) as `text`,\n post.image as `image`,\n post.media as `media`,\n {$sqlField}\n DATE_FORMAT(post.date, '%d-%m-%Y') as date,\n DATE_FORMAT(post.date, '%d | %m | %Y') as fecha,\n post.publish as publish,\n post.author as author,\n post.home as home,\n post.footer as footer,\n blog.type as owner_type,\n blog.owner as owner_id\n FROM post\n INNER JOIN blog\n ON blog.id = post.blog\n LEFT JOIN post_lang\n ON post_lang.id = post.id\n AND post_lang.lang = :lang\n {$sqlFilter}\n ORDER BY `order` ASC, title ASC\n ";
$query = static::query($sql, $values);
foreach ($query->fetchAll(\PDO::FETCH_CLASS, __CLASS__) as $post) {
// galeria
$post->gallery = Image::getAll($post->id, 'post');
$post->image = $post->gallery[0];
$post->media = new Media($post->media);
$post->type = $post->home == 1 ? 'home' : 'footer';
// datos del autor
switch ($post->owner_type) {
case 'project':
$proj_blog = Project::getMini($post->owner_id);
$post->author = $proj_blog->owner;
$post->user = $proj_blog->user;
$post->owner_name = $proj_blog->name;
$sql = "UPDATE post SET author = '.{$proj_blog->owner}.' WHERE post.id = ?";
self::query($sql, array($post->id));
break;
case 'node':
$post->user = User::getMini($post->author);
// (Nodesys)
break;
}
$list[$post->id] = $post;
}
return $list;
}
示例2: pay
public static function pay($invest, &$errors = array())
{
if (\GOTEO_FREE) {
$errors[] = Text::_('Bank not implemented. Contact us for development services or make it work somehow');
return false;
}
try {
$project = Project::getMini($invest->project);
// preparo codigo y cantidad
$token = $invest->id . rand(0, 9) . rand(0, 9) . rand(0, 9) . rand(0, 9);
$amount = $invest->amount * 100;
// Guardar el codigo de preaproval en el registro de aporte (para confirmar o cancelar)
$invest->setPreapproval($token);
// mandarlo al tpv
$urlTPV = TPV_REDIRECT_URL;
$data = '';
$MsgStr = '';
foreach ($datos as $n => $v) {
$data .= '<input name="' . $n . '" type="hidden" value="' . $v . '" />';
$MsgStr .= "{$n}:'{$v}'; ";
}
$conf = array('mode' => 0600, 'timeFormat' => '%X %x');
$logger =& \Log::singleton('file', 'logs/' . date('Ymd') . '_invest.log', 'caller', $conf);
$logger->log('##### TPV [' . $invest->id . '] ' . date('d/m/Y') . ' User:' . $_SESSION['user']->id . '#####');
$logger->log("Charge request: {$MsgStr}");
$logger->close();
Invest::setDetail($invest->id, 'tpv-conection', 'Ha iniciado la comunicacion con el tpv, operacion numero ' . $token . '. Proceso libary/tpv::pay');
echo '<html><head><title>Goteo.org</title></head><body><form action="' . $urlTPV . '" method="post" id="form_tpv" enctype="application/x-www-form-urlencoded">' . $data . '</form><script type="text/javascript">document.getElementById("form_tpv").submit();</script></body></html>';
return true;
} catch (Exception $ex) {
Invest::setDetail($invest->id, 'tpv-conection-fail', 'Ha fallado la comunicacion con el tpv. Proceso libary/tpv::pay');
$errors[] = Text::_('Error fatal en la comunicacion con el TPV, se ha reportado la incidencia. Disculpe las molestias.');
@mail(\GOTEO_FAIL_MAIL, 'Error fatal en comunicacion TPV Sermepa', 'ERROR en ' . __FUNCTION__ . '<br />' . $ex->getMessage());
return false;
}
}
示例3: post
public function post($post, $project = null)
{
if ($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['message'])) {
$comment = new Model\Blog\Post\Comment(array('user' => $_SESSION['user']->id, 'post' => $post, 'date' => date('Y-m-d H:i:s'), 'text' => $_POST['message']));
if ($comment->save($errors)) {
// a ver los datos del post
$postData = Model\Blog\Post::get($post);
// Evento Feed
$log = new Feed();
if (!empty($project)) {
$projectData = Model\Project::getMini($project);
$log->setTarget($projectData->id);
$log_html = \vsprintf('%s ha escrito un %s en la entrada "%s" en las %s del proyecto %s', array(Feed::item('user', $_SESSION['user']->name, $_SESSION['user']->id), Feed::item('message', 'Comentario'), Feed::item('update-comment', $postData->title, $projectData->id . '/updates/' . $postData->id . '#comment' . $comment->id), Feed::item('update-comment', 'Novedades', $projectData->id . '/updates/'), Feed::item('project', $projectData->name, $projectData->id)));
} else {
$log->setTarget('goteo', 'blog');
$log_html = \vsprintf('%s ha escrito un %s en la entrada "%s" del blog de %s', array(Feed::item('user', $_SESSION['user']->name, $_SESSION['user']->id), Feed::item('message', 'Comentario'), Feed::item('blog', $postData->title, $postData->id . '#comment' . $comment->id), Feed::item('blog', 'Goteo', '/')));
}
$log->populate('usuario escribe comentario en blog/novedades', '/admin/projects', $log_html);
$log->doAdmin('user');
// Evento público
if (!empty($project)) {
$projectData = Model\Project::getMini($project);
$log_html = Text::html('feed-updates-comment', Feed::item('update-comment', $postData->title, $projectData->id . '/updates/' . $postData->id . '#comment' . $comment->id), Feed::item('update-comment', 'Novedades', $projectData->id . '/updates/'), Feed::item('project', $projectData->name, $projectData->id));
} else {
$log_html = Text::html('feed-blog-comment', Feed::item('blog', $postData->title, $postData->id . '#comment' . $comment->id), Feed::item('blog', 'Goteo', '/'));
}
$log->populate($_SESSION['user']->name, '/user/profile/' . $_SESSION['user']->id, $log_html, $_SESSION['user']->avatar->id);
$log->doPublic('community');
unset($log);
//Notificación al autor del proyecto
// Obtenemos la plantilla para asunto y contenido
$template = Template::get(31);
// Sustituimos los datos
$subject = str_replace('%PROJECTNAME%', $projectData->name, $template->title);
$response_url = SITE_URL . '/user/profile/' . $_SESSION['user']->id . '/message';
$project_url = SITE_URL . '/project/' . $projectData->id . '/updates/' . $postData->id . '#comment' . $comment->id;
$search = array('%MESSAGE%', '%OWNERNAME%', '%USERNAME%', '%PROJECTNAME%', '%PROJECTURL%', '%RESPONSEURL%');
$replace = array($_POST['message'], $projectData->user->name, $_SESSION['user']->name, $projectData->name, $project_url, $response_url);
$content = \str_replace($search, $replace, $template->text);
$mailHandler = new Mail();
$mailHandler->to = $projectData->user->email;
$mailHandler->toName = $projectData->user->name;
$mailHandler->subject = $subject;
$mailHandler->content = $content;
$mailHandler->html = true;
$mailHandler->template = $template->id;
$mailHandler->send($errors);
unset($mailHandler);
} else {
// error
}
}
if (!empty($project)) {
throw new Redirection("/project/{$project}/updates/{$post}#comment" . $comment->id, Redirection::TEMPORARY);
} else {
throw new Redirection("/blog/{$post}#comment" . $comment->id, Redirection::TEMPORARY);
}
}
示例4: 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)) {
//.........这里部分代码省略.........
示例5: doPay
public static function doPay($invest, &$errors = array())
{
try {
$project = Project::getMini($invest->project);
$userData = User::getMini($invest->user);
// Create request object
$payRequest = new \ExecutePaymentRequest();
$payRequest->payKey = $invest->payment;
$payRequest->requestEnvelope = 'SOAP';
// Create service wrapper object
$ap = new \AdaptivePayments();
// invoke business method on service wrapper passing in appropriate request params
$response = $ap->ExecutePayment($payRequest);
// Check response
if (strtoupper($ap->isSuccess) == 'FAILURE') {
$soapFault = $ap->getLastError();
if (is_array($soapFault->error)) {
$errorId = $soapFault->error[0]->errorId;
$errorMsg = $soapFault->error[0]->message;
} else {
$errorId = $soapFault->error->errorId;
$errorMsg = $soapFault->error->message;
}
if (is_array($soapFault->payErrorList->payError)) {
$errorId = $soapFault->payErrorList->payError[0]->error->errorId;
$errorMsg = $soapFault->payErrorList->payError[0]->error->message;
}
// tratamiento de errores
switch ($errorId) {
case '569013':
// preapproval cancelado por el usuario desde panel paypal
// preapproval cancelado por el usuario desde panel paypal
case '539012':
// preapproval no se llegó a autorizar
if ($invest->cancel()) {
$action = 'Aporte cancelado';
// Evento Feed
$log = new Feed();
$log->setTarget($project->id);
$log->populate('Aporte cancelado por preaproval cancelado por el usuario paypal', '/admin/invests', \vsprintf('Se ha <span class="red">Cancelado</span> el aporte de %s de %s (id: %s) al proyecto %s del dia %s por preapproval cancelado', array(Feed::item('user', $userData->name, $userData->id), Feed::item('money', $invest->amount . ' €'), Feed::item('system', $invest->id), Feed::item('project', $project->name, $project->id), Feed::item('system', date('d/m/Y', strtotime($invest->invested))))));
$log->doAdmin('system');
unset($log);
}
break;
}
if (empty($errorId)) {
$errors[] = 'NO es soapFault pero no es Success: <pre>' . print_r($ap, 1) . '</pre>';
@mail(\GOTEO_FAIL_MAIL, 'Error en implementacion Paypal API', 'ERROR en ' . __FUNCTION__ . ' No es un soap fault pero no es un success.<br /><pre>' . print_r($ap, 1) . '</pre>');
} else {
$errors[] = "{$action} {$errorMsg} [{$errorId}]";
}
return false;
}
// verificar el campo paymentExecStatus
if ($response->paymentExecStatus == 'COMPLETED') {
if ($invest->setStatus('3')) {
return true;
} else {
$errors[] = "Obtenido estatus de ejecución {$response->paymentExecStatus} pero no se ha actualizado el registro de aporte id {$invest->id}.";
@mail(\GOTEO_FAIL_MAIL, 'Error al actualizar registro aporte (setStatus)', 'ERROR en ' . __FUNCTION__ . ' Metodo paypal::setStatus ha fallado.<br /><pre>' . print_r($response, 1) . '</pre>');
return false;
}
} else {
$errors[] = 'No se ha completado el pago encadenado, no se ha pagado al proyecto.';
@mail(\GOTEO_FAIL_MAIL, 'Error fatal en comunicacion Paypal API', 'ERROR en ' . __FUNCTION__ . ' aporte id ' . $invest->id . '. No payment exec status completed.<br /><pre>' . print_r($response, 1) . '</pre>');
return false;
}
} catch (Exception $e) {
$fault = new \FaultMessage();
$errorData = new \ErrorData();
$errorData->errorId = $ex->getFile();
$errorData->message = $ex->getMessage();
$fault->error = $errorData;
$errors[] = 'No se ha podido inicializar la comunicación con Paypal, se ha reportado la incidencia.';
@mail(\GOTEO_FAIL_MAIL, 'Error fatal en comunicacion Paypal API', 'ERROR en ' . __FUNCTION__ . '<br />No se ha podido inicializar la comunicación con Paypal.<br /><pre>' . print_r($fault, 1) . '</pre>');
return false;
}
}
示例6: process
public static function process($action = 'list', $id = null, $filters = array(), $flag = null)
{
$errors = array();
$node = isset($_SESSION['admin_node']) ? $_SESSION['admin_node'] : \GOTEO_NODE;
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// objeto
$promo = new Model\Promote(array('id' => $id, 'node' => $node, 'project' => $_POST['project'], 'title' => $_POST['title'], 'description' => $_POST['description'], 'order' => $_POST['order'], 'active' => $_POST['active']));
if ($promo->save($errors)) {
switch ($_POST['action']) {
case 'add':
Message::Info('Proyecto destacado correctamente');
$projectData = Model\Project::getMini($_POST['project']);
if ($node == \GOTEO_NODE) {
// Evento Feed
$log = new Feed();
$log->setTarget($projectData->id);
$log->populate('nuevo proyecto destacado en portada (admin)', '/admin/promote', \vsprintf('El admin %s ha %s el proyecto %s', array(Feed::item('user', $_SESSION['user']->name, $_SESSION['user']->id), Feed::item('relevant', 'Destacado en portada', '/'), Feed::item('project', $projectData->name, $projectData->id))));
$log->doAdmin('admin');
unset($log);
}
break;
case 'edit':
Message::Info('Destacado actualizado correctamente');
break;
}
throw new Redirection('/admin/promote');
} else {
Message::Error(implode(', ', $errors));
switch ($_POST['action']) {
case 'add':
return new View('view/admin/index.html.php', array('folder' => 'promote', 'file' => 'edit', 'action' => 'add', 'promo' => $promo));
break;
case 'edit':
return new View('view/admin/index.html.php', array('folder' => 'promote', 'file' => 'edit', 'action' => 'edit', 'promo' => $promo));
break;
}
}
}
switch ($action) {
case 'active':
$set = $flag == 'on' ? true : false;
Model\Promote::setActive($id, $set);
throw new Redirection('/admin/promote');
break;
case 'up':
Model\Promote::up($id, $node);
throw new Redirection('/admin/promote');
break;
case 'down':
Model\Promote::down($id, $node);
throw new Redirection('/admin/promote');
break;
case 'remove':
if (Model\Promote::delete($id)) {
Message::Info('Destacado quitado correctamente');
} else {
Message::Error('No se ha podido quitar el destacado');
}
throw new Redirection('/admin/promote');
break;
case 'add':
// siguiente orden
$next = Model\Promote::next($node);
return new View('view/admin/index.html.php', array('folder' => 'promote', 'file' => 'edit', 'action' => 'add', 'promo' => (object) array('order' => $next, 'node' => $node)));
break;
case 'edit':
$promo = Model\Promote::get($id);
return new View('view/admin/index.html.php', array('folder' => 'promote', 'file' => 'edit', 'action' => 'edit', 'promo' => $promo));
break;
}
$promoted = Model\Promote::getAll(false, $node);
return new View('view/admin/index.html.php', array('folder' => 'promote', 'file' => 'list', 'promoted' => $promoted));
}
示例7: 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);
//.........这里部分代码省略.........
示例8: getList
public static function getList($filters = array(), $published = true)
{
$values = array(':lang' => \LANG);
$list = array();
$sql = "\n SELECT\n post.id as id,\n post.blog as blog,\n IFNULL(post_lang.title, post.title) as title,\n IFNULL(post_lang.text, post.text) as `text`,\n IFNULL(post_lang.legend, post.legend) as `legend`,\n post.image as `image`,\n post.media as `media`,\n DATE_FORMAT(post.date, '%d-%m-%Y') as fecha,\n post.publish as publish,\n post.home as home,\n post.footer as footer,\n post.author as author,\n blog.type as owner_type,\n blog.owner as owner_id\n FROM post\n INNER JOIN blog\n ON blog.id = post.blog\n LEFT JOIN post_lang\n ON post_lang.id = post.id\n AND post_lang.lang = :lang\n ";
if (in_array($filters['show'], array('all', 'home', 'footer'))) {
$sql .= " WHERE blog.id IS NOT NULL\n ";
} elseif ($filters['show'] == 'updates') {
$sql .= " WHERE blog.type = 'project'\n ";
} else {
$sql .= " WHERE blog.type = 'node'\n ";
}
if (!empty($filters['blog'])) {
$sql .= " AND post.blog = :blog\n ";
$values[':blog'] = $filters['blog'];
}
if (!empty($filters['tag'])) {
$sql .= " AND post.id IN (SELECT post FROM post_tag WHERE tag = :tag)\n ";
$values[':tag'] = $filters['tag'];
}
if (!empty($filters['author'])) {
$sql .= " AND post.author = :author\n ";
$values[':author'] = $filters['author'];
}
// solo las publicadas
if ($published || $filters['show'] == 'published') {
$sql .= " AND post.publish = 1\n ";
if (empty($filters['blog'])) {
$sql .= " AND blog.owner IN (SELECT id FROM node WHERE active = 1)\n AND blog.owner != 'testnode'\n ";
}
}
// solo las del propio blog
if ($filters['show'] == 'owned') {
$sql .= " AND blog.owner = :node\n ";
$values[':node'] = $filters['node'];
}
// solo las de la portada
if ($filters['show'] == 'home') {
if ($filters['node'] == \GOTEO_NODE) {
$sql .= " AND post.home = 1\n ";
} else {
$sql .= " AND post.id IN (SELECT post FROM post_node WHERE node = :node)\n ";
$values[':node'] = $filters['node'];
}
}
if ($filters['show'] == 'footer') {
if ($filters['node'] == \GOTEO_NODE) {
$sql .= " AND post.footer = 1\n ";
}
}
$sql .= "\n ORDER BY post.date DESC, post.id DESC\n ";
$query = static::query($sql, $values);
foreach ($query->fetchAll(\PDO::FETCH_CLASS, __CLASS__) as $post) {
// galeria
$post->gallery = Image::getAll($post->id, 'post');
$post->image = $post->gallery[0];
// video
if (isset($post->media)) {
$post->media = new Media($post->media);
}
$post->num_comments = Post\Comment::getCount($post->id);
// datos del autor del post
switch ($post->owner_type) {
case 'project':
$proj_blog = Project::getMini($post->owner_id);
$post->author = $proj_blog->owner;
$post->user = $proj_blog->user;
$post->owner_name = $proj_blog->name;
break;
case 'node':
$post->user = User::getMini($post->author);
$node_blog = Node::get($post->owner_id);
$post->owner_name = $node_blog->name;
break;
}
$list[$post->id] = $post;
}
return $list;
}
示例9: process
public static function process($action = 'list', $id = null, $filters = array())
{
$node = isset($_SESSION['admin_node']) ? $_SESSION['admin_node'] : \GOTEO_NODE;
$errors = array();
switch ($action) {
case 'add':
// proyectos que están más allá de edición y con traducción deshabilitada
$availables = Model\User\Translate::getAvailables('project', $_SESSION['admin_node']);
if (empty($availables)) {
Message::Error(Text::_('No hay más proyectos disponibles para traducir'));
throw new Redirection('/admin/translates');
}
case 'edit':
case 'assign':
case 'unassign':
case 'send':
// a ver si tenemos proyecto
if (empty($id) && !empty($_POST['project'])) {
$id = $_POST['project'];
}
if (!empty($id)) {
$project = Model\Project::getMini($id);
} elseif ($action != 'add') {
Message::Error(Text::_('No hay proyecto sobre el que operar'));
throw new Redirection('/admin/translates');
}
// asignar o desasignar
// la id de revision llega en $id
// la id del usuario llega por get
$user = $_GET['user'];
if (!empty($user)) {
$userData = Model\User::getMini($user);
$assignation = new Model\User\Translate(array('item' => $project->id, 'type' => 'project', 'user' => $user));
switch ($action) {
case 'assign':
// se la ponemos
$what = Text::_('Asignado');
if ($assignation->save($errors)) {
Message::Info(Text::_('Traducción asignada correctamente'));
throw new Redirection('/admin/translates/edit/' . $project->id);
} else {
Message::Error(Text::_('No se ha guardado correctamente. ') . implode(', ', $errors));
}
break;
case 'unassign':
// se la quitamos
$what = Text::_('Desasignado');
if ($assignation->remove($errors)) {
Message::Info(Text::_('Traducción desasignada correctamente'));
throw new Redirection('/admin/translates/edit/' . $project->id);
} else {
Message::Error(Text::_('No se ha guardado correctamente. ') . implode(', ', $errors));
}
break;
}
if (empty($errors)) {
// Evento Feed
$log = new Feed();
$log->setTarget($userData->id, 'user');
$log->populate($what . ' traduccion (admin)', '/admin/translates', \vsprintf('El admin %s ha %s a %s la traducción del proyecto %s', array(Feed::item('user', $_SESSION['user']->name, $_SESSION['user']->id), Feed::item('relevant', $what), Feed::item('user', $userData->name, $userData->id), Feed::item('project', $project->name, $project->id))));
$log->doAdmin('admin');
unset($log);
}
$action = 'edit';
}
// fin asignar o desasignar
// añadir o actualizar
// se guarda el idioma original y si la traducción está abierta o cerrada
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['save'])) {
if (empty($id)) {
Message::Error(Text::_('Hemos perdido de vista el proyecto'));
throw new Redirection('/admin/translates');
}
// ponemos los datos que llegan
$sql = "UPDATE project SET lang = :lang, translate = 1 WHERE id = :id";
if (Model\Project::query($sql, array(':lang' => $_POST['lang'], ':id' => $id))) {
if ($action == 'add') {
Message::Info('El proyecto ' . $project->name . ' se ha habilitado para traducir');
} else {
Message::Info(Text::_('Datos de traducción actualizados'));
}
if ($action == 'add') {
// Evento Feed
$log = new Feed();
$log->setTarget($project->id);
$log->populate(Text::_('proyecto habilitado para traducirse (admin)'), '/admin/translates', \vsprintf('El admin %s ha %s la traducción del proyecto %s', array(Feed::item('user', $_SESSION['user']->name, $_SESSION['user']->id), Feed::item('relevant', 'Habilitado'), Feed::item('project', $project->name, $project->id))));
$log->doAdmin('admin');
unset($log);
throw new Redirection('/admin/translates/edit/' . $project->id);
} else {
throw new Redirection('/admin/translates');
}
} else {
if ($action == 'add') {
Message::Error(Text::_('Ha fallado al habilitar la traducción del proyecto ') . $project->name);
} else {
Message::Error(Text::_('Ha fallado al actualizar los datos de la traducción'));
}
}
}
//.........这里部分代码省略.........
示例10: dopay
public function dopay($project)
{
die('Ya no realizamos pagos secundarios mediante sistema');
if (\defined('CRON_EXEC')) {
die('Este proceso no necesitamos lanzarlo automaticamente');
}
@mail(\GOTEO_FAIL_MAIL, 'Se ha lanzado el cron ' . __FUNCTION__ . ' en ' . SITE_URL, 'Se ha lanzado manualmente el cron ' . __FUNCTION__ . ' para el proyecto ' . $project . ' en ' . SITE_URL . ' a las ' . date('H:i:s') . ' Usuario ' . $_SESSION['user']->id);
// a ver si existe el bloqueo
$block_file = GOTEO_PATH . 'logs/cron-' . __FUNCTION__ . '.block';
if (file_exists($block_file)) {
echo 'Ya existe un archivo de log ' . date('Ymd') . '_' . __FUNCTION__ . '.log<br />';
$block_content = \file_get_contents($block_file);
echo 'El contenido del bloqueo es: ' . $block_content;
// lo escribimos en el log
$log_file = GOTEO_PATH . 'logs/cron/' . date('Ymd') . '_' . __FUNCTION__ . '.log';
\file_put_contents($log_file, \ob_get_contents(), FILE_APPEND);
\chmod($log_file, 0777);
/*
@mail(\GOTEO_FAIL_MAIL, 'Cron '. __FUNCTION__ .' bloqueado en ' . SITE_URL,
'Se ha encontrado con que el cron '. __FUNCTION__ .' está bloqueado el '.date('d-m-Y').' a las ' . date ('H:i:s') . '
El contenido del bloqueo es: '. $block_content);
*/
die;
} else {
$block = 'Bloqueo ' . $block_file . ' activado el ' . date('d-m-Y') . ' a las ' . date('H:i:s') . '<br />';
if (\file_put_contents($block_file, $block, FILE_APPEND)) {
\chmod($block_file, 0777);
echo $block;
} else {
echo 'No se ha podido crear el archivo de bloqueo<br />';
@mail(\GOTEO_FAIL_MAIL, 'Cron ' . __FUNCTION__ . ' no se ha podido bloquear en ' . SITE_URL, 'No se ha podido crear el archivo ' . $block_file . ' el ' . date('d-m-Y') . ' a las ' . date('H:i:s'));
}
}
$projectData = Model\Project::getMini($project);
// necesitamos la cuenta del proyecto y que sea la misma que cuando el preapproval
$projectAccount = Model\Project\Account::get($project);
if (empty($projectAccount->paypal)) {
// iniciamos mail
$mailHandler = new Mail();
$mailHandler->to = \GOTEO_MAIL;
$mailHandler->toName = 'Goteo.org';
$mailHandler->subject = 'El proyecto ' . $projectData->name . ' no tiene cuenta PayPal';
$mailHandler->content = 'Hola Goteo, el proyecto ' . $projectData->name . ' no tiene cuenta PayPal y se estaba intentando realizar pagos secundarios.';
$mailHandler->html = false;
$mailHandler->template = null;
$mailHandler->send();
unset($mailHandler);
die('El proyecto ' . $projectData->name . ' no tiene la cuenta PayPal!!');
}
// tratamiento de aportes pendientes
$query = Model\Project::query("\n SELECT *\n FROM invest\n WHERE invest.status = 1\n AND invest.method = 'paypal'\n AND invest.project = ?\n ", array($project));
$invests = $query->fetchAll(\PDO::FETCH_CLASS, '\\Goteo\\Model\\Invest');
echo 'Vamos a tratar ' . count($invests) . ' aportes para el proyecto ' . $projectData->name . '<br />';
foreach ($invests as $key => $invest) {
$errors = array();
$userData = Model\User::getMini($invest->user);
echo 'Tratando: Aporte (id: ' . $invest->id . ') de ' . $userData->name . ' [' . $userData->email . ']<br />';
if (Paypal::doPay($invest, $errors)) {
echo 'Aporte (id: ' . $invest->id . ') pagado al proyecto. Ver los detalles en la <a href="/admin/accounts/details/' . $invest->id . '">gestion de transacciones</a><br />';
$log_text = Text::_("Se ha realizado el pago de %s PayPal al proyecto %s por el aporte de %s (id: %s) del dia %s");
Model\Invest::setDetail($invest->id, 'payed', 'Se ha realizado el pago secundario al proyecto. Proceso cron/doPay');
} else {
echo 'Fallo al pagar al proyecto el aporte (id: ' . $invest->id . '). Ver los detalles en la <a href="/admin/accounts/details/' . $invest->id . '">gestion de transacciones</a><br />' . implode('<br />', $errors);
$log_text = Text::_("Ha fallado al realizar el pago de %s PayPal al proyecto %s por el aporte de %s (id: %s) del dia %s");
Model\Invest::setDetail($invest->id, 'pay-failed', 'Fallo al realizar el pago secundario: ' . implode('<br />', $errors) . '. Proceso cron/doPay');
}
// Evento Feed
$log = new Feed();
$log->setTarget($projectData->id);
$log->populate('Pago al proyecto encadenado-secundario (cron)', '/admin/accounts', \vsprintf($log_text, array(Feed::item('money', $invest->amount . ' ¥'), Feed::item('project', $projectData->name, $project), Feed::item('user', $userData->name, $userData->id), Feed::item('system', $invest->id), Feed::item('system', date('d/m/Y', strtotime($invest->invested))))));
$log->doAdmin();
unset($log);
echo '<hr />';
}
// desbloqueamos
if (unlink($block_file)) {
echo 'Cron ' . __FUNCTION__ . ' desbloqueado<br />';
} else {
echo 'ALERT! Cron ' . __FUNCTION__ . ' no se ha podido desbloquear<br />';
if (file_exists($block_file)) {
echo 'El archivo ' . $block_file . ' aun existe!<br />';
} else {
echo 'No hay archivo de bloqueo ' . $block_file . '!<br />';
}
}
// recogemos el buffer para grabar el log
$log_file = GOTEO_PATH . 'logs/cron/' . date('Ymd') . '_' . __FUNCTION__ . '.log';
\file_put_contents($log_file, \ob_get_contents(), FILE_APPEND);
\chmod($log_file, 0777);
}
示例11: process
public static function process($action = 'list', $id = null, $filters = array(), $flag = null)
{
$errors = array();
$node = isset($_SESSION['admin_node']) ? $_SESSION['admin_node'] : \GOTEO_NODE;
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// objeto
$banner = new Model\Banner(array('id' => $_POST['id'], 'node' => $node, 'project' => $_POST['project'], 'title' => $_POST['title'], 'description' => $_POST['description'], 'url' => $_POST['url'], 'order' => $_POST['order'], 'active' => $_POST['active']));
// imagen
if (!empty($_FILES['image']['name'])) {
$banner->image = $_FILES['image'];
} else {
$banner->image = $_POST['prev_image'];
}
if ($banner->save($errors)) {
Message::Info('Datos guardados');
if ($_POST['action'] == 'add') {
$projectData = Model\Project::getMini($_POST['project']);
// Evento Feed
$log = new Feed();
$log->setTarget($projectData->id);
$log->populate('nuevo banner de proyecto destacado en portada (admin)', '/admin/promote', \vsprintf('El admin %s ha %s', array(Feed::item('user', $_SESSION['user']->name, $_SESSION['user']->id), Feed::item('relevant', 'Publicado un banner', '/'))));
$log->doAdmin('admin');
unset($log);
}
throw new Redirection('/admin/banners');
} else {
Message::Error(implode('<br />', $errors));
switch ($_POST['action']) {
case 'add':
return new View('view/admin/index.html.php', array('folder' => 'banners', 'file' => 'edit', 'action' => 'add', 'banner' => $banner, 'status' => $status));
break;
case 'edit':
return new View('view/admin/index.html.php', array('folder' => 'banners', 'file' => 'edit', 'action' => 'edit', 'banner' => $banner));
break;
}
}
}
switch ($action) {
case 'active':
$set = $flag == 'on' ? true : false;
Model\Banner::setActive($id, $set);
throw new Redirection('/admin/banners');
break;
case 'up':
Model\Banner::up($id, $node);
throw new Redirection('/admin/banners');
break;
case 'down':
Model\Banner::down($id, $node);
throw new Redirection('/admin/banners');
break;
case 'remove':
if (Model\Banner::delete($id)) {
Message::Info('Banner quitado correctamente');
} else {
Message::Error('No se ha podido quitar el banner');
}
throw new Redirection('/admin/banners');
break;
case 'add':
// siguiente orden
$next = Model\Banner::next($node);
return new View('view/admin/index.html.php', array('folder' => 'banners', 'file' => 'edit', 'action' => 'add', 'banner' => (object) array('order' => $next), 'status' => $status));
break;
case 'edit':
$banner = Model\Banner::get($id);
return new View('view/admin/index.html.php', array('folder' => 'banners', 'file' => 'edit', 'action' => 'edit', 'banner' => $banner));
break;
}
$bannered = Model\Banner::getAll(false, $node);
return new View('view/admin/index.html.php', array('folder' => 'banners', 'file' => 'list', 'bannered' => $bannered, 'node' => $node));
}
示例12: getMine
/**
* Get the translations for a user
* @param varcahr(50) $id user identifier
* @return array of items
*/
public static function getMine($id, $type = null)
{
$array = array();
try {
$sql = "SELECT type, item FROM user_translate WHERE user = :user";
$values = array(':user' => $id);
if (in_array($type, self::$types)) {
$sql .= " AND type = :type";
$values[':type'] = $type;
} else {
return false;
}
$query = static::query($sql, $values);
$translates = $query->fetchAll(\PDO::FETCH_ASSOC);
foreach ($translates as $item) {
switch ($item['type']) {
case 'project':
$array[] = Model\Project::getMini($item['item']);
break;
default:
continue;
}
}
return $array;
} catch (\PDOException $e) {
throw new \Goteo\Core\Exception($e->getMessage());
}
}
示例13: process
public static function process($action = 'list', $id = null, $filters = array())
{
$node = isset($_SESSION['admin_node']) ? $_SESSION['admin_node'] : \GOTEO_NODE;
$errors = array();
switch ($action) {
case 'add':
case 'edit':
// el get se hace con el id del proyecto
$review = Model\Review::get($id);
$project = Model\Project::getMini($review->project);
if (empty($id) || $action == 'edit' && !$review instanceof Model\Review) {
Message::Error(Text::get('admin-reviews-error-noview-revision'));
throw new Redirection('/admin/reviews');
}
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['save'])) {
// instancia
$review->id = $_POST['id'];
$review->project = $_POST['project'];
$review->to_checker = $_POST['to_checker'];
$review->to_owner = $_POST['to_owner'];
if ($review->save($errors)) {
switch ($action) {
case 'add':
Message::Info(Text::get('admin-reviews-info-success-revision'));
// Evento Feed
$log = new Feed();
$log->setTarget($project->id);
$log->populate(Text::_('valoración iniciada (admin)'), '/admin/reviews', \vsprintf('El admin %s ha %s la valoración de %s', array(Feed::item('user', $_SESSION['user']->name, $_SESSION['user']->id), Feed::item('relevant', Text::_('Iniciado')), Feed::item('project', $project->name, $project->id))));
$log->doAdmin('admin');
unset($log);
throw new Redirection('/admin/reviews/?project=' . urlencode($project->id));
break;
case 'edit':
Message::Info(Text::get('admin-reviews-info-revision-save'));
throw new Redirection('/admin/reviews');
break;
}
} else {
Message::Error(Text::get('admin-reviews-error-save-fail'), implode(', ', $errors));
}
}
return new View('view/admin/index.html.php', array('folder' => 'reviews', 'file' => 'edit', 'action' => $action, 'review' => $review, 'project' => $project));
break;
case 'close':
// el get se hace con el id del proyecto
$review = Model\Review::getData($id);
// marcamos la revision como completamente cerrada
if (Model\Review::close($id, $errors)) {
Message::Info(Text::get('admin-reviews-info-reviewclose'));
// Evento Feed
$log = new Feed();
$log->setTarget($review->project);
$log->populate(Text::_('valoración finalizada (admin)'), '/admin/reviews', \vsprintf('El admin %s ha dado por %s la valoración de %s', array(Feed::item('user', $_SESSION['user']->name, $_SESSION['user']->id), Feed::item('relevant', Text::_('Finalizada')), Feed::item('project', $review->name, $review->project))));
$log->doAdmin('admin');
unset($log);
} else {
Message::Error(Text::get('admin-reviews-error-reviewclose-fail') . implode(', ', $errors));
}
throw new Redirection('/admin/reviews');
break;
case 'unready':
// se la reabrimos para que pueda seguir editando
// la id de revision llega en $id
// la id del usuario llega por get
$user = $_GET['user'];
if (!empty($user)) {
$user_rev = new Model\User\Review(array('id' => $id, 'user' => $user));
$user_rev->unready($errors);
if (!empty($errors)) {
Message::Error(implode(', ', $errors));
}
}
throw new Redirection('/admin/reviews');
break;
case 'assign':
// asignamos la revision a este usuario
// la id de revision llega en $id
// la id del usuario llega por get
$user = $_GET['user'];
if (!empty($user)) {
$assignation = new Model\User\Review(array('id' => $id, 'user' => $user));
if ($assignation->save($errors)) {
$userData = Model\User::getMini($user);
$reviewData = Model\Review::getData($id);
Message::Info(Text::get('admin-reviews-info-assigned'));
// Evento Feed
$log = new Feed();
$log->setTarget($userData->id, 'user');
$log->populate(Text::_('asignar revision (admin)'), '/admin/reviews', \vsprintf('El admin %s ha %s a %s la revisión de %s', array(Feed::item('user', $_SESSION['user']->name, $_SESSION['user']->id), Feed::item('relevant', Text::_('Asignado')), Feed::item('user', $userData->name, $userData->id), Feed::item('project', $reviewData->name, $reviewData->project))));
$log->setTarget($userData->id, 'user');
$log->doAdmin('admin');
unset($log);
} else {
Message::Error(implode(', ', $errors));
}
}
throw new Redirection('/admin/reviews');
break;
case 'unassign':
// se la quitamos a este revisor
//.........这里部分代码省略.........
示例14: comunication
public function comunication()
{
@mail(\GOTEO_FAIL_MAIL, 'Comunicacion online', 'Este GET<pre>' . print_r($_GET, 1) . '</pre> y este POST:<pre>' . print_r($_POST, 1) . '</pre>');
if (isset($_POST['__expected_field___'])) {
$_POST['invest'] = $id = $_POST['__expected_field___'];
$invest = Invest::get($id);
$userData = User::getMini($invest->user);
$projectData = Project::getMini($invest->project);
$response = '';
foreach ($_POST as $n => $v) {
$response .= "{$n}:'{$v}'; ";
}
$conf = array('mode' => 0600, 'timeFormat' => '%X %x');
$logger =& \Log::singleton('file', 'logs/' . date('Ymd') . '_invest.log', 'caller', $conf);
$logger->log("response: {$response}");
$logger->log('##### END TPV [' . $id . '] ' . date('d/m/Y') . ' ' . $_POST['__expected_field___'] . '#####');
$logger->close();
if (!empty($_POST['__expected_field___'])) {
try {
$tpvRef = $_POST['__expected_field___'];
$tpvAut = $_POST['__expected_field___'];
$values = array(':id' => $invest->id, ':payment' => $tpvRef, ':transaction' => $tpvAut, ':charged' => date('Y-m-d'));
$sql = "UPDATE invest\n SET\n status = 1,\n payment = :payment,\n charged = :charged,\n transaction = :transaction\n WHERE id = :id";
if (Invest::query($sql, $values)) {
Invest::setDetail($invest->id, 'tpv-response', 'La comunicación online del tpv se a completado correctamente. Proceso controller/tpv');
} else {
@mail(\GOTEO_FAIL_MAIL, 'Error db en comunicacion online', 'En la grabación de referencia, num auth. y estado. Ha fallado: ' . $sql . ' ' . print_r($values, 1) . '<hr /><pre>' . print_r($invest, 1) . '</pre>');
}
// CALLSYS
} catch (\PDOException $e) {
@mail(\GOTEO_FAIL_MAIL, 'Error db en comunicacion online', 'En la grabación de referencia, num auth. y estado. Ha dado un PDO::Exception<br /><pre>' . print_r($invest, 1) . '</pre>');
}
$_POST['result'] = 'Transaccion ok';
$log_text = "%s ha aportado %s al proyecto %s mediante TPV";
$doPublic = true;
echo '$*$OKY$*$';
} else {
$Cerr = (string) $_POST['Codigo_error'];
$errTxt = self::$errcode[$Cerr];
Invest::setDetail($invest->id, 'tpv-response-error', 'El tpv ha comunicado el siguiente Codigo error: ' . $Cerr . ' - ' . $errTxt . '. El aporte a quedado \'En proceso\'. Proceso controller/tpv');
@mail(\GOTEO_FAIL_MAIL, 'Error en TPV', 'Codigo error: ' . $Cerr . ' ' . $errTxt . '<br /><pre>' . print_r($_POST, 1) . '</pre>');
$invest->cancel('ERR ' . $Cerr);
$_POST['result'] = 'Fail';
$log_text = 'Ha habido un <span class="red">ERROR de TPV (Codigo: ' . $Cerr . ' ' . $errTxt . ')</span> en el aporte de %s de %s al proyecto %s mediante TPV';
$doPublic = false;
}
// Evento Feed
$log = new Feed();
$log->setTarget($projectData->id);
$log->populate('Aporte TPV', '/admin/invests', \vsprintf($log_text, $log_items = array(Feed::item('user', $userData->name, $userData->id), Feed::item('money', $invest->amount . ' €'), Feed::item('project', $projectData->name, $projectData->id))));
$log->doAdmin('money');
if ($doPublic) {
// evento público
$log_html = Text::html('feed-invest', Feed::item('money', $invest->amount . ' €'), Feed::item('project', $projectData->name, $projectData->id));
if ($invest->anonymous) {
$log->populate(Text::get('regular-anonymous'), '/user/profile/anonymous', $log_html, 1);
} else {
$log->populate($userData->name, '/user/profile/' . $userData->id, $log_html, $userData->avatar->id);
}
$log->doPublic('community');
}
unset($log);
} else {
echo 'Se esperaban recibir datos de comunicación online del TPV.';
@mail(\GOTEO_FAIL_MAIL, 'Comunicacion online sin datos', 'Este GET<pre>' . print_r($_GET, 1) . '</pre> y este POST:<pre>' . print_r($_POST, 1) . '</pre>');
// throw new Redirection('/', Error::BAD_REQUEST);
}
die;
}