/**
  * Executes action
  *
  * @param sfRequest $request A request object
  */
 public function execute($request)
 {
     $request->setRequestFormat('xml');
     $this->date = QubitOai::getDate();
     $this->path = $this->request->getUriPrefix() . $this->request->getPathInfo();
     $this->attributes = $this->request->getGetParameters();
     $this->attributesKeys = array_keys($this->attributes);
     $this->requestAttributes = '';
     foreach ($this->attributesKeys as $key) {
         $this->requestAttributes .= ' ' . $key . '="' . $this->attributes[$key] . '"';
     }
     $this->sets = array();
     foreach (QubitInformationObject::getCollections() as $el) {
         $this->sets[] = new sfIsadPlugin($el);
     }
 }
 /**
  * Executes action
  *
  * @param sfRequest $request A request object
  */
 public function execute($request)
 {
     $request->setRequestFormat('xml');
     $this->date = QubitOai::getDate();
     $this->path = $this->request->getUriPrefix() . $this->request->getPathInfo();
     $this->attributes = $this->request->getGetParameters();
     $this->attributesKeys = array_keys($this->attributes);
     $this->requestAttributes = '';
     foreach ($this->attributesKeys as $key) {
         $this->requestAttributes .= ' ' . $key . '="' . $this->attributes[$key] . '"';
     }
     $this->sets = array();
     foreach (QubitInformationObject::getCollections() as $el) {
         $this->sets[] = new sfIsadPlugin($el);
     }
     if (isset($this->request->verb)) {
         switch ($this->request->verb) {
             case 'Identify':
                 $this->verb = 'identify';
                 break;
             case 'ListMetadataFormats':
                 $this->verb = 'listMetadataFormats';
                 break;
             case 'ListSets':
                 $this->verb = 'listSets';
                 break;
             case 'ListRecords':
                 $this->verb = 'listRecords';
                 break;
             case 'ListIdentifiers':
                 $this->verb = 'listIdentifiers';
                 break;
             case 'GetRecord':
                 $this->verb = 'getRecord';
                 break;
             default:
                 $this->verb = 'badVerb';
         }
     } else {
         $this->verb = 'badVerb';
     }
 }
 /**
  * Executes action
  *
  * @param sfRequest $request A request object
  */
 public function execute($request)
 {
     // only respond to OAI requests if the feature has been enabled
     if (sfConfig::get('app_oai_oai_enabled') == 0) {
         // the following displays a GUI response, should we return a
         // '503 - Service unavailable' HTTP response (without specifying
         // a 'Retry-After' parameter instead?
         $this->forward('admin', 'oaiDisabled');
     }
     $request->setRequestFormat('xml');
     /*    print_r($this->oaiErrorArray);
         //Check for null and duplicate parameters
         if(QubitOai::hasDuplicateOrNullParameters())
         {
           $request->setParameter('errorCode', 'badArgument');
           $request->setParameter('errorMsg', $this->oaiErrorArray{'badArgument'});
           $this->forward('oai', 'error');
         }*/
     $this->date = QubitOai::getDate();
     $this->path = $this->request->getUriPrefix() . $this->request->getPathInfo();
     $this->attributes = $this->request->getGetParameters();
     $this->attributesKeys = array_keys($this->attributes);
     $this->requestAttributes = '';
     foreach ($this->attributesKeys as $key) {
         $this->requestAttributes .= ' ' . $key . '="' . $this->attributes[$key] . '"';
     }
     $this->sets = array();
     foreach (QubitInformationObject::getCollections() as $el) {
         $this->sets[] = new sfIsadPlugin($el);
     }
     /**
      * Validate that verb is valid
      */
     if (isset($this->request->verb)) {
         if (!in_array($this->request->verb, $this->oaiVerbArr)) {
             $request->setParameter('errorCode', 'badVerb');
             $request->setParameter('errorMsg', 'Value of the verb argument is not a legal OAI-PMH verb, the verb argument is missing, or the verb argument is repeated.');
             $this->forward('oai', 'error');
         }
         /**
          * Validate that attributes are valid
          */
         $allowedKeys = sfConfig::get('mod_oai_' . $this->request->verb . 'Allowed');
         $mandatoryKeys = sfConfig::get('mod_oai_' . $this->request->verb . 'Mandatory');
         if (!QubitOai::checkBadArgument($this->attributesKeys, $allowedKeys, $mandatoryKeys)) {
             $request->setParameter('errorCode', 'badArgument');
             $request->setParameter('errorMsg', 'The request includes illegal arguments, is missing required arguments, includes a repeated argument, or values for arguments have an illegal syntax.');
             $this->forward('oai', 'error');
         }
         // For now, if there is a metadataPrefix requested other than oai_dc, fail the request
         $metadataPrefix = $this->request->metadataPrefix;
         if ($metadataPrefix != '' and $metadataPrefix != 'oai_dc') {
             $request->setParameter('errorCode', 'badVerb');
             $request->setParameter('errorMsg', 'The metadata format identified by the value given for the metadataPrefix argument is not supported by the item or by the repository.');
             $this->forward('oai', 'error');
         }
         switch ($this->request->verb) {
             case 'Identify':
                 $this->verb = 'identify';
                 break;
             case 'ListMetadataFormats':
                 $this->verb = 'listMetadataFormats';
                 break;
             case 'ListSets':
                 $this->verb = 'listSets';
                 break;
             case 'ListRecords':
                 $this->verb = 'listRecords';
                 break;
             case 'ListIdentifiers':
                 $this->verb = 'listIdentifiers';
                 break;
             case 'GetRecord':
                 $this->verb = 'getRecord';
                 break;
             default:
                 $this->verb = 'badVerb';
         }
     } else {
         $this->verb = 'badVerb';
     }
 }
 /**
  * Load array of collections
  *
  * @return array associative array of collection information
  */
 public static function getCollectionArray()
 {
     $collections = QubitInformationObject::getCollections();
     $collectionTable = array();
     foreach ($collections as $collection) {
         $collectionTable[] = array('setSpec' => $collection->getOaiIdentifier(), 'lft' => $collection->getLft(), 'rgt' => $collection->getRgt());
     }
     return $collectionTable;
 }