5102 Posts in 1520 Topics by 1116 members
| Go to End | ||
| Author | Topic: | 1544 Views |
-
Re: dynamically adding items to $db

15 January 2009 at 11:28am
Ok so here it is, pretty simple in the end...
EnviromentExtention.php
<?php
class EnviromentExtention extends DataObjectDecorator {
function augmentSQL(SQLQuery &$query) {}
function SanitizeString($String) {
$tmp = preg_replace('/\s+/', '_', $String); // compress internal whitespace and replace with _
$reserved = preg_quote('\/:*?!&"<>|', '/');//characters that are illegal
//replaces all characters up through space and all past ~ along with the above reserved characters
return preg_replace("/([\\x00-\\x20\\x7f-\\xff{$reserved}])/e", "", $tmp);}
public function extraDBFields(){
$db = array();
if($Enviroments = DataObject::get("EnviromentPage")){
foreach($Enviroments as $Enviroment)
{
$key = $this->SanitizeString($Enviroment->Title);
$db[$key."_CategoryLink"] = "Varchar(255)";
}
}
return array('db' => $db);
}
public function getCMSFields(){
$this->extend('updateCMSFields', $fields);
return $fields;
}public function updateCMSFields(FieldSet &$f) {
if($Enviroments = DataObject::get("EnviromentPage")){
foreach($Enviroments as $Enviroment)
{
$key = $this->SanitizeString($Enviroment->Title);
$f->addFieldToTab("Root.Content.Environments", new TextField($key."_CategoryLink"));
}
}
}}
?>
Then in my _config.php I have this line:Object::add_extension('CategorytPage', 'EnviromentExtention');
So now each time I add a new EnviromentPage and flush the DB, the Catagory page gets a new text field under the Enviroments tab called something like ebay_Catagorylink.
Man I love SS
-
Re: dynamically adding items to $db

15 January 2009 at 3:55pm
Nice job. The only thing I'd change is you have your SanitizeString method as a dynamic function. There's nothing dynamic about it -- its a simple input/output "factory" function as they're sometimes called. So cast it as static, and call it with self::SanitizeString()
A lot of times for big projects I'll create a whole static class called Strings with all sorts of functions like that.
Just a good practice, that's all.
| 1544 Views | ||
| Go to Top |

