public function executeListByDataProvider(sfWebRequest $request)
 {
     $oai_data_provider = oaiDataProviderPeer::retrieveByPK($request->getParameter('id'));
     if (null === $oai_data_provider) {
         $this->getUser()->setFlash('error', 'You must select an OAI-PMH data provider to list its harvested records.');
         $this->redirect('@oai_data_provider');
     }
     $this->setFilters(array('oai_data_provider_id' => $oai_data_provider->getId()));
     $this->redirect('@oai_harvested_data');
 }
 public function executeHarvest(sfWebRequest $request)
 {
     if ($request->hasParameter('ids')) {
         $data_providers = oaiDataProviderPeer::retrieveByPKs($request->getParameter('ids'));
     } else {
         if ($request->hasParameter('id')) {
             $data_providers = array(oaiDataProviderPeer::retrieveByPK($request->getParameter('id')));
         } else {
             $data_providers = oaiDataProviderPeer::retrieveEnabled();
         }
     }
     $service_provider = new OAIServiceProvider($data_providers);
     if ($service_provider->canHarvest() && $service_provider->harvest()) {
         $updates = $service_provider->getNbUpdates();
         if ($updates > 0) {
             $notice = 'Successfully harvested ' . $updates . ' records.';
         } else {
             $notice = 'No new records to harvest. Everything is up to date.';
         }
         $this->getUser()->setFlash('notice', $notice);
         $errors = $service_provider->getErrors();
         if (count($errors) > 0) {
             $error = 'Some errors have been found while harvesting: ';
             foreach ($errors as $url => $specific_errors) {
                 $error .= sprintf('%s (%s). ', implode(', ', $specific_errors), $url);
             }
             $this->getUser()->setFlash('error', $error);
         }
     } else {
         $errors = $service_provider->getErrors();
         if (count($errors) > 0) {
             $error = 'Unable to complete harvesting. Too many errors have been found while trying to do so: ';
             foreach ($errors as $url => $specific_errors) {
                 $error .= sprintf('%s (%s). ', implode(', ', $specific_errors), $url);
             }
             $this->getUser()->setFlash('error', $error);
         }
     }
     $this->redirect('@oai_data_provider');
 }