Beispiel #1
0
 private function setDefaultDate($year, $month, $day)
 {
     if (UTIL_Validator::isDateValid((int) $month, (int) $day, (int) $year)) {
         $this->defaultDate['year'] = (int) $year;
         $this->defaultDate['month'] = (int) $month;
         $this->defaultDate['day'] = (int) $day;
     } else {
         throw new InvalidArgumentException('Invalid date!');
     }
 }
 /**
  * Save questions data.
  *
  * @param array $data
  * @param int $userId
  */
 public function saveQuestionsData(array $data, $userId)
 {
     if ($data === null || !is_array($data)) {
         return false;
     }
     $user = null;
     if ((int) $userId > 0) {
         $user = $this->userService->findUserById($userId);
         if ($user === null) {
             return false;
         }
     } else {
         return false;
     }
     $oldUserEmail = $user->email;
     $event = new OW_Event('base.questions_save_data', array('userId' => $userId), $data);
     OW::getEventManager()->trigger($event);
     $data = $event->getData();
     $dataFields = array_keys($data);
     $questions = $this->questionDao->findQuestionsByQuestionNameList($dataFields);
     $questionsData = $this->dataDao->findByQuestionsNameList($dataFields, $userId);
     $questionsUserData = array();
     foreach ($questionsData as $questionData) {
         $questionsUserData[$questionData->questionName] = $questionData;
     }
     $questionDataArray = array();
     foreach ($questions as $key => $question) {
         $value = null;
         if (isset($data[$question->name])) {
             switch ($question->type) {
                 case self::QUESTION_VALUE_TYPE_TEXT:
                     $value = $question->presentation !== self::QUESTION_PRESENTATION_PASSWORD ? $this->questionTextFormatter(trim($data[$question->name])) : BOL_UserService::getInstance()->hashPassword($data[$question->name]);
                     if ((int) $question->base === 1 && in_array($question->name, $dataFields)) {
                         $property = new ReflectionProperty('BOL_User', $question->name);
                         $property->setValue($user, $value);
                     } else {
                         if (isset($questionsUserData[$question->name])) {
                             $questionData = $questionsUserData[$question->name];
                         } else {
                             $questionData = new BOL_QuestionData();
                             $questionData->userId = $userId;
                             $questionData->questionName = $question->name;
                         }
                         $questionData->textValue = $value;
                         if ($question->presentation === self::QUESTION_PRESENTATION_URL && !empty($value)) {
                             $questionData->textValue = $this->urlFilter($value);
                         }
                         $questionDataArray[] = $questionData;
                         //$this->dataDao->save($questionData);
                     }
                     break;
                 case self::QUESTION_VALUE_TYPE_DATETIME:
                     $date = UTIL_DateTime::parseDate($data[$question->name], UTIL_DateTime::DEFAULT_DATE_FORMAT);
                     if (!isset($date)) {
                         $date = UTIL_DateTime::parseDate($data[$question->name], UTIL_DateTime::MYSQL_DATETIME_DATE_FORMAT);
                     }
                     if (isset($date)) {
                         if (UTIL_Validator::isDateValid($date[UTIL_DateTime::PARSE_DATE_MONTH], $date[UTIL_DateTime::PARSE_DATE_DAY], $date[UTIL_DateTime::PARSE_DATE_YEAR])) {
                             $value = $date[UTIL_DateTime::PARSE_DATE_YEAR] . '-' . $date[UTIL_DateTime::PARSE_DATE_MONTH] . '-' . $date[UTIL_DateTime::PARSE_DATE_DAY];
                             if ((int) $question->base === 1 && in_array($question->name, $dataFields)) {
                                 $property = new ReflectionProperty('BOL_User', $question->name);
                                 $property->setValue($user, $value);
                             } else {
                                 if (isset($questionsUserData[$question->name])) {
                                     $questionData = $questionsUserData[$question->name];
                                 } else {
                                     $questionData = new BOL_QuestionData();
                                     $questionData->userId = $userId;
                                     $questionData->questionName = $question->name;
                                 }
                                 $questionData->dateValue = $value;
                                 $questionDataArray[] = $questionData;
                             }
                         }
                     }
                     break;
                 case self::QUESTION_VALUE_TYPE_MULTISELECT:
                     if (!empty($data[$question->name]) && is_array($data[$question->name])) {
                         $value = array_sum($data[$question->name]);
                     }
                 case self::QUESTION_VALUE_TYPE_SELECT:
                     if (!isset($value)) {
                         $value = (int) $data[$question->name];
                     }
                     if ((int) $question->base === 1 && in_array($question->name, $dataFields)) {
                         $property = new ReflectionProperty('BOL_User', $question->name);
                         $property->setValue($user, $value);
                     } else {
                         if (isset($questionsUserData[$question->name])) {
                             $questionData = $questionsUserData[$question->name];
                         } else {
                             $questionData = new BOL_QuestionData();
                             $questionData->userId = $userId;
                             $questionData->questionName = $question->name;
                         }
                         $questionData->intValue = $value;
                         $questionDataArray[] = $questionData;
                         //$this->dataDao->save($questionData);
                     }
                     break;
                 case self::QUESTION_VALUE_TYPE_BOOLEAN:
                     $value = false;
                     $issetValues = array('1', 'true', 'on');
                     if (in_array(mb_strtolower((string) $data[$question->name]), $issetValues)) {
                         $value = true;
                     }
                     if ((int) $question->base === 1 && in_array($question->name, $dataFields)) {
                         $property = new ReflectionProperty('BOL_User', $question->name);
                         $property->setValue($user, $value);
                     } else {
                         if (isset($questionsUserData[$question->name])) {
                             $questionData = $questionsUserData[$question->name];
                         } else {
                             $questionData = new BOL_QuestionData();
                             $questionData->userId = $userId;
                             $questionData->questionName = $question->name;
                         }
                         $questionData->intValue = $value;
                         $questionDataArray[] = $questionData;
                         //$this->dataDao->save($questionData);
                     }
                     break;
             }
         }
     }
     $sendVerifyMail = false;
     if ($user->id !== null) {
         if (strtolower($user->email) !== strtolower($oldUserEmail)) {
             $user->emailVerify = false;
             $sendVerifyMail = true;
         }
         if (!empty($data['accountType'])) {
             $accountType = $this->findAccountTypeByName($data['accountType']);
             $accountTypeOld = $this->findAccountTypeByName($user->accountType);
             if (!empty($accountType)) {
                 $user->accountType = $accountType->name;
                 $this->updateQuestionsEditStamp();
             }
         }
     }
     //printVar($user);
     $this->userService->saveOrUpdate($user);
     if (count($questionDataArray) > 0) {
         $this->dataDao->batchReplace($questionDataArray);
     }
     if ($sendVerifyMail && OW::getConfig()->getValue('base', 'confirm_email')) {
         BOL_EmailVerifyService::getInstance()->sendUserVerificationMail($user);
     }
     return true;
 }
Beispiel #3
0
 private function getQuestionWhereString(BOL_Question $question, $value, $prefix = '')
 {
     $result = '';
     $prefix = $this->dbo->escapeString($prefix);
     /* $event = new OW_Event('base.questions_get_search_sql', array(
               'presentation' => $question->presentation,
               'fieldName' => $question->name,
               'value' => $value,
               'tablePrefix' => $prefix,
               'questionDto' => $question
               ));
     
               OW::getEventManager()->trigger($event);
     
               $result = $event->getData();
     
               if ( !empty($result) )
               {
               return $result;
               } */
     switch ($question->presentation) {
         case BOL_QuestionService::QUESTION_PRESENTATION_URL:
         case BOL_QuestionService::QUESTION_PRESENTATION_TEXT:
         case BOL_QuestionService::QUESTION_PRESENTATION_TEXTAREA:
             $result = " LCASE(`" . $prefix . "`.`textValue`) LIKE '" . $this->dbo->escapeString(strtolower($value)) . "%'";
             break;
         case BOL_QuestionService::QUESTION_PRESENTATION_CHECKBOX:
             $result = " `" . $prefix . "`.`intValue` = " . (bool) $value;
             break;
         case BOL_QuestionService::QUESTION_PRESENTATION_RADIO:
         case BOL_QuestionService::QUESTION_PRESENTATION_SELECT:
             if (!empty($value)) {
                 if (is_array($value)) {
                     $result = ' `' . $this->dbo->escapeString($prefix) . '`.`intValue` IN ( ' . $this->dbo->mergeInClause($value) . ') ';
                 } else {
                     if ((int) $value > 0) {
                         $result = ' `' . $this->dbo->escapeString($prefix) . '`.`intValue` & \'' . (int) $value . '\' ';
                     }
                 }
             }
             break;
         case BOL_QuestionService::QUESTION_PRESENTATION_MULTICHECKBOX:
             if (!empty($value)) {
                 if (is_array($value)) {
                     $result = " `" . $prefix . "`.`intValue` & '" . $this->dbo->escapeString(array_sum($value)) . "'";
                 } else {
                     if ((int) $value > 0) {
                         $result = " `" . $prefix . "`.`intValue` & '" . (int) $value . "'";
                     }
                 }
             }
             break;
         case BOL_QuestionService::QUESTION_PRESENTATION_BIRTHDATE:
         case BOL_QuestionService::QUESTION_PRESENTATION_AGE:
             if (isset($value['from']) && isset($value['to'])) {
                 $maxDate = date('Y') - (int) $value['from'] . '-12-31';
                 $minDate = date('Y') - (int) $value['to'] . '-01-01';
                 $result = " `" . $prefix . "`.`dateValue` BETWEEN  '" . $this->dbo->escapeString($minDate) . "' AND '" . $this->dbo->escapeString($maxDate) . "'";
             }
             break;
         case BOL_QuestionService::QUESTION_PRESENTATION_DATE:
             $dateFrom = UTIL_DateTime::parseDate($value['from']);
             $dateTo = UTIL_DateTime::parseDate($value['to']);
             if (isset($dateFrom)) {
                 if (UTIL_Validator::isDateValid($dateFrom[UTIL_DateTime::PARSE_DATE_MONTH], $dateFrom[UTIL_DateTime::PARSE_DATE_DAY], $dateFrom[UTIL_DateTime::PARSE_DATE_YEAR])) {
                     $valueFrom = $dateFrom[UTIL_DateTime::PARSE_DATE_YEAR] . '-' . $dateFrom[UTIL_DateTime::PARSE_DATE_MONTH] . '-' . $dateFrom[UTIL_DateTime::PARSE_DATE_DAY];
                 }
             }
             if (isset($dateTo)) {
                 if (UTIL_Validator::isDateValid($dateTo[UTIL_DateTime::PARSE_DATE_MONTH], $dateTo[UTIL_DateTime::PARSE_DATE_DAY], $dateTo[UTIL_DateTime::PARSE_DATE_YEAR])) {
                     $valueTo = $dateTo[UTIL_DateTime::PARSE_DATE_YEAR] . '-' . $dateTo[UTIL_DateTime::PARSE_DATE_MONTH] . '-' . $dateTo[UTIL_DateTime::PARSE_DATE_DAY];
                 }
             }
             if (isset($valueFrom) && isset($valueTo)) {
                 $result = " `" . $prefix . "`.`dateValue` BETWEEN  '" . $valueFrom . "' AND '" . $valueTo . "'";
             }
             break;
     }
     return $result;
 }
Beispiel #4
0
 public function checkValue($value)
 {
     if ($value === null || mb_strlen(trim($value)) === 0) {
         return true;
     }
     $date = UTIL_DateTime::parseDate($value, $this->dateFormat);
     if ($date === null) {
         return false;
     }
     if (!UTIL_Validator::isDateValid($date[UTIL_DateTime::PARSE_DATE_MONTH], $date[UTIL_DateTime::PARSE_DATE_DAY], $date[UTIL_DateTime::PARSE_DATE_YEAR])) {
         return false;
     }
     if (!empty($this->maxYear) && $date[UTIL_DateTime::PARSE_DATE_YEAR] > $this->maxYear) {
         return false;
     }
     if (!empty($this->minYear) && $date[UTIL_DateTime::PARSE_DATE_YEAR] < $this->minYear) {
         return false;
     }
     return true;
 }