public List<TaggableItem> getItems(
     TaggableActivity activity,
     TaggingProvider provider,
     boolean getMyItemsOnly,
     String taggedItem) {
   List<TaggableItem> items = new ArrayList<TaggableItem>();
   // Only return items to a specified rating provider
   if (ratingProviderIds.contains(provider.getId())) {
     WizardPageDefinition def = (WizardPageDefinition) activity.getObject();
     for (Iterator<WizardPage> i = def.getPages().iterator(); i.hasNext(); ) {
       // Make sure this page is evaluatable by the current
       // user
       WizardPage page = i.next();
       if (page != null
           && (page.getStatus().equals(MatrixFunctionConstants.PENDING_STATUS)
               || page.getStatus().equals(MatrixFunctionConstants.COMPLETE_STATUS))
           && (!getMyItemsOnly && canEvaluate(page))) {
         items.add(getItem(page));
       }
     }
   } else {
     // Notify other tagging providers that they aren't accepted here yet
     logger.warn(this + ".getItems(): Provider with id " + provider.getId() + " not allowed!");
   }
   return items;
 }
 public List<TaggableItem> getItems(
     TaggableActivity activity,
     String userId,
     TaggingProvider provider,
     boolean getMyItemsOnly,
     String taggedItem) {
   List<TaggableItem> items = new ArrayList<TaggableItem>();
   // Return custom list of items to rating providers. This
   // list should match that seen in the evaluation item list (?)
   if (ratingProviderIds.contains(provider.getId())) {
     WizardPageDefinition def = (WizardPageDefinition) activity.getObject();
     for (Iterator<WizardPage> i = def.getPages().iterator(); i.hasNext(); ) {
       // Make sure this page is evaluatable by the current
       // user
       WizardPage page = i.next();
       if (page != null
           && (page.getStatus().equals(MatrixFunctionConstants.PENDING_STATUS)
               || page.getStatus().equals(MatrixFunctionConstants.COMPLETE_STATUS))
           && (page.getOwner().getId().getValue().equals(userId)
               || (!getMyItemsOnly && canEvaluate(page)))) {
         items.add(getItem(page));
         // There is only one submitted page per definition, so break
         // here
         break;
       }
     }
   } else {
     // Notify other tagging providers that they aren't accepted here yet
     logger.warn(this + ".getItems() 2: Provider with id " + provider.getId() + " not allowed!");
   }
   return items;
 }
 public boolean allowRemoveTags(TaggableActivity activity) {
   WizardPageDefinition pageDef = (WizardPageDefinition) activity.getObject();
   // Try to get a wizard page sequence
   WizardPageSequence ps = wizardManager.getWizardPageSeqByDef(pageDef.getId());
   boolean authorized = false;
   if (ps != null) {
     Wizard wizard = ps.getCategory().getWizard();
     /*
      * If you own the wizard, or if you can delete wizards, or if you
      * can revise wizards, then you are able to delete page definitions
      * and can, therefore, remove tags.
      */
     authorized =
         sessionManager
                 .getCurrentSessionUserId()
                 .equalsIgnoreCase(wizard.getOwner().getId().getValue())
             || authzManager.isAuthorized(WizardFunctionConstants.EDIT_WIZARD, wizard.getId())
             || authzManager.isAuthorized(WizardFunctionConstants.DELETE_WIZARD, wizard.getId());
   } else {
     ScaffoldingCell cell = matrixManager.getScaffoldingCellByWizardPageDef(pageDef.getId());
     /*
      * If you can create or delete scaffolding, then you are able to
      * delete scaffolding cells and can, therefore, remove tags.
      */
     authorized =
         authzManager.isAuthorized(
                 MatrixFunctionConstants.CREATE_SCAFFOLDING, cell.getScaffolding().getId())
             || authzManager.isAuthorized(
                 MatrixFunctionConstants.DELETE_SCAFFOLDING_ANY, cell.getScaffolding().getId())
             || (authzManager.isAuthorized(
                     MatrixFunctionConstants.DELETE_SCAFFOLDING_OWN, cell.getScaffolding().getId())
                 && cell.getScaffolding()
                     .getOwner()
                     .getId()
                     .equals(getAuthnManager().getAgent().getId()));
   }
   return authorized;
 }