/**
  * Execute a request across all persistent stores and returns the results
  * if any
  *
  * @param MPersistentStoreRequest $request The request to be peformed
  *
  * @return MArray|null An Array containing the results for the request
  * or null if the request yields no results
  */
 public function executeRequest(MPersistentStoreRequest $request)
 {
     if ($this->persistentStores()->count() > 0) {
         if ($request->requestType() == MPersistentStoreRequest::SaveRequestType) {
             $objects = new MArray();
             foreach ($this->persistentStores()->toArray() as $persistentStore) {
                 $objects = $persistentStore->executeRequest($request);
             }
             return $objects;
         } else {
             if ($request->requestType() == MPersistentStoreRequest::FetchRequestType) {
                 return $this->persistentStores()->anyObject()->executeRequest($request);
             } else {
                 if ($request->requestType() == MPersistentStoreRequest::FaultRequestType) {
                     return $this->persistentStores()->anyObject()->executeRequest($request);
                 } else {
                     throw new MPersistentStoreException(Sf("Unsupported request type (%s)", $request->requestType()));
                 }
             }
         }
     } else {
         throw new MPersistentStoreException(S("No persistent stores defined!"));
     }
 }
Ejemplo n.º 2
0
 /**
  * This method executes a request in the Persistent Store and returns the
  * results as an Array
  *
  * @param MPersistentStoreRequest $request The Request to perform
  *
  * @return MArray An Array containing the results of the request
  */
 public function executeRequest(MPersistentStoreRequest $request)
 {
     $this->ensureDatabaseConsistency();
     if ($request->requestType() == MPersistentStoreRequest::FetchRequestType) {
         return $this->executeFetchRequest($request);
     } else {
         if ($request->requestType() == MPersistentStoreRequest::FaultRequestType) {
             return $this->executeFaultRequest($request);
         } else {
             if ($request->requestType() == MPersistentStoreRequest::SaveRequestType) {
                 return $this->executeSaveRequest($request);
             } else {
                 throw new MPersistentStoreException(S("Invalid request type"));
             }
         }
     }
 }