public function importSet()
 {
     $page = 1;
     static $only_new_photos = false;
     $canAccess = Director::isDev() || Director::is_cli() || Permission::check("ADMIN");
     if (!$canAccess) {
         return Security::permissionFailure($this);
     }
     /*
     // For testing
     $flickrPhoto = FlickrPhoto::get()->filter('ID',100)->first();
     $flickrPhoto->loadExif();
     die;
     */
     // Code for the register action here
     $flickrSetID = $this->request->param('ID');
     $path = $_GET['path'];
     $parentNode = SiteTree::get_by_link($path);
     if ($parentNode == null) {
         echo "ERROR: Path " . $path . " cannot be found in this site\n";
         die;
     }
     $this->FlickrSetId = $flickrSetID;
     $photos = $this->f->photosets_getPhotos($flickrSetID, 'license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags, o_dims, views, media, path_alias, url_sq, url_t, url_s, url_m, url_o, url_l,description', null, 500);
     $photoset = $photos['photoset'];
     $flickrSet = $this->getFlickrSet($flickrSetID);
     // reload from DB with date - note the use of quotes as flickr set id is a string
     $flickrSet = DataObject::get_one('FlickrSet', 'FlickrID=\'' . $flickrSetID . "'");
     $flickrSet->FirstPictureTakenAt = $photoset['photo'][0]['datetaken'];
     $flickrSet->KeepClean = true;
     $flickrSet->Title = $photoset['title'];
     $flickrSet->write();
     echo "Title set to : " . $flickrSet->Title;
     if ($flickrSet->Title == null) {
         echo "ABORTING DUE TO NULL TITLE FOUND IN SET - ARE YOU AUTHORISED TO READ SET INFO?";
         die;
     }
     $datetime = explode(' ', $flickrSet->FirstPictureTakenAt);
     $datetime = $datetime[0];
     list($year, $month, $day) = explode('-', $datetime);
     echo "Month: {$month}; Day: {$day}; Year: {$year}<br />\n";
     // now try and find a flickr set page
     $flickrSetPage = DataObject::get_one('FlickrSetPage', 'FlickrSetForPageID=' . $flickrSet->ID);
     if (!$flickrSetPage) {
         $flickrSetPage = new FlickrSetPage();
         $flickrSetPage->Title = $photoset['title'];
         $flickrSetPage->Description = $flickrSet->Description;
         //update FlickrSetPage set Description = (select Description from FlickrSet where FlickrSet.ID = FlickrSetPage.FlickrSetForPageID);
         $flickrSetPage->FlickrSetForPageID = $flickrSet->ID;
         $flickrSetPage->write();
         // create a stage version also
     }
     $flickrSetPage->Title = $photoset['title'];
     $flickrSetPage->ParentID = $parentNode->ID;
     $flickrSetPage->write();
     $flickrSetPage->publish("Live", "Stage");
     $flickrSetPageID = $flickrSetPage->ID;
     gc_enable();
     $f1 = Folder::find_or_make("flickr/{$year}");
     $f1->Title = $year;
     $f1->write();
     $f1 = Folder::find_or_make("flickr/{$year}/{$month}");
     $f1->Title = $month;
     $f1->write();
     $f1 = Folder::find_or_make("flickr/{$year}/{$month}/{$day}");
     $f1->Title = $day;
     $f1->write();
     exec("chmod 775 ../assets/flickr/{$year}");
     exec("chmod 775 ../assets/flickr/{$year}/{$month}");
     exec("chmod 775 ../assets/flickr/{$year}/{$month}/{$day}");
     exec("chown gordon:www-data ../assets/flickr/{$year}");
     exec("chown gordon:www-data ../assets/flickr/{$year}/{$month}");
     exec("chown gordon:www-data ../assets/flickr/{$year}/{$month}/{$day}");
     $folder = Folder::find_or_make("flickr/{$year}/{$month}/{$day}/" . $flickrSetID);
     $cmd = "chown gordon:www-data ../assets/flickr";
     exec($cmd);
     exec('chmod 775 ../assets/flickr');
     // new folder case
     if ($flickrSet->AssetFolderID == 0) {
         $flickrSet->AssetFolderID = $folder->ID;
         $folder->Title = $flickrSet->Title;
         $folder->write();
         $cmd = "chown gordon:www-data ../assets/flickr/{$year}/{$month}/{$day}/" . $flickrSetID;
         exec($cmd);
         $cmd = "chmod 775 ../assets/flickr/{$year}/{$month}/{$day}/" . $flickrSetID;
         exec($cmd);
     }
     $flickrSetAssetFolderID = $flickrSet->AssetFolderID;
     $flickrSetPageDatabaseID = $flickrSetPage->ID;
     //$flickrSet = NULL;
     $flickrSetPage = NULL;
     $numberOfPics = count($photoset['photo']);
     $ctr = 1;
     foreach ($photoset['photo'] as $key => $value) {
         echo "Importing photo {$ctr}/{$numberOfPics}\n";
         $flickrPhoto = $this->createFromFlickrArray($value);
         if ($value['isprimary'] == 1) {
             $flickrSet->MainImage = $flickrPhoto;
         }
         $flickrPhoto->write();
         $flickrSet->FlickrPhotos()->add($flickrPhoto);
         gc_collect_cycles();
         $flickrPhoto->write();
         gc_collect_cycles();
         if (!$flickrPhoto->LocalCopyOfImage) {
             //mkdir appears to be relative to teh sapphire dir
             $structure = "../assets/flickr/{$year}/{$month}/{$day}/" . $flickrSetID;
             if (!file_exists('../assets/flickr')) {
                 echo "Creating path:" . $structure;
                 /*
                 					// To create the nested structure, the $recursive parameter
                 					// to mkdir() must be specified.
                 
                 					if (!mkdir($structure, 0, true)) {
                 					 //   die('Failed to create folders...');
                 					}
                 
                 					$cmd = "chown  gordon:www-data $structure";
                 					exec($cmd);
                 
                 					$cmd = "chown gordon:www-data ../assets/Uploads/flickr";
                 					exec($cmd);
                 
                 					exec('chmod 775 ../assets/Uploads/flickr');
                 					exec("chmod 775 $structure");
                 	error_log("Created dir?");
                 				} else {
                 					echo "Dir already exists";
                 				}
                 */
                 $galleries = Folder::find_or_make('flickr');
                 $galleries->Title = 'Flickr Images';
                 $galleries->write();
                 $galleries = NULL;
             }
             $download_images = Config::inst()->get($this->class, 'download_images');
             if ($download_images && !$flickrPhoto->LocalCopyOfImageID) {
                 $largeURL = $flickrPhoto->LargeURL;
                 $fpid = $flickrPhoto->FlickrID;
                 $cmd = "wget -O {$structure}/{$fpid}.jpg {$largeURL}";
                 exec($cmd);
                 $cmd = "chown  gordon:www-data {$structure}/{$fpid}.jpg";
                 // $cmd = "pwd";
                 echo "EXECCED:" . exec($cmd);
                 $image = new Image();
                 $image->Name = $this->Title;
                 $image->Title = $this->Title;
                 $image->Filename = str_replace('../', '', $structure . '/' . $fpid . ".jpg");
                 $image->Title = $flickrPhoto->Title;
                 //$image->Name = $flickrPhoto->Title;
                 $image->ParentID = $flickrSetAssetFolderID;
                 gc_collect_cycles();
                 $image->write();
                 gc_collect_cycles();
                 $flickrPhoto->LocalCopyOfImageID = $image->ID;
                 $flickrPhoto->write();
                 $image = NULL;
             }
             $result = $flickrPhoto->write();
         }
         $ctr++;
         $flickrPhoto = NULL;
     }
     //update orientation
     $sql = 'update FlickrPhoto set Orientation = 90 where ThumbnailHeight > ThumbnailWidth;';
     DB::query($sql);
     // now download exifs
     $ctr = 0;
     foreach ($photoset['photo'] as $key => $value) {
         echo "IMPORTING EXIF {$ctr}/{$numberOfPics}\n";
         $flickrPhotoID = $value['id'];
         $flickrPhoto = FlickrPhoto::get()->filter('FlickrID', $flickrPhotoID)->first();
         $flickrPhoto->loadExif();
         $flickrPhoto->write();
         $ctr++;
     }
     $this->fixSetMainImages();
     $this->fixDateSetTaken();
     die;
     // abort rendering
 }