/** * Setter. Sets the information for one comparison * @param string field 1 * @param string field 2 * @param string operation * @param string error message * @access public */ function addField($name1, $name2, $operation, $error) { $value1 = $this->tNG->getColumnValue($name1); $value2 = KT_DynamicData($name2, null); if ($value2 == $name2) { $value2 = KT_DynamicData($name2, $this->tNG); } if ($this->tNG->getColumnType($name1) == 'DATE_TYPE') { $value1 = KT_convertDate($value1, $GLOBALS['KT_db_date_format'] . ' ' . $GLOBALS['KT_db_time_format_internal'], "yyyy-mm-dd HH:ii:ss"); $value2 = KT_convertDate($value2, $GLOBALS['KT_db_date_format'] . ' ' . $GLOBALS['KT_db_time_format_internal'], "yyyy-mm-dd HH:ii:ss"); $value1 = strtotime($value1); $value2 = strtotime($value2); } else { if ($this->tNG->getColumnType($name1) == 'NUMERIC_TYPE' || $this->tNG->getColumnType($name1) == 'DOUBLE_TYPE') { $value1 = (double) $value1; $value2 = (double) $value2; } } $this->fields[] = array('0' => array('name' => $name1, 'value' => $value1, 'type' => $this->tNG->getColumnType($name1)), '1' => array('name' => $name2, 'value' => $value2, 'type' => $this->tNG->getColumnType($name1)), 'operation' => $operation, 'error' => KT_DynamicData($error, $this->tNG)); }
/** * Search for the current row from logger and try to update dateout field (used in logout trigger); * Only for PRO version * @param object tNG transaction object * @return mixt object in case of error or null * @access public */ function Trigger_Login_LoggerOut(&$tNG) { $ret = null; if (!isset($GLOBALS['tNG_login_config']['logger_table']) || !isset($GLOBALS['tNG_login_config']['logger_pk']) || !isset($GLOBALS['tNG_login_config']['logger_user_id']) || !isset($GLOBALS['tNG_login_config']['logger_ip']) || !isset($GLOBALS['tNG_login_config']['logger_datein']) || !isset($GLOBALS['tNG_login_config']['logger_datelastactivity']) || !isset($GLOBALS['tNG_login_config']['logger_session']) || $GLOBALS['tNG_login_config']['logger_table'] == '' || $GLOBALS['tNG_login_config']['logger_pk'] == '' || $GLOBALS['tNG_login_config']['logger_user_id'] == '' || $GLOBALS['tNG_login_config']['logger_ip'] == '' || $GLOBALS['tNG_login_config']['logger_datein'] == '' || $GLOBALS['tNG_login_config']['logger_datelastactivity'] == '' || $GLOBALS['tNG_login_config']['logger_session'] == '') { return $ret; } $table = $GLOBALS['tNG_login_config']['logger_table']; $pk = $GLOBALS['tNG_login_config']['logger_pk']; $user_id = $GLOBALS['tNG_login_config']['logger_user_id']; $ip = $GLOBALS['tNG_login_config']['logger_ip']; $datein = $GLOBALS['tNG_login_config']['logger_datein']; $dateout = $GLOBALS['tNG_login_config']['logger_datelastactivity']; $session = $GLOBALS['tNG_login_config']['logger_session']; $now = KT_convertDate(date("Y-m-d H:i:s"), "yyyy-mm-dd HH:ii:ss", $GLOBALS['KT_db_date_format'] . ' ' . $GLOBALS['KT_db_time_format_internal']); $sql = 'SELECT ' . KT_escapeFieldName($pk) . ' AS pk FROM ' . $table . ' WHERE ' . KT_escapeFieldName($user_id) . ' = ' . KT_escapeForSql($tNG->getColumnValue('kt_login_id'), $GLOBALS['tNG_login_config']["pk_type"], false) . ' ORDER BY ' . KT_escapeFieldName($datein) . ' DESC LIMIT 0,1'; $rs = $tNG->connection->Execute($sql); if ($rs === false) { return new tNG_error("LOGIN_LOGGER_ERROR", array(), array($tNG->connection->ErrorMsg(), $sql)); } if ($rs->RecordCount() == 0) { return null; } $sql = 'UPDATE ' . $table . ' SET ' . KT_escapeFieldName($dateout) . ' = ' . KT_escapeForSql($now, 'DATE_TYPE', false) . ' WHERE ' . KT_escapeFieldName($pk) . '=' . $rs->Fields('pk'); $rs = $tNG->connection->Execute($sql); if ($rs === false) { $ret = new tNG_error("LOGIN_LOGGER_ERROR", array(), array($tNG->connection->ErrorMsg(), $sql)); } return $ret; }
/** * Wrapper for KT_convertDate * For internal use * @param string $date The date in input format * @param string $toScreen if $toScreen == 'toscreen' the date will be outputed in screen format; otherwise in database format * @return string the date in the new format */ function KT_convertDateCall($date, $toScreen = '') { if (!isset($GLOBALS['KT_screen_time_format_internal'])) { KT_getInternalTimeFormat(); } if (!preg_match('/^([\\d-\\/\\[\\]\\(\\)\\s\\*\\|\\+\\.:=,]|a|p|am|pm)+$/i', $date)) { return $date; } $date = str_replace('1900-01-01 ', '', $date); if (preg_match('/^\\d+$/', $date)) { if (strlen(trim($date)) == 14) { $newDate = substr($date, 0, 4) . '-' . substr($date, 4, 2) . '-' . substr($date, 6, 2); $newDate .= ' ' . substr($date, 8, 2) . ':' . substr($date, 10, 2) . ':' . substr($date, 12, 2); $date = $newDate; $from = 'yyyy-mm-dd HH:ii:ss'; $to = $GLOBALS['KT_screen_date_format'] . ' ' . $GLOBALS['KT_screen_time_format_internal']; } else { return $date; } } if (!preg_match('/^(\\d+[-\\/\\[\\]\\(\\)\\s\\*\\|\\+\\.=,]\\d+[-\\/\\[\\]\\(\\)\\s\\*\\|\\+\\.=,]\\d+)+/i', $date) && !preg_match('/^\\d+:\\d+(:\\d+|\\s+a|\\s+p|\\s+am|\\s+pm)/i', $date)) { return $date; } if ($toScreen == '' && preg_match('/^\\d+[-\\/\\[\\]\\(\\)\\s\\*\\|\\+\\.=,]\\d+[-\\/\\[\\]\\(\\)\\s\\*\\|\\+\\.=,]\\d+\\s+\\d+/i', $date)) { $date = KT_expandTime($date); } if (strstr($date, ' ') && strstr($date, ':') && strpos($date, ' ') < strpos($date, ':')) { $from = $GLOBALS['KT_screen_date_format'] . ' ' . $GLOBALS['KT_screen_time_format_internal']; $to = $GLOBALS['KT_db_date_format'] . ' ' . $GLOBALS['KT_db_time_format_internal']; } elseif (strstr($date, ':')) { $from = $GLOBALS['KT_screen_time_format_internal']; $to = $GLOBALS['KT_db_time_format_internal']; } else { $from = $GLOBALS['KT_screen_date_format']; $to = $GLOBALS['KT_db_date_format']; } if ($toScreen == 'toscreen') { $tmp = $from; $from = $to; $to = $tmp; } $date = KT_convertDate($date, $from, $to); if ($toScreen == 'toscreen') { $date = KT_stripTime($date); } return $date; }
/** * Main class method. Return a fake recordset. * @var string * @access private */ function Execute() { $relFolder = KT_DynamicData($this->folder, '', '', false, array(), false); $relFolder = KT_TransformToUrlPath($relFolder, true); if (substr($relFolder, 0, 1) == '/') { $relFolder = substr($relFolder, 1); } $fullFolderPath = KT_realpath($this->baseFolder . $relFolder, true); if (substr($fullFolderPath, 0, strlen($this->baseFolder)) != $this->baseFolder) { if (isset($GLOBALS['tNG_debug_mode']) && $GLOBALS['tNG_debug_mode'] == "DEVELOPMENT") { die("Security error. The folder '" . $fullFolderPath . "' is out of base folder '" . $this->baseFolder . "'"); } else { die("Security error. Access to this folder is forbidden."); } } $this->path = $fullFolderPath; $noOfEntries = 0; $startCountEntries = $this->page * $this->recordsPerPage; $this->totalNo = 0; if (file_exists($this->path)) { //read folders $folder = new KT_folder(); $entries = $folder->readFolder($this->path, true); if ($folder->hasError()) { $err = $folder->getError(); if (isset($GLOBALS['tNG_debug_mode']) && $GLOBALS['tNG_debug_mode'] == "DEVELOPMENT") { $this->error = $err[1]; } else { $this->error = $err[0]; } } $this->filesArr = $entries['files']; $tmpFilesArr = array(); $tmpArr = array(); for ($i = 0; $i < count($this->filesArr); $i++) { $this->filesArr[$i]['fullname'] = $relFolder . $this->filesArr[$i]['name']; $path_info = KT_pathinfo($this->filesArr[$i]['name']); $this->filesArr[$i]['extension'] = $path_info['extension']; $filetime = filectime($this->path . $this->filesArr[$i]['name']); $this->filesArr[$i]['date'] = $filetime; if (in_array(strtolower($this->filesArr[$i]['extension']), $this->allowedExtensions) || in_array("*", $this->allowedExtensions)) { $tmpArr[] = $this->filesArr[$i][$this->orderField]; $tmpFilesArr[] = $this->filesArr[$i]; } } $this->filesArr = $tmpFilesArr; $this->Sort($tmpArr); $this->totalNo = count($this->filesArr); if ($this->recordsPerPage > 0) { $from = $this->page * $this->recordsPerPage; $this->filesArr = array_slice($this->filesArr, $from, $this->recordsPerPage); } for ($i = 0; $i < count($this->filesArr); $i++) { $this->filesArr[$i]['date'] = KT_convertDate(date("Y-m-d H:i:s", $this->filesArr[$i]['date']), "yyyy-mm-dd HH:ii:ss", $GLOBALS['KT_screen_date_format'] . ' ' . $GLOBALS['KT_screen_time_format_internal']); } // create fake recordset $this->filesArr = $this->formatData($this->filesArr); } $KT_FakeRecordset = new KT_FakeRecordset($this->conn); $ret = $KT_FakeRecordset->getFakeRecordset($this->filesArr); if ($ret === NULL) { if (isset($GLOBALS['tNG_debug_mode']) && $GLOBALS['tNG_debug_mode'] == "DEVELOPMENT") { die("Internal error: cannot create fake recordset. " . $KT_FakeRecordset->getError()); } else { die("Internal error: cannot create fake recordset."); } } return $ret; }
/** * getter. validate the time parts * @param string time * @param string input time format * @return array with date parts: hour, mins, sec); * @access public */ function getTimeParts($timePart, $format) { $myDate = ''; $dateArr = array(); $hour = ''; $min = ''; $sec = ''; $myDate = KT_convertDate($timePart, $GLOBALS['KT_screen_time_format_internal'], $format); $dateArr = explode(':', $myDate); $hour = $dateArr[0]; if (isset($dateArr[1])) { $min = $dateArr[1]; } if (isset($dateArr[2])) { $sec = $dateArr[2]; } if ($format != 'HH:ii:ss' && preg_match('/p/i', $timePart) && $hour < 12) { $hour += 12; } return array($hour, $min, $sec); }