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; }
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; }
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; }