コード例 #1
0
/**
 * Update Attached list of media ids for an activity
 * 
 * @param int $activity_id
 * @param array $media_ids
 * @return array
 */
function mpp_activity_update_attached_media_ids($activity_id, $media_ids)
{
    foreach ($media_ids as $media_id) {
        bp_activity_add_meta($activity_id, '_mpp_attached_media_id', $media_id);
    }
    return $media_ids;
}
コード例 #2
0
 function vortex_add_meta($post_id, $key, $value, $unique)
 {
     $bbp = vortex_is_buddypress($post_id);
     if ($bbp) {
         return bp_activity_add_meta($post_id, $key, $value, $unique);
     } else {
         return add_post_meta($post_id, $key, $value, $unique);
     }
 }
コード例 #3
0
 /**
  * Update entity custom fields
  */
 public function updateCustomFields($identifier, $likes, $dislikes, $url = '')
 {
     global $wpdb;
     $likebtn_entities = _likebtn_get_entities(true, true);
     preg_match("/^(.*)_(\\d+)\$/", $identifier, $identifier_parts);
     list($entity_name, $entity_id) = $this->parseIdentifier($identifier);
     $likes_minus_dislikes = null;
     if ($likes !== null && $dislikes !== null) {
         $likes_minus_dislikes = $likes - $dislikes;
     }
     $entity_updated = false;
     if (array_key_exists($entity_name, $likebtn_entities) && is_numeric($entity_id)) {
         // set Custom fields
         switch ($entity_name) {
             case LIKEBTN_ENTITY_COMMENT:
                 // Comment
                 $comment = get_comment($entity_id);
                 // check if post exists and is not revision
                 if (!empty($comment) && $comment->comment_type != 'revision') {
                     if ($likes !== null) {
                         if (count(get_comment_meta($entity_id, LIKEBTN_META_KEY_LIKES)) > 1) {
                             delete_comment_meta($entity_id, LIKEBTN_META_KEY_LIKES);
                             add_comment_meta($entity_id, LIKEBTN_META_KEY_LIKES, $likes, true);
                         } else {
                             update_comment_meta($entity_id, LIKEBTN_META_KEY_LIKES, $likes);
                         }
                     }
                     if ($dislikes !== null) {
                         if (count(get_comment_meta($entity_id, LIKEBTN_META_KEY_DISLIKES)) > 1) {
                             delete_comment_meta($entity_id, LIKEBTN_META_KEY_DISLIKES);
                             add_comment_meta($entity_id, LIKEBTN_META_KEY_DISLIKES, $dislikes, true);
                         } else {
                             update_comment_meta($entity_id, LIKEBTN_META_KEY_DISLIKES, $dislikes);
                         }
                     }
                     if ($likes_minus_dislikes !== null) {
                         if (count(get_comment_meta($entity_id, LIKEBTN_META_KEY_LIKES_MINUS_DISLIKES)) > 1) {
                             delete_comment_meta($entity_id, LIKEBTN_META_KEY_LIKES_MINUS_DISLIKES);
                             add_comment_meta($entity_id, LIKEBTN_META_KEY_LIKES_MINUS_DISLIKES, $likes_minus_dislikes, true);
                         } else {
                             update_comment_meta($entity_id, LIKEBTN_META_KEY_LIKES_MINUS_DISLIKES, $likes_minus_dislikes);
                         }
                     }
                     $entity_updated = true;
                 }
                 break;
             case LIKEBTN_ENTITY_BP_ACTIVITY_POST:
             case LIKEBTN_ENTITY_BP_ACTIVITY_UPDATE:
             case LIKEBTN_ENTITY_BP_ACTIVITY_COMMENT:
             case LIKEBTN_ENTITY_BP_ACTIVITY_TOPIC:
                 if (!_likebtn_is_bp_active()) {
                     break;
                 }
                 // BuddyPress Activity
                 /*$bp_activity_list = bp_activity_get(array(
                       'show_hidden'  => true,
                       'spam'  => 'all',
                       //'in'           => array((int)$entity_id)
                   ));*/
                 $bp_activity = $wpdb->get_row("\n                        SELECT id\n                        FROM " . $wpdb->prefix . "bp_activity\n                        WHERE id = {$entity_id}\n                    ");
                 if (!empty($bp_activity)) {
                     if ($likes !== null) {
                         if (count(bp_activity_get_meta($entity_id, LIKEBTN_META_KEY_LIKES)) > 1) {
                             bp_activity_delete_meta($entity_id, LIKEBTN_META_KEY_LIKES);
                             bp_activity_add_meta($entity_id, LIKEBTN_META_KEY_LIKES, $likes, true);
                         } else {
                             bp_activity_update_meta($entity_id, LIKEBTN_META_KEY_LIKES, $likes);
                         }
                     }
                     if ($dislikes !== null) {
                         if (count(bp_activity_get_meta($entity_id, LIKEBTN_META_KEY_DISLIKES)) > 1) {
                             bp_activity_delete_meta($entity_id, LIKEBTN_META_KEY_DISLIKES);
                             bp_activity_add_meta($entity_id, LIKEBTN_META_KEY_DISLIKES, $dislikes, true);
                         } else {
                             bp_activity_update_meta($entity_id, LIKEBTN_META_KEY_DISLIKES, $dislikes);
                         }
                     }
                     if ($likes_minus_dislikes !== null) {
                         if (count(bp_activity_get_meta($entity_id, LIKEBTN_META_KEY_LIKES_MINUS_DISLIKES)) > 1) {
                             bp_activity_delete_meta($entity_id, LIKEBTN_META_KEY_LIKES_MINUS_DISLIKES);
                             bp_activity_add_meta($entity_id, LIKEBTN_META_KEY_LIKES_MINUS_DISLIKES, $likes_minus_dislikes, true);
                         } else {
                             bp_activity_update_meta($entity_id, LIKEBTN_META_KEY_LIKES_MINUS_DISLIKES, $likes_minus_dislikes);
                         }
                     }
                     $entity_updated = true;
                 }
                 break;
             case LIKEBTN_ENTITY_BP_MEMBER:
                 // BuddyPress Member Profile
                 $entity_updated = _likebtn_save_bp_member_votes($entity_id, $likes, $dislikes, $likes_minus_dislikes);
                 break;
             case LIKEBTN_ENTITY_BBP_USER:
                 // bbPress Member Profile
                 $entity_updated = _likebtn_save_user_votes($entity_id, $likes, $dislikes, $likes_minus_dislikes);
                 break;
             case LIKEBTN_ENTITY_USER:
                 // BuddyPress Member Profile
                 $entity_updated = _likebtn_save_bp_member_votes($entity_id, $likes, $dislikes, $likes_minus_dislikes);
                 // General user and bbPress Member Profile
                 $entity_updated = $entity_updated || _likebtn_save_user_votes($entity_id, $likes, $dislikes, $likes_minus_dislikes);
                 break;
             default:
                 // Post
                 $post = get_post($entity_id);
                 // check if post exists and is not revision
                 if (!empty($post) && !empty($post->post_type) && $post->post_type != 'revision') {
                     if ($likes !== null) {
                         if (count(get_post_meta($entity_id, LIKEBTN_META_KEY_LIKES)) > 1) {
                             delete_post_meta($entity_id, LIKEBTN_META_KEY_LIKES);
                             add_post_meta($entity_id, LIKEBTN_META_KEY_LIKES, $likes, true);
                         } else {
                             update_post_meta($entity_id, LIKEBTN_META_KEY_LIKES, $likes);
                         }
                     }
                     if ($dislikes !== null) {
                         if (count(get_post_meta($entity_id, LIKEBTN_META_KEY_DISLIKES)) > 1) {
                             delete_post_meta($entity_id, LIKEBTN_META_KEY_DISLIKES);
                             add_post_meta($entity_id, LIKEBTN_META_KEY_DISLIKES, $dislikes, true);
                         } else {
                             update_post_meta($entity_id, LIKEBTN_META_KEY_DISLIKES, $dislikes);
                         }
                     }
                     if ($likes_minus_dislikes !== null) {
                         if (count(get_post_meta($entity_id, LIKEBTN_META_KEY_LIKES_MINUS_DISLIKES)) > 1) {
                             delete_post_meta($entity_id, LIKEBTN_META_KEY_LIKES_MINUS_DISLIKES);
                             add_post_meta($entity_id, LIKEBTN_META_KEY_LIKES_MINUS_DISLIKES, $likes_minus_dislikes, true);
                         } else {
                             update_post_meta($entity_id, LIKEBTN_META_KEY_LIKES_MINUS_DISLIKES, $likes_minus_dislikes);
                         }
                     }
                     $entity_updated = true;
                 }
                 break;
         }
     }
     // Check custom item
     $item_db = $wpdb->get_row($wpdb->prepare("SELECT likes, dislikes\n                FROM " . $wpdb->prefix . LIKEBTN_TABLE_ITEM . "\n                WHERE identifier = %s", $identifier));
     // Custom identifier
     if ($item_db || !$entity_updated) {
         if ($likes === null || $dislikes === null) {
             if ($item_db) {
                 if ($likes === null) {
                     $likes = $item_db->likes;
                 }
                 if ($dislikes === null) {
                     $dislikes = $item_db->dislikes;
                 }
             }
         }
         if ($likes !== null && $dislikes !== null) {
             $likes_minus_dislikes = $likes - $dislikes;
         }
         $item_data = array('identifier' => $identifier, 'likes' => $likes, 'dislikes' => $dislikes, 'likes_minus_dislikes' => $likes_minus_dislikes, 'identifier_hash' => md5($identifier));
         if ($url) {
             $item_data['url'] = $url;
         }
         $update_where = array('identifier' => $item_data['identifier']);
         $update_result = $wpdb->update($wpdb->prefix . LIKEBTN_TABLE_ITEM, $item_data, $update_where);
         if ($update_result) {
             $entity_updated = true;
         } else {
             $insert_result = $wpdb->insert($wpdb->prefix . LIKEBTN_TABLE_ITEM, $item_data);
             if ($insert_result) {
                 $entity_updated = true;
             }
         }
     }
     return $entity_updated;
 }
コード例 #4
0
ファイル: template.php プロジェクト: JeroenNouws/BuddyPress
 /**
  * @group bp_has_activities
  * @group cache
  */
 public function test_bp_has_activities_with_update_meta_cache_true()
 {
     $now = time();
     $a1 = $this->factory->activity->create(array('content' => 'Life Rules', 'recorded_time' => date('Y-m-d H:i:s', $now)));
     $a2 = $this->factory->activity->create(array('content' => 'Life Drools', 'recorded_time' => date('Y-m-d H:i:s', $now - 100)));
     bp_activity_add_meta($a1, 'foo', 'bar');
     bp_activity_add_meta($a2, 'foo1', 'bar2');
     // prime
     bp_has_activities(array('update_meta_cache' => true));
     $this->assertNotEmpty(wp_cache_get($a1, 'activity_meta'));
     $this->assertNotEmpty(wp_cache_get($a2, 'activity_meta'));
 }
コード例 #5
0
 /**
  * @ticket BP7237
  * @ticket BP6643
  */
 public function test_query_cache_should_be_invalidated_by_activitymeta_delete()
 {
     global $wpdb;
     $activities = $this->factory->activity->create_many(2);
     bp_activity_add_meta($activities[0], 'foo', 'bar');
     bp_activity_add_meta($activities[1], 'foo', 'bar');
     $activity_args = array('meta_query' => array(array('key' => 'foo', 'value' => 'bar')));
     $q1 = bp_activity_get($activity_args);
     $this->assertEqualSets(array($activities[0], $activities[1]), wp_list_pluck($q1['activities'], 'id'));
     bp_activity_delete_meta($activities[1], 'foo', 'bar');
     $q2 = bp_activity_get($activity_args);
     $this->assertEqualSets(array($activities[0]), wp_list_pluck($q2['activities'], 'id'));
 }
コード例 #6
0
ファイル: functions.php プロジェクト: swissspidy/BuddyPress
 /**
  * @group activitymeta
  * @group bp_activity_add_meta
  */
 public function test_bp_activity_add_meta_existing_not_unique()
 {
     $a = $this->factory->activity->create();
     bp_activity_add_meta($a, 'foo', 'bar');
     $this->assertNotEmpty(bp_activity_add_meta($a, 'foo', 'baz'));
 }