<?php /* Querystring is set via AJAX in _inc/ajax.php - bp_dtheme_activity_loop() */ ?>

<?php do_action( 'bp_before_activity_loop' );

global $wpdb, $bp, $current_user;

// Obtenemos el valor de sc (scope) de los enlaces ( Solo yo, Mis amigos, etc. )
// filter, que viene dado de los botones de colores
// establecemos el type a activity_update para mostrar solo textos
// $querypags, num de elementos por pag
$sc = trim ( strip_tags ($_GET['sc']) );
if (!$sc) { 
    $sc = trim ( strip_tags ($_POST['sc']) );
}

if ($sc != 'all' && !$sc) { 
    $sc ='friends'; // Por defecto mostramos Mis amigos y yo
}

$filter = esc_attr ($_POST['IronEstadoFilter']);

$type  = 'activity_update';
$type2 = 'new_blog_post';
$type3 = 'friendship_created';
$type4 = 'created_event';
$type5 = 'created_group';
//$type6 = 'new_achievement';
//$type2 = 'new_blog_post';

$querypags   = '&per_page=10';
$friend_list = bp_get_friend_ids( bp_loggedin_user_id() );

if (!$friend_list) {
    $friend_list = bp_loggedin_user_id();
}

if ($grpID = bp_get_group_id($bp->groups->current_group)) {
    //echo "<!-- FOOOOOOOOOOOOOOOO\n\n";
    /*
    bp_group_has_members( 'per_page=150000&exclude_banned=false' );
    $aIDS = array();
    while ( bp_group_members() ) {
        bp_group_the_member();
        $aIDS[] = bp_get_group_member_id();
    }
    */
    $aIDS = $wpdb->get_col("select user_id from wp_bp_groups_members where group_id = ".bp_get_group_id($bp->groups->current_group)." and is_confirmed = 1;");
    
    //var_dump($uList);
    //var_dump($aIDS);
    
    if (sizeof($aIDS)>0) {
    
        //var_dump($friend_list);
        $tmpfr  = explode(",", $friend_list);
        $tmpAfr = array_merge($aIDS, $tmpfr);
        $tmpAfr = array_unique($tmpAfr); 
        //var_dump($tmpAfr);
        
        $friend_list = implode(",", $aIDS);
    }

    //echo "\n-->";
}


$afriend_list = explode (',', $friend_list);

/*
echo "comp: ".$bp->current_component;
echo "act: ".$bp->current_action;
var_dump($bp);
*/

// tablas de la bbdd

$tablename1 = $wpdb->prefix . "bp_activity";
$tablename2 = $wpdb->prefix . "bp_activity_meta";

// Si estamos en grupos, mostramos solo los items del grupo
if ($bp->current_component == 'groups') {
    $addquery1= " AND type='activity_update' AND item_id = ".bp_get_group_id($bp->groups->current_group);
} elseif ($bp->current_action == 'just-me') {
    $addquery1= " AND user_id = ".bp_displayed_user_id();
}

// Scope
if ($sc == 'groups') {
    $addquery2    = " AND type='activity_update' AND item_id != 0 ";
} elseif ($sc == 'personal') {
    $addquery2    = " AND user_id = ". bp_loggedin_user_id();
} elseif ($sc == 'friends') {
    $friend_list .= ',' . bp_loggedin_user_id();
    $addquery2    = " AND user_id IN (". $friend_list .")";
}

// Consulta SQL
// Si ponemos secondary_item_id = 0 va a coger solo posts, no los comentarios

$actQuery  = "SELECT id, user_id, item_id, secondary_item_id, type FROM ".$tablename1." WHERE ((type='". $type ."' AND secondary_item_id = 0) ";
$actQuery .= " OR type='". $type2 ."' ";
//$actQuery .= " OR type='". $type3 ."' ";
$actQuery .= " OR type='".$type4."' ";
$actQuery .= " OR type='".$type5."' ";
$actQuery .= " OR type='".$type6."')".$addquery1.$addquery2." ";
$actQuery .= "ORDER BY date_recorded DESC";

$list = $wpdb->get_results($actQuery);

/*
echo "SELECT id, user_id, item_id FROM ".$tablename1."
WHERE ((type='". $type ."' AND secondary_item_id = 0) OR type='". $type2 ."' OR type='". $type3 ."' OR type='".$type4."')".$addquery1.$addquery2."
ORDER BY date_recorded DESC";
*/

// Confeccionamos la includelist de ids separados por coma
// La chapuza del cont es para guardar el valor del activity anterior
// usando el viejo truco de par/impar xD
$cont = 0;

//echo "<!-- FOOOOOOOOOOOOOOOO";
//echo bp_get_group_id($bp->groups->current_group);
//var_dump($list);
//echo "-->";

foreach ($list as $item) {
    $current_mood='';
    $privacity='';
    $results = $wpdb->get_results(
    "SELECT meta_key, meta_value FROM ".$tablename2." WHERE activity_id = ". $item->id);

    // Esto sirve para coger las meta privacity y current_mood
    foreach ($results as $metaval) {
        if ($metaval->meta_key == 'privacity') { $privacity = $metaval->meta_value; }
        elseif ($metaval->meta_key == 'current_mood') { $current_mood = $metaval->meta_value; }
    }

    // debug
    /*
    if ($item->user_id == $ant_secondary_item_id && $item->secondary_item_id == $ant_user_id) { echo '!!'; }
    echo '<br /><b>este</b> -> user_id: '.$item->user_id.' sec_id: '. $item->secondary_item_id.' <b>ant</b> ->  user_id: ' . $ant_user_id . ' sec_id: ' . $ant_secondary_item_id;
    */

    // Si no es privado, miramos si es solo para amigos y el filtro por estado
    if ($privacity != 'privado') {
        // Solo para amigos
        if ($privacity == 'amigos') {
            if (in_array($item->user_id, $afriend_list) || $item->user_id == bp_loggedin_user_id()) {
                // Filtro por estado (bolitas)
                if ($filter && $current_mood == $filter) {
                    // Quitamos los new_friendship repetidos
                    if ($item->type=='friendship_created') {
                        if ($item->user_id != $ant_secondary_item_id && $item->secondary_item_id != $ant_user_id) {
                            // Los usuarios que esten como privados no ven esto
                            if (xprofile_get_field_data( 'Privacidad', bp_loggedin_user_id()) != 'Privado' ) {
                                $includelist .= $item->id.",";
                            }
                        }
                    }
                    // SI SON CREACIONES DE GRUPOS, EVENTOS, TESTIMONIOS, ETC. MOSTRAMOS
                    // SOLO LOS DE NUESTROS AMIGOS y LO NUESTRO, A PESAR DE ESTAR EN "TODOS"
                    elseif ($item->type=='created_group' || $item->type=='created_event' || $item->type=='new_blog_post' || $item->type=='new_achievement') {
                        if (in_array($item->user_id, $afriend_list) || $item->user_id == bp_loggedin_user_id()) {
                            if (xprofile_get_field_data( 'Privacidad', bp_loggedin_user_id()) != 'Privado' ) {
                                $includelist .= $item->id.",";
                            }
                        }
                    }
                    else {
                        $includelist .= $item->id.",";
                    }
                }
                // Sin filtro por estado (bolitas)
                elseif (!$filter) {
                    // Quitamos los new_friendship repetidos
                    if ($item->type=='friendship_created') {
                        if ($item->user_id != $ant_secondary_item_id && $item->secondary_item_id != $ant_user_id) {
                            // Los usuarios que esten como privados no ven esto
                            if (xprofile_get_field_data( 'Privacidad', bp_loggedin_user_id()) != 'Privado' ) {
                                $includelist .= $item->id.",";
                            }
                        }
                    }
                    // SI SON CREACIONES DE GRUPOS, EVENTOS, TESTIMONIOS, ETC. MOSTRAMOS
                    // SOLO LOS DE NUESTROS AMIGOS y LO NUESTRO, A PESAR DE ESTAR EN "TODOS"
                    elseif ($item->type=='created_group' || $item->type=='created_event' || $item->type=='new_blog_post' || $item->type=='new_achievement') {
                        if (in_array($item->user_id, $afriend_list) || $item->user_id == bp_loggedin_user_id()) {
                            // Los usuarios que esten como privados no ven esto
                            if (xprofile_get_field_data( 'Privacidad', bp_loggedin_user_id()) != 'Privado' ) {
                                $includelist .= $item->id.",";
                            }
                        }
                    }
                    else {
                        $includelist .= $item->id.",";
                    }
                }
            }
        }
        else {
            // Filtro por estado (bolitas)
            if ($filter && $current_mood == $filter) {
                // Quitamos los new_friendship repetidos
                if ($item->type=='friendship_created') {
                    if ($item->user_id != $ant_secondary_item_id && $item->secondary_item_id != $ant_user_id) {
                        // Los usuarios que esten como privados no ven esto
                        if (xprofile_get_field_data( 'Privacidad', bp_loggedin_user_id()) != 'Privado' ) {
                            $includelist .= $item->id.",";
                        }
                    }
                }
                // SI SON CREACIONES DE GRUPOS, EVENTOS, TESTIMONIOS, ETC. MOSTRAMOS
                // SOLO LOS DE NUESTROS AMIGOS y LO NUESTRO, A PESAR DE ESTAR EN "TODOS"
                elseif ($item->type=='created_group' || $item->type=='created_event' || $item->type=='new_blog_post' || $item->type=='new_achievement') {
                    if (in_array($item->user_id, $afriend_list) || $item->user_id == bp_loggedin_user_id()) {
                        // Los usuarios que esten como privados no ven esto
                        if (xprofile_get_field_data( 'Privacidad', bp_loggedin_user_id()) != 'Privado' ) {
                            $includelist .= $item->id.",";
                        }
                    }
                }
                else {
                    $includelist .= $item->id.",";
                }
            }
            // Sin filtro por estado (bolitas)
            elseif (!$filter) {
                // Quitamos los new_friendship repetidos
                if ($item->type=='friendship_created') {
                    if ($item->user_id != $ant_secondary_item_id && $item->secondary_item_id != $ant_user_id) {
                        // Los usuarios que esten como privados no ven esto
                        if (xprofile_get_field_data( 'Privacidad', bp_loggedin_user_id()) != 'Privado' ) {
                            $includelist .= $item->id.",";
                        }
                    }
                }
                // SI SON CREACIONES DE GRUPOS, EVENTOS, TESTIMONIOS, ETC. MOSTRAMOS
                // SOLO LOS DE NUESTROS AMIGOS y LO NUESTRO, A PESAR DE ESTAR EN "TODOS"
                elseif ($item->type=='created_group' || $item->type=='created_event' || $item->type=='new_blog_post' || $item->type=='new_achievement') {
                    if (in_array($item->user_id, $afriend_list) || $item->user_id == bp_loggedin_user_id()) {
                        // Los usuarios que esten como privados no ven esto
                        if (xprofile_get_field_data( 'Privacidad', bp_loggedin_user_id()) != 'Privado' ) {
                            $includelist .= $item->id.",";
                        }
                    }
                }
                else {
                    $includelist .= $item->id.",";
                }
            }
        }
    }
    // Si es privado, el autor del post lo puede ver
    // En version beta esta feature no se usa
    elseif ( $privacity == 'privado' && $item->user_id == bp_loggedin_user_id() ) {
        // Filtro por estado
        if ($filter && $current_mood == $filter) {
            $includelist .= $item->id.",";
        }
        elseif (!$filter) {
            $includelist .= $item->id.",";
        }
    }

    // Si es impar recogemos el valor
    // para poder compararlo despues
    $cont++;
    if ($cont%2!=0) { $ant_user_id=$item->user_id; $ant_secondary_item_id=$item->secondary_item_id; }
    else { $ant_user_id=''; $ant_secondary_item_id=''; }
}

/*
// La creacion de eventos, grupos, hitos, etc. solo se muestra la de nuestros amigos aun estando en "todos"
if ($item->type=='created_group') {
    if (in_array($item->user_id, $afriend_list) || $item->user_id == bp_loggedin_user_id())
        echo "se muestra";
    else
        echo "no se muestra";
}
*/

// Por defecto no incluimos nada (cuando un usuario no tiene amigos ni updates hechos,
// tenemos que pasar siempre alg�n id por include, sino mostrar� la activity completa)
$queryinc='&include=-1';

// Quitamos la ultima coma del listado
$includelist=substr($includelist,0,strlen($includelist)-1);

// Pasamos el includelist a la consulta bp_has_activities
// asi wordpress se ocupa de todo lo demas, como la paginacion
if ($includelist) { $queryinc='&include='.$includelist; }

?>

<?php if ( bp_has_activities( bp_ajax_querystring( 'activity' ) . $queryscope . $queryinc . $querypags . $queryaction ) ) : ?>

    <?php /* Show pagination if JS is not enabled, since the "Load More" link will do nothing */ ?>
    <noscript>
        <div class="pagination">
            <div class="pag-count"><?php bp_activity_pagination_count() ?></div>
            <div class="pagination-links"><?php bp_activity_pagination_links() ?></div>
        </div>
    </noscript>

    <?php if ( empty( $_POST['page'] ) ) : ?>
        <ul id="activity-stream" class="activity-list item-list">
    <?php endif; ?>

    <?php while ( bp_activities() ) : bp_the_activity(); ?>

        <?php include( locate_template( array( 'activity/entry.php' ), false ) ) ?>

    <?php endwhile; ?>

    <?php if ( bp_get_activity_count() == bp_get_activity_per_page() ) : ?>
        <li class="load-more">
            <img src="<?php echo get_stylesheet_directory_uri() .'/_inc/images/down-arrow.gif'; ?>">
            <a href="#more"><?php _e( 'Load More', 'buddypress' ) ?></a> &nbsp; <span class="ajax-loader"></span>
        </li>
    <?php endif; ?>

    <?php if ( empty( $_POST['page'] ) ) : ?>
        </ul>
    <?php endif; ?>

<?php else : ?>
    <div id="message" class="info">
        <p><?php _e( 'No se ha encontrado nada, prueba una b&uacute;squeda diferente.', 'buddypress' ) ?></p>
    </div>
<?php endif; ?>

<?php do_action( 'bp_after_activity_loop' ) ?>

<form action="" name="activity-loop-form" id="activity-loop-form" method="post">
    <?php wp_nonce_field( 'activity_filter', '_wpnonce_activity_filter' ) ?>
</form>
