Код с 1 по 248 строку
Код:

<?php
define ("SERV_ROOT", "http://" . $_SERVER["SERVER_NAME"]);
define ("DOCS_ROOT", $_SERVER["DOCUMENT_ROOT"]);
define ("MOD_OF_APACHE", (integer)(strtolower(php_sapi_name()) == "apache"));
if (MOD_OF_APACHE)
define ("ONInFo", (
$_SERVER["SCRIPT_NAME"] == "/InFo/InFo.php" ||
$_SERVER["SCRIPT_NAME"] == "/InFo/InFo2.php" ||
$_SERVER["SCRIPT_NAME"] == "/InFo/InFo.browse.php" ||
$_SERVER["SCRIPT_NAME"] == "/InFo/InFo.tree.php" ||
$_SERVER["SCRIPT_NAME"] == "/InFo/tree/InFo.deeptree.php"
));
else
define ("ONInFo", (
$_SERVER["PATH_INFO"] == "/InFo/InFo.php" ||
$_SERVER["PATH_INFO"] == "/InFo/InFo.browse.php" ||
$_SERVER["PATH_INFO"] == "/InFo/InFo.tree.php" ||
$_SERVER["PATH_INFO"] == "/InFo/tree/InFo.deeptree.php"
));
define ("MSIE", preg_match("/MSIE/i", $_SERVER["HTTP_USER_AGENT"]));
foreach(get_included_files() as $incfileindex => $incfilepath)
if (substr($incfilepath, -15, 15) === "InFo.kernel.php")
{
$incfilepath = dirname($incfilepath);
$incfilepath = str_replace("\\", "/", $incfilepath);
define(InFo_PATH, $incfilepath);
break;
}
require InFo_PATH . "/InFo.cgi.php";// яюфъы?ўхэшх ъырёёр InFo_CGI
require InFo_PATH . "/InFo.tree.class.php";// яюфъы?ўхэшх ъырёёют TREE_ELEMENT, TREE
require InFo_PATH . "/InFo.item.php";// яюфъы?ўхэшх ъырёёр InFo_ITEM
require InFo_PATH . "/InFo.database.php";// яюфъы?ўхэшх ъырёёр InFo_DATABASE
if (ONInFo) require InFo_PATH . "/InFo.auth.php";
require InFo_PATH . "/InFo.user.php";// яюфъы?ўхэшх Їрщыр ё ъырёёюь User
include InFo_PATH . "/InFo.init.php";// ?????? ???????? !!!!
class InFo_ELEMENT_INFO {
var $RealID;
var $ElementID;
var $ParentID;
function InFo_ELEMENT_INFO($RealID = 0, $ParentID = -1, $ElementID = -1)
{
$this->RealID = $RealID;
$this->ParentID = $ParentID;
if ($ElementID == -1)
$this->ElementID = $ReadID;
else
$this->ElementID = $ElementID;
}
}
class InFo_ITEM_LIST {
var $ITEMS;
var $LOADED_ITEMS;
var $ElementID;
var $AVAILABLE;
var $DEPENDENCIES = array();
var $PParams = array();
var $sortFields = array();
var $limitArray = array();
var $OrderLists = array();
var $ActiveOList = 0;
var $OLISTPOS = array();
var $ElementCounts = array();
var $mainOrder;
function InFo_ITEM_LIST($ElementID)
{
global $InFo;
$this->ITEMS = array();
$this->LOADED_ITEMS = array();
$this->ElementID = $ElementID;
$this->LOAD_ITEMS();
$this->mainOrder=$InFo->FIELD_EORDER;
}
function createOrderList($OrderList = 0)
{
if ($OrderList === 0)
$OrderList = $this->ActiveOList;
$this->OrderLists[$OrderList] = array();
$this->resetOrderList($OrderList);
}
function setActiveOList($OrderList)
{
$this->ActiveOList = $OrderList;
}
function addToOrderList($ElementID, $OrderList = 0)
{
if ($OrderList === 0)
$OrderList = $this->ActiveOList;
if (!is_array($this->OrderLists[$OrderList])) $this->createOrderList($OrderList);
$this->OrderLists[$OrderList][] = $ElementID;
}
function remFromOrderList($ElementID, $OrderList = 0)
{
if ($OrderList === 0) $OrderList = $this->ActiveOList;
unset($this->OrderLists[$OrderList][$ElementID]);
}
function createSort($OrderList = 0)
{
if ($OrderList === 0) $OrderList = $this->ActiveOList;
$this->resetOrderList($OrderList);
}
function resetOrderList($OrderList = 0)
{
if ($OrderList === 0) $OrderList = $this->ActiveOList;
$this->OLISTPOS[$OrderList] = 0;
}
function countOrderList($OrderList = 0)
{
if ($OrderList === 0) $OrderList = $this->ActiveOList;
return count($this->OrderLists[$OrderList]);
}
function nextOrderList($OrderList = 0)
{
if ($OrderList === 0) $OrderList = $this->ActiveOList;
$returnObjRef = $this->getElement($this->OrderLists[$OrderList][$this->OLISTPOS[$OrderList]]);
$this->OLISTPOS[$OrderList]++;
return $returnObjRef;
}
function dropOrderList($OrderList = 0)
{
if ($OrderList === 0) $OrderList = $this->ActiveOList;
if (isset($this->OrderLists[$OrderList]))
unset($this->OrderLists[$OrderList]);
}
function setOrderField($ItemID, $PropertyName, $desc = false)
{
global $InFo;
$this->mainOrder=$InFo->FIELD_EORDER;
if ((is_object($this->ITEMS[$ItemID]->PROPERTIES[$PropertyName])
&& $this->ITEMS[$ItemID]->PROPERTIES[$PropertyName]->DB_PRESENT)
|| $PropertyName == $InFo->FIELD_ID || $PropertyName == $InFo->FIELD_NAME)
{
$this->sortFields[$ItemID] = $PropertyName;
if ($desc) $this->sortFields[$ItemID] .= " DESC";
}
elseif(strtolower($PropertyName)=="rand()"){
$this->sortFields[$ItemID]="rand()";
$this->mainOrder="rand()";
}
else return false;
}
function dropOrderField($ItemID){
global $InFo;
if($this->sortFields[$ItemID]=="rand()"){
$this->mainOrder=$InFo->FIELD_EORDER;
}
if (isset($this->sortFields[$ItemID])){
unset($this->sortFields[$ItemID]);
}
else return false;
}
function resortNativeOrder($OrderList = 0)
{
if ($OrderList === 0) $OrderList = $this->ActiveOList;
$newOrderList = array();
$sortList = array();
if (is_array($this->OrderLists[$OrderList])) {
foreach($this->OrderLists[$OrderList] as $i => $ElementID) {
$OBJECT = $this->getElement($this->OrderLists[$OrderList][$i]);
if (isset($sortList[$OBJECT->ElementOrder]))
$sortList[] = $ElementID;
else $sortList[$OBJECT->ElementOrder] = $ElementID;
}
$this->dropOrderList($OrderList);
ksort($sortList, SORT_NUMERIC);
foreach ($sortList as $ElementID)
$this->addToOrderList($ElementID, $OrderList);
}
}
function createClause($ItemID, $Clause)
{
if (is_object($this->ITEMS[$ItemID]) && $this->ITEMS[$ItemID]->DB_PRESENT)
$this->clauseArray[$ItemID] = $Clause;
else return false;
}
function createLimit($ItemID, $From, $Count)
{
if (is_object($this->ITEMS[$ItemID]) && $this->ITEMS[$ItemID]->DB_PRESENT && $From >= 0 && $Count > 0)
$this->limitArray[$ItemID] = array($From, $Count);
else return false;
}
function dropLimit($ItemID)
{
if (isset($this->limitArray[$ItemID]))
unset($this->limitArray[$ItemID]);
else return false;
}
function LOAD_AVAILABLE($ElementID)
{
global $InFo;
$this->AVAILABLE = array();
$query = "SELECT $InFo->FIELD_ITEM_ID FROM $InFo->TABLE_CROSS WHERE *$InFo->FIELD_ID = $ElementID";
$res = mysql_query($query, $InFo->DB_ID);
while ($row = mysql_fetch_row($res)) {
if (isset($this->ITEMS[$row[0]]))
$this->AVAILABLE[] = $row[0];
}
mysql_free_result($res);
}
function LOAD_DEPENDENCIES($ItemID)
{
global $InFo;
$this->DEPENDENCIES = array();
$query = "SELECT " . $InFo->FIELD_DEP_ID . " FROM " . $InFo->TABLE_DEPENDENCIES . " WHERE " . $InFo->FIELD_ITEM_ID . "=" . $ItemID;
$res = mysql_query($query, $InFo->DB_ID);
while ($row = mysql_fetch_row($res)) {
if (isset($this->ITEMS[$row[0]]))
$this->DEPENDENCIES[] = $row[0];
}
mysql_free_result($res);
}
function LOAD_ITEMS()
{
global $InFo;
$query = "SELECT $InFo->FIELD_ITEM_ID,$InFo->FIELD_PROP_N,$InFo->FIELD_PARAM_NAME,$InFo->FIELD_PARAM_VALUE FROM $InFo->TABLE_PPARAMS";
$res = mysql_query($query, $InFo->DB_ID);
$this->PParams = array();
while (list($ItemID, $PropertyName, $ParameterName, $ParameterValue) = @mysql_fetch_row($res)) {
$this->PParams[$ItemID][$PropertyName][$ParameterName] = $ParameterValue;
}
[s]Исправлено:
Negativ, 12:24 13-07-2004[/s]