コード例 #1
0
 /**
  * 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;
 }
コード例 #2
0
 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);
 }
コード例 #3
0
 /**
  * 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;
             }
         }
     }
 }
コード例 #4
0
 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);
 }