public function deleteQuestion(array $questionIdList) { if ($questionIdList === null || count($questionIdList) == 0) { return false; } $questionArray = $this->questionDao->findByIdList($questionIdList); $questionsNameList = array(); foreach ($questionArray as $question) { if ($question->base == 1 || (int) $question->removable == 0) { continue; } $questionsNameList[] = $question->name; $valuesObjects = $this->valueDao->findQuestionValues($question->name); $values = array(); foreach ($valuesObjects as $v) { $values[] = $v->value; } foreach ($values as $value) { $key = BOL_LanguageService::getInstance()->findKey(self::QUESTION_LANG_PREFIX, $this->getQuestionLangKeyName(self::LANG_KEY_TYPE_QUESTION_VALUE, $question->name, $value)); if ($key !== null) { BOL_LanguageService::getInstance()->deleteKey($key->id); } } $key = BOL_LanguageService::getInstance()->findKey(self::QUESTION_LANG_PREFIX, $this->getQuestionLangKeyName(self::LANG_KEY_TYPE_QUESTION_LABEL, $question->name)); if ($key !== null) { BOL_LanguageService::getInstance()->deleteKey($key->id); } $key = BOL_LanguageService::getInstance()->findKey(self::QUESTION_LANG_PREFIX, $this->getQuestionLangKeyName(self::LANG_KEY_TYPE_QUESTION_DESCRIPTION, $question->name)); if ($key !== null) { BOL_LanguageService::getInstance()->deleteKey($key->id); } $event = new OW_Event(self::EVENT_ON_QUESTION_DELETE, array('questionName' => $question->name, 'dto' => $question)); OW::getEventManager()->trigger($event); $this->deleteQuestionValues($question->name, $values); } $this->dataDao->deleteByQuestionNamesList($questionsNameList); $this->questionDao->deleteByIdList($questionIdList); $this->updateQuestionsEditStamp(); return (bool) OW::getDbo()->getAffectedRows(); }