$etiqueta_gemela = "";
$avance_experiencia = "";
//Modificar para que solo se pueda comentar cuando se jhaya terminado la ejecución del DD
//calcular el nivel de avance y si este es de un 100% mostrar el fourmulario para dejar coemntarios
if (!is_null($_REQUEST["et_gemela"]) and strlen($_REQUEST["et_gemela"]) > 0) {
    $etiqueta_gemela = $_REQUEST["et_gemela"];
}
if (is_null($id_exp) or strlen($id_exp) == 0) {
    $id_exp = -1;
}
$rol_esta_experiencia = validaExperiencia($id_exp);
if (is_null($id_dd) or strlen($id_dd) == 0) {
    $error = 1;
    $error_msg = $lang_error_sin_codigo_dd;
} else {
    $conexion = dbConectarMySQL($config_host_bd, $config_usuario_bd, $config_password_bd, $config_bd);
    $avance_experiencia = dbExpObtenerAvance($id_exp, $conexion);
    $comentarios_experiencia = dbObtenerComentariosDD($id_dd, $id_exp, $conexion);
    dbDesconectarMySQL($conexion);
    //Calculo del avance, para saber si es que se terminó de ejecutar la experiencia
    $t_ejecutado = $avance_experiencia["suma_t_actividades_finalizadas"] or 0;
    if (is_null($avance_experiencia["suma_sesiones_estimadas"]) or $avance_experiencia["suma_sesiones_estimadas"] == "") {
        $avance_experiencia["suma_sesiones_estimadas"] = 0;
    }
    $t_estimado = $avance_experiencia["suma_sesiones_estimadas"] * $config_minutos_sesion;
    $nivel_avance = "-";
    if ($t_estimado > 0) {
        $nivel_avance = $t_ejecutado / $t_estimado;
        if ($nivel_avance > 1) {
            $nivel_avance = 1;
        }
Exemple #2
0
function multiCastMsjeActividadBitacora($mensaje, $id_experiencia, $tipo_bitacora)
{
    global $users, $users_exp, $config_host_bd, $config_usuario_bd, $config_password_bd, $config_bd;
    say("> " . $mensaje);
    $mensaje = wrap($mensaje);
    /*if ($tipo_bitacora=="Clase"){//Caso que haya sido una actividad en la Bitácora de Mi Clase
    
        say("Experiencia Mi Clase: ".$id_experiencia);
    
        $_clientes_experiencia=$users_exp[$id_experiencia];
    
        $i=0;
    
        foreach($_clientes_experiencia as $cliente){
    
          $socket_cliente=$users[$cliente]->socket;
    
          @socket_write($socket_cliente, $mensaje , strlen($mensaje));
    
          $i++;
    
        }
    
        say("Nro clientes: ".$i);
    
      }else{//Caso de que haya sido una actividad en la Bitácora Compartida*/
    //Se obtiene las experiencias gemelas correspondientes a la experiencia asociada a un mensaje
    $conexion = dbConectarMySQL($config_host_bd, $config_usuario_bd, $config_password_bd, $config_bd);
    $_arreglo_exp_gemelas = obtenerArrayExpGemelas($id_experiencia, $conexion);
    dbDesconectarMySQL($conexion);
    say("> Nro exp gemelas" . sizeof($_arreglo_exp_gemelas));
    foreach ($_arreglo_exp_gemelas as $exp_gemela) {
        say("Experiencia Gemela: " . $exp_gemela);
        $_clientes_experiencia = $users_exp[$exp_gemela];
        $i = 0;
        foreach ($_clientes_experiencia as $cliente) {
            $socket_cliente = $users[$cliente]->socket;
            @socket_write($socket_cliente, $mensaje, strlen($mensaje));
            $i++;
        }
        say("Nro clientes: " . $i);
    }
    //}
    return true;
}
$ruta_raiz = "../";
require_once $ruta_raiz . "conf/config.php";
require_once $ruta_raiz . "inc/all.inc.php";
require_once $ruta_raiz . "inc/verificar_sesion.inc.php";
require_once $ruta_raiz . "encuestas/inc/en_db_functions.inc.php";
//obtencion de parametros por URL
$id_encuesta = $_REQUEST['id_encuesta'];
$grupo_rol = $_REQUEST['a_grupo'];
$avance = $_REQUEST['avance'];
// porcentaje avance de la experiecnia
$anio = $_REQUEST['anio'];
//anio comienzo
$anio1 = $_REQUEST['anio1'];
// anio hasta
$semestre = $_REQUEST['semestre'];
//arreglo de grupos
$a_grupo = split('-', $grupo_rol);
//conexiones a las bases de datos
$conexion = dbConectarMySQL($config_host_bd, $config_usuario_bd, $config_password_bd, $config_bd);
//volvamos usuarios seleccionados desde el panel del administrador a la base de datos de LimeSurvey
$volcado = dbENVolcarUsuariosAEncuesta($a_grupo, $avance, $anio, $anio1, $semestre, $id_encuesta, $config_host_bd, $config_bd_ls, $config_usuario_bd_ls, $config_password_bd_ls, $conexion);
//dbDesconectarMySQL($conexion);
//funcion para activar la encuesta
$conexion_ls = dbConectarMySQL($config_host_bd, $config_usuario_bd_ls, $config_password_bd_ls, $config_bd_ls);
$activacion = dbENSetEncuesta($id_encuesta, 'Y', $grupo_rol, $semestre, $anio, $anio1, $conexion_ls);
dbDesconectarMySQL($conexion_ls);
if ($volcado) {
    echo '1';
} else {
    echo '0';
}
/**
* Obtiene productos asociados al grupo en la tabla rp_producto
*
* @author      Sergio Bustamante M. - Kelluwen
* @version     2012.07.03
* @param       Array  $a_rol arreglo de los encuestados, para separar publico objetivo de la encuesta (1:estudiante 2:profesor 3:colaborador)
* @param       Integer $avance porcentaje de avance exigido por filtro
* @param       Integer $anio de los experiencia de la encuesta (desde)
* @param       Integer $anio1 de los experiencia de la encuesta (hasta)
* @param       Integer $semestre de las experiencias seleccionadas
* @param       Integer $id_encuesta a la que seran enlazados los encuestados
* @param       resource $conexion Identificador de enlace a MySQL
* @return       $_resp null/true para verificar si hubo
*/
function dbENVolcarUsuariosAEncuesta($a_rol, $avance, $anio, $anio1, $semestre, $id_encuesta, $config_host_bd, $config_bd_ls, $config_usuario_bd_ls, $config_password_bd_ls, $conexion)
{
    $_resp = null;
    //generamos parte de la consulta dinamicamente deendiendo de la cantidad de elementos del arreglo
    $cadena_consulta_grupos = '(';
    $cadena_consulta_avance = '';
    foreach ($a_rol as $key => $rol) {
        $cadena_consulta_grupos .= " UE.ue_rol_usuario =" . $rol;
        if ($a_rol[$key + 1]) {
            $cadena_consulta_grupos .= " OR ";
        }
    }
    $cadena_consulta_grupos .= ')';
    //verificamos la seleccion de semestre para configurar la consulta
    if ($semestre == 0) {
        //caso donde no se filtra por semestre
        $rango_semestre = '';
    } else {
        //caso donde si se filtra por semestre
        $rango_semestre = "AND substring(ED.ed_semestre,1,1) = '" . $semestre . "'";
    }
    //verificamos la sleeccion de anio para configurar la consulta
    if ($anio == $anio1) {
        //caso del mismo anio
        $rango_anio = "ED.ed_anio = '" . $anio . "'";
    } else {
        $rango_anio = "ED.ed_anio BETWEEN '" . $anio . "' AND '" . $anio1 . "'";
    }
    //consulta para seleccionar usuarios de la plataforma
    $consulta = "SELECT DISTINCT " . "UE.ue_id_usuario, UE.ue_rol_usuario " . "FROM " . "usuario_experiencia UE, experiencia_didactica ED " . "WHERE " . $cadena_consulta_grupos . ' AND ' . 'UE.ue_id_experiencia = ED.ed_id_experiencia ' . $rango_semestre . "  AND " . $rango_anio;
    //
    //echo $consulta;
    //    $cambio = mysql_select_db($config_bd_ls,$conexion);//
    $resultado = dbEjecutarConsulta($consulta, $conexion);
    if ($resultado) {
        //definimos estructira en encuesta a ingressar en BD limesurvey
        $consulta_acumulada = '';
        $consulta2 = "INSERT INTO lime_tokens_" . $id_encuesta . " (tid,\n                                                                                                         firstname,\n                                                                                                         lastname,\n                                                                                                         email,\n                                                                                                         emailstatus,\n                                                                                                         token,\n                                                                                                         language,\n                                                                                                         sent,\n                                                                                                        remindersent,\n                                                                                                        remindercount,\n                                                                                                        completed,\n                                                                                                        usesleft) " . "VALUES ";
        //arreglo de ids para no duplicar
        $a_evita_duplicados = array();
        if (mysql_num_rows($resultado) > 0) {
            $_resp = array();
            while ($_fila = mysql_fetch_array($resultado, MYSQL_BOTH)) {
                $_resp['id_usuario'] = $_fila["ue_id_usuario"];
                $_resp['rol_usuario'] = $_fila["ue_rol_usuario"];
                //true en defecto para todos los usuarios
                $bandera = true;
                //consultamos por el id de usuario
                $datos_usuario = dbENInfoUsuario($_resp['id_usuario'], $conexion);
                //caso de usuario profesor y se exija avance
                if ($_resp['rol_usuario'] == 1 && $avance != 0) {
                    //false en defecto para los profesores
                    $bandera = false;
                    //consultamos por las experiencias del usuario
                    $experiencias_profesor = dbObtenerExpUsuarioMin($datos_usuario['usuario'], $conexion);
                    //para cada experiencia del usuario verificamos su avance
                    if ($experiencias_profesor) {
                        foreach ($experiencias_profesor as $experiencia) {
                            if ($experiencia['rol'] == 1) {
                                if ($experiencia["anio"] >= $anio && $experiencia["anio"] <= $anio1) {
                                    if ($semestre != 0) {
                                        //caso donde pide semestre y cumple con requisito
                                        if ($semestre == substr($experiencia["semestre"], 0, 1)) {
                                            //caso donde pide semestre y cumple con requisito
                                            //se obtiene el nivel de avance de la experiencia
                                            $_avance_experiencia = dbExpObtenerAvance($experiencia["id_experiencia"], $conexion);
                                            //calculo de nivel de avance
                                            $t_estimado = $_avance_experiencia["suma_sesiones_estimadas"] * 90;
                                            //tiempo sesion
                                            $t_ejecutado = $_avance_experiencia["suma_t_actividades_finalizadas"] or 0;
                                            $nivel_avance = obtieneNivelAvanceExp($t_ejecutado, $t_estimado);
                                        }
                                    } else {
                                        //caso donde no pide semestre y cumple con requisito
                                        //se obtiene el nivel de avance de la experiencia
                                        $_avance_experiencia = dbExpObtenerAvance($experiencia["id_experiencia"], $conexion);
                                        //calculo de nivel de avance
                                        $t_estimado = $_avance_experiencia["suma_sesiones_estimadas"] * 90;
                                        //tiempo sesion
                                        $t_ejecutado = $_avance_experiencia["suma_t_actividades_finalizadas"] or 0;
                                        $nivel_avance = obtieneNivelAvanceExp($t_ejecutado, $t_estimado);
                                    }
                                    if ($nivel_avance >= $avance) {
                                        $bandera = true;
                                    }
                                }
                            }
                        }
                    }
                }
                //evitamos duplicados en el insert
                if (in_array($_resp['id_usuario'], $a_evita_duplicados)) {
                    $bandera = false;
                    //echo $_resp['id_usuario'];
                } else {
                    $push = array_push($a_evita_duplicados, $_resp['id_usuario']);
                    //echo $push.'</br>';
                    //  var_dump($a_evita_duplicados);
                }
                //si bandera es verdadero
                if ($bandera) {
                    if (!$datos_usuario['email']) {
                        $datos_usuario['email'] = '*****@*****.**';
                    }
                    $datos_usuario['nombre'] = str_replace("'", '', $datos_usuario['nombre']);
                    $consulta_contenido = "(" . $_resp['id_usuario'] . "," . "'" . $datos_usuario['nombre'] . "'," . "' '" . "," . "'" . $datos_usuario['email'] . "'," . "'OK'" . "," . "'" . $_resp['id_usuario'] . str_replace('.', '_', $datos_usuario['usuario']) . "'," . "'es'" . "," . "'N'" . "," . "'N'" . "," . "0" . "," . "'N'" . "," . "1" . "),";
                    $consulta_acumulada = $consulta_acumulada . $consulta_contenido;
                }
            }
            $consultaimpresa = $consulta2 . $consulta_acumulada;
            //echo $consultaimpresa.'</br>';
            //cortamos la ultima , (coma)
            $consulta2 = substr($consultaimpresa, 0, -1);
            $conexion_ls = dbConectarMySQL($config_host_bd, $config_usuario_bd_ls, $config_password_bd_ls, $config_bd_ls);
            //selecciona base de datos LS
            //ejecutar insercion
            $resultado2 = dbEjecutarConsulta($consulta2, $conexion_ls);
            if (mysql_affected_rows() > 0) {
                $_resp = true;
            }
        } else {
            echo '0';
        }
    } else {
        echo '0';
    }
    return $_resp;
}