19 require_once(BASE.
"wcmf/lib/persistence/class.RemoteCapablePersistenceFacadeImpl.php");
20 require_once(BASE.
"wcmf/lib/persistence/class.PersistenceFacadeImpl.php");
25 define(
"BUILDDEPTH_INFINITE", -1);
26 define(
"BUILDDEPTH_SINGLE", -2);
27 define(
"BUILDDEPTH_REQUIRED", -4);
28 define(
"BUILDDEPTH_MAX", 10);
49 static $instance = null;
51 if (!isset($instance))
62 if (self::$knownTypes == null)
65 self::$knownTypes = $parser->getSection(
'typemapping');
67 return array_keys(self::$knownTypes);
76 if (self::$knownTypes == null) {
77 self::getKnownTypes();
79 return (isset(self::$knownTypes[$type]) || isset(self::$knownTypes[
'*']));
108 if (!is_array($params) || !isset($params[
'type']))
111 $type = $params[
'type'];
115 if (array_key_exists(
'id', $params))
117 $givenPKs = $params[
'id'];
118 if (!is_array($givenPKs))
119 array_push($pks, $givenPKs);
125 $numPKs = self::getNumberOfPKs($type);
126 while (
sizeof($pks) < $numPKs)
127 array_push($pks, self::getDummyId());
130 $oid = $type.
':'.join(
':', $pks);
131 if (isset($params[
'prefix']) && strlen(trim($params[
'prefix'])) > 0) {
132 $oid = $params[
'prefix'].
':'.$oid;
145 if (self::isKnownType($oidParts[
'type']))
150 $oidParams = array(
'type' => $tpl->getBaseType(),
'id' => $oidParts[
'id']);
151 if (strlen($oidParts[
'prefix']) > 0) {
152 $oidParams[
'prefix'] = $oidParts[
'prefix'];
168 $oidParts = self::extractOIDParts($oid);
169 if (!$oidParts[
'valid'] && $validate) {
185 $oidParts = self::decomposeOID($oid, $validate);
186 return $oidParts[$param];
199 $oidParts = self::decomposeOID($oid);
200 $oidParts[$param] = $value;
201 return self::composeOID($oidParts);
210 $oidParts = self::extractOIDParts($oid);
211 if (!$oidParts[
'valid']) {
223 if (!isset(self::$numPkKeys[$type]))
226 if (self::isKnownType($type))
228 $persistenceFacade = &self::getInstance();
229 $mapper = &$persistenceFacade->getMapper($type);
230 $numPKs =
sizeof(array_keys($mapper->getPKNames()));
232 self::$numPkKeys[$type] = $numPKs;
234 return self::$numPkKeys[$type];
242 return "wcmf".md5(uniqid(ip2long($_SERVER[
'REMOTE_ADDR']) ^ (
int)$_SERVER[
'REMOTE_PORT'] ^ @getmypid() ^ @disk_free_space(
'/tmp'), 1));
251 static $pattern = null;
252 if ($pattern == null) {
253 $pattern =
'/^'.self::$dummyIdPattern.
'$/';
255 return preg_match($pattern, $id) > 0;
267 if (strlen($oid) == 0) {
272 $oidParts = split(
':', $oid);
273 if (!is_array($oidParts)) {
278 static $idPattern = null;
279 if ($idPattern == null) {
280 $idPattern =
'/^[0-9]*$|^'.self::$dummyIdPattern.
'$/';
285 $nextPart = array_pop($oidParts);
286 while($nextPart !== null && preg_match($idPattern, $nextPart) == 1)
289 $nextPart = array_pop($oidParts);
291 $ids = array_reverse($ids);
295 if (!self::isKnownType($type)) {
301 $numPks = self::getNumberOfPKs($type);
302 if ($numPks == null || $numPks !=
sizeof($ids)) {
307 $prefix = join(
':', $oidParts);
310 return array(
'prefix' => $prefix,
'type' => $type,
'id' => $ids,
'valid' => $valid);
ObjectQuery is the base class for object queries. This class provides the user with object templates ...
setOIDParameter($oid, $param, $value)
throwEx($message, $file='', $line='')
PersistenceFacade instantiates the PersistenceFacade implementation.
decomposeOID($oid, $validate=true)
getBaseOID($oid, $validate=true)
getOIDParameter($oid, $param, $validate=true)
StringQuery executes queries from a string representation. Queries are constructed like WHERE clauses...