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; }