protected function TemplateDetails($className)
 {
     $obj = TemplateOverviewDescription::get()->filter(array("ClassNameLink" => $className))->First();
     if (!$obj) {
         $obj = new TemplateOverviewDescription();
         $obj->ClassNameLink = $className;
         $obj->ParentID = $this->ID;
         $obj->write();
     }
     DB::query("UPDATE TemplateOverviewDescription SET ParentID = " . $this->ID . ";");
     return $obj;
 }
 function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     $data = ClassInfo::subclassesFor("SiteTree");
     $templateOverviewPage = TemplateOverviewPage::get()->First();
     $fileList = null;
     if ($this->Config()->get("image_source_folder")) {
         $fileList = CMSHelp::get_list_of_files($this->Config()->get("image_source_folder"));
         if (!is_array($fileList)) {
             $fileList = null;
         } elseif (!count($fileList)) {
             $fileList = null;
         }
     }
     if ($fileList) {
         $destinationDir = Director::baseFolder() . "/assets/" . $this->Config()->get("image_folder_name") . "/";
         $destinationFolder = Folder::find_or_make($this->Config()->get("image_folder_name"));
     }
     if ($data && $templateOverviewPage) {
         foreach ($data as $className) {
             $object = TemplateOverviewDescription::get()->filter(array("ClassNameLink" => $className))->First();
             if (!$object) {
                 $object = new TemplateOverviewDescription();
                 $object->ClassNameLink = $className;
                 $object->ParentID = $templateOverviewPage->ID;
                 $object->write();
                 DB::alteration_message("adding template description for {$className}", "created");
             } else {
                 $otherObjects = TemplateOverviewDescription::get()->filter(array("ClassNameLink" => $className))->exclude(array("ID" => $object->ID));
                 foreach ($otherObjects as $otherObject) {
                     DB::alteration_message("Deleting superfluous TemplateOverviewDescription with Class Name Link: {$className}", "deleted");
                     $otherObject->delete();
                 }
             }
             if ($fileList) {
                 $i = 0;
                 foreach ($fileList as $fileArray) {
                     $explodeByDot = explode(".", $fileArray["FileName"]);
                     if (is_array($explodeByDot) && count($explodeByDot)) {
                         $base = $explodeByDot[0];
                         $explodeByUnderscore = explode("_", $base);
                         if (is_array($explodeByUnderscore) && count($explodeByUnderscore)) {
                             $base = $explodeByUnderscore[0];
                             $classNameOptionArray = array($className);
                             for ($j = 0; $j < 10; $j++) {
                                 $classNameOptionArray[] = $className . $j;
                             }
                             foreach ($classNameOptionArray as $potentialBase) {
                                 if ($base == $potentialBase) {
                                     $i++;
                                     $filename = "" . $this->Config()->get("image_folder_name") . "/" . $fileArray["FileName"];
                                     if (!file_exists($destinationDir . $fileArray["FileName"])) {
                                         copy($fileArray["FullLocation"], $destinationDir . $fileArray["FileName"]);
                                     }
                                     $image = $Image::get()->filter(array("ParentID" => $destinationFolder - ID, "Name" => $fileArray["FileName"]))->First();
                                     if (!$image) {
                                         $image = new Image();
                                         $image->ParentID = $destinationFolder->ID;
                                         $image->Filename = $filename;
                                         $image->Name = $fileArray["FileName"];
                                         $image->Title = $fileArray["Title"];
                                         $image->write();
                                     }
                                     $fieldName = "Image{$i}" . "ID";
                                     if ($object->{$fieldName} != $image->ID) {
                                         $object->{$fieldName} = $image->ID;
                                         $object->write();
                                         DB::alteration_message("adding image to {$className}: " . $image->Title . " (" . $image->Filename . ") using {$fieldName} field.", "created");
                                     }
                                 }
                             }
                         }
                     }
                 }
             } else {
                 DB::alteration_message("no design images found for {$className}", "deleted");
             }
         }
     }
     $helpDirectory = Director::baseFolder() . "/" . Config::inst()->get("CMSHelp", "help_file_directory_name") . "/";
     if (!file_exists($helpDirectory)) {
         mkdir($helpDirectory);
     }
     $this->createManifestExcludeFile($helpDirectory);
     $devDirectory = Director::baseFolder() . "/" . Config::inst()->get("CMSHelp", "dev_file_directory_name") . "/";
     if (!file_exists($devDirectory)) {
         mkdir($devDirectory);
     }
     $this->createManifestExcludeFile($devDirectory);
     $this->createHTACCESSDenyAll($devDirectory);
 }