0) { if (!isset(self::$CACHE[$classname][$params[1]])) { self::$CACHE[$classname][$params[1]] = new $classname($params[1]); } return self::$CACHE[$classname][$params[1]]; } else { unset($params[0]); foreach ($params as $k => $v) { if (is_string($v)) { $params[$k] = "'".addslashes($v)."'"; } } if (defined('EXTENDED_CLASS_PATH') && @include_once(EXTENDED_CLASS_PATH.$classname.'.ext.class.php')) { $classname = 'extended_'.$classname; } return eval('return new '.$classname.'('.join(", ", $params).');'); } } public static function BuildList($classname, $values) { $List_Of_Objects = array(); if (($array_values = self::unserialize($values)) && sizeof($array_values) > 0) { foreach ($array_values as $v) { if ((int) $v > 0) { $List_Of_Objects[(int) $v] = Factory::Build($classname, (int) $v); } } } return $List_Of_Objects; } public static function SerializeList($v) { if (is_array($v) && sizeof($v) > 0) { return join(ARRAY_DB_DELIMITER, array_keys($v)); } else { return ''; } } public static function serialize($v) { if (is_array($v) && sizeof($v) > 0) { return join(ARRAY_DB_DELIMITER, array_keys($v)); } else if (is_object($v)) { return join(ARRAY_DB_DELIMITER, $v->get_keys()); } else { return ''; } } public static function unserialize($values) { if (is_string($values)) { $array_values = explode(ARRAY_DB_DELIMITER, $values); } else if (is_array($values)) { $array_values = $values; } else { $array_values = false; } return $array_values; } public static function Search($classname, $where) { $OBJET = self::Build($classname); switch (func_num_args()) { case 2: return $OBJET->Search(func_get_arg(1)); break; case 3: return $OBJET->Search(func_get_arg(1), func_get_arg(2)); break; case 4: return $OBJET->Search(func_get_arg(1), func_get_arg(2), func_get_arg(3)); break; case 5: return $OBJET->Search(func_get_arg(1), func_get_arg(2), func_get_arg(3), func_get_arg(4)); break; } } } ?>