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
|
|
|
|
Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.
The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.
This check looks for comments that seem to be mostly valid code and reports them.