コード例 #1
0
 /**
  * Find all for type.
  * Optionally populate with local and remote resource data.
  */
 public static function findAllForType($type, $findFlags = 0)
 {
     $syncer = RemoteSyncPlugin::instance()->getSyncerByType($type);
     $syncResources = SyncResource::findAllBy("type", $type);
     $syncResourcesBySlug = array();
     foreach ($syncResources as $syncResource) {
         $syncResourcesBySlug[$syncResource->getSlug()] = $syncResource;
     }
     if ($findFlags & SyncResource::POPULATE_LOCAL) {
         $slugs = $syncer->listResourceSlugs();
         foreach ($slugs as $slug) {
             if (!isset($syncResourcesBySlug[$slug])) {
                 $syncResource = new SyncResource($type, $slug);
                 $syncResources[] = $syncResource;
                 $syncResourcesBySlug[$slug] = $syncResource;
             }
         }
     }
     usort($syncResources, "SyncResource::cmpResourceWeight");
     if ($findFlags & SyncResource::POPULATE_REMOTE) {
         $remoteResources = RemoteResource::fetchAllForType($type);
         foreach ($remoteResources as $remoteResource) {
             $slug = $remoteResource->getSlug();
             if (!isset($syncResourcesBySlug[$slug])) {
                 $syncResource = new SyncResource($type, $slug);
                 $syncResources[] = $syncResource;
                 $syncResourcesBySlug[$slug] = $syncResource;
             }
             $syncResource = $syncResourcesBySlug[$slug];
             $syncResource->setRemoteResource($remoteResource);
         }
         foreach ($syncResources as $syncResource) {
             $syncResource->remoteResourceSet = TRUE;
         }
     }
     if ($findFlags & SyncResource::ONLY_LOCAL_EXISTING) {
         if ($findFlags & SyncResource::POPULATE_REMOTE) {
             throw new Exception("Can't use POPULATE_REMOTE and ONLY_LOCAL_EXISTING at the same time");
         }
         $tmp = $syncResources;
         $syncResources = array();
         foreach ($tmp as $syncResource) {
             if ($syncResource->getLocalRevision()) {
                 $syncResources[] = $syncResource;
             }
         }
     }
     return $syncResources;
 }