public function execute($request)
 {
     if (!isset($request->limit)) {
         $request->limit = sfConfig::get('app_hits_per_page');
     }
     $criteria = new Criteria();
     switch ($request->sort) {
         case 'nameDown':
             $criteria->addDescendingOrderByColumn('authorized_form_of_name');
             break;
         case 'nameUp':
             $criteria->addAscendingOrderByColumn('authorized_form_of_name');
             break;
         case 'updatedDown':
             $criteria->addDescendingOrderByColumn(QubitObject::UPDATED_AT);
             break;
         case 'updatedUp':
             $criteria->addAscendingOrderByColumn(QubitObject::UPDATED_AT);
             break;
         default:
             if (!$this->getUser()->isAuthenticated()) {
                 $criteria->addAscendingOrderByColumn('authorized_form_of_name');
             } else {
                 $criteria->addDescendingOrderByColumn(QubitObject::UPDATED_AT);
             }
     }
     // Do source culture fallback
     $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 'QubitFunction');
     // Page results
     $this->pager = new QubitPager('QubitFunction');
     $this->pager->setCriteria($criteria);
     $this->pager->setMaxPerPage($request->limit);
     $this->pager->setPage($request->page);
 }
 public function execute($request)
 {
     $this->resource = $request->getAttribute('sf_route')->resource;
     $criteria = new Criteria();
     $criteria->add(QubitEvent::ACTOR_ID, $this->resource->id);
     $criteria->addJoin(QubitEvent::INFORMATION_OBJECT_ID, QubitInformationObject::ID);
     $criteria->addAscendingOrderByColumn(QubitEvent::TYPE_ID);
     // Sort info objects alphabetically (w/ fallback)
     $criteria->addAscendingOrderByColumn('title');
     $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 'QubitInformationObject');
     // Filter draft descriptions
     $criteria = QubitAcl::addFilterDraftsCriteria($criteria);
     $this->relatedInfoObjects = array();
     foreach (QubitEvent::get($criteria) as $item) {
         $this->relatedInfoObjects[$item->type->getRole()][] = $item->informationObject;
     }
     // Get "subject of" information objects (name access point)
     $criteria = new Criteria();
     $criteria->add(QubitRelation::OBJECT_ID, $this->resource->id);
     $criteria->add(QubitRelation::TYPE_ID, QubitTerm::NAME_ACCESS_POINT_ID);
     $this->subjectInfoObjects = array();
     foreach (QubitRelation::get($criteria) as $item) {
         $this->subjectInfoObjects[] = $item->subject;
     }
 }
 public function execute($request)
 {
     if (!$this->getUser()->isAuthenticated()) {
         QubitAcl::forwardUnauthorized();
     }
     if (!isset($request->limit)) {
         $request->limit = sfConfig::get('app_hits_per_page');
     }
     $criteria = new Criteria();
     // Do source culture fallback
     $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 'QubitPhysicalObject');
     switch ($request->sort) {
         case 'nameDown':
             $criteria->addDescendingOrderByColumn('name');
             break;
         case 'locationDown':
             $criteria->addDescendingOrderByColumn('location');
             break;
         case 'locationUp':
             $criteria->addAscendingOrderByColumn('location');
             break;
         case 'nameUp':
         default:
             $request->sort = 'nameUp';
             $criteria->addAscendingOrderByColumn('name');
     }
     // Page results
     $this->pager = new QubitPager('QubitPhysicalObject');
     $this->pager->setCriteria($criteria);
     $this->pager->setMaxPerPage($request->limit);
     $this->pager->setPage($request->page);
 }
 public function execute($request)
 {
     if (!isset($request->limit)) {
         $request->limit = sfConfig::get('app_hits_per_page');
     }
     $criteria = new Criteria();
     if (isset($this->getRoute()->resource)) {
         $this->resource = $this->getRoute()->resource;
         $criteria->add(QubitInformationObject::PARENT_ID, $this->resource->id);
     } else {
         $criteria->add(QubitInformationObject::PARENT_ID, QubitInformationObject::ROOT_ID);
     }
     if (isset($request->repositoryId)) {
         $criteria->add(QubitInformationObject::REPOSITORY_ID, $request->repositoryId);
     }
     if (isset($request->collectionType)) {
         $criteria->add(QubitInformationObject::COLLECTION_TYPE_ID, $request->collectionType);
     }
     $fallbackTable = 'QubitInformationObject';
     switch ($request->sort) {
         case 'repositoryDown':
             $fallbackTable = 'QubitActor';
             $criteria->addJoin(QubitInformationObject::REPOSITORY_ID, QubitActor::ID, Criteria::LEFT_JOIN);
             $criteria->addDescendingOrderByColumn('authorized_form_of_name');
             break;
         case 'repositoryUp':
             $fallbackTable = 'QubitActor';
             $criteria->addJoin(QubitInformationObject::REPOSITORY_ID, QubitActor::ID, Criteria::LEFT_JOIN);
             $criteria->addAscendingOrderByColumn('authorized_form_of_name');
             break;
         case 'titleDown':
             $criteria->addDescendingOrderByColumn('title');
             break;
         case 'titleUp':
             $criteria->addAscendingOrderByColumn('title');
             break;
         case 'updatedDown':
             $criteria->addDescendingOrderByColumn(QubitObject::UPDATED_AT);
             break;
         case 'updatedUp':
             $criteria->addAscendingOrderByColumn(QubitObject::UPDATED_AT);
             break;
         default:
             if (!$this->getUser()->isAuthenticated()) {
                 $criteria->addAscendingOrderByColumn('title');
             } else {
                 $criteria->addDescendingOrderByColumn(QubitObject::UPDATED_AT);
             }
     }
     // Do source culture fallback
     $criteria = QubitCultureFallback::addFallbackCriteria($criteria, $fallbackTable);
     // Filter drafts
     $criteria = QubitAcl::addFilterDraftsCriteria($criteria);
     // Page results
     $this->pager = new QubitPager('QubitInformationObject');
     $this->pager->setCriteria($criteria);
     $this->pager->setMaxPerPage($request->limit);
     $this->pager->setPage($request->page);
 }
Ejemplo n.º 5
0
 public static function getTaxonomyTerms($taxonomyId, $options = array())
 {
     $criteria = new Criteria();
     $criteria->add(QubitTerm::TAXONOMY_ID, $taxonomyId);
     // Only include top-level terms if option is set
     if (isset($options['level']) && $options['level'] == 'top') {
         $criteria->add(QubitTerm::PARENT_ID, QubitTerm::ROOT_ID);
     }
     // Sort alphabetically
     $criteria->addAscendingOrderByColumn('name');
     // Do source culture fallback
     $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 'QubitTerm');
     return QubitTerm::get($criteria);
 }
 public function execute($request)
 {
     if (!isset($request->limit)) {
         $request->limit = sfConfig::get('app_hits_per_page');
     }
     $criteria = new Criteria();
     $criteria->add(QubitActor::PARENT_ID, QubitActor::ROOT_ID);
     // Add criteria to exclude actors that are users or repository objects
     $criteria = QubitActor::addGetOnlyActorsCriteria($criteria);
     $fallbackTable = 'QubitActor';
     switch ($request->sort) {
         case 'nameDown':
             $criteria->addDescendingOrderByColumn('authorized_form_of_name');
             break;
         case 'nameUp':
             $criteria->addAscendingOrderByColumn('authorized_form_of_name');
             break;
         case 'typeDown':
             $fallbackTable = 'QubitTerm';
             $criteria->addJoin(QubitActor::ENTITY_TYPE_ID, QubitTerm::ID, Criteria::LEFT_JOIN);
             $criteria->addDescendingOrderByColumn('name');
             break;
         case 'typeUp':
             $fallbackTable = 'QubitTerm';
             $criteria->addJoin(QubitActor::ENTITY_TYPE_ID, QubitTerm::ID, Criteria::LEFT_JOIN);
             $criteria->addAscendingOrderByColumn('name');
             break;
         case 'updatedDown':
             $criteria->addDescendingOrderByColumn(QubitObject::UPDATED_AT);
             break;
         case 'updatedUp':
             $criteria->addAscendingOrderByColumn(QubitObject::UPDATED_AT);
             break;
         default:
             if (!$this->getUser()->isAuthenticated()) {
                 $criteria->addAscendingOrderByColumn('authorized_form_of_name');
             } else {
                 $criteria->addDescendingOrderByColumn(QubitObject::UPDATED_AT);
             }
     }
     // Do source culture fallback
     $criteria = QubitCultureFallback::addFallbackCriteria($criteria, $fallbackTable);
     // Page results
     $this->pager = new QubitPager('QubitActor');
     $this->pager->setCriteria($criteria);
     $this->pager->setMaxPerPage($request->limit);
     $this->pager->setPage($request->page);
 }
Ejemplo n.º 7
0
 public function execute($request)
 {
     if (!isset($request->limit)) {
         $request->limit = sfConfig::get('app_hits_per_page');
     }
     $criteria = new Criteria();
     $criteria->add(QubitAclGroup::ID, QubitAclGroup::ROOT_ID, Criteria::NOT_EQUAL);
     $criteria->addAscendingOrderByColumn('name');
     $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 'QubitAclGroup');
     // Page results
     $this->pager = new QubitPager('QubitAclGroup');
     $this->pager->setCriteria($criteria);
     $this->pager->setMaxPerPage($request->limit);
     $this->pager->setPage($request->page);
     $this->groups = $this->pager->getResults();
 }
Ejemplo n.º 8
0
 /**
  * Execute digitalobject list action
  *
  * @param sfWebRequest $request
  */
 public function execute($request)
 {
     // Build funky join query to get a count of top level digital objects
     // for each media type (term)
     $criteria = new Criteria();
     $criteria->add(QubitTerm::TAXONOMY_ID, QubitTaxonomy::MEDIA_TYPE_ID);
     $criteria->addJoin(QubitTerm::ID, QubitDigitalObject::MEDIA_TYPE_ID, Criteria::LEFT_JOIN);
     $criteria->addAsColumn('hits', 'COUNT(' . QubitDigitalObject::ID . ')');
     $criteria->addGroupByColumn(QubitTerm::ID);
     // Add I18n fallback
     $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 'QubitTerm');
     $criteria->addAscendingOrderByColumn('name');
     // Filter drafts
     $criteria->addJoin(QubitDigitalObject::INFORMATION_OBJECT_ID, QubitInformationObject::ID);
     $criteria = QubitAcl::addFilterDraftsCriteria($criteria);
     $this->terms = QubitTerm::get($criteria);
 }
Ejemplo n.º 9
0
 public function execute($request)
 {
     if (!isset($request->limit)) {
         $request->limit = sfConfig::get('app_hits_per_page');
     }
     $criteria = new Criteria();
     // Show only editable taxonomies
     $criteria = QubitTaxonomy::addEditableTaxonomyCriteria($criteria);
     // Do source culture fallback
     $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 'QubitTaxonomy');
     $criteria->addAscendingOrderByColumn('name');
     // Page results
     $this->pager = new QubitPager('QubitTaxonomy');
     $this->pager->setCriteria($criteria);
     $this->pager->setMaxPerPage($request->limit);
     $this->pager->setPage($request->page);
     $this->taxonomies = $this->pager->getResults();
 }
 public function execute($request)
 {
     if (!isset($request->limit)) {
         $request->limit = sfConfig::get('app_hits_per_page');
     }
     $this->resource = $this->getRoute()->resource;
     $criteria = new Criteria();
     $criteria->add(QubitObjectTermRelation::TERM_ID, $this->resource->id);
     $criteria->addJoin(QubitObjectTermRelation::OBJECT_ID, QubitInformationObject::ID);
     $criteria = QubitAcl::addFilterDraftsCriteria($criteria);
     $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 'QubitInformationObject');
     $criteria->addAscendingOrderByColumn('title');
     $this->pager = new QubitPager('QubitInformationObject');
     $this->pager->setCriteria($criteria);
     $this->pager->setMaxPerPage($request->limit);
     $this->pager->setPage($request->page);
     $this->informationObjects = $this->pager->getResults();
 }
Ejemplo n.º 11
0
 public function execute($request)
 {
     if (!isset($request->limit)) {
         $request->limit = sfConfig::get('app_hits_per_page');
     }
     $this->resource = $this->getRoute()->resource;
     $criteria = new Criteria();
     $criteria->add(QubitTerm::TAXONOMY_ID, $this->resource->id);
     $criteria->add(QubitTerm::PARENT_ID, QubitTerm::ROOT_ID);
     // Do source culture fallback
     $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 'QubitTerm');
     $criteria->addAscendingOrderByColumn('name');
     // Page results
     $this->pager = new QubitPager('QubitTerm');
     $this->pager->setCriteria($criteria);
     $this->pager->setMaxPerPage($request->limit);
     $this->pager->setPage($request->page);
     $this->terms = $this->pager->getResults();
 }
 public function execute($request)
 {
     if (!isset($request->limit)) {
         $request->limit = sfConfig::get('app_hits_per_page');
     }
     $criteria = new Criteria();
     // Do source culture fallback
     $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 'QubitActor');
     // don't let ananymous users see records with draft status
     if (!$this->getUser()->isAuthenticated()) {
         $criteria->addJoin(QubitRepository::ID, QubitStatus::OBJECT_ID, Criteria::LEFT_JOIN);
         $ct1 = $criteria->getNewCriterion(QubitStatus::TYPE_ID, QubitTerm::STATUS_TYPE_PUBLICATION_ID);
         $ct2 = $criteria->getNewCriterion(QubitStatus::STATUS_ID, QubitTerm::PUBLICATION_STATUS_PUBLISHED_ID);
         $ct1->addAnd($ct2);
         $criteria->addAnd($ct1);
     }
     switch ($request->sort) {
         case 'nameDown':
             $criteria->addDescendingOrderByColumn('authorized_form_of_name');
             break;
         case 'nameUp':
             $criteria->addAscendingOrderByColumn('authorized_form_of_name');
             break;
         case 'updatedDown':
             $criteria->addDescendingOrderByColumn(QubitObject::UPDATED_AT);
             break;
         case 'updatedUp':
             $criteria->addAscendingOrderByColumn(QubitObject::UPDATED_AT);
             break;
         default:
             if (!$this->getUser()->isAuthenticated()) {
                 $criteria->addAscendingOrderByColumn('authorized_form_of_name');
             } else {
                 $criteria->addDescendingOrderByColumn(QubitObject::UPDATED_AT);
             }
     }
     // Page results
     $this->pager = new QubitPager('QubitRepository');
     $this->pager->setCriteria($criteria);
     $this->pager->setMaxPerPage($request->limit);
     $this->pager->setPage($request->page);
 }
 public function execute($request)
 {
     if (!isset($request->limit)) {
         $request->limit = sfConfig::get('app_hits_per_page');
     }
     // HACK Use id deliberately, vs. slug, because "Subjects" and "Places"
     // menus still use id
     $this->resource = QubitTaxonomy::getById($request->id);
     if (!isset($this->resource)) {
         $this->forward404();
     }
     $criteria = new Criteria();
     $criteria->add(QubitTerm::TAXONOMY_ID, $this->resource->id);
     $criteria->addJoin(QubitTerm::ID, QubitObjectTermRelation::TERM_ID);
     $criteria->addJoin(QubitObjectTermRelation::OBJECT_ID, QubitInformationObject::ID);
     $criteria = QubitAcl::addFilterDraftsCriteria($criteria);
     // Do culture fallback
     $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 'QubitTerm');
     $criteria->addGroupByColumn(QubitTerm::ID);
     $criteria->addAsColumn('hits', 'COUNT(' . QubitTerm::ID . ')');
     switch ($request->sort) {
         case 'hitsDown':
             $criteria->addDescendingOrderByColumn('hits');
             break;
         case 'hitsUp':
             $criteria->addAscendingOrderByColumn('hits');
             break;
         case 'termNameDown':
             $criteria->addDescendingOrderByColumn('name');
             break;
         case 'termNameUp':
         default:
             $criteria->addAscendingOrderByColumn('name');
             break;
     }
     $this->pager = new QubitPager('QubitTerm');
     $this->pager->setCriteria($criteria);
     $this->pager->setMaxPerPage($request->limit);
     $this->pager->setPage($request->page);
     $this->terms = $this->pager->getResults();
 }
 protected function addField($name)
 {
     switch ($name) {
         case 'searchFields':
             break;
         case 'repository':
             // Get list of repositories
             $criteria = new Criteria();
             // Do source culture fallback
             $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 'QubitActor');
             $criteria->addAscendingOrderByColumn('authorized_form_of_name');
             $choices = array('' => '');
             foreach (QubitRepository::get($criteria) as $repository) {
                 $choices[$repository->id] = $repository;
             }
             $this->form->setValidator($name, new sfValidatorChoice(array('choices' => array_keys($choices))));
             $this->form->setWidget($name, new sfWidgetFormSelect(array('choices' => $choices), array('style' => 'min-width: 50%; width: auto')));
             break;
         case 'mediatype':
             // Get list of media types
             $criteria = new Criteria();
             $criteria->add(QubitTerm::TAXONOMY_ID, QubitTaxonomy::MATERIAL_TYPE_ID);
             // Do source culture fallback
             $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 'QubitTerm');
             $criteria->addAscendingOrderByColumn('name');
             $choices = array('' => '');
             foreach (QubitTerm::get($criteria) as $mediatype) {
                 $choices[$mediatype->id] = $mediatype;
             }
             $this->form->setValidator($name, new sfValidatorChoice(array('choices' => array_keys($choices))));
             $this->form->setWidget($name, new sfWidgetFormSelect(array('choices' => $choices), array('style' => 'width: auto')));
             break;
         case 'hasDigitalObject':
             $choices = array('' => '', 'true' => 'Yes', 'false' => 'No');
             $this->form->setValidator($name, new sfValidatorChoice(array('choices' => array_keys($choices))));
             $this->form->setWidget($name, new sfWidgetFormSelect(array('choices' => $choices), array('style' => 'width: auto')));
             break;
     }
 }
 public function execute($request)
 {
     if (!$this->context->user->hasCredential(array('contributor', 'editor', 'administrator'), false)) {
         QubitAcl::forwardUnauthorized();
     }
     if (!isset($request->limit)) {
         $request->limit = sfConfig::get('app_hits_per_page');
     }
     $criteria = new Criteria();
     // Do source culture fallback
     $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 'QubitActor');
     switch ($request->sort) {
         case 'nameDown':
             $criteria->addDescendingOrderByColumn('authorized_form_of_name');
             break;
         case 'nameUp':
             $criteria->addAscendingOrderByColumn('authorized_form_of_name');
             break;
         case 'updatedDown':
             $criteria->addDescendingOrderByColumn(QubitObject::UPDATED_AT);
             break;
         case 'updatedUp':
             $criteria->addAscendingOrderByColumn(QubitObject::UPDATED_AT);
             break;
         default:
             if (!$this->getUser()->isAuthenticated()) {
                 $criteria->addAscendingOrderByColumn('authorized_form_of_name');
             } else {
                 $criteria->addDescendingOrderByColumn(QubitObject::UPDATED_AT);
             }
     }
     // Page results
     $this->pager = new QubitPager('QubitDonor');
     $this->pager->setCriteria($criteria);
     $this->pager->setMaxPerPage($request->limit);
     $this->pager->setPage($request->page);
 }
 public function execute($request)
 {
     if (!isset($request->limit)) {
         $request->limit = sfConfig::get('app_hits_per_page');
     }
     $this->resource = $request->getAttribute('sf_route')->resource;
     if (!isset($this->resource)) {
         return sfView::NONE;
     }
     $criteria = new Criteria();
     $criteria->addJoin(QubitInformationObject::ID, QubitObject::ID);
     $criteria->add(QubitInformationObject::REPOSITORY_ID, $this->resource->id);
     $criteria->addAscendingOrderByColumn('title');
     // Sort holdings alphabetically (w/ fallback)
     $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 'QubitInformationObject');
     // Filter draft descriptions
     $criteria = QubitAcl::addFilterDraftsCriteria($criteria);
     // Paginate holdings list
     $this->pager = new QubitPager('QubitInformationObject');
     $this->pager->setCriteria($criteria);
     $this->pager->setMaxPerPage($request->limit);
     $this->pager->setPage($request->page);
     $this->holdings = $this->pager->getResults();
 }
 public function execute($request)
 {
     $criteria = new Criteria();
     $criteria->addJoin(QubitActor::ID, QubitActorI18n::ID);
     $criteria->add(QubitActorI18n::AUTHORIZED_FORM_OF_NAME, "{$request->query}%", Criteria::LIKE);
     $criteria->addAscendingOrderByColumn('authorized_form_of_name');
     $criteria->setDistinct();
     $criteria->setLimit(sfConfig::get('app_hits_per_page', 10));
     $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 'QubitActor');
     // Filter "denied" repositories if list for repository autocomplete on
     // information object form
     if (isset($request->aclAction)) {
         $repositoryList = array();
         $repositoryAccess = QubitAcl::getRepositoryAccess($request->aclAction);
         // If all repositories are denied, no response
         if (1 == count($repositoryAccess) && QubitAcl::DENY == $repositoryAccess[0]['access']) {
             return sfView::NONE;
         } else {
             while ($repo = array_shift($repositoryAccess)) {
                 if ('*' != $repo['id']) {
                     $repositoryList[] = $repo['id'];
                 } else {
                     if (QubitAcl::DENY == $repo['access']) {
                         // Require repositories to be specifically allowed (all others
                         // prohibited)
                         $criteria->add(QubitRepository::ID, $repositoryList + array('null'), Criteria::IN);
                     } else {
                         // Prohibit specified repositories (all others allowed)
                         $criteria->add(QubitRepository::ID, $repositoryList, Criteria::NOT_IN);
                     }
                 }
             }
         }
     }
     $this->repositories = QubitRepository::get($criteria);
 }
 public function doSearch()
 {
     $criteria = new Criteria();
     $this->sort = $this->request->getParameter('sort', 'updatedDown');
     // This join seems to be necessary to avoid cross joining the local table
     // with the QubitObject table
     $criteria->addJoin(constant($this->className . '::ID'), QubitObject::ID);
     switch ($this->form->getValue('className')) {
         case 'QubitActor':
             $nameColumn = 'authorized_form_of_name';
             $this->nameColumnDisplay = 'Name';
             $criteria = QubitActor::addGetOnlyActorsCriteria($criteria);
             $criteria->add(QubitActor::PARENT_ID, null, Criteria::ISNOTNULL);
             break;
         case 'QubitFunction':
             $nameColumn = 'authorized_form_of_name';
             $this->nameColumnDisplay = 'Name';
             break;
         case 'QubitRepository':
             $nameColumn = 'authorized_form_of_name';
             $this->nameColumnDisplay = 'Name';
             $criteria = QubitRepository::addGetOnlyRepositoryCriteria($criteria);
             break;
         case 'QubitTerm':
             $nameColumn = 'name';
             $this->nameColumnDisplay = 'Name';
             $criteria->add(QubitTerm::PARENT_ID, null, Criteria::ISNOTNULL);
             break;
             // Default: information object
         // Default: information object
         default:
             $nameColumn = 'title';
             $this->nameColumnDisplay = 'Title';
             $criteria->add(QubitInformationObject::PARENT_ID, null, Criteria::ISNOTNULL);
     }
     if ('QubitInformationObject' == $this->className && 'all' != $this->form->getValue('publicationStatus')) {
         $criteria->addJoin(QubitObject::ID, QubitStatus::OBJECT_ID);
         $criteria->add(QubitStatus::STATUS_ID, $this->form->getValue('publicationStatus'));
     }
     // End date at midnight
     if (null != $this->form->getValue('dateEnd')) {
         $dateEnd = $this->form->getValue('dateEnd') . ' 24:00:00';
     }
     // Add date criteria
     switch ($dateOf = $this->form->getValue('dateOf')) {
         case 'CREATED_AT':
         case 'UPDATED_AT':
             if (null !== $this->form->getValue('dateStart')) {
                 $criteria->addAnd(constant('QubitObject::' . $dateOf), $this->form->getValue('dateStart'), Criteria::GREATER_EQUAL);
             }
             if (isset($dateEnd)) {
                 $criteria->addAnd(constant('QubitObject::' . $dateOf), $dateEnd, Criteria::LESS_EQUAL);
             }
             break;
         default:
             if (null !== $this->form->getValue('dateStart')) {
                 $c1 = $criteria->getNewCriterion(QubitObject::CREATED_AT, $this->form->getValue('dateStart'), Criteria::GREATER_EQUAL);
                 $c2 = $criteria->getNewCriterion(QubitObject::UPDATED_AT, $this->form->getValue('dateStart'), Criteria::GREATER_EQUAL);
                 $c1->addOr($c2);
                 $criteria->addAnd($c1);
             }
             if (isset($dateEnd)) {
                 $c3 = $criteria->getNewCriterion(QubitObject::CREATED_AT, $dateEnd, Criteria::LESS_EQUAL);
                 $c4 = $criteria->getNewCriterion(QubitObject::UPDATED_AT, $dateEnd, Criteria::LESS_EQUAL);
                 $c3->addOr($c4);
                 $criteria->addAnd($c3);
             }
     }
     // Add sort criteria
     switch ($this->sort) {
         case 'nameDown':
             $criteria->addDescendingOrderByColumn($nameColumn);
             break;
         case 'nameUp':
             $criteria->addAscendingOrderByColumn($nameColumn);
             break;
         case 'updatedUp':
             $criteria->addAscendingOrderByColumn(QubitObject::UPDATED_AT);
             break;
         case 'updatedDown':
         default:
             $criteria->addDescendingOrderByColumn(QubitObject::UPDATED_AT);
     }
     // Add fallback criteria for name
     if ('nameDown' == $this->sort || 'nameUp' == $this->sort) {
         $criteria = QubitCultureFallback::addFallbackCriteria($criteria, $this->form->getValue('className'));
     }
     // Page results
     $this->pager = new QubitPager($this->className);
     $this->pager->setCriteria($criteria);
     $this->pager->setMaxPerPage($this->form->getValue('limit'));
     $this->pager->setPage($this->request->getParameter('page', 1));
 }
Ejemplo n.º 19
0
 private static function getFullTree($currentNode, $limit)
 {
     $tree = array();
     // Get direct ancestors
     $ancestors = $currentNode->getAncestors()->orderBy('lft');
     foreach ($ancestors as $ancestor) {
         $tree[$ancestor->id] = $ancestor;
     }
     // Get siblings (with limit) - but don't show sibling collection roots
     $totalSiblings = 0;
     $criteria = new Criteria();
     $criteria->add(QubitTerm::PARENT_ID, $currentNode->parentId);
     if (QubitTerm::ROOT_ID == $currentNode->parentId) {
         $criteria->add(QubitTerm::TAXONOMY_ID, $currentNode->taxonomyId);
     }
     $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 'QubitTerm');
     $criteria->addAscendingOrderByColumn('name');
     if (0 < $limit) {
         $criteria->setLimit($limit);
     }
     foreach (QubitTerm::get($criteria) as $item) {
         // Keep track of position of $currentNode in array
         if ($item === $currentNode) {
             $curIndex = count($tree);
         }
         $tree[] = $item;
     }
     $totalSiblings = intval(BasePeer::doCount($criteria->setLimit(0))->fetchColumn(0));
     // Add current object to $tree if it wasn't added as a sibling
     if (!isset($curIndex)) {
         if ($totalSiblings >= $limit) {
             // replace last sibling with current object
             array_splice($tree, -1, 1, array($currentNode));
         } else {
             $tree[] = $currentNode;
         }
         $curIndex = count($tree) - 1;
     }
     if ($totalSiblings > $limit) {
         $tree[] = array('total' => $totalSiblings, 'limit' => $limit, 'parentId' => $currentNode->parentId);
     }
     // Get children (with limit)
     $totalChildren = 0;
     $criteria = new Criteria();
     $criteria->add(QubitTerm::PARENT_ID, $currentNode->id);
     $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 'QubitTerm');
     $criteria->addAscendingOrderByColumn('name');
     if (0 < $limit) {
         $criteria->setLimit($limit);
     }
     if (0 < count($children = QubitTerm::get($criteria))) {
         foreach ($children as $item) {
             $childs[] = $item;
         }
         $totalChildren = intval(BasePeer::doCount($criteria->setLimit(0))->fetchColumn(0));
         if ($totalChildren > $limit) {
             $childs[] = array('total' => $totalChildren, 'limit' => $limit, 'parentId' => $currentNode->id);
         }
         // Insert children right AFTER current info object in array
         if ($curIndex == count($tree) - 1) {
             $tree = array_merge($tree, $childs);
         } else {
             array_splice($tree, $curIndex + 1, 0, $childs);
         }
     }
     return $tree;
 }
 public static function addTreeViewSortCriteria($criteria)
 {
     switch (sfConfig::get('app_sort_treeview_informationobject')) {
         case 'identifierTitle':
             $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 'QubitInformationObject');
             $criteria->addAscendingOrderByColumn('identifier');
             $criteria->addAscendingOrderByColumn('title');
             break;
         case 'title':
             $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 'QubitInformationObject');
             $criteria->addAscendingOrderByColumn('title');
             break;
         default:
             $criteria->addAscendingOrderByColumn(self::LFT);
     }
     return $criteria;
 }
Ejemplo n.º 21
0
 public static function getAllExceptUsers($options = array())
 {
     //returns all Actor objects except those that are
     //also an instance of the User class
     $criteria = new Criteria();
     $criteria->add(QubitObject::CLASS_NAME, 'QubitActor');
     // sort by name
     $criteria->addAscendingOrderByColumn('authorized_form_of_name');
     // Do fallback
     $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 'QubitActor', $options);
     return QubitActor::get($criteria);
 }