<?php
/**
* Sync architecture prototype
* @author Dan Walmsley
* To run tests: phpunit --testsuite sync --filter New_Sync
*/
/**
* A high-level interface for objects that store synced WordPress data
* Useful for ensuring that different storage mechanisms implement the
* required semantics for storing all the data that we sync
*/
interface iJetpack_Sync_Replicastore {
// remove all data
public function reset();
// trigger setup for sync start/end
public function full_sync_start( $config );
public function full_sync_end( $checksum );
// posts
public function post_count( $status = null, $min_id = null, $max_id = null );
public function get_posts( $status = null, $min_id = null, $max_id = null );
public function get_post( $id );
public function upsert_post( $post, $silent = false );
public function delete_post( $post_id );
public function posts_checksum( $min_id = null, $max_id = null );
public function post_meta_checksum( $min_id = null, $max_id = null );
// comments
public function comment_count( $status = null, $min_id = null, $max_id = null );
public function get_comments( $status = null, $min_id = null, $max_id = null );
public function get_comment( $id );
public function upsert_comment( $comment );
public function trash_comment( $comment_id );
public function spam_comment( $comment_id );
public function delete_comment( $comment_id );
public function trashed_post_comments( $post_id, $statuses );
public function untrashed_post_comments( $post_id );
public function comments_checksum( $min_id = null, $max_id = null );
public function comment_meta_checksum( $min_id = null, $max_id = null );
// options
public function update_option( $option, $value );
public function get_option( $option, $default = false );
public function delete_option( $option );
// themes
public function set_theme_support( $theme_support );
public function current_theme_supports( $feature );
// meta
public function get_metadata( $type, $object_id, $meta_key = '', $single = false );
public function upsert_metadata( $type, $object_id, $meta_key, $meta_value, $meta_id );
public function delete_metadata( $type, $object_id, $meta_ids );
// constants
public function get_constant( $constant );
public function set_constant( $constant, $value );
// updates
public function get_updates( $type );
public function set_updates( $type, $updates );
// functions
public function get_callable( $callable );
public function set_callable( $callable, $value );
// network options
public function get_site_option( $option );
public function update_site_option( $option, $value );
public function delete_site_option( $option );
// terms
public function get_terms( $taxonomy );
public function get_term( $taxonomy, $term_id, $is_term_id = true );
public function update_term( $term_object );
public function delete_term( $term_id, $taxonomy );
public function get_the_terms( $object_id, $taxonomy );
public function update_object_terms( $object_id, $taxonomy, $terms, $append );
public function delete_object_terms( $object_id, $tt_ids );
// users
public function user_count();
public function get_user( $user_id );
public function upsert_user( $user );
public function delete_user( $user_id );
public function upsert_user_locale( $user_id, $locale );
public function delete_user_locale( $user_id );
public function get_user_locale( $user_id );
public function get_allowed_mime_types( $user_id );
// full checksum
public function checksum_all();
// histogram
public function checksum_histogram( $object_type, $buckets, $start_id = null, $end_id = null );
}