Don't like ads? PRO users don't see any ads ;-)
Guest

kshema

By: a guest on Apr 30th, 2012  |  syntax: Diff  |  size: 5.88 KB  |  hits: 15  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. diff --git a/application/admin/index/controllers/ProposalsController.php b/application/admin/index/controllers/ProposalsController.php
  2. index adebc95..616ff14 100644
  3. --- a/application/admin/index/controllers/ProposalsController.php
  4. +++ b/application/admin/index/controllers/ProposalsController.php
  5. @@ -77,7 +77,7 @@ class ProposalsController extends IP_Controller_EventAction {
  6.  
  7.                                 foreach ($this->_getProposalQuestions() as $question) {
  8.                                         $element = $form->getElement(AdditionalQuestionConfigs::KEY_PREFIX . $question->recordID);
  9. -                                       if ($element) {
  10. +                                       if ($element && $element->getValue()) {
  11.                                                 $obj->{AdditionalQuestionConfigs::KEY_PREFIX . $question->recordID} = $element->getValue();
  12.                                         }
  13.                                 }
  14. @@ -346,8 +346,17 @@ class ProposalsController extends IP_Controller_EventAction {
  15.                                         foreach ($this->_getProposalQuestions() as $question) {
  16.                                                 $element = $form->getElement(AdditionalQuestionConfigs::KEY_PREFIX . $question->recordID);
  17.                                                 if ($element) {
  18. -                                                       if(!$notFullAccess || $obj->canWrite(AdditionalQuestionConfigs::KEY_PREFIX . $question->recordID))
  19. -                                                               $obj->{AdditionalQuestionConfigs::KEY_PREFIX . $question->recordID} = $element->getValue();
  20. +                                                       if(!$notFullAccess || $obj->canWrite(AdditionalQuestionConfigs::KEY_PREFIX . $question->recordID)) {
  21. +                                                               if ($element->getValue()) {
  22. +                                                                       $obj->{AdditionalQuestionConfigs::KEY_PREFIX . $question->recordID} = $element->getValue();
  23. +                                                               } else if ($obj->{AdditionalQuestionConfigs::KEY_PREFIX . $question->recordID}) {
  24. +                                                                       $responses = parent::getTableObject('AdditionalQuestionResponses')->fetchAll(
  25. +                                                                                       array('objectID = ?' => $preID, 'questionID = ?' => $question->recordID, 'objectType = ?' => 'Proposals'));
  26. +                                                                       foreach ($responses as $response) {
  27. +                                                                               $response->delete();
  28. +                                                                       }
  29. +                                                               }
  30. +                                                       }      
  31.                                                 }
  32.                                         }
  33.  
  34. diff --git a/db/Event/481-DeleteEmptyResponses.php b/db/Event/481-DeleteEmptyResponses.php
  35. new file mode 100644
  36. index 0000000..5baeeb7
  37. --- /dev/null
  38. +++ b/db/Event/481-DeleteEmptyResponses.php
  39. @@ -0,0 +1,16 @@
  40. +<?php
  41. +/**
  42. + * Delete Empty Proposal Additional Questions Responses
  43. + **/
  44. +class Event_481 extends Migration
  45. +{
  46. +    public function deploy()
  47. +    {
  48. +        $sql = "DELETE  FROM " . $this->getTableName(AdditionalQuestionResponses::TABLE) .
  49. +               "WHERE (ISNULL(`writeInResponse`) OR `writeInResponse`='')
  50. +                       AND (ISNULL(`responseID`) OR `responseID`='')
  51. +                       AND (ISNULL(`textResponse`) OR `textResponse`='')
  52. +                       AND `objectType` = 'Proposals'";
  53. +        return MyDB::getInstance()->execute($sql);
  54. +    }
  55. +}
  56. diff --git a/model/AdditionalQuestionConfig.php b/model/AdditionalQuestionConfig.php
  57. index ec51180..13a96a8 100644
  58. --- a/model/AdditionalQuestionConfig.php
  59. +++ b/model/AdditionalQuestionConfig.php
  60. @@ -272,11 +272,25 @@ class AdditionalQuestionConfig extends IP_Db_Table_Row_EventAbstract implements
  61.         }
  62.  
  63.         /**
  64. +        * Get Usage count from Additional Questions Options.
  65. +        */
  66. +       public function getOptionsUsageCount() {
  67. +               $optionsUsage=0;
  68. +               $additionalQuestionsOptionsTable= IP::getInstance()->getEvent()->getTableObject('AdditionalQuestionOptions');
  69. +               $select = $additionalQuestionsOptionsTable->select()
  70. +                                       ->where('questionID = ' . $this->recordID);
  71. +
  72. +               $optionsUsage=$additionalQuestionsOptionsTable->fetchAll($select);
  73. +
  74. +               return count($optionsUsage);
  75. +       }
  76. +
  77. +       /**
  78.          * Get Responses count from Additional Questions Responses.
  79.          */
  80.         public function getResponseUsageCount() {
  81.                 $responseUsage=0;
  82. -               $additionalQuestionsResponseTable= IP::getInstance()->getEvent()->getTableObject('AdditionalQuestionOptions');
  83. +               $additionalQuestionsResponseTable= IP::getInstance()->getEvent()->getTableObject('AdditionalQuestionResponses');
  84.                 $select = $additionalQuestionsResponseTable->select()
  85.                                         ->where('questionID = ' . $this->recordID);
  86.  
  87. @@ -284,7 +298,7 @@ class AdditionalQuestionConfig extends IP_Db_Table_Row_EventAbstract implements
  88.  
  89.                 return count($responseUsage);
  90.         }
  91. -
  92. +      
  93.         /**
  94.          * Get usage count from Additional Questions Page Builder.
  95.          */
  96. @@ -352,6 +366,7 @@ class AdditionalQuestionConfig extends IP_Db_Table_Row_EventAbstract implements
  97.          * preDelete: Throw exception if Additional Questions Exist in AdditionalQuestionResponses or in the Page Builder Elements.
  98.          */
  99.         public function preDelete() {
  100. +               $optionsUsageCount=$this->getOptionsUsageCount();
  101.                 $responseUsageCount=$this->getResponseUsageCount();
  102.                 $pageBuilderUsageCount = $this->getPageBuilderUsageCount();
  103.                 $savedReportUsageCount = $this->getSavedReportsUsageCount();
  104. @@ -359,10 +374,10 @@ class AdditionalQuestionConfig extends IP_Db_Table_Row_EventAbstract implements
  105.                 $templatesUsageCount = $this->getTemplatesUsageCount();
  106.                 $sponsorshipItemUsageCount = $this->getSponsorshipItemsUsageCount();
  107.  
  108. -               if($responseUsageCount > 0) {
  109. +               if($optionsUsageCount > 0) {
  110.                         throw new MessageException(AdditionalQuestionConfigs::DELETE_ADDITIONAL_VALUES);
  111.                 }
  112. -
  113. +              
  114.          /**
  115.           * If in use add to list to display error message to user.
  116.           */
  117. @@ -382,6 +397,9 @@ class AdditionalQuestionConfig extends IP_Db_Table_Row_EventAbstract implements
  118.          if ($sponsorshipItemUsageCount > 0) {
  119.              $usedBy[] = $sponsorshipItemUsageCount . ' ' . (($sponsorshipItemUsageCount > 1) ? IP::_('SponsorshipItems::PLURAL') : IP::_('SponsorshipItems::SINGULAR'));
  120.          }
  121. +               if ($responseUsageCount > 0) {
  122. +            $usedBy[] = $responseUsageCount . ' ' . (($responseUsageCount > 1) ? IP::_('Proposals::PLURAL') : IP::_('Proposals::SINGULAR'));
  123. +        }
  124.          if (count($usedBy) > 0) {
  125.              $usageMessage = str_replace('{usedBy}', implode(', ', $usedBy), IP::_('AdditionalQuestionConfigs::DELETE_FAILED_NON_EMPTY'));
  126.              throw new MessageException($usageMessage);