Поддержка BuddyPress Общее кол-во активностей отдельного пользователя

  • Добрый вечер!

    возможно ли в ВР вывести общее кол-во активностей (! не обновлений) отдельного пользователя — число?

    код ниже выдаст кол-во обновлений. если убрать action => activity_update, должен работать для всех активностей, но при переходе по меню пользователя цифра меняется на активности всего сайта.

    люди с головой, гляньте пожалуйста. Google ответа не даст — проверено!!

    function get_activity_count_by_user( $user_id ) {
    	$args = array(
    		'per_page' => 10000,
    		'show_hidden' => true,
    		'user_id' => $user_id,
    		'action' => 'activity_update'
    	);
    
    	if ( bp_has_activities( $args ) ) {
    		global $activities_template;
    		$count = $activities_template->total_activity_count;
    	} else {
    		$count = 0;
    	}
    
    	return $count;
    }

    если это важно, нужно для ВР < 1.5

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Гораздо быстрее будет работать код, в котором вы сделаете прямой запрос

    global $wpdb;
    $sql = 'SELECT COUNT(id) FROM '.$wpdb->prefix.'bp_activity
    WHERE user_id = '.$user_id;
    return $wpdb->get_var($wpdb->prepare($sql));

    Это будет количество всех элементов активности пользователя.

    нельзя ли немного о том, как этот код применять (сам по себе он ничего не выводит)?
    Возможно ли этим же методом вывести кол-во ‘new_blog_post’ и ‘activity_update’ (ранее приведенная фу-ция оказалась нерабочей)?

    Огромное Спасибо!

    Все этот код выводит. Знать хоть что-то про php надо, прежде чем делать необоснованные выводы.

    function get_activity_count_by_user( $user_id, $type = false ) {
        global $wpdb, $bp;
        $sql = "SELECT COUNT(id) FROM ".$bp->table_prefix."bp_activity
                WHERE user_id = ".$user_id;
        if(!empty($type)){
            $sql .= "AND type = '".$type."'";
        }
        return $wpdb->get_var($wpdb->prepare($sql));
    }
    // кол-во активностей пользовател
    echo get_activity_count_by_user(bp_loggedin_user_id());
    // кол-во статусов
    echo get_activity_count_by_user(bp_loggedin_user_id(), 'activity_update');

    насчет php не поспорить, только выводы «..нерабочей..» относились к мною приведенной ф-ии. что касается вашего последнего варианта, пробовал вставлять ф-ию целиком, вызывать echo…, вызывать ф-ию и т.д.

    логичный вопрос, выводила ли эта ф-ия что-либо у вас (допускаю, что это очередной промах с моей стороны)?

    Конкретно в таком виде я не проверял — написал с головы, без тестов.
    Чуток подправил код функции. Должно работать.
    Если снова не заработает — то смотрите уже внимательнее сами 🙂

    должен отрапортовать, что echo get_activity_count_by_user(bp_loggedin_user_id()); работает на «5» по России, спасибо!

    что-то по прежнему не идет с echo get_activity_count_by_user(bp_loggedin_user_id(), 'activity_update');.

    может кто глянет? я бы и сам, да это не css с незаменимым методом тыка 🙂

    если type вбить в строчку `$sql .= «AND type = ‘».$type.»‘»;
    `, по первому echo ф-ия всеравно выдает общее число активностей.

    @slaffik извините, что не по теме, но раз уж тут про sql, при поисках наткнулся на следующую тему: http://snipper.ru/view/41/buddypress-12-activity-get_specific-sql-injection-exploit/

    это нечто известное, исправленное и забытое, или есть повод для переживаний?
    (после прочтения сотрите, чтоб не засорять)

    спасибо, slaffik. похоже, на грани с мистикой, я заставил ваш код работать для type, больше не потревожу.

    мнение относительно ссылки все же было бы интересно услышать.

    Как вы изменили код, чтобы он заработал?

    По поводу той ссылки — надо посмотреть код в BP 1.5.

    function get_activity_count_by_user( $user_id, $type = false ) {
        global $wpdb, $bp;
    
        $sql = "SELECT COUNT(id) FROM ".$bp->table_prefix."bp_activity
                WHERE user_id =" .$user_id. " AND type = 'activity_update'";
    
        return $wpdb->get_var($wpdb->prepare($sql));
    }

    echo get_activity_count_by_user(bp_loggedin_user_id())

    вроде все работает.

    дайте знать, как будут новости относительно ссылки (сам я пока с 1.2.10. пока на 1.5 слишком большие патери в плагинах).

    спасибо!

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Тема «Общее кол-во активностей отдельного пользователя» закрыта для новых ответов.