1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
class BrowseAbstractPage extends Page |
4
|
|
|
{ |
5
|
|
|
|
6
|
|
|
/** |
7
|
|
|
* Standard SS static |
8
|
|
|
**/ |
9
|
|
|
public static $db = array( |
10
|
|
|
"CreateChildren" => "Boolean", |
11
|
|
|
"CreateAllChildren" => "Boolean", |
12
|
|
|
"HiddenDataID" => "Int", |
13
|
|
|
"AlternativeURL" => "Varchar", |
14
|
|
|
"ExtraNote" => "Varchar(255)" |
15
|
|
|
); |
16
|
|
|
|
17
|
|
|
/** |
18
|
|
|
* Standard SS static |
19
|
|
|
**/ |
20
|
|
|
public static $breadcrumbs_delimiter = " » "; |
21
|
|
|
|
22
|
|
|
/** |
23
|
|
|
* Standard SS method: can only create if the parent exists... |
24
|
|
|
**/ |
25
|
|
|
public function canCreate($member = null) |
26
|
|
|
{ |
27
|
|
|
$bt = defined('DB::USE_ANSI_SQL') ? "\"" : "`"; |
28
|
|
|
if ("BrowseAbstractPage" == $this->ClassName) { |
29
|
|
|
return false; |
30
|
|
|
} else { |
31
|
|
|
return parent::canCreate(); |
32
|
|
|
} |
33
|
|
|
} |
34
|
|
|
|
35
|
|
|
/** |
36
|
|
|
* Name of the level |
37
|
|
|
**/ |
38
|
|
|
public function GeoLevelName() |
39
|
|
|
{ |
40
|
|
|
return "No level"; |
41
|
|
|
} |
42
|
|
|
|
43
|
|
|
/** |
44
|
|
|
* Number of the level |
45
|
|
|
**/ |
46
|
|
|
public function GeoLevelNumber() |
47
|
|
|
{ |
48
|
|
|
return -1; |
49
|
|
|
} |
50
|
|
|
|
51
|
|
|
|
52
|
|
|
/** |
53
|
|
|
* works out if the child page needs to be created |
54
|
|
|
**/ |
55
|
|
|
public function allowBrowseChildren() |
56
|
|
|
{ |
57
|
|
|
if (DataObject::get_one("BrowseWorldPage")->LevelOfDetail > $this->GeoLevelNumber()) { |
58
|
|
|
return true; |
59
|
|
|
} else { |
60
|
|
|
return false; |
61
|
|
|
} |
62
|
|
|
} |
63
|
|
|
|
64
|
|
|
/** |
65
|
|
|
* retrieves data from a DB table that is not part of the DataObject Model. |
66
|
|
|
**/ |
67
|
|
|
protected function getDataFromTable($tableName, $where = null, $orderby = null) |
68
|
|
|
{ |
69
|
|
|
$sqlQuery = new SQLQuery(); |
|
|
|
|
70
|
|
|
$sqlQuery->select = array('*'); |
71
|
|
|
$sqlQuery->from = array($tableName); |
72
|
|
|
if ($where) { |
73
|
|
|
$sqlQuery->where = array($where); |
74
|
|
|
} |
75
|
|
|
if ($orderby) { |
76
|
|
|
$sqlQuery->orderby = $orderby; |
77
|
|
|
} |
78
|
|
|
$result = $sqlQuery->execute(); |
79
|
|
|
return $result; |
80
|
|
|
} |
81
|
|
|
|
82
|
|
|
/** |
83
|
|
|
* standard SS method |
84
|
|
|
**/ |
85
|
|
|
public function getCMSFields() |
86
|
|
|
{ |
87
|
|
|
$fields = parent::getCMSFields(); |
88
|
|
|
$fields->addFieldToTab("Root.Content.AddSubRegion", new CheckboxField("CreateChildren", "Create Child Pages (e.g. countries below continents)")); |
89
|
|
|
$fields->addFieldToTab("Root.Content.AddSubRegion", new CheckboxField("CreateAllChildren", "Create All Child Pages (e.g. countries, regions, and cities below continents)")); |
90
|
|
|
//$fields->addFieldToTab("Root.Content.AddSubRegion", new ReadonlyField("HiddenDataID", "Data ID number (should have number)")); |
91
|
|
|
$fields->addFieldToTab("Root.Content.AddSubRegion", new LiteralField("build", "Create now... ", '<a href="db/build/?flush=1&geobuild=1">create pages now</a>')); |
92
|
|
|
if (!$this->allowBrowseChildren()) { |
93
|
|
|
$fields->removeFieldFromTab("Root.Content.AddSubRegion", "CreateChildren"); |
94
|
|
|
$fields->removeFieldFromTab("Root.Content.AddSubRegion", "CreateAllChildren"); |
95
|
|
|
} |
96
|
|
|
|
97
|
|
|
$fields->addFieldsToTab('Root.Content.Main', new TextField('AlternativeURL', 'Alternative URL')); |
98
|
|
|
|
99
|
|
|
return $fields; |
100
|
|
|
} |
101
|
|
|
|
102
|
|
|
/** |
103
|
|
|
* standard SS method |
104
|
|
|
**/ |
105
|
|
|
public function onBeforeWrite() |
106
|
|
|
{ |
107
|
|
|
if ($this->CreateAllChildren) { |
108
|
|
|
$this->CreateChildren = 1; |
109
|
|
|
} |
110
|
|
|
return parent::onBeforeWrite(); |
111
|
|
|
} |
112
|
|
|
} |
113
|
|
|
|
114
|
|
|
class BrowseAbstractPage_Controller extends Page_Controller |
115
|
|
|
{ |
116
|
|
|
} |
117
|
|
|
|
This class, trait or interface has been deprecated. The supplier of the file has supplied an explanatory message.
The explanatory message should give you some clue as to whether and when the type will be removed from the class and what other constant to use instead.