} // ORDENA POR VOTOS DESCENDENTE y ANTIGUEDAD foreach ($votos_array as $k => $r) { $lv_array[$k] = $r['votos']; $lr_array[$k] = $r['registro']; } array_multisort($lv_array, SORT_DESC, $lr_array, SORT_ASC, $votos_array); // CONFECCIONA DATOS DE ESCRUTINIO $count = 0; $escrutinio = array(); foreach ($votos_array as $d) { if (isset($d['user_ID'])) { $count++; if ($count <= $pol['config']['num_escanos']) { cargo_add(6, $d['user_ID'], true, true); } $escrutinio[] = $d['votos'] . ':' . $d['partido'] . ':' . $d['nick']; } } $escrutinio[] = '0:I:0'; $escrutinio = implode('|', $escrutinio); mysql_query("UPDATE " . SQL . "elec SET escrutinio = '" . $escrutinio . "' ORDER BY time DESC LIMIT 1", $link); evento_chat('<b>[ELECCIONES] <a href="/elecciones/">Elecciones FINALIZADAS</a></b>'); } // tiempo next elecciones $elecciones_next = date('Y-m-d 20:00:00', time() + $pol['config']['elecciones_frecuencia']); mysql_query("UPDATE " . SQL . "config SET valor = '" . $elecciones_next . "' WHERE dato = 'elecciones_inicio' LIMIT 1", $link); // FIN ELEC mysql_query("UPDATE " . SQL . "config SET valor = 'normal' WHERE dato = 'elecciones_estado' LIMIT 1", $link); mysql_query("UPDATE " . SQL . "config SET valor = '" . $elec_next . "' WHERE dato = 'elecciones' LIMIT 1", $link); }
} } } // _______ A continuación se rompe la relación Usuario-Voto irreversiblemente ________ if ($r['privacidad'] == 'true') { // Rompe la relación Usuario-Voto. Solo en votaciones con secreto de voto. barajar_votos($r['ID']); // Esta funcion está documentada en /source/inc-functions-accion.php } // Actualiza contador de votaciones activas $result2 = mysql_query("SELECT COUNT(ID) AS num FROM votacion WHERE estado = 'ok' AND pais = '" . PAIS . "' AND acceso_ver = 'anonimos'", $link); while ($r2 = mysql_fetch_array($result2)) { mysql_query("UPDATE " . SQL . "config SET valor = '" . $r2['num'] . "' WHERE dato = 'info_consultas' LIMIT 1", $link); } if ($r['acceso_ver'] == 'anonimos') { evento_chat('<b>[' . strtoupper($r['tipo']) . ']</b> Finalizado, resultados: <a href="/votacion/' . $r['ID'] . '"><b>' . $r['pregunta'] . '</b></a> <span style="color:grey;">(votos: <b>' . $r['num'] . '</b>)</span>'); } } // FIN DE FINALIZAR VOTACIONES // EMPIEZA PRESENTACION if ($_GET['a'] == 'verificacion' and $_GET['b'] and isset($pol['user_ID'])) { $comprobante_full = $_GET['b']; $ref_ID = explodear('-', $comprobante_full, 0); $comprobante = explodear('-', $comprobante_full, 1); redirect('/votacion/' . $ref_ID . '/verificacion#' . $comprobante); } elseif ($_GET['a'] == 'crear') { $txt_title = 'Borrador de votación'; $txt_nav = array('/votacion' => 'Votaciones', '/votacion/borradores' => 'Borradores', 'Crear borrador'); $txt_tab = array('/votacion/borradores' => 'Ver borradores', '/votacion/' . $_GET['b'] => 'Previsualizar', '/votacion/crear/' . $_GET['b'] => 'Editar borrador'); // EDITAR if (is_numeric($_GET['b'])) {
<?php $root_dir = '/var/www/vhosts/virtualpol.com/httpdocs/real/'; $_SERVER['HTTP_HOST'] = 'pol.virtualpol.com'; include $root_dir . 'config.php'; include $root_dir . 'source/inc-functions.php'; include $root_dir . 'source/inc-functions-accion.php'; $link = conectar(); foreach ($vp['paises'] as $pais) { if ($pais != '15M') { evento_chat('<b>[#]</b> Quedan <b>30 minutos</b> para el proceso diario.', '0', 0, false, 'e', $pais); } } mysql_close($link);
mysql_query("UPDATE users SET partido_afiliado = '0' WHERE partido_afiliado = '" . $ID_partido . "' AND ID = '" . $_POST['user_ID'] . "' LIMIT 1", $link); } $refer_url = 'partidos/' . strtolower($siglas) . '/editar/'; } } break; case 'cargo': $b = $_GET['b']; $cargo_ID = $_GET['ID']; if ($_GET['b'] == 'dimitir' and $_GET['ID'] and nucleo_acceso('cargo', $_GET['ID'])) { cargo_del($_GET['ID'], $pol['user_ID'], false); $result = mysql_query("SELECT nombre FROM cargos WHERE pais = '" . PAIS . "' AND cargo_ID = '" . $_GET['ID'] . "' LIMIT 1", $link); while ($r = mysql_fetch_array($result)) { $cargo_nom = $r['nombre']; } evento_chat('<b>[CARGO] ' . crear_link($pol['nick']) . ' dimite</b> del cargo <img src="' . IMG . 'cargos/' . $_GET['ID'] . '.gif" />' . $cargo_nom); // Elimina examen mysql_query("DELETE FROM cargos_users WHERE cargo_ID = '" . $_GET['ID'] . "' AND user_ID = '" . $pol['user_ID'] . "' LIMIT 1", $link); // Si es cargo_ID 6 (Diputado o Coordinador), ceder al siguiente en la sucesión if ($_GET['ID'] == 6) { $result = mysql_query("SELECT escrutinio FROM " . SQL . "elec WHERE tipo = 'parl' ORDER BY time DESC LIMIT 1", $link); while ($r = mysql_fetch_array($result)) { $escrutinio = $r['escrutinio']; } foreach (explode('|', $escrutinio) as $data) { $data = explode(':', $data); $cargo_estado = null; $result = mysql_query("SELECT ID, (SELECT cargo FROM cargos_users WHERE cargo_ID = 6 AND aprobado = 'ok' AND user_ID = u.ID LIMIT 1) AS cargo_estado FROM users `u` WHERE nick = '" . $data[2] . "' LIMIT 1", $link); while ($r = mysql_fetch_array($result)) { $el_user_ID = $r['ID']; $cargo_estado = $r['cargo_estado'];
if (!$r2['ha_votado']) { $votar_num++; $txt_votaciones .= '<li><a href="http://' . strtolower($r2['pais']) . '.' . DOMAIN . '/votacion/' . $r2['ID'] . '"><b>' . $r2['pregunta'] . '</b></a> (' . ucfirst($r2['tipo']) . ')</li>'; } } if ($votar_num > 0) { $txt_email = '<p>Hola ' . $r['nick'] . '!</p> <p>Aún no has votado en las siguientes votaciones:</p> <ol> ' . $txt_votaciones . ' </ol> <p>Tu voto cuenta. Participamos en nuestra <a href="http://15m.virtualpol.com">sala de chat</a>.</p> <p>¡Unidos somos fuertes!</p> <p>_____<br /> <a href="http://15m.virtualpol.com">Asamblea Virtual 15M</a><br /> </p>'; $txt_titulo = $r['nick'] . ', ' . ($votar_num > 1 ? '¡Tienes ' . $votar_num . ' votaciones pendientes!' : '¡Tienes una votación pendiente!'); enviar_email($r['ID'], $txt_titulo, $txt_email); $emails_enviados++; $txt .= $votar_num . ' ' . $r['nick'] . '<br />'; } } evento_chat('<b>[#] Terminado el envio de emails</b> de aviso <span style="color:grey;">(' . num($emails_enviados) . ' emails enviados, ' . round(microtime(true) - TIME_START) . ' seg de proceso)</span>.'); } $txt .= '<hr />' . $contador; include 'theme.php';
$st['empresas'] = 0; $st['mapa'] = 0; $st['mapa_vende'] = 0; } // 24h: ciudadanos que entraron en 24h (CONDICION NUEVA: y que no sean ciudadanos nuevos). $result = mysql_query("SELECT COUNT(ID) AS num FROM users WHERE estado = 'ciudadano' AND pais = '" . PAIS . "' AND fecha_last > '" . $margen_24h . "' AND fecha_registro < '" . $margen_24h . "'", $link); while ($r = mysql_fetch_array($result)) { $st['24h'] = $r['num']; } // confianza $result = mysql_query("SELECT SUM(voto) AS num FROM votos WHERE tipo = 'confianza'", $link); while ($r = mysql_fetch_array($result)) { $st['confianza'] = $r['num']; } // autentificados $result = mysql_query("SELECT COUNT(*) AS num FROM users WHERE dnie = 'true' AND pais = '" . PAIS . "'", $link); while ($r = mysql_fetch_array($result)) { $st['autentificados'] = $r['num']; } // STATS GUARDADO DIARIO mysql_query("INSERT INTO stats \n(pais, time, ciudadanos, nuevos, pols, pols_cuentas, transacciones, hilos_msg, pols_gobierno, partidos, frase, empresas, eliminados, mapa, mapa_vende, 24h, confianza, autentificados) \nVALUES ('" . PAIS . "', '" . date('Y-m-d 20:00:00') . "', '" . $st['ciudadanos'] . "', '" . $st['nuevos'] . "', '" . $st['pols'] . "', '" . $st['pols_cuentas'] . "', '" . $st['transacciones'] . "', '" . $st['hilos_msg'] . "', '" . $st['pols_gobierno'] . "', '" . $st['partidos'] . "', '" . $pujas_total . "', '" . $st['empresas'] . "', '" . $st['eliminados'] . "', '" . $st['mapa'] . "', '" . $st['mapa_vende'] . "', '" . $st['24h'] . "', '" . $st['confianza'] . "', '" . $st['autentificados'] . "')", $link); // ¿ELECCIONES? include $root_dir . 'source/cron/cron-elecciones.php'; // Unifica y comprime archivos CSS y JS include $root_dir . 'source/cron/cron-compress-all.php'; // Calcula el tiempo de proceso $mtime = explode(' ', microtime()); $tiempofinal = $mtime[1] + $mtime[0]; $tiempototal = number_format($tiempofinal - $tiempoinicial, 3); evento_chat('<b>[PROCESO] FIN del proceso</b>, todo <span style="color:blue;"><b>OK</b></span>, ' . $tiempototal . 's (<a href="/estadisticas/">estadisticas actualizadas</a>)'); mysql_close($link);
while ($r = mysql_fetch_array($result)) { $dnie_clon = true; } if ($dnie_clon == true) { // Persona ya identificada con otro usuario. No realiza la autentificacion. $txt .= 'Ya estas autentificado con otro usuario. Envia un email a ' . CONTACTO_EMAIL . ' explicando la situacion. Gracias.'; unset($dnie_check); // Elimina el hash. } else { // Autentificacion correcta. El DNIe es inedito. Procede a guardar el hash en la base de datos. mysql_query("UPDATE users SET dnie = 'true', dnie_check = '" . $dnie_check . "' WHERE ID = '" . $pol['user_ID'] . "' LIMIT 1", $link); unset($dnie_check); // Elimina el hash. // Carga funciones extra para ejecutar evento_chat() que envia un mensaje en el chat. include 'source/inc-functions-accion.php'; evento_chat('<b>[#] ' . crear_link($pol['nick']) . ' se ha <a href="' . SSL_URL . 'dnie.php">autentificado</a> con exito.</b>', '0', '', false, 'e', $pol['pais']); // Cierra y redirige a esta misma pagina. redirect(SSL_URL . 'dnie.php'); } } else { // Muestra controles para autentificar. $txt .= 'Usuario sin autentificar.<br />' . $tractis_identity->show_form(); // Muestra el boton de autentificación de Tractis. } } elseif (isset($pol['user_ID'])) { $txt .= 'Estás autentificado correctamente.'; } else { $txt .= 'No estás registrado, debes crear un usuario.'; } // Presentacion, diseño y poco más. No relevante. $txt_title = 'Autentificación DNIe';
$result = mysql_query("SELECT pais FROM users WHERE ID = '" . $pol['user_ID'] . "' LIMIT 1", $link); while ($r = mysql_fetch_array($result)) { $user_pais = $r['pais']; } if ($pol['user_ID'] and $tiene_kick != true and $user_pais == 'ninguno' and $pol['estado'] == 'turista' and !in_array($_POST['pais'], $vp['paises_congelados'])) { mysql_query("UPDATE users SET estado = 'ciudadano', pais = '" . $_POST['pais'] . "' WHERE estado = 'turista' AND pais = 'ninguno' AND ID = '" . $pol['user_ID'] . "' LIMIT 1", $link); if ($pol['pols'] > 0 and $_POST['pais'] != '15M' and $_POST['pais'] != '15MBCN') { $trae = ', trayendo consigo: ' . pols($pol['pols']) . ' ' . MONEDA; } else { $trae = ''; } $result2 = mysql_query("SELECT COUNT(*) AS num FROM users WHERE estado = 'ciudadano' AND pais = '" . $_POST['pais'] . "'", $link); while ($r2 = mysql_fetch_array($result2)) { $ciudadanos_num = $r2['num']; } evento_chat('<b>[#] Nuevo ciudadano</b> de <b>' . $_POST['pais'] . '</b> <span style="color:grey;">(<b>' . num($ciudadanos_num) . '</b> ciudadanos, <b><a href="http://' . strtolower($_POST['pais']) . '.' . DOMAIN . '/perfil/' . $pol['nick'] . '/" class="nick">' . $pol['nick'] . '</a></b>)</span>', 0, 0, false, 'e', $_POST['pais'], $r['nick']); mysql_query("INSERT INTO " . strtolower($_POST['pais']) . "_log \r\n(time, user_ID, user_ID2, accion, dato) \r\nVALUES ('" . date('Y-m-d H:i:s') . "', '" . $pol['user_ID'] . "', '" . $pol['user_ID'] . "', '2', '')", $link); unset($_SESSION); session_unset(); session_destroy(); redirect('http://' . strtolower($_POST['pais']) . '.' . DOMAIN . '/'); } else { redirect(REGISTRAR); } break; default: $verror = ' '; break; } if ($pol['estado'] == 'ciudadano') { // load config full
} } $dentro_del_margen = false; $result = mysql_query("SELECT ID FROM users WHERE ID = '" . $pol['user_ID'] . "' AND nickchange_last < '" . date('Y-m-d 20:00:00', time() - 86400 * 365) . "' LIMIT 1", $link); while ($r = mysql_fetch_array($result)) { $dentro_del_margen = true; } $nick_existe = false; $result = mysql_query("SELECT ID FROM users WHERE nick = '" . $nick_new . "' LIMIT 1", $link); while ($r = mysql_fetch_array($result)) { $nick_existe = true; } if (nick_check($nick_new) and strlen($nick_new) >= 3 and strlen($nick_new) <= 12 and $dentro_del_margen and !$nick_existe) { // EJECUTAR CAMBIO DE NICK mysql_query("UPDATE users SET nick = '" . $nick_new . "', nickchange_last = now() WHERE ID = '" . $pol['user_ID'] . "' LIMIT 1", $link); evento_chat('<b>[#] El ciudadano ' . $pol['nick'] . '</b> se ha cambiado de nombre a <b>' . crear_link($nick_new) . '</b>.', 0, 0, true, 'e', $pol['pais']); unset($_SESSION); session_destroy(); setcookie('teorizauser', '', time() - 3600, '/', USERCOOKIE); setcookie('teorizapass', '', time() - 3600, '/', USERCOOKIE); } } redirect($url); break; case 'changemail': $email = trim($_POST['email']); $url = base64_decode($_POST['url']); $pre_login = true; if ($pol['user_ID']) { mysql_query("UPDATE users SET email = '" . $email . "' WHERE ID = '" . $pol['user_ID'] . "' AND fecha_registro < '" . date('Y-m-d 20:00:00', time() - 864000) . "' LIMIT 1", $link); }
function cargo_del($cargo_ID, $user_ID, $evento_chat = true, $sistema = false) { global $link, $pol; $result = mysql_query("SELECT nombre, nivel FROM cargos WHERE pais = '" . PAIS . "' AND cargo_ID = '" . $cargo_ID . "' LIMIT 1", $link); while ($r = mysql_fetch_array($result)) { mysql_query("UPDATE cargos_users SET cargo = 'false' WHERE pais = '" . PAIS . "' AND cargo_ID = '" . $cargo_ID . "' AND user_ID = '" . $user_ID . "' LIMIT 1", $link); evento_log_OLD(12, $cargo_ID, $user_ID); $result = mysql_query("SELECT cargo_ID, \r\n(SELECT nivel FROM cargos WHERE pais = '" . PAIS . "' AND cargo_ID = cargos_users.cargo_ID LIMIT 1) AS nivel\r\nFROM cargos_users \r\nWHERE pais = '" . PAIS . "' AND user_ID = '" . $user_ID . "' AND cargo = 'true' \r\nORDER BY nivel DESC\r\nLIMIT 1", $link); while ($r = mysql_fetch_array($result)) { $user_nivel_max = $r['nivel']; $user_nivel_sql = ", cargo = '" . $r['cargo_ID'] . "'"; } if (!$user_nivel_max) { $user_nivel_max = 1; $user_nivel_sql = ", cargo = ''"; } mysql_query("UPDATE users SET nivel = '" . $user_nivel_max . "'" . $user_nivel_sql . " WHERE ID = '" . $user_ID . "' LIMIT 1", $link); actualizar('cargos', $user_ID); if ($evento_chat) { $result2 = mysql_query("SELECT nick FROM users WHERE ID = '" . $user_ID . "' LIMIT 1", $link); while ($r2 = mysql_fetch_array($result2)) { $nick_asignado = $r2['nick']; } evento_chat('<b>[CARGO] ' . crear_link($sistema == true ? 'VirtualPol' : $pol['nick']) . ' quita</b> el cargo <img src="' . IMG . 'cargos/' . $cargo_ID . '.gif" />' . $r['nombre'] . ' a ' . crear_link($nick_asignado)); } } }