/** * List. */ public function ls($args) { if (!isset($args["type"])) { throw new Exception("Expected resource type for ls"); } $syncResources = SyncResource::findAllForType($args["type"], SyncResource::POPULATE_LOCAL | SyncResource::ONLY_LOCAL_EXISTING); $res = array(); foreach ($syncResources as $syncResource) { $res[] = array("slug" => $syncResource->getSlug(), "revision" => $syncResource->getLocalRevision()); } return $res; }
function test_ls() { RemoteSyncPlugin::instance()->install(); $api = new RemoteSyncApi(); $res = $api->ls(array("type" => "post")); $this->assertCount(0, $res); $id = wp_insert_post(array("post_title" => "hello", "post_type" => "post", "post_content" => "something", "post_name" => "hello-slug")); $res = $api->ls(array("type" => "post")); $this->assertCount(1, $res); $syncResources = SyncResource::findAllForType("post", SyncResource::POPULATE_LOCAL); $this->assertCount(1, $syncResources); $this->assertEquals(NULL, $syncResources[0]->id); $res0 = $syncResources[0]; $res0->save(); $this->assertNotEquals(NULL, $syncResources[0]->id); wp_trash_post($id); $res = $api->ls(array("type" => "post")); $this->assertCount(0, $res); }
/** * Push. */ public function push() { $syncers = RemoteSyncPlugin::instance()->getEnabledSyncers(); foreach ($syncers as $syncer) { $this->log("Push: " . $syncer->getType()); $syncResources = SyncResource::findAllForType($syncer->getType(), SyncResource::POPULATE_LOCAL | SyncResource::POPULATE_REMOTE); foreach ($syncResources as $syncResource) { switch ($syncResource->getState()) { case SyncResource::NEW_REMOTE: case SyncResource::UPDATED_REMOTE: case SyncResource::DELETED_REMOTE: $this->log($syncResource->getSlug() . ": Remotely changed, please pull."); break; case SyncResource::NEW_LOCAL: $syncResource->createRemoteResource(); $syncResource->save(); $this->log(" " . $syncResource->getSlug() . ": Created remote."); break; case SyncResource::UPDATED_LOCAL: $syncResource->updateRemoteResource(); $syncResource->save(); $this->log(" " . $syncResource->getSlug() . ": Updated remote."); break; case SyncResource::DELETED_LOCAL: $syncResource->deleteRemoteResource(); $syncResource->delete(); $this->log(" " . $syncResource->getSlug() . ": Deleted remote."); break; case SyncResource::CONFLICT: $this->log(" " . $syncResource->getSlug() . ": Conflict, skipping."); break; case SyncResource::UP_TO_DATE: $syncResource->save(); break; case SyncResource::GARBAGE: //echo "garbage!!!\n"; $syncResource->delete(); break; } } } }
function test_state() { update_option("rs_remote_site_url", "helloworld"); RemoteSyncPlugin::instance()->syncers = array(new SRTestSyncer("testType")); RemoteSyncPlugin::instance()->install(); $syncer = RemoteSyncPlugin::instance()->getSyncerByType("testType"); $data = $syncer->getResource("slug1"); $rev = md5(json_encode($data)); Curl::mockResult(array(array("slug" => "onlyremote", "revision" => "05a1ad082ad35cad7aac7b18e232feb3"), array("slug" => "slug1", "revision" => $rev))); $syncResources = SyncResource::findAllForType("testType", SyncResource::POPULATE_REMOTE | SyncResource::POPULATE_LOCAL); $a = array(); foreach ($syncResources as $syncResource) { $a[$syncResource->getSlug()] = $syncResource; } //echo "l: ".sizeof($syncResources); $syncResource = $syncResources[0]; $data = $syncResource->getData(); $rev = $syncResource->getLocalRevision(); $this->assertEquals($a["onlyremote"]->getState(), SyncResource::NEW_REMOTE); $this->assertEquals($a["onlylocal"]->getState(), SyncResource::NEW_LOCAL); $this->assertEquals($a["slug1"]->getState(), SyncResource::UP_TO_DATE); }