Купить диплом в Москве



Алматы, Астана, Барнаул, Владивосток, Воронеж, Ижевск, Иркутск, Казань, Минск, Москва, Новосибирск, Нижний Новгород, Самара, Тамбов, Тула, Хабаровск, Чебоксары

Московский выпуск

Издательская группа "ИЗ РУК В РУКИ"газета Работа сегодня
 

Новости

Поиск работы
Вакансии Поместить резюме

Поиск cотрудникова
Резюме Добавить вакансию
 
Новости О газете Обучение Статьи Клуб клиентов Прайс-лист Рубрикатор

Кадровый рынок Москвы
Кадровые агентства Семинары и тренинги
 
Ссылки

  23.02.2007
 Уважаемые посетители! Вы можете ознакомиться с новыми модульными и строчными вакансиями (вакансии из модулей расположены на желтом фоне) и мини-резюме свежего номера "Работы сегодня" от 26 февраля.

Читайте новые материалы:

Анонсы ближайших мероприятий

Увидеть мир другими глазами

В отличие от обычного МВА, Executive-программу выбирают люди, достигшие высшего управленческого уровня. А значит, вопрос "быть или не быть учебе" встает перед ними со всей остротой... Далее

Литр здоровья в день

Несмотря на конец сентября погода в день посещения Московского пиво-безалкогольного комбината "Очаково" была как нельзя более располагающей - теплой и солнечной. Как раз в такие дни продажи пенного напитка повышаются в несколько раз... Далее

ВОПРОС НЕДЕЛИ: "Стоит ли, на ваш взгляд, в резюме отражать периоды работы продолжительностью два-три месяца?"

Каждый работник должен знать: что за документ - трудовая книжка?

Сегодня мы рассмотрим наиболее распространенные вопросы об оформлении трудовых книжек работников, правилах их ведения и выдачи, ответственности работодателей (и организаций, и индивидуальных предпринимателей) за нарушение указанных норм... Далее

Классная мама

Накануне Дня учителя "Работа сегодня" решила поздравить с профессиональным праздником бывшую учительницу средней школы N 596 Валентину Андреевну Белякову, 50 лет посвятившую себя любимой профессии. Валентина Андреевна рассказала о премудростях профессии.... Далее

 РУССКИЙ КАДРОВЫЙ ДОМ 22 февраля 2007 года проведет семинар-брифинг "Новое в российском законодательстве: использование иностранных работников в России в 2007 году" при гарантированном участии представителей Управления Федеральной миграционной службы России по г. Москве Далее



 20 февраля клуб СУПЕР проводит встречу EXCLUSIVE PERSON на тему "Наставничество как один из ключевых инструментов повышения эффективности бизнеса. Суть метода: способ трансляции корпоративной культуры и развития профессиональных навыков в компании"

Своим опытом поделятся:
Куприянов Дмитрий, Президент управляющей инвестиционной компании "Базис".
Самойленко Наталья, Исполнительный директор, Благотворительный фонд В. Потанина.
Тихонова Ирина, Директор по персоналу, компания ECCO.
В качестве экспертов приглашены:
Чумакова Светлана, Генеральный директор, Международная Академия Коучинга.
Кузнецова Алла, Партнер, Международная Академия Коучинга.
Ведущий встречи EXCLUSIVE PERSON: Владимир Малёшин, Начальник Кадрового управления, Группа ГУТА.

Место проведения: Марриотт-Тверская, ул. 1-ая Тверская-Ямская. Д.34.
Время проведения: 16.00-19.30: информационная часть с перерывом на кофе-паузу; 19.30-21.00: праздничная программа с фуршетом, посвященная празднованию Дня защитника отечества и Дня 8 марта. Все участники встречи смогут участвовать в определении Формулы Великого объединения "23+8". Для всех участников подарки от единственного в России Суперкинотеатра NESCAFE-IMAX
Регистрация и подробности по тел. 253-02-16, а также по электронным адресам: club@superclub.ru;pr@superclub.ru;super@superclub.ru

С нами интересно! Присоединяйтесь!



 15 января 2007 года под слоганом "отборные ВАКАНСИИ. достойный ЗАРАБОТОК" стартовала очередная рекламная кампания московского выпуска газеты "Работа сегодня"Далее


 Вниманию работодателей! Анонсы редакционных обзоров в газете "Работа сегодня"
Газета "Работа сегодня" (Москва) готовит к выходу следующие тематические страницы:
- 20.11.2006 - "Ресторанный бизнес"
- 27.11.2006 - "Строительство"
Как выглядят тематические страницы




Как разместить рекламу вакансий вашей компании на тематических страницах газеты "Работа сегодня": заявку на размещение рекламы можно выслать по E-mail: rs@job-today.ru, telemarketing@job-today.ru или позвонить по телефонам (095) 232-15-91, 785-05-22



Архив новостей
 







 

замечания и пожелания


Наши партнеры:


 

 
(LC_ALL, $setlocale); // try again if (!$setlocale) $setlocale = $loc; } // Try to put new locale into environment (so any // programs we run will get the right locale.) if (!function_exists('bindtextdomain')) { // Reinitialize translation array. global $locale; $locale = array(); // do reinit to purge PHP's static cache [43ms] if ( ($lcfile = FindLocalizedFile("LC_MESSAGES/phpwiki.php", 'missing_ok', 'reinit')) ) { include($lcfile); } } else { // If PHP is in safe mode, this is not allowed, // so hide errors... @putenv("LC_ALL=$setlocale"); @putenv("LANG=$loc"); @putenv("LANGUAGE=$loc"); } // To get the POSIX character classes in the PCRE's (e.g. // [[:upper:]]) to match extended characters (e.g. GrЭъGott), we have // to set the locale, using setlocale(). // // The problem is which locale to set? We would like to recognize all // upper-case characters in the iso-8859-1 character set as upper-case // characters --- not just the ones which are in the current $LANG. // // As it turns out, at least on my system (Linux/glibc-2.2) as long as // you setlocale() to anything but "C" it works fine. (I'm not sure // whether this is how it's supposed to be, or whether this is a bug // in the libc...) // // We don't currently use the locale setting for anything else, so for // now, just set the locale to US English. // // FIXME: Not all environments may support en_US? We should probably // have a list of locales to try. if (setlocale(LC_CTYPE, 0) == 'C') { $x = setlocale(LC_CTYPE, 'en_US.' . $GLOBALS['charset']); } else { $x = setlocale(LC_CTYPE, $setlocale); } return $loc; } /** string pcre_fix_posix_classes (string $regexp) * * Older version (pre 3.x?) of the PCRE library do not support * POSIX named character classes (e.g. [[:alnum:]]). * * This is a helper function which can be used to convert a regexp * which contains POSIX named character classes to one that doesn't. * * All instances of strings like '[::]' are replaced by the equivalent * enumerated character class. * * Implementation Notes: * * Currently we use hard-coded values which are valid only for * ISO-8859-1. Also, currently on the classes [:alpha:], [:alnum:], * [:upper:] and [:lower:] are implemented. (The missing classes: * [:blank:], [:cntrl:], [:digit:], [:graph:], [:print:], [:punct:], * [:space:], and [:xdigit:] could easily be added if needed.) * * This is a hack. I tried to generate these classes automatically * using ereg(), but discovered that in my PHP, at least, ereg() is * slightly broken w.r.t. POSIX character classes. (It includes * "\xaa" and "\xba" in [:alpha:].) * * So for now, this will do. --Jeff 14 Mar, 2001 */ function pcre_fix_posix_classes ($regexp) { global $charset; if (!isset($charset)) $charset = CHARSET; // get rid of constant. pref is dynamic and language specific if (in_array($GLOBALS['LANG'], array('zh'))) $charset = 'utf-8'; if (strstr($GLOBALS['LANG'],'.utf-8')) $charset = 'utf-8'; elseif (strstr($GLOBALS['LANG'],'.euc-jp')) $charset = 'euc-jp'; elseif (in_array($GLOBALS['LANG'], array('ja'))) //$charset = 'utf-8'; $charset = 'euc-jp'; if (strtolower($charset) == 'utf-8') { // thanks to John McPherson // until posix class names/pcre work with utf-8 if (preg_match('/[[:upper:]]/', '\xc4\x80')) return $regexp; // utf-8 non-ascii chars: most common (eg western) latin chars are 0xc380-0xc3bf // we currently ignore other less common non-ascii characters // (eg central/east european) latin chars are 0xc432-0xcdbf and 0xc580-0xc5be // and indian/cyrillic/asian languages // this replaces [[:lower:]] with utf-8 match (Latin only) $regexp = preg_replace('/\[\[\:lower\:\]\]/','(?:[a-z]|\xc3[\x9f-\xbf]|\xc4[\x81\x83\x85\x87])', $regexp); // this replaces [[:upper:]] with utf-8 match (Latin only) $regexp = preg_replace('/\[\[\:upper\:\]\]/','(?:[A-Z]|\xc3[\x80-\x9e]|\xc4[\x80\x82\x84\x86])', $regexp); } elseif (preg_match('/[[:upper:]]/', 'д')) { // First check to see if our PCRE lib supports POSIX character // classes. If it does, there's nothing to do. return $regexp; } static $classes = array( 'alnum' => "0-9A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\xff", 'alpha' => "A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\xff", 'upper' => "A-Z\xc0-\xd6\xd8-\xde", 'lower' => "a-z\xdf-\xf6\xf8-\xff" ); $keys = join('|', array_keys($classes)); return preg_replace("/\[:($keys):]/e", '$classes["\1"]', $regexp); } function deduce_script_name() { $s = &$GLOBALS['HTTP_SERVER_VARS']; $script = @$s['SCRIPT_NAME']; if (empty($script) or $script[0] != '/') { // Some places (e.g. Lycos) only supply a relative name in // SCRIPT_NAME, but give what we really want in SCRIPT_URL. if (!empty($s['SCRIPT_URL'])) $script = $s['SCRIPT_URL']; } return $script; } function IsProbablyRedirectToIndex () { // This might be a redirect to the DirectoryIndex, // e.g. REQUEST_URI = /dir/?some_action got redirected // to SCRIPT_NAME = /dir/index.php // In this case, the proper virtual path is still // $SCRIPT_NAME, since pages appear at // e.g. /dir/index.php/HomePage. $requri = preg_replace('/\?.*$/','',$GLOBALS['HTTP_SERVER_VARS']['REQUEST_URI']); $requri = preg_quote($requri, '%'); return preg_match("%^${requri}[^/]*$%", $GLOBALS['HTTP_SERVER_VARS']['SCRIPT_NAME']); } // >= php-4.1.0 if (!function_exists('array_key_exists')) { // lib/IniConfig.php, sqlite, adodb, ... function array_key_exists($item, $array) { return isset($array[$item]); } } // => php-4.0.5 if (!function_exists('is_scalar')) { // lib/stdlib.php:wikihash() function is_scalar($x) { return is_numeric($x) or is_string($x) or is_float($x) or is_bool($x); } } // => php-4.2.0. pear wants to break old php's! DB uses it now. if (!function_exists('is_a')) { function is_a($item,$class) { return isa($item,$class); } } // needed < php5 // by bradhuizenga at softhome dot net from the php docs if (!function_exists('str_ireplace')) { function str_ireplace($find, $replace, $string) { if (!is_array($find)) $find = array($find); if (!is_array($replace)) { if (!is_array($find)) $replace = array($replace); else { // this will duplicate the string into an array the size of $find $c = count($find); $rString = $replace; unset($replace); for ($i = 0; $i < $c; $i++) { $replace[$i] = $rString; } } } foreach ($find as $fKey => $fItem) { $between = explode(strtolower($fItem),strtolower($string)); $pos = 0; foreach ($between as $bKey => $bItem) { $between[$bKey] = substr($string,$pos,strlen($bItem)); $pos += strlen($bItem) + strlen($fItem); } $string = implode($replace[$fKey], $between); } return($string); } } /** * safe php4 definition for clone. * php5 copies objects by reference, but we need to clone "deep copy" in some places. * (BlockParser) * We need to eval it as workaround for the php5 parser. * See http://www.acko.net/node/54 */ if (!check_php_version(5)) { eval(' function clone($object) { return $object; } '); } /** * array_diff_assoc() returns an array containing all the values from array1 that are not * present in any of the other arguments. Note that the keys are used in the comparison * unlike array_diff(). In core since php-4.3.0 * Our fallback here supports only hashes and two args. * $array1 = array("a" => "green", "b" => "brown", "c" => "blue"); * $array2 = array("a" => "green", "y" => "yellow", "r" => "red"); * => b => brown, c => blue */ if (!function_exists('array_diff_assoc')) { function array_diff_assoc($a1, $a2) { $result = array(); foreach ($a1 as $k => $v) { if (!isset($a2[$k]) or !$a2[$k]) $result[$k] = $v; } return $result; } } /** * wordwrap() might crash between 4.1.2 and php-4.3.0RC2, fixed in 4.3.0 * See http://bugs.php.net/bug.php?id=20927 and * http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2002-1396 * Improved version of wordwrap2() in the comments at http://www.php.net/wordwrap */ function safe_wordwrap($str, $width=80, $break="\n", $cut=false) { if (check_php_version(4,3)) return wordwrap($str, $width, $break, $cut); elseif (!check_php_version(4,1,2)) return wordwrap($str, $width, $break, $cut); else { $len = strlen($str); $tag = 0; $result = ''; $wordlen = 0; for ($i = 0; $i < $len; $i++) { $chr = $str[$i]; // don't break inside xml tags if ($chr == '<') { $tag++; } elseif ($chr == '>') { $tag--; } elseif (!$tag) { if (!function_exists('ctype_space')) { if (preg_match('/^\s$/', $chr)) $wordlen = 0; else $wordlen++; } elseif (ctype_space($chr)) { $wordlen = 0; } else { $wordlen++; } } if ((!$tag) && ($wordlen) && (!($wordlen % $width))) { $chr .= $break; } $result .= $chr; } return $result; /* if (isset($str) && isset($width)) { $ex = explode(" ", $str); // wrong: must use preg_split \s+ $rp = array(); for ($i=0; $i $width && !is_numeric($ex[$i])) { $where = 0; $rp[$i] = ""; for($b=0; $b < (ceil(strlen($ex[$i]) / $width)); $b++) { $rp[$i] .= substr($ex[$i], $where, $width).$break; $where += $width; } } else { $rp[$i] = $ex[$i]; } } return implode(" ",$rp); } return $text; */ } } function getUploadFilePath() { if (defined('UPLOAD_FILE_PATH')) return UPLOAD_FILE_PATH; return defined('PHPWIKI_DIR') ? PHPWIKI_DIR . "/uploads/" : realpath(dirname(__FILE__) . "/../uploads/"); } function getUploadDataPath() { if (defined('UPLOAD_DATA_PATH')) return UPLOAD_DATA_PATH; return SERVER_URL . ((substr(DATA_PATH,0,1)=='/') ? '' : "/") . DATA_PATH . '/uploads/'; } /** * htmlspecialchars doesn't support some special 8bit charsets, which we do want to support. * Well it just prints a warning which we could circumvent. * Note: unused, since php htmlspecialchars does the same, just prints a warning which we silence */ /* function htmlspecialchars_workaround($str, $quote=ENT_COMPAT, $charset='iso-8859-1') { if (in_array(strtolower($charset), array('iso-8859-2', 'iso8859-2', 'latin-2', 'latin2'))) { if (! ($quote & ENT_NOQUOTES)) { $str = str_replace("\"", """, $str); } if ($quote & ENT_QUOTES) { $str = str_replace("\'", "'", $str); } return str_replace(array("<", ">", "&"), array("<", ">", "&"), $str); } else { return htmlspecialchars($str, $quote, $charset); } } */ /** * htmlspecialchars doesn't support some special 8bit charsets, which we do want to support. * Well it just prints a warning which we could circumvent. * Note: unused, since php htmlspecialchars does the same, just prints a warning which we silence */ /* function htmlspecialchars_workaround($str, $quote=ENT_COMPAT, $charset='iso-8859-1') { if (in_array(strtolower($charset), array('iso-8859-2', 'iso8859-2', 'latin-2', 'latin2'))) { if (! ($quote & ENT_NOQUOTES)) { $str = str_replace("\"", """, $str); } if ($quote & ENT_QUOTES) { $str = str_replace("\'", "'", $str); } return str_replace(array("<", ">", "&"), array("<", ">", "&"), $str); } else { return htmlspecialchars($str, $quote, $charset); } } */ // $Log: config.php,v $ // Revision 1.141 2007/01/07 18:41:42 rurban // Add array_diff_assoc() fallback: fixes Blog with php < 4.3.x. Support UPLOAD_FILE_PATH, UPLOAD_DATA_PATH overrides. // // Revision 1.140 2007/01/02 13:21:30 rurban // added _DEBUG_REMOTE flag, omit want_content if not necessary // // Revision 1.139 2006/03/19 14:50:42 rurban // sf.net patch #1438442 by Matt Brown: Unitialised variable reference in config.php // // Revision 1.138 2006/03/07 20:45:43 rurban // wikihash for php-5.1 // // Revision 1.137 2005/08/06 14:31:10 rurban // ensure absolute uploads path // // Revision 1.136 2005/05/06 16:49:24 rurban // Safari comment // // Revision 1.135 2005/04/01 15:22:20 rurban // Implement icase and regex options. // Change checkbox case message from "Case-Sensitive" to "Case-Insensitive" // // Revision 1.134 2005/03/27 18:23:39 rurban // compute locale only for setlocale and LC_ALL // // Revision 1.133 2005/02/08 13:26:59 rurban // improve the locale splitter // // Revision 1.132 2005/02/07 15:39:02 rurban // another locale fix // // Revision 1.131 2005/02/05 15:32:09 rurban // force guessing_setlocale (again) // // Revision 1.130 2005/01/29 20:36:44 rurban // very important php5 fix! clone objects // // Revision 1.129 2005/01/08 22:53:50 rurban // hardcode list of langs (file access is slow) // fix client detection // set proper locale on empty locale // // Revision 1.128 2005/01/04 20:22:46 rurban // guess $LANG based on client // // Revision 1.127 2004/12/26 17:15:32 rurban // new reverse locale detection on DEFAULT_LANGUAGE="", ja default euc-jp again // // Revision 1.126 2004/12/20 16:05:00 rurban // gettext msg unification // // Revision 1.125 2004/11/21 11:59:18 rurban // remove final \n to be ob_cache independent // // Revision 1.124 2004/11/09 17:11:16 rurban // * revert to the wikidb ref passing. there's no memory abuse there. // * use new wikidb->_cache->_id_cache[] instead of wikidb->_iwpcache, to effectively // store page ids with getPageLinks (GleanDescription) of all existing pages, which // are also needed at the rendering for linkExistingWikiWord(). // pass options to pageiterator. // use this cache also for _get_pageid() // This saves about 8 SELECT count per page (num all pagelinks). // * fix passing of all page fields to the pageiterator. // * fix overlarge session data which got broken with the latest ACCESS_LOG_SQL changes // // Revision 1.123 2004/11/05 21:03:27 rurban // new DEBUG flag: _DEBUG_LOGIN (64) // verbose login debug-msg (settings and reason for failure) // // Revision 1.122 2004/10/14 17:49:58 rurban // fix warning in safe_wordwrap // // Revision 1.121 2004/10/14 17:48:19 rurban // typo in safe_wordwrap // // Revision 1.120 2004/09/22 13:46:26 rurban // centralize upload paths. // major WikiPluginCached feature enhancement: // support _STATIC pages in uploads/ instead of dynamic getimg.php? subrequests. // mainly for debugging, cache problems and action=pdf // // Revision 1.119 2004/09/16 07:50:37 rurban // wordwrap() might crash between 4.1.2 and php-4.3.0RC2, fixed in 4.3.0 // See http://bugs.php.net/bug.php?id=20927 and // http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2002-1396 // Improved version of wordwrap2() from the comments at http://www.php.net/wordwrap // // Revision 1.118 2004/07/13 14:03:31 rurban // just some comments // // Revision 1.117 2004/06/21 17:29:17 rurban // pear DB introduced a is_a requirement. so pear lost support for php < 4.2.0 // // Revision 1.116 2004/06/21 08:39:37 rurban // pear/Cache update from Cache-1.5.4 (added db and trifile container) // pear/DB update from DB-1.6.1 (mysql bugfixes, php5 compat, DB_PORTABILITY features) // // Revision 1.115 2004/06/20 14:42:54 rurban // various php5 fixes (still broken at blockparser) // // Revision 1.114 2004/06/19 11:48:05 rurban // moved version check forwards: already needed in XmlElement::_quote // // Revision 1.113 2004/06/03 12:59:41 rurban // simplify translation // NS4 wrap=virtual only // // Revision 1.112 2004/06/02 18:01:46 rurban // init global FileFinder to add proper include paths at startup // adds PHPWIKI_DIR if started from another dir, lib/pear also // fix slashify for Windows // fix USER_AUTH_POLICY=old, use only USER_AUTH_ORDER methods (besides HttpAuth) // // Revision 1.111 2004/05/17 17:43:29 rurban // CGI: no PATH_INFO fix // // Revision 1.110 2004/05/16 23:10:44 rurban // update_locale wrongly resetted LANG, which broke japanese. // japanese now correctly uses EUC_JP, not utf-8. // more charset and lang headers to help the browser. // // Revision 1.109 2004/05/08 14:06:12 rurban // new support for inlined image attributes: [image.jpg size=50x30 align=right] // minor stability and portability fixes // // Revision 1.108 2004/05/08 11:25:16 rurban // php-4.0.4 fixes // // Revision 1.107 2004/05/06 17:30:38 rurban // CategoryGroup: oops, dos2unix eol // improved phpwiki_version: // pre -= .0001 (1.3.10pre: 1030.099) // -p1 += .001 (1.3.9-p1: 1030.091) // improved InstallTable for mysql and generic SQL versions and all newer tables so far. // abstracted more ADODB/PearDB methods for action=upgrade stuff: // backend->backendType(), backend->database(), // backend->listOfFields(), // backend->listOfTables(), // // Revision 1.106 2004/05/02 19:12:14 rurban // fix sf.net bug #945154 Konqueror alt css // // Revision 1.105 2004/05/02 15:10:06 rurban // new finally reliable way to detect if /index.php is called directly // and if to include lib/main.php // new global AllActionPages // SetupWiki now loads all mandatory pages: HOME_PAGE, action pages, and warns if not. // WikiTranslation what=buttons for Carsten to create the missing MacOSX buttons // PageGroupTestOne => subpages // renamed PhpWikiRss to PhpWikiRecentChanges // more docs, default configs, ... // // Revision 1.104 2004/05/01 11:26:37 rurban // php-4.0.x support: array_key_exists (PHP 4 >= 4.1.0) // // Revision 1.103 2004/04/30 00:04:14 rurban // zh (chinese language) support // // Revision 1.102 2004/04/29 23:25:12 rurban // re-ordered locale init (as in 1.3.9) // fixed loadfile with subpages, and merge/restore anyway // (sf.net bug #844188) // // Revision 1.101 2004/04/26 13:22:32 rurban // calculate bool old or dynamic constants later // // Revision 1.100 2004/04/26 12:15:01 rurban // check default config values // // Revision 1.99 2004/04/21 14:04:24 zorloc // 'Require lib/FileFinder.php' necessary to allow for call to FindLocalizedFile(). // // Revision 1.98 2004/04/20 18:10:28 rurban // config refactoring: // FileFinder is needed for WikiFarm scripts calling index.php // config run-time calls moved to lib/IniConfig.php:fix_configs() // added PHPWIKI_DIR smart-detection code (Theme finder) // moved FileFind to lib/FileFinder.php // cleaned lib/config.php // // Revision 1.97 2004/04/18 01:11:52 rurban // more numeric pagename fixes. // fixed action=upload with merge conflict warnings. // charset changed from constant to global (dynamic utf-8 switching) // // For emacs users // Local Variables: // mode: php // tab-width: 8 // c-basic-offset: 4 // c-hanging-comment-ender-p: nil // indent-tabs-mode: nil // End: ?> phpwiki-1.3.13/lib/DbaDatabase.php 0000664 0001754 0001001 00000013157 10552301002 016360 0 ustar rurban phpwiki _file = $filename; $this->_handler = $handler; $this->_timeout = DBA_DATABASE_DEFAULT_TIMEOUT; $this->_dbh = false; if (function_exists("dba_handlers")) { // since 4.3.0 if (!in_array($handler, dba_handlers())) $this->_error( sprintf( _("The DBA handler %s is unsupported!")."\n". _("Supported handlers are: %s"), $handler, join(",",dba_handlers()))); } if ($mode) $this->open($mode); } function set_timeout($timeout) { $this->_timeout = $timeout; } function open($mode = 'w') { if ($this->_dbh) return; // already open. $watchdog = $this->_timeout; global $ErrorManager; $this->_dba_open_error = false; $ErrorManager->pushErrorHandler(new WikiMethodCb($this, '_dba_open_error_handler')); // oops, you don't have DBA support. if (!function_exists("dba_open")) { echo "You don't seem to have DBA support compiled into PHP."; } // lock supported since 4.3.0: if (check_php_version(4,3,0) and (strlen($mode) == 1)) { // PHP 4.3.x Windows lock bug workaround: http://bugs.php.net/bug.php?id=23975 if (isWindows()) { $mode .= "-"; // suppress locking, or } elseif ($this->_handler != 'gdbm') { // gdbm does it internally $mode .= "d"; // else use internal locking } } while (($dbh = dba_open($this->_file, $mode, $this->_handler)) < 1) { if ($watchdog <= 0) break; flush(); // "c" failed, try "w" instead. if (substr($mode,0,1) == "c" and file_exists($this->_file)) $mode = "w"; // conflict: wait some random time to unlock (see ethernet) $secs = 0.5 + ((double)rand(1,32767)/32767); sleep($secs); $watchdog -= $secs; if (strlen($mode) == 2) $mode = substr($mode,0,-1); } $ErrorManager->popErrorHandler(); if (!$dbh) { if ( ($error = $this->_dba_open_error) ) { $error->errno = E_USER_ERROR; $error->errstr .= "\nfile: " . $this->_file . "\nmode: " . $mode . "\nhandler: " . $this->_handler; $ErrorManager->handleError($error); } else { trigger_error("dba_open failed", E_USER_ERROR); } } $this->_dbh = $dbh; return !empty($dbh); } function close() { if ($this->_dbh) dba_close($this->_dbh); $this->_dbh = false; } function exists($key) { return dba_exists($key, $this->_dbh); } function fetch($key) { $val = dba_fetch($key, $this->_dbh); if ($val === false) return $this->_error("fetch($key)"); return $val; } function insert($key, $val) { if (!dba_insert($key, $val, $this->_dbh)) return $this->_error("insert($key)"); } function replace($key, $val) { if (!dba_replace($key, $val, $this->_dbh)) return $this->_error("replace($key)"); } function firstkey() { return dba_firstkey($this->_dbh); } function nextkey() { return dba_nextkey($this->_dbh); } function delete($key) { if (!dba_delete($key, $this->_dbh)) return $this->_error("delete($key)"); } function get($key) { return dba_fetch($key, $this->_dbh); } function set($key, $val) { $dbh = &$this->_dbh; if (dba_exists($key, $dbh)) { if ($val !== false) { if (!dba_replace($key, $val, $dbh)) return $this->_error("store[replace]($key)"); } else { if (!dba_delete($key, $dbh)) return $this->_error("store[delete]($key)"); } } else { if (!dba_insert($key, $val, $dbh)) return $this->_error("store[insert]($key)"); } } function sync() { if (!dba_sync($this->_dbh)) return $this->_error("sync()"); } function optimize() { if (!dba_optimize($this->_dbh)) return $this->_error("optimize()"); return 1; } function _error($mes) { //trigger_error("DbaDatabase: $mes", E_USER_WARNING); //return false; trigger_error("$this->_file: dba error: $mes", E_USER_ERROR); } function _dump() { $dbh = &$this->_dbh; for ($key = $this->firstkey($dbh); $key; $key = $this->nextkey($dbh)) printf("%10s: %s\n", $key, $this->fetch($key)); } function _dba_open_error_handler($error) { $this->_dba_open_error = $error; return true; } } // $Log: DbaDatabase.php,v $ // Revision 1.21 2006/09/06 05:42:54 rurban // unify dbh arg // // Revision 1.20 2006/08/15 13:35:33 rurban // just aesthetics // // Revision 1.19 2006/06/18 11:01:25 rurban // add rcsid log // // (c-file-style: "gnu") // Local Variables: // mode: php // tab-width: 8 // c-basic-offset: 4 // c-hanging-comment-ender-p: nil // indent-tabs-mode: nil // End: ?> phpwiki-1.3.13/lib/DbaListSet.php 0000664 0001754 0001001 00000007640 10552301002 016243 0 ustar rurban phpwiki _dbh = &$dbh; } function create_sequence($seq) { $dbh = &$this->_dbh; if (!$dbh->exists('max_key')) { // echo "initializing DbaListSet"; // FIXME: check to see if it's really empty? $dbh->insert('max_key', 0); } $key = "s" . urlencode($seq); assert(intval($key) == 0 && !strstr($key, ':')); if (!$dbh->exists($key)) $dbh->insert($key, "$key:$key:"); } function delete_sequence($seq) { $key = "s" . urlencode($seq); for ($i = $this->firstkey($seq); $i; $i = $next) { $next = $this->next($i); $this->delete($i); } $this->_dbh->delete($key); } function firstkey($seq) { $key = "s" . urlencode($seq); list(, $next) = explode(':', $this->_dbh->fetch($key), 3); return intval($next); } function lastkey($seq) { $key = "s" . urlencode($seq); list($prev) = explode(':', $this->_dbh->fetch($key), 3); return intval($prev); } function next($i) { list( , $next, ) = explode(':', $this->_dbh->fetch(intval($i)), 3); return intval($next); } function prev(&$i) { list( $prev , , ) = explode(':', $this->_dbh->fetch(intval($i)), 3); return intval($prev); } function exists($i) { $i = intval($i); return $i && $this->_dbh->exists($i); } function fetch($i) { list(, , $data) = explode(':', $this->_dbh->fetch(intval($i)), 3); return $data; } function replace($i, $data) { $dbh = &$this->_dbh; list($prev, $next,) = explode(':', $dbh->fetch(intval($i)), 3); $dbh->replace($i, "$prev:$next:$data"); } function insert_before($i, $data) { assert(intval($i)); return $this->_insert_before_nc($i, $data); } function insert_after($i, $data) { assert(intval($i)); return $this->_insert_after_nc($i, $data); } function append($seq, $data) { $key = "s" . urlencode($seq); $this->_insert_before_nc($key, $data); } function prepend($seq, $data) { $key = "s" . urlencode($seq); $this->_insert_after_nc($key, $data); } function _insert_before_nc($i, &$data) { $newkey = $this->_new_key(); $old_prev = $this->_setprev($i, $newkey); $this->_setnext($old_prev, $newkey); $this->_dbh->insert($newkey, "$old_prev:$i:$data"); return $newkey; } function _insert_after_nc($i, &$data) { $newkey = $this->_new_key(); $old_next = $this->_setnext($i, $newkey); $this->_setprev($old_next, $newkey); $this->_dbh->insert($newkey, "$i:$old_next:$data"); return $newkey; } function delete($i) { $dbh = &$this->_dbh; list($prev, $next) = explode(':', $dbh->fetch(intval($i)), 3); $this->_setnext($prev, $next); $this->_setprev($next, $prev); $dbh->delete(intval($i)); } function _new_key() { $dbh = &$this->_dbh; $new_key = $dbh->fetch('max_key') + 1; $dbh->replace('max_key', $new_key); return $new_key; } function _setprev($i, $new_prev) { $dbh = &$this->_dbh; list($old_prev, $next, $data) = explode(':', $dbh->fetch($i), 3); $dbh->replace($i, "$new_prev:$next:$data"); return $old_prev; } function _setnext($i, $new_next) { $dbh = &$this->_dbh; list($prev, $old_next, $data) = explode(':', $dbh->fetch($i), 3); $dbh->replace($i, "$prev:$new_next:$data"); return $old_next; } } // For emacs users // Local Variables: // mode: php // tab-width: 8 // c-basic-offset: 4 // c-hanging-comment-ender-p: nil // indent-tabs-mode: nil // End: ?> phpwiki-1.3.13/lib/DbaPartition.php 0000664 0001754 0001001 00000003603 10552301002 016620 0 ustar rurban phpwiki _h = &$dbm; $this->_p = $prefix; } function open($mode = 'w') { $this->_h->open(); } function close() { $this->_h->close(); } function firstkey() { $dbh = &$this->_h; $prefix = &$this->_p; $n = strlen($prefix); for ($key = $dbh->firstkey(); $key !== false; $key = $dbh->nextkey()) { if (substr($key, 0, $n) == $prefix) return (string) substr($key, $n); } return false; } function nextkey() { $dbh = &$this->_h; $prefix = &$this->_p; $n = strlen($prefix); for ($key = $dbh->nextkey(); $key !== false; $key = $dbh->nextkey()) { if (substr($key, 0, $n) == $prefix) return (string) substr($key, $n); } return false; } function exists($key) { return $this->_h->exists($this->_p . $key); } function fetch($key) { return $this->_h->fetch($this->_p . $key); } function insert($key, $val) { return $this->_h->insert($this->_p . $key, $val); } function replace($key, $val) { return $this->_h->replace($this->_p . $key, $val); } function delete($key) { return $this->_h->delete($this->_p . $key); } function get($key) { return $this->_h->get($this->_p . $key); } function set($key, $val) { return $this->_h->set($this->_p . $key, $val); } function sync() { return $this->_h->sync(); } function optimize() { return $this->_h->optimize(); } } // Local Variables: // mode: php // tab-width: 8 // c-basic-offset: 4 // c-hanging-comment-ender-p: nil // indent-tabs-mode: nil // End: ?> phpwiki-1.3.13/lib/DbSession/ 0000775 0001754 0001001 00000000000 10552276451 015441 5 ustar rurban phpwiki phpwiki-1.3.13/lib/DbSession/ADODB.php 0000644 0001754 0001001 00000021654 10552301002 016746 0 ustar rurban phpwiki used cars