Page Menu
Home
In-Portal Phabricator
Search
Configure Global Search
Log In
Files
F1155204
cat_dbitem.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
Tue, Sep 16, 6:24 AM
Size
3 KB
Mime Type
text/x-php
Expires
Thu, Sep 18, 6:24 AM (33 s ago)
Engine
blob
Format
Raw Data
Handle
747476
Attached To
rINP In-Portal
cat_dbitem.php
View Options
<?php
class
kCatDBItem
extends
kDBItem
{
function
Create
()
{
if
(!
$this
->
Validate
())
return
false
;
$this
->
SetDBField
(
'ResourceId'
,
$this
->
Application
->
NextResourceId
());
$this
->
SetDBField
(
'Modified'
,
mktime
());
$ret
=
parent
::
Create
();
if
(
$ret
)
{
if
(
kTempTablesHandler
::
IsTempTable
(
$this
->
TableName
)
)
{
$table
=
kTempTablesHandler
::
GetTempName
(
TABLE_PREFIX
.
'CategoryItems'
);
}
else
{
$table
=
TABLE_PREFIX
.
'CategoryItems'
;
}
$cat_id
=
$this
->
Application
->
GetVar
(
'm_cat_id'
);
$query
=
'INSERT INTO '
.
$table
.
' (CategoryId,ItemResourceId,PrimaryCat)
VALUES ('
.
$cat_id
.
','
.
$this
->
GetField
(
'ResourceId'
).
',1)'
;
$this
->
Conn
->
Query
(
$query
);
}
return
$ret
;
}
function
Update
(
$id
=
null
)
{
$this
->
VirtualFields
[
'ResourceId'
]
=
true
;
$this
->
SetDBField
(
'Modified'
,
mktime
());
return
parent
::
Update
(
$id
);
}
function
Copy
(
$cat_id
=
null
)
{
if
(!
isset
(
$cat_id
))
$cat_id
=
$this
->
Application
->
GetVar
(
'm_cat_id'
);
$this
->
NameCopy
(
$cat_id
);
return
$this
->
Create
(
$cat_id
);
}
function
NameCopy
(
$master
=
null
,
$foreign_key
=
null
)
{
$title_field
=
$this
->
Application
->
getUnitOption
(
$this
->
Prefix
,
'TitleField'
);
if
(!
$title_field
)
return
;
$new_name
=
$this
->
GetDBField
(
'Name'
);
$cat_id
=
$this
->
Application
->
GetVar
(
'm_cat_id'
);
$original_checked
=
false
;
do
{
if
(
preg_match
(
"/Copy ([0-9]*)[ ]*of(.*)/"
,
$new_name
,
$regs
)
)
{
$new_name
=
'Copy '
.(
$regs
[
1
]+
1
).
' of '
.
$regs
[
2
];
}
elseif
(
$original_checked
)
{
$new_name
=
'Copy of '
.
$new_name
;
}
$query
=
'SELECT '
.
$title_field
.
' FROM '
.
$this
->
TableName
.
'
LEFT JOIN '
.
TABLE_PREFIX
.
'CategoryItems ON
('
.
TABLE_PREFIX
.
'CategoryItems.ItemResourceId = '
.
$this
->
TableName
.
'.ResourceId)
WHERE ('
.
TABLE_PREFIX
.
'CategoryItems.CategoryId = '
.
$cat_id
.
') AND '
.
$title_field
.
' = '
.
$this
->
Conn
->
qstr
(
$new_name
);
$res
=
$this
->
Conn
->
GetOne
(
$query
);
$original_checked
=
true
;
}
while
(
$res
!==
false
);
$this
->
SetDBField
(
$title_field
,
$new_name
);
}
function
MoveToCat
(
$cat_id
=
null
)
{
// $this->NameCopy();
$cat_id
=
$this
->
Application
->
GetVar
(
'm_cat_id'
);
// check if the product already exists in destination cat
$query
=
'SELECT PrimaryCat FROM '
.
TABLE_PREFIX
.
'CategoryItems
WHERE CategoryId = '
.
$cat_id
.
' AND ItemResourceId = '
.
$this
->
GetDBField
(
'ResourceId'
);
// if it's not found is_primary will be FALSE, if it's found but not primary it will be int 0
$is_primary
=
$this
->
Conn
->
GetOne
(
$query
);
$exists
=
$is_primary
!==
false
;
if
(
$exists
)
{
// if the Product already exists in destination category
if
(
$is_primary
)
return
;
// do nothing when we paste to primary
// if it's not primary - delete it from destination category,
// as we will move it from current primary below
$query
=
'DELETE FROM '
.
TABLE_PREFIX
.
'CategoryItems
WHERE ItemResourceId = '
.
$this
->
GetDBField
(
'ResourceId'
).
' AND CategoryId = '
.
$cat_id
;
$this
->
Conn
->
Query
(
$query
);
}
$query
=
'UPDATE '
.
TABLE_PREFIX
.
'CategoryItems SET CategoryId = '
.
$cat_id
.
' WHERE ItemResourceId = '
.
$this
->
GetDBField
(
'ResourceId'
).
' AND PrimaryCat = 1'
;
$this
->
Conn
->
Query
(
$query
);
$this
->
Update
();
}
// We need to delete CategoryItems record when deleting product
function
Delete
(
$id
=
null
)
{
if
(
isset
(
$id
)
)
{
$this
->
setID
(
$id
);
}
$this
->
Load
(
$this
->
GetID
());
$ret
=
parent
::
Delete
();
if
(
$ret
)
{
$query
=
'DELETE FROM '
.
TABLE_PREFIX
.
'CategoryItems WHERE ItemResourceId = '
.
$this
->
GetDBField
(
'ResourceId'
);
$this
->
Conn
->
Query
(
$query
);
}
return
$ret
;
}
}
?>
Event Timeline
Log In to Comment