コード例 #1
0
 function Database($dbFolder = "defaultDb/")
 {
     $this->dbFolder = DB_DIR . $dbFolder;
     if (last_char($this->dbFolder) != "/") {
         $this->dbFolder .= "/";
     }
 }
コード例 #2
0
ファイル: DirManagerTest.php プロジェクト: ilivanoff/www
 /**
  * @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));
 }
コード例 #3
0
ファイル: wget.php プロジェクト: romlg/cms36
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;
}
コード例 #4
0
 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;
 }
コード例 #5
0
ファイル: sql.php プロジェクト: yunsite/mapleleaf
 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;
 }
コード例 #6
0
ファイル: util.php プロジェクト: yunsite/mapleleaf
function has_quotes($str)
{
    if (is_empty_str($str)) {
        return false;
    }
    return ($str[0] == "'" || $str[0] == "\"") && (last_char($str) == "'" || last_char($str) == "\"");
}