本文整理汇总了PHP中Goteo\Model\Project::query方法的典型用法代码示例。如果您正苦于以下问题:PHP Project::query方法的具体用法?PHP Project::query怎么用?PHP Project::query使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Goteo\Model\Project
的用法示例。
在下文中一共展示了Project::query方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: Projects
//.........这里部分代码省略.........
// y se repite cada 6 días (fechas libres) mientras no haya posts
case 12:
case 18:
case 24:
case 30:
case 36:
// si ya hay novedades, nada
if (Model\Blog::hasUpdates($project->id)) {
if ($debug) {
echo "Ya ha publicado novedades<br />";
}
} else {
if ($debug) {
echo "Envío aviso de que no ha publicado novedades<br />";
}
Send::toOwner('any_update', $project);
$avisado = true;
}
break;
// comprobación periódica pero solo un envío
// comprobación periódica pero solo un envío
case 7:
// Apóyate en quienes te van apoyando , si más de 20 cofinanciadores
// o en cuanto llegue a 20 backers (en fechas libres)
// Apóyate en quienes te van apoyando , si más de 20 cofinanciadores
// o en cuanto llegue a 20 backers (en fechas libres)
case 14:
case 17:
case 21:
case 24:
case 27:
// Si ya se mandó esta plantilla (al llegar a los 20 por primera vez) no se envía de nuevo
$sql = "\n SELECT\n id\n FROM mail\n WHERE mail.email = :email\n AND mail.template = 46\n ORDER BY mail.date DESC\n LIMIT 1";
$query = Model\Project::query($sql, array(':email' => $project->user->email));
$sended = $query->fetchColumn(0);
if (!$sended) {
if ($project->num_investors >= 20) {
if ($debug) {
echo "Tiene 20 backers y no se le habia enviado aviso antes<br />";
}
Send::toOwner('20_backers', $project);
} else {
if ($debug) {
echo "No llega a los 20 backers<br />";
}
}
} else {
if ($debug) {
echo "Ya enviado<br />";
}
}
break;
case 9:
// Busca prescriptores e implícalos
// si no tiene padrinos
if ($project->patrons > 0) {
if ($debug) {
echo "Tiene padrino<br />";
}
} else {
if ($debug) {
echo "No tiene padrino<br />";
}
Send::toOwner('tip_9', $project);
}
break;
示例2: index
public function index($project = null)
{
if (empty($project)) {
throw new Redirection('/discover', Redirection::PERMANENT);
}
if ($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['message'])) {
$projectData = Model\Project::getMini($project);
if ($projectData->status < 3) {
\Goteo\Library\Message::Error(Text::get('project-messages-closed'));
throw new Redirection("/project/{$project}");
}
$message = new Model\Message(array('user' => $_SESSION['user']->id, 'project' => $project, 'thread' => $_POST['thread'], 'message' => $_POST['message']));
if ($message->save($errors)) {
$support = Model\Message::isSupport($_POST['thread']);
// Evento Feed
$log = new Feed();
$log->setTarget($projectData->id);
if (empty($_POST['thread'])) {
// nuevo hilo
$log_html = \vsprintf('%s ha creado un tema en %s del proyecto %s', array(Feed::item('user', $_SESSION['user']->name, $_SESSION['user']->id), Feed::item('message', Text::get('project-menu-messages'), $projectData->id . '/messages#message' . $message->id), Feed::item('project', $projectData->name, $projectData->id)));
} else {
// respuesta
// si una respuesta a un mensaje de colaboraicón
if (!empty($support)) {
$log_html = \vsprintf('Nueva colaboración de %s con %s en el proyecto %s', array(Feed::item('user', $_SESSION['user']->name, $_SESSION['user']->id), Feed::item('message', $support, $projectData->id . '/messages#message' . $_POST['thread']), Feed::item('project', $projectData->name, $projectData->id)));
} else {
// es una respuesta a un hilo normal
$log_html = \vsprintf('%s ha respondido en %s del proyecto %s', array(Feed::item('user', $_SESSION['user']->name, $_SESSION['user']->id), Feed::item('message', Text::get('project-menu-messages'), $projectData->id . '/messages#message' . $message->id), Feed::item('project', $projectData->name, $projectData->id)));
}
}
$log->populate('usuario escribe mensaje/respuesta en Mensajes del proyecto', '/admin/projects', $log_html);
$log->doAdmin('user');
// Evento público
if (empty($_POST['thread'])) {
$log_html = Text::html('feed-messages-new_thread', Feed::item('message', Text::get('project-menu-messages'), $projectData->id . '/messages#message' . $message->id), Feed::item('project', $projectData->name, $projectData->id));
} else {
// si una respuesta a un mensaje de colaboraicón
if (!empty($support)) {
$log_html = Text::html('feed-message_support-response', Feed::item('message', $support, $projectData->id . '/messages#message' . $_POST['thread']), Feed::item('project', $projectData->name, $projectData->id));
} else {
// es una respuesta a un hilo normal
$log_html = Text::html('feed-messages-response', Feed::item('message', Text::get('project-menu-messages'), $projectData->id . '/messages#message' . $message->id), Feed::item('project', $projectData->name, $projectData->id));
}
}
$log->populate($_SESSION['user']->name, '/user/profile/' . $_SESSION['user']->id, $log_html, $_SESSION['user']->avatar->id);
$log->doPublic('community');
unset($log);
if (!empty($_POST['thread'])) {
// aqui el owner es el autor del mensaje thread
$thread = Model\Message::get($_POST['thread']);
// Si no tiene estas notiicaciones bloqueadas en sus preferencias
$sql = "\n SELECT user_prefer.threads\n FROM user_prefer\n WHERE user = :user\n ";
$query = Model\Project::query($sql, array(':user' => $thread->user->id));
$spam = $query->fetchColumn(0);
if (!$spam) {
// Mail al autor del thread
// Obtenemos la plantilla para asunto y contenido
$template = Template::get(12);
// 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 . '/messages#message' . $message->id;
$search = array('%MESSAGE%', '%OWNERNAME%', '%USERNAME%', '%PROJECTNAME%', '%PROJECTURL%', '%RESPONSEURL%');
$replace = array($_POST['message'], $thread->user->name, $_SESSION['user']->name, $projectData->name, $project_url, $response_url);
$content = \str_replace($search, $replace, $template->text);
$mailHandler = new Mail();
$mailHandler->to = $thread->user->email;
$mailHandler->toName = $thread->user->name;
$mailHandler->subject = $subject;
$mailHandler->content = $content;
$mailHandler->html = true;
$mailHandler->template = $template->id;
$mailHandler->send($errors);
unset($mailHandler);
}
} else {
// mensaje al autor del proyecto
// Obtenemos la plantilla para asunto y contenido
$template = Template::get(30);
// 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 . '/messages#message' . $message->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);
}
}
}
throw new Redirection("/project/{$project}/messages#message" . $message->id, Redirection::TEMPORARY);
}
示例3: 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);
//.........这里部分代码省略.........
示例4: 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'));
}
}
}
//.........这里部分代码省略.........
示例5: 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);
}
示例6: process
public static function process($debug = false)
{
// eliminamos ACL innecesario
$sql = "DELETE FROM `acl` \n WHERE id > 1000 \n AND role_id = 'user' \n AND user_id != '*' \n AND (url LIKE '%project/edit%' OR url LIKE '%project/delete%') \n AND DATE_FORMAT(from_unixtime(unix_timestamp(now()) - unix_timestamp(`timestamp`)), '%j') > 30\n ";
// echo $sql . '<br />';
$query = Model\Project::query($sql);
$count = $query->rowCount();
if ($debug) {
echo "Eliminados {$count} registros de ACL antiguo.<br />";
}
// eliminamos feed antiguo
$sql1 = "DELETE \n FROM `feed` \n WHERE type != 'goteo' \n AND DATE_FORMAT(from_unixtime(unix_timestamp(now()) - unix_timestamp(`datetime`)), '%j') > 30\n AND (url NOT LIKE '%updates%' OR url IS NULL)\n ";
// echo $sql . '<br />';
$query1 = Model\Project::query($sql1);
$count1 = $query1->rowCount();
if ($debug) {
echo "Eliminados {$count1} registros de feed.<br />";
}
// eliminamos mail antiguo
$sql2 = "DELETE\n FROM `mail` \n WHERE (template != 33 OR template IS NULL)\n AND DATE_FORMAT(from_unixtime(unix_timestamp(now()) - unix_timestamp(`date`)), '%j') > 30\n ";
// echo $sql2 . '<br />';
$query2 = Model\Project::query($sql2);
$count2 = $query2->rowCount();
if ($debug) {
echo "Eliminados {$count2} registros de mail.<br />";
}
// eliminamos registros de imágenes cuyo archivo no esté en el directorio de imágenes
// busco aportes incompletos con codigo de autorización
$sql5 = "SELECT * FROM invest WHERE status = -1 AND transaction IS NOT NULL";
$query5 = Model\Project::query($sql5);
foreach ($query5->fetchAll(\PDO::FETCH_OBJ) as $row) {
@mail(\GOTEO_FAIL_MAIL, 'Aporte Incompleto con numero de autorización. En ' . SITE_URL, 'Aporte Incompleto con numero de autorización: <pre>' . print_r($row, 1) . '</pre>');
}
// eliminamos aportes incompletos
/*
$sql4 = "DELETE
FROM `invest`
WHERE status = -1
AND DATE_FORMAT(from_unixtime(unix_timestamp(now()) - unix_timestamp(`datetime`)), '%j') > 120
";
//echo $sql4 . '<br />';
$query4 = Model\Project::query($sql4);
$count4 = $query4->rowCount();
// -- eliminamos registros relativos a aportes no existentes
Model\Project::query("DELETE FROM `invest_address` WHERE invest NOT IN (SELECT id FROM `invest`)");
Model\Project::query("DELETE FROM `invest_detail` WHERE invest NOT IN (SELECT id FROM `invest`)");
Model\Project::query("DELETE FROM `invest_reward` WHERE invest NOT IN (SELECT id FROM `invest`)");
echo "Eliminados $count4 aportes incompletos y sus registros (recompensa, dirección, detalles) relacionados.<br />";
*/
if ($debug) {
echo "<hr /> Iniciamos caducidad de tokens<br/>";
}
// eliminamos los tokens que tengan más de 4 días
$sql5 = "SELECT id, token FROM user WHERE token IS NOT NULL AND token != '' AND token LIKE '%¬%'";
$query5 = Model\Project::query($sql5);
foreach ($query5->fetchAll(\PDO::FETCH_OBJ) as $row) {
$parts = explode('¬', $row->token);
$datepart = strtotime($parts[2]);
$today = date('Y-m-d');
$datedif = strtotime($today) - $datepart;
$days = round($datedif / 86400);
if ($days > 4 || !isset($parts[2])) {
if ($debug) {
echo "User: {$row->id} ; Token: {$row->token} ; Datepart: {$parts['2']} => {$datepart} ; Compare: {$today} => {$datedif} ; Days: {$days} ; ";
}
if (Model\Project::query("UPDATE user SET token = '' WHERE id = ?", array($row->id))) {
if ($debug) {
echo "Token borrado.";
}
} else {
if ($debug) {
echo "Fallo al borrar Token!!!";
}
}
if ($debug) {
echo "<br />";
}
}
}
if ($debug) {
echo "<br />";
}
echo 'Verify Listo!';
return;
}
示例7: array
* 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\Library\Text, Goteo\Model;
$original = $this['original'];
$user = $this['user'];
$project = $this['project'];
// Lastima que no me sirve ni el getAll ni el getList ni el Published
$projects = array();
$query = Model\Project::query("\n SELECT\n project.id as id,\n project.name as name\n FROM project\n WHERE status = 3\n ORDER BY project.name ASC\n ");
foreach ($query->fetchAll(\PDO::FETCH_CLASS) as $item) {
$projects[$item->id] = $item->name;
}
?>
<div class="widget">
<p><?php
echo Text::_('Movemos el aporte de ');
?>
<strong><?php
echo $user->name;
?>
</strong> <?php
echo Text::_('al proyecto');
?>
<strong><?php