private function executeFrontendLayout() { $sql = 'SELECT content_type, content FROM ' . TABLE_PREFIX . 'layout WHERE name = ' . "'{$this->frontend_layout}'"; Record::logQuery($sql); $stmt = Record::getConnection()->prepare($sql); $stmt->execute(); $layout = $stmt->fetchObject(); if ($layout) { // If content-type is not set, we set text/html by default. if ($layout->content_type == '') { $layout->content_type = 'text/html'; } // Set content-type and charset of the page. header('Content-Type: ' . $layout->content_type . '; charset=UTF-8'); // Provides compatibility with the Page class. // @todo Find cleaner way of doing multiple inheritance $this->url = CURRENT_PATH; // Execute the layout code. eval('?>' . $layout->content); } }
function _restore($fileData) { global $__CMS_CONN__; $settings = Plugin::getAllSettings('backup_restore'); // All of the tablesnames that belong to Wolf CMS core. $tablenames = array(); if (strpos(DB_DSN, 'mysql') !== false) { $sql = 'show tables'; } if (strpos(DB_DSN, 'sqlite') !== false) { $sql = 'SELECT name FROM SQLITE_MASTER WHERE type="table" ORDER BY name'; } if (strpos(DB_DSN, 'pgsql') !== false) { $sql = "select tablename from pg_tables where schemaname='public'"; } Record::logQuery($sql); $pdo = Record::getConnection(); $result = $pdo->query($sql); while ($col = $result->fetchColumn()) { $tablenames[] = $col; } // All fields that should be wrapped as CDATA $cdata_fields = array('title', 'content', 'content_html'); $xml = simplexml_load_string($fileData); if (false === $xml) { $errors = ''; foreach (libxml_get_errors() as $error) { $errors .= $error->message; $errors .= "<br/>\n"; } Flash::set('error', 'An error occurred with the XML backup file: :error', array(':error' => $errors)); redirect(get_url('plugin/backup_restore')); } // Import each table and table entry foreach ($tablenames as $tablename) { $container = $tablename . 's'; if (array_key_exists($container, $xml) && count($xml->{$container}->{$tablename}) > 0) { if (strpos(DB_DSN, 'sqlite') !== false) { $sql = 'DELETE FROM ' . $tablename; } else { $sql = 'TRUNCATE ' . $tablename; } Record::logQuery($sql); if (false === $__CMS_CONN__->exec($sql)) { Flash::set('error', __('Unable to truncate current table :tablename.', array(':tablename' => $tablename))); redirect(get_url('plugin/backup_restore')); } foreach ($xml->{$container}->{$tablename} as $element) { $keys = array(); $values = array(); $delete_salt = false; foreach ($element as $key => $value) { $keys[] = $key; if ($key === 'password' && empty($value)) { $delete_salt = true; if (isset($settings['default_pwd']) && $settings['default_pwd'] !== '') { $value = sha1($settings['default_pwd']); } else { $value = sha1('pswpsw123'); } $values[] = $__CMS_CONN__->quote($value); } else { $attributes = (array) $value->attributes(); $values[] = (isset($attributes['@attributes']) and $attributes['@attributes']['null']) ? 'NULL' : $__CMS_CONN__->quote($value); } } if ($delete_salt and isset($keys['salt'])) { unset($keys['salt']); } $sql = 'INSERT INTO ' . $tablename . ' (' . join(', ', $keys) . ') VALUES (' . join(', ', $values) . ')' . "\r"; if ($__CMS_CONN__->exec($sql) === false) { Flash::set('error', __('Unable to reconstruct table :tablename.', array(':tablename' => $tablename))); redirect(get_url('plugin/backup_restore')); } } } } // Erase all uploaded files? if ($settings['erasefiles'] == '1') { $this->_cleanup_directory(realpath(FILES_DIR)); } // Restore directories and files from XML if ($settings['restorefiles'] == '1' && array_key_exists('files', $xml)) { // First directories foreach ($xml->files->directory as $obj) { $name = realpath(FILES_DIR) . '/' . $obj->name; if (!file_exists($name)) { if (mkdir($name, 0777, true) === false) { Flash::set('error', __('Unable to create directory :name.', array(':name' => dirname($obj->name)))); redirect(get_url('plugin/backup_restore')); } } $this->_restore_attributes($name, $obj); } // Then files foreach ($xml->files->file as $obj) { $name = realpath(FILES_DIR) . '/' . $obj->name; if (file_put_contents($name, base64_decode($obj->content)) === false) { Flash::set('error', __('Unable to restore file :name.', array(':name' => $obj->name))); redirect(get_url('plugin/backup_restore')); } $this->_restore_attributes($name, $obj); } } Flash::set('success', __('Succesfully restored backup.')); redirect(get_url('plugin/backup_restore')); }
private static function findBySql($sql, $values = null) { $class_name = get_called_class(); Record::logQuery($sql); // Prepare and execute $stmt = Record::getConnection()->prepare($sql); if (!$stmt->execute($values)) { return false; } $page_class = 'Page'; $objects = array(); while ($page = $stmt->fetchObject('Page')) { $parent = $page->parent(); if (!empty($parent->behavior_id)) { // will return Page by default (if not found!) $page_class = Behavior::loadPageHack($parent->behavior_id); } // create the object page $page = new $page_class($page, $parent); $page->part = self::get_parts($page->id); $objects[] = $page; } return $objects; }
function archivesByDay($year = 'all') { $tablename = TABLE_PREFIX . 'page'; $pdo = Record::getConnection(); $out = array(); if ($year == 'all') { $year = ''; } $sql = "SELECT DISTINCT(DATE_FORMAT(created_on, '%Y/%m/%d')) FROM {$tablename} WHERE parent_id = :parent_id AND status_id != :status ORDER BY created_on DESC"; Record::logQuery($sql); $stmt = $pdo->prepare($sql); $stmt->execute(array(':parent_id' => $this->page->id, ':status' => Page::STATUS_HIDDEN)); while ($date = $stmt->fetchColumn()) { $out[] = $date; } return $out; }
/** * Returns the value for a specified setting. * Returns false when unsuccessful in retrieving the setting. * * @param <type> $name * @param <type> $plugin_id */ static function getSetting($name = null, $plugin_id = null) { if ($name == null || $plugin_id == null) { return false; } $tablename = TABLE_PREFIX . 'plugin_settings'; $existingSettings = array(); $sql = "SELECT value FROM {$tablename} WHERE plugin_id=:pluginid AND name=:name LIMIT 1"; Record::logQuery($sql); $stmt = Record::getConnection()->prepare($sql); $stmt->execute(array(':pluginid' => $plugin_id, ':name' => $name)); return $stmt->fetchColumn(); }