Ejemplo n.º 1
0
        if (PerchUtil::file_extension($file) == 'php') {
            include PerchUtil::file_path(PERCH_CORE . '/update/scripts/' . $file);
        }
    }
}
if (!$errors) {
    echo '<li class="icon success">Successfully updated to version ' . $Perch->version . '.</li>';
    $Settings->set($setting_key, 'done');
}
?>
				</ul>
				<?php 
if (!$errors) {
    echo '<a href="' . PERCH_LOGINPATH . '" class="button">Continue</a>';
} else {
    echo '<p><a href="http://support.grabaperch.com/">Contact us</a> if you are unsure how to resolve these problems, or <a href="' . PERCH_LOGINPATH . '/core/update/?force=accept">accept these errors and continue</a>.</p>';
}
?>

			</div>
		</div>

	</div>
<?php 
if (PERCH_DEBUG) {
    PerchUtil::debug('Queries: ' . PerchDB_MySQL::$queries);
    PerchUtil::output_debug();
}
?>
</body>
</html>
 /**
  * Create a new page, including adding a new file to the filesystem
  *
  * @param string $data
  * @return void
  * @author Drew McLellan
  */
 public function create_with_file($data)
 {
     $create_folder = false;
     if (isset($data['create_folder'])) {
         $create_folder = $data['create_folder'];
         unset($data['create_folder']);
     }
     $this->find_site_path();
     // Grab the template this page uses
     $Templates = new PerchContent_PageTemplates();
     $Template = $Templates->find($data['templateID']);
     if (is_object($Template)) {
         // we don't store this, so unset
         //unset($data['templateID']);
         // grab the template's file extension, as pages use the same ext as the template.
         $file_extension = PerchUtil::file_extension($Template->templatePath());
         // use the file name given (if stated) or create from the title. Sans extension.
         if (isset($data['file_name'])) {
             $parts = explode('.', $data['file_name']);
             $file_name = PerchUtil::urlify($parts[0]);
             unset($data['file_name']);
         } else {
             $file_name = PerchUtil::urlify($data['pageTitle']);
         }
         // Find the parent page
         $ParentPage = $this->find($data['pageParentID']);
         if (is_object($ParentPage)) {
             if ($ParentPage->pageSubpagePath()) {
                 $pageSection = $ParentPage->pageSubpagePath();
             } else {
                 $pageSection = PerchUtil::strip_file_name($ParentPage->pagePath());
             }
             $parentPageID = $ParentPage->id();
             $data['pageDepth'] = $ParentPage->pageDepth() + 1;
             // Copy subpage info
             $data['pageSubpageRoles'] = $ParentPage->pageSubpageRoles();
             $data['pageSubpageTemplates'] = $ParentPage->pageSubpageTemplates();
         } else {
             $pageSection = '/';
             $parentPageID = 0;
             $data['pageParentID'] = '0';
             $data['pageDepth'] = '1';
             $data['pageSubpageRoles'] = '';
             $data['pageSubpageTemplates'] = '';
         }
         $dir = PerchUtil::file_path(PERCH_SITEPATH . $pageSection);
         // Are we creating a new folder?
         if ($create_folder) {
             $new_folder = $this->get_unique_folder_name($dir, $file_name);
             PerchUtil::debug('Trying to create: ' . $new_folder);
             if (!is_dir($new_folder)) {
                 mkdir($new_folder, 0755, true);
             }
             if (is_dir($new_folder)) {
                 $new_dir_name = str_replace($dir, '', $new_folder);
                 $dir = $new_folder;
                 $new_file = PerchUtil::file_path($dir . '/' . PERCH_DEFAULT_DOC);
             }
         }
         // Can we write to this dir?
         if (is_writable($dir)) {
             // Are we creating a new folder?
             if (!$create_folder) {
                 // Get a new file name
                 $new_file = $this->get_unique_file_name($dir, $file_name, $file_extension);
             }
             $template_dir = PerchUtil::file_path(PERCH_TEMPLATE_PATH . '/pages');
             if (file_exists($template_dir)) {
                 $template_file = PerchUtil::file_path($template_dir . '/' . $Template->templatePath());
                 // Is this referenced or copied?
                 if ($Template->templateReference()) {
                     // Referenced, so write a PHP include
                     $include_path = str_replace(DIRECTORY_SEPARATOR, '/', $this->get_relative_path($template_file, $dir));
                     // If changing, update pattern in PerchPages_Page::move_file(), and account for old-patterned pages.
                     $contents = '<' . '?php include(str_replace(\'/\', DIRECTORY_SEPARATOR, \'' . $include_path . '\')); ?' . '>';
                 } else {
                     // Copied, so grab the template's contents
                     $contents = file_get_contents($template_file);
                 }
                 if ($contents) {
                     // Write the file
                     if (!file_exists($new_file) && file_put_contents($new_file, $contents)) {
                         // Get the new file path
                         if ($create_folder) {
                             $new_url = $pageSection . '/' . $new_dir_name . str_replace($dir, '', $new_file);
                             $data['pageSubpagePath'] = $pageSection . '/' . $new_dir_name;
                         } else {
                             $new_url = $pageSection . str_replace($dir, '', $new_file);
                             $data['pageSubpagePath'] = $pageSection;
                         }
                         $data['pageSubpagePath'] = str_replace('//', '/', $data['pageSubpagePath']);
                         $r = str_replace(DIRECTORY_SEPARATOR, '/', $new_url);
                         $r = str_replace('//', '/', $r);
                         $data['pagePath'] = $r;
                         // Insert into the DB
                         $Page = $this->create($data);
                         if (!is_object($Page)) {
                             PerchUtil::output_debug();
                         }
                         // Set its position in the tree
                         $Page->update_tree_position($parentPageID);
                         // Add to nav groups
                         if ($Template->templateNavGroups() != '') {
                             $Page->update_navgroups(explode(',', $Template->templateNavGroups()));
                         }
                         // Copy page options?
                         if ($Template->optionsPageID() != '0') {
                             $CopyPage = $this->find($Template->optionsPageID());
                             if (is_object($CopyPage)) {
                                 $sql = 'INSERT INTO ' . PERCH_DB_PREFIX . 'content_regions (
                                         pageID,
                                         regionKey,
                                         regionPage,
                                         regionHTML,
                                         regionNew,
                                         regionOrder,
                                         regionTemplate,
                                         regionMultiple,
                                         regionOptions,
                                         regionSearchable,
                                         regionEditRoles
                                     )
                                     SELECT
                                         ' . $this->db->pdb($Page->id()) . ' AS pageID,
                                         regionKey,
                                         ' . $this->db->pdb($r) . ' AS regionPage,
                                         "<!-- Undefined content -->" AS regionHTML,
                                         regionNew,
                                         regionOrder,
                                         regionTemplate,
                                         regionMultiple,
                                         regionOptions,
                                         regionSearchable,
                                         regionEditRoles
                                     FROM ' . PERCH_DB_PREFIX . 'content_regions
                                     WHERE regionPage!=' . $this->db->pdb('*') . ' AND pageID=' . $this->db->pdb((int) $CopyPage->id());
                                 $this->db->execute($sql);
                             }
                         }
                         return $Page;
                     } else {
                         PerchUtil::debug('Could not put file contents.');
                         $this->error_messages[] = 'Could not write contents to file: ' . $new_file;
                     }
                 }
             } else {
                 PerchUtil::debug('Template folder not found: ' . $template_dir);
                 $this->error_messages[] = 'Template folder not found: ' . $template_dir;
             }
         } else {
             PerchUtil::debug('Folder is not writable: ' . $dir);
             $this->error_messages[] = 'Folder is not writable: ' . $dir;
         }
     } else {
         PerchUtil::debug('Template not found.');
         PerchUtil::debug($data);
         $this->error_messages[] = 'Template could not be found.';
     }
     return false;
 }