Page Menu
Home
In-Portal Phabricator
Search
Configure Global Search
Log In
Files
F1051352
cachecount.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Thu, Jul 3, 10:42 PM
Size
7 KB
Mime Type
text/x-php
Expires
Sat, Jul 5, 10:42 PM (1 d, 4 h)
Engine
blob
Format
Raw Data
Handle
679249
Attached To
rINP In-Portal
cachecount.php
View Options
<?php
class
clsCacheCount
extends
clsItemDB
{
function
clsCacheCount
(
$id
=
NULL
)
{
global
$g_TablePrefix
;
$this
->
clsItemDB
();
$this
->
tablename
=
GetTablePrefix
().
"CountCache"
;
$this
->
id_field
=
"CountCacheId"
;
$this
->
NoResourceId
=
1
;
if
(
$id
)
$this
->
LoadFromDatabase
(
$id
);
}
function
LoadFromDatabase
(
$Id
)
{
global
$Errors
;
if
(!
isset
(
$Id
))
{
$Errors
->
AddError
(
"error.AppError"
,
NULL
,
'Internal error: LoadFromDatabase id'
,
""
,
get_class
(
$this
),
"LoadFromDatabase"
);
return
false
;
}
$sql
=
sprintf
(
"SELECT * FROM "
.
$this
->
tablename
.
" WHERE "
.
$this
->
IdField
().
" = '%s'"
,
$Id
);
$result
=
$this
->
adodbConnection
->
Execute
(
$sql
);
if
(
$result
===
false
)
{
$Errors
->
AddError
(
"error.DatabaseError"
,
NULL
,
$this
->
adodbConnection
->
ErrorMsg
(),
""
,
get_class
(
$this
),
"LoadFromDatabase"
);
return
false
;
}
$data
=
$result
->
fields
;
$this
->
SetFromArray
(
$data
);
$this
->
Clean
();
return
true
;
}
}
class
clsCacheCountList
extends
clsItemCollection
{
var
$CategoryId
=
0
;
var
$Loaded
=
FALSE
;
function
clsCacheCountList
(
$CatId
=
NULL
)
{
$this
->
clsItemCollection
();
$this
->
SourceTable
=
GetTablePrefix
().
"CountCache"
;
$this
->
classname
=
"clsCacheCount"
;
if
(
$CatId
)
$this
->
CategoryId
=
$CatId
;
}
function
LoadCategoryValues
()
{
if
(
$this
->
Loaded
==
FALSE
)
{
$sql
=
"SELECT * FROM "
.
$this
->
SourceTable
.
" WHERE CategoryId="
.(
int
)
$this
->
CategoryId
;
$this
->
Query_Item
(
$sql
);
$this
->
Loaded
=
TRUE
;
}
}
function
GetItemByField
(
$Field
,
$Value
,
$LoadFromDB
=
TRUE
)
{
$found
=
FALSE
;
if
(
is_array
(
$this
->
Items
))
{
foreach
(
$this
->
Items
as
$i
)
{
if
(
$i
->
Get
(
$Field
)==
$Value
&&
$i
->
Get
(
"CategoryId"
)==
$this
->
CategoryId
)
{
$found
=
TRUE
;
break
;
}
}
}
if
(!
$found
&&
$LoadFromDB
==
TRUE
)
{
$sql
=
"SELECT * FROM "
.
$this
->
SourceTable
.
" WHERE $Field = '$Value' AND CategoryId="
.(
int
)
$this
->
CategoryId
;
$res
=
$this
->
adodbConnection
->
Execute
(
$sql
);
if
(
$res
&&
!
$res
->
EOF
)
{
$i
=
$this
->
AddItemFromArray
(
$res
->
fields
);
}
else
$i
=
FALSE
;
}
return
$i
;
}
function
GetCountObject
(
$ListType
,
$ItemType
,
$ExtraId
,
$TodayOnly
)
{
$found
=
FALSE
;
if
(
is_array
(
$this
->
Items
))
{
foreach
(
$this
->
Items
as
$i
)
{
if
(
$i
->
Get
(
"ItemType"
)==
$ItemType
&&
$i
->
Get
(
"ListType"
)==
$ListType
&&
(
$i
->
Get
(
"ExtraId"
)==
$ExtraId
)
&&
$i
->
Get
(
"TodayOnly"
)==
$TodayOnly
)
{
$found
=
TRUE
;
break
;
}
}
}
if
(!
$found
)
{
$ListType
=
intval
(
$ListType
);
$sql
=
"SELECT * FROM "
.
$this
->
SourceTable
.
" WHERE ItemType=$ItemType AND ListType=$ListType AND ExtraId='$ExtraId' AND TodayOnly=$TodayOnly"
;
$res
=
$this
->
adodbConnection
->
Execute
(
$sql
);
if
(
$res
&&
!
$res
->
EOF
)
{
$i
=
$this
->
AddItemFromArray
(
$res
->
fields
);
$found
=
TRUE
;
}
else
$i
=
FALSE
;
}
if
(!
$found
)
$i
=
FALSE
;
return
$i
;
}
function
GetValue
(
$ListType
,
$ItemType
,
$ExtraId
,
$TodayOnly
,
$Timeout
)
{
$val
=
""
;
if
(
strlen
(
$ExtraId
))
{
$i
=
$this
->
GetCountObject
(
$ListType
,
$ItemType
,
$ExtraId
,
$TodayOnly
);
if
(
is_object
(
$i
))
{
$d
=
$i
->
Get
(
"LastUpdate"
);
$el
=
adodb_date
(
"U"
)
-
$d
;
if
(
$el
>
$Timeout
)
{
$val
=
""
;
}
else
{
if
(
$i
->
Get
(
"CountCacheId"
)>
0
)
{
$val
=
$i
->
Get
(
"Value"
);
}
}
}
unset
(
$i
);
}
else
{
$sql
=
"SELECT Value,LastUpdate FROM "
.
$this
->
SourceTable
.
" WHERE ListType=$ListType AND ItemType=$ItemType AND TodayOnly=$TodayOnly"
;
$rs
=
$this
->
adodbConnection
->
Execute
(
$sql
);
if
(
$rs
&&
!
$rs
->
EOF
)
{
$d
=
$rs
->
fields
[
"LastUpdate"
];
$el
=
adodb_date
(
"U"
)
-
$d
;
if
(
$el
<
$Timeout
)
{
$val
=
(
int
)
$rs
->
fields
[
"Value"
];
}
else
{
$val
=
""
;
$rs
=
FALSE
;
}
}
}
return
$val
;
}
function
SetValue
(
$ListType
,
$ItemType
,
$ExtraId
,
$Today
,
$Value
)
{
$c
=
$this
->
GetCountObject
(
$ListType
,
$ItemType
,
$ExtraId
,
$Today
);
if
(
is_object
(
$c
))
{
$c
->
Set
(
"Value"
,
$Value
);
$c
->
Set
(
"LastUpdate"
,
adodb_date
(
"U"
));
$c
->
Update
();
}
else
{
$c
=
new
$this
->
classname
;
$c
->
Set
(
"ListType"
,
$ListType
);
$c
->
Set
(
"ItemType"
,
$ItemType
);
$c
->
Set
(
"ExtraId"
,
$ExtraId
);
$c
->
Set
(
"Value"
,
$Value
);
$c
->
Set
(
"TodayOnly"
,
$Today
);
$c
->
Set
(
"LastUpdate"
,
adodb_date
(
"U"
));
$c
->
Create
();
}
}
function
DeleteValue
(
$ListType
,
$ItemType
,
$ExtraId
,
$Today
)
{
$c
=
$this
->
GetCountObject
(
$ListType
,
$ItemType
,
$ExtraId
,
$Today
);
if
(
is_object
(
$c
))
{
$c
->
Delete
();
}
}
function
EraseGlobalTypeCache
(
$ItemType
)
{
global
$objItemTypes
;
$db
=
&
GetADODBConnection
();
if
(
!
is_numeric
(
$ItemType
)
)
{
$sql
=
'SELECT ItemType FROM '
.
$objItemTypes
->
SourceTable
.
' WHERE ItemName=
\'
'
.
$ItemType
.
'
\'
'
;
$ItemType
=
$db
->
GetOne
(
$sql
);
}
$sql
=
'DELETE FROM '
.
$this
->
SourceTable
.
' WHERE ItemType='
.
$ItemType
.
' AND ListType=0'
;
$rs
=
$db
->
Execute
(
$sql
);
}
function
IncrementParentValues
(
$ValueName
,
$CatList
,
$IncVal
=
1
)
{
$sql
=
"UPDATE "
.
$this
->
SourceTable
.
" SET Value=Value+$IncVal WHERE CategoryId IN ($CatList) AND ItemType='$ValueName'"
;
//echo $sql."<br>\n";
$this
->
adodbConnection
->
Execute
(
$sql
);
}
function
DecrementParentValues
(
$ValueName
,
$CatList
,
$DecVal
=
1
)
{
$sql
=
"UPDATE "
.
$this
->
SourceTable
.
" SET Value=Value-$DecVal WHERE CategoryId IN ($CatList)"
;
//echo $sql."<br>\n";
$this
->
adodbConnection
->
Execute
(
$sql
);
}
function
GetCatListTotal
(
$ValueName
,
$CatList
)
{
global
$objItemTypes
;
if
(
is_array
(
$CatList
))
$CatList
=
implode
(
","
,
$CatList
);
if
(
$ValueName
>
0
)
{
$sql
=
"SELECT SUM(Value) as total FROM "
.
$this
->
SourceTable
.
" WHERE CategoryId IN ("
.
$CatList
.
") AND ItemType='"
.
$ValueName
.
"'"
;
}
else
{
foreach
(
$objItemTypes
->
Items
as
$i
)
{
$AutoTypes
[]
=
$i
->
Get
(
"ItemType"
);
}
$types
=
implode
(
","
,
$AutoTypes
);
$sql
=
"SELECT SUM(Value) as total FROM "
.
$this
->
SourceTable
.
" WHERE CategoryId IN ("
.
$CatList
.
") AND ItemType IN ($types)"
;
}
//echo $sql;
$rs
=
$this
->
adodbConnection
->
Execute
(
$sql
);
if
(
$rs
&&
!
$rs
->
EOF
)
{
return
(
int
)
$rs
->
fields
[
"total"
];
}
else
return
0
;
}
function
GetCategoryCount
(
$CategoryId
)
{
$sql
=
"SELECT SUM(Value) as total FROM "
.
$this
->
SourceTable
.
" WHERE CategoryId="
.
$CategoryId
;
//echo $sql."<br>\n";
$rs
=
$this
->
adodbConnection
->
Execute
(
$sql
);
if
(
$rs
&&
!
$rs
->
EOF
)
{
return
$rs
->
fields
[
"total"
];
}
else
return
0
;
}
function
RefreshCategoryCount
(
$CategoryId
,
$ItemType
)
{
global
$objCatList
,
$objItemTypes
;
}
}
?>
Event Timeline
Log In to Comment