function Database($dbFolder = "defaultDb/") { $this->dbFolder = DB_DIR . $dbFolder; if (last_char($this->dbFolder) != "/") { $this->dbFolder .= "/"; } }
/** * @covers DirManager::inst * @covers DirManager::relDirPath * @covers DirManager::absDirPath */ public function testInst() { $inst = DirManager::inst(DirManagerTestHelper::dirsAbsPath()); $this->assertEquals(last_char($inst->absDirPath()), DIR_SEPARATOR); $this->assertEquals(last_char($inst->relDirPath()), DIR_SEPARATOR); $this->assertEquals(first_char($inst->relDirPath()), DIR_SEPARATOR); $this->assertEquals($inst->absDirPath(), DirManagerTestHelper::dirsAbsPath()); $this->assertTrue(strlen($inst->absDirPath()) > strlen($inst->relDirPath())); $this->assertTrue(ends_with($inst->absDirPath(), $inst->relDirPath())); //Создание в конструкторе $inst = DirManager::inst(DirManagerTestHelper::dirsAbsPath()); $this->assertTrue(!$inst->isDir(DirManagerTestHelper::TMP)); $this->assertTrue($inst === DirManager::inst(DirManagerTestHelper::dirsAbsPath())); $inst = DirManager::inst(DirManagerTestHelper::dirsAbsPath(), DirManagerTestHelper::TMP); $this->assertTrue($inst->isDir()); $this->assertTrue($inst === DirManager::inst(DirManagerTestHelper::dirsAbsPath(), DirManagerTestHelper::TMP)); }
function &new_wget($text, $url, $mod_rewrite_enabled, $id_array) { debug_no_info(); global $log_file; $result = new wget_result(); $web_sufix = array(".html", ".php", ".htm"); $address_symbol = array(".", "#"); $separators = array("''", '""', "()", ">", " "); $hrefs = array("href=", "src=", "background-image: url", "background: url", "window.open("); $download_file_sufix = array(".gif", ".jpg", ".doc", ".xls", ".js", ".zip", ".css", ".swf"); $parse_file_sufix = array(".html", ".htm"); //получаем имя хоста в виде http://host.domain $host = del_from_left($url, strlen("http://")); $buff = explode("/", $host); $host = "http://" . $buff[0]; // Надо заменить конструкицю вида onclick="openImage(this.href);return false;" $text = preg_replace("/(onclick=\"openImage\\(this.href\\);return false;\") href=\"(.*)/", " href=\"/scripts/popup.php?img=\\2", $text); //echo "$host\n\n\n\n\n\n"; //получаем ссылку на серве: $server_link = del_from_left($url, strlen($host)); //получаем рабочую директорию на серве, если не включен мод-реврайт if ($mod_rewrite_enabled) { $path_for_relative = $host . '/'; $clean_url = "/"; } else { //ищем гадские символы . ? # которые портят адресную строку foreach ($address_symbol as $symbol) { if (strpos($server_link, $symbol)) { $positions[] = strpos($server_link, $symbol) - 1; } } if (sizeof($positions) > 1) { $min = $positions[0]; foreach ($positions as $pos) { if ($pos < $min) { $min = $pos; } } } elseif (sizeof($positions) == 1) { $min = $positions[0]; } else { $min = strlen($server_link); } //нашли первое вхождение гадского символа - и получили урл без него $clean_url = del_from_right($server_link, strlen($server_link) - $min - 1); if ($clean_url == $server_link) { //небыло гадских символов - числый урл if (last_char($clean_url) != '/') { $clean_url = $server_link . "/"; } } else { if (isset($tmp)) { unset($tmp); } //удаляем весь хлам из конца строки до последнего слэша while ($tmp != '/') { $tmp = last_char($clean_url); $clean_url = del_from_right($clean_url, 1); } //доваляем только что стертый слэш ;] $clean_url = $clean_url . '/'; } $path_for_relative = $host . $clean_url; } //обнуляем хлам unset($tmp); unset($pos); unset($min); //обработка урла закончена - начинаем делать мозги с заменой ссылок. foreach ($separators as $sep) { if (strlen($sep) == 2) { $double_sep[] = $sep; } else { $single_sep[] = $sep; } } //debug //echo "found ".sizeof($double_sep)." double separators and ".sizeof($single_sep)." single separators<br>"; foreach ($hrefs as $href_name) { $buff = explode($href_name, $text); //начинаем перебор всех ссылок for ($i = 1; $i < sizeof($buff); $i++) { //для начала найдем какой из разделителей встречается первым //проверяем начинается ли строка с одного из двойных разделителей unset($current_sep); foreach ($double_sep as $sep) { if (first_char($buff[$i]) == first_char($sep)) { $current_sep = $sep; } } //а если не начинается - выбираем одинарный разделитель if (!isset($current_sep)) { $single_sep_pos = strlen($buff[$i]); foreach ($single_sep as $sep) { if (strpos($buff[$i], $sep) && $single_sep_pos > strpos($buff[$i], $sep)) { $single_sep_pos = strpos($buff[$i], $sep); $current_sep = $sep; } } } //разделитель выбран - начинаем получение кода ссылки //откуда начинается код ссылки if (strlen($current_sep) == 2) { $pos_start = 1; } else { $pos_start = 0; } //где заканчивается код ссылки $tmp = del_from_left($buff[$i], 1); $pos_end = strpos($tmp, last_char($current_sep)); $src_link = substr($buff[$i], $pos_start, $pos_end); //ссылка из кода и ее позиции получены, начинаем преобразование в ссылку для cd //echo $src_link."\n\n"; if (first_char($src_link) == '/') { //первый символ ссылки - слэш - ссылка абсолютная в пределах домена $cd_link = $src_link; $full_link = $host . $cd_link; } elseif (if_prefix($src_link, 'http://')) { //ссылка совсем абсолютная if (if_prefix($src_link, $host)) { //ссылка совсем абсолютная но ведет на наш домен $cd_link = del_from_left($src_link, strlen($host)); $full_link = $src_link; } else { //ссылка совсем абсолютная и ведет наружу - обрезаем $cd_link = 'index.html'; $full_link = ''; } } elseif (substr($src_link, 0, strlen('../images/')) == '../images/') { $src_link = substr($src_link, strlen('../')); $cd_link = $clean_url . $src_link; $full_link = $host . $cd_link; } else { //ссылка относительная, подставляем рабочий каталог $cd_link = $clean_url . $src_link; $full_link = $host . $cd_link; } if (strpos($url, '.css') !== false) { // Заменяем в css-файле пути к картинкам с /images на ../images if (first_char($src_link) == '/') { $cd_link = '/..' . $src_link; $full_link = $host . $src_link; } else { if (substr($src_link, 0, strlen('images/')) == 'images/') { $cd_link = '/../' . $src_link; $full_link = $host . '/' . $src_link; } } } //echo $cd_link."\n"; //проверяем куда эта ссылка - если на файл - добавляем в список файлов на закачкуы $need = false; $is_cd = ""; if ($cd_link != '#') { if (strpos($cd_link, 'popup.php') !== false) { } else { foreach ($download_file_sufix as $suf) { if (if_sufix($cd_link, $suf)) { $result->download_name[] = $cd_link; $result->download_link[] = $full_link; $need = true; $cd_link = del_from_left($cd_link, 1); } } foreach ($parse_file_sufix as $suf) { if (if_sufix($cd_link, $suf)) { $result->parse_name[] = $cd_link; $result->parse_link[] = $full_link; $need = true; $cd_link = del_from_left($cd_link, 1); } } } if (!$need) { if (substr($src_link, 0, 3) == "/cd") { $src_link = substr($src_link, 3); $is_cd = "/cd"; } if (substr($src_link, 0, 2) == "cd") { $src_link = substr($src_link, 2); $is_cd = "cd"; } if (substr($src_link, 0, 1) == "/") { $src_link = substr($src_link, 1); } if (substr($cd_link, 0, 3) == "cd/") { $cd_link = substr($cd_link, 3); } if (substr($cd_link, 0, 3) == "/cd") { $cd_link = substr($cd_link, 3); } if ($cd_link == "/") { $cd_link = "index.html"; } else { $match = false; if (strpos($cd_link, 'popup.php') !== false) { $match = true; } else { $cur_id = id_by_path($cd_link); if ($cur_id && in_array($cur_id, $id_array)) { $match = true; } } // Если это ссылка с параметрами (и эта ссылка включена в презентацию), то получаем и ее тоже в отдельный файл, а ссылку переименовываем по имени файла if (strpos($src_link, '?') !== false) { $_temp = explode('?', $src_link); $cur_id = id_by_path($_temp[0]); if (strpos($cd_link, 'popup.php') !== false || $cur_id && in_array($cur_id, $id_array)) { mysql_query("insert into tree_cd_links (url,done) values ('{$src_link}',0)"); $match = true; } } //echo $cd_link." -->"; if (!$match) { $cd_link = '#'; } else { if ($cd_link[0] == '/') { $cd_link = substr($cd_link, 1); } $cd_link = str_replace(array('?', '/'), '_', $cd_link); if (substr($cd_link, -1) == '_') { $cd_link = substr($cd_link, 0, strlen($cd_link) - 1); } $cd_link .= ".html"; } //echo $cd_link." ($match) \r\n"; } if (!if_prefix($cd_link, "javascript")) { $result->href_name[] = $cd_link; $result->href_link[] = $full_link; } //fputs($log_file,$cd_link." ====>>>> $match<br>"); } } if (strlen($current_sep) == 2) { $link_in_code = first_char($current_sep) . $src_link . last_char($current_sep); $new_link_in_code = first_char($current_sep) . $cd_link . last_char($current_sep); } else { $link_in_code = $src_link . $current_sep; $new_link_in_code = $cd_link . $current_sep; } if (!isset($is_cd)) { $is_cd = ''; } if ($is_cd) { $link_in_code = $is_cd . $link_in_code; } $tmp = del_from_left($buff[$i], strlen($link_in_code)); if ($tmp[0] == '"' || $tmp[0] == "'") { $tmp = substr($tmp, 1); } $buff[$i] = $new_link_in_code . $tmp; $text = implode($href_name, $buff); } } $result->text = $text; return $result; }
function parseResultSetFromFileForAppend($fd) { $start = getmicrotime(); $rs = new ResultSet(); // COLUMN NAMES // read with a maximum of 1000 bytes, until there is a newline included (or eof) $buf = ""; while (is_false(strstr($buf, "\n"))) { $buf .= fgets($fd, 1000); if (feof($fd)) { print_error_msg("Invalid Table File!<br>"); return null; } } // remove newline remove_last_char($buf); $rec = $this->parseRowFromLine($buf); $rs->setColumnNames($rec); // COLUMN TYPES // read with a maximum of 1000 bytes, until there is a newline included (or eof) $buf = ""; while (is_false(strstr($buf, "\n"))) { $buf .= fgets($fd, 1000); if (feof($fd)) { print_error_msg("Invalid Table File!<br>"); return null; } } // remove newline remove_last_char($buf); $rec = $this->parseRowFromLine($buf); $rs->setColumnTypes($rec); // COLUMN DEFAULT VALUES // read with a maximum of 1000 bytes, until there is a newline included (or eof) $buf = ""; while (is_false(strstr($buf, "\n"))) { $buf .= fgets($fd, 1000); if (feof($fd)) { break; // there's no newline after the colum types => empty table } } // remove newline if (last_char($buf) == "\n") { remove_last_char($buf); } $rec = $this->parseRowFromLine($buf); $rs->setColumnDefaultValues($rec); // get file size fseek($fd, 0, SEEK_END); $size = ftell($fd); $lastRecSize = min($size, ASSUMED_RECORD_SIZE); $lastRecPos = false; while (is_false($lastRecPos)) { fseek($fd, -$lastRecSize, SEEK_END); $buf = fread($fd, $lastRecSize); $lastRecSize = $lastRecSize * 2; $lastRecSize = min($size, $lastRecSize); if ($lastRecSize < 1) { print_error_message("lastRecSize should not be 0! Contact developer please!"); } $lastRecPos = $this->getLastRecordPosInString($buf); if (TXTDBAPI_VERBOSE_DEBUG) { echo "<hr>pass! <br>"; echo "lastRecPos: " . $lastRecPos . "<br>"; echo "buf: " . $buf . "<br>"; } } $buf = trim(substr($buf, $lastRecPos)); verbose_debug_print("buf after substr() and trim(): " . $buf . "<br>"); $rs->reset(); $row = $this->parseRowFromLine($buf); if (TXTDBAPI_VERBOSE_DEBUG) { echo "parseResultSetFromFileForAppend(): last Row:<br>"; print_r($row); echo "<br>"; } $rs->appendRow($row); $rs->setColumnAliases(create_array_fill(count($rs->colNames), "")); $rs->setColumnTables(create_array_fill(count($rs->colNames), "")); $rs->setColumnTableAliases(create_array_fill(count($rs->colNames), "")); $rs->setColumnFunctions(create_array_fill(count($rs->colNames), "")); $rs->colFuncsExecuted = create_array_fill(count($rs->colNames), false); debug_print("<i>III: parseResultSetFromFileForAppend: " . (getmicrotime() - $start) . " seconds elapsed</i><br>"); return $rs; }
function parseUpdateQuery() { $colNames = array(); $fieldValues = array(); $tables = array(); $where_expr = ""; // Read Table $tables[0] = $this->parseNextElement(); // Remove SET if (strtoupper($this->parseNextElement()) != "SET") { print_error_msg("SET expected"); return null; } // Read Columns and Values $colIndex = 0; $writeToValue = false; while (!is_empty_str($elem = $this->parseNextElement()) && $elem != ";" && strtoupper($elem) != "WHERE") { if ($elem == ",") { $colIndex++; $writeToValue = false; } else { if ($elem == "=") { $writeToValue = true; } else { if ($writeToValue) { if (!isset($fieldValues[$colIndex])) { $fieldValues[$colIndex] = ""; } $fieldValues[$colIndex] .= $elem; } else { if (!isset($colNames[$colIndex])) { $colNames[$colIndex] = ""; } $colNames[$colIndex] .= $elem; } } } } // Raw-Parse Where Statement if (strtoupper($elem) == "WHERE") { $where_expr = rtrim($this->workingStr); debug_print("where_expr: {$where_expr}<br>"); if (last_char($where_expr) == ";") { remove_last_char($where_expr); } } $sqlObj = new SqlQuery(); $sqlObj->type = "UPDATE"; $sqlObj->colNames = $colNames; $sqlObj->fieldValues = $fieldValues; $sqlObj->tables = $tables; $sqlObj->where_expr = $where_expr; return $sqlObj; }
function has_quotes($str) { if (is_empty_str($str)) { return false; } return ($str[0] == "'" || $str[0] == "\"") && (last_char($str) == "'" || last_char($str) == "\""); }