Bug fixes
This commit is contained in:
parent
47e5994c94
commit
35694980ab
@ -5,13 +5,21 @@
|
||||
// ============================================================================
|
||||
|
||||
if (!checkRole(array('admin','moderator'), false)) {
|
||||
$pageKey = isset($_POST['key']) ? $_POST['key'] : $layout['parameters'];
|
||||
$page = buildPage($pageKey);
|
||||
if (!$page || $page->username()!==$login->username()) {
|
||||
try {
|
||||
$pageKey = isset($_POST['key']) ? $_POST['key'] : $layout['parameters'];
|
||||
$page = new PageX($pageKey);
|
||||
} catch (Exception $e) {
|
||||
Alert::set($Language->g('You do not have sufficient permissions'));
|
||||
Redirect::page('dashboard');
|
||||
}
|
||||
|
||||
if ($page->username()!==$login->username()) {
|
||||
// Add to syslog
|
||||
$syslog->add(array(
|
||||
'dictionaryKey'=>'access-deny',
|
||||
'notes'=>$login->username()
|
||||
));
|
||||
|
||||
Alert::set($Language->g('You do not have sufficient permissions'));
|
||||
Redirect::page('dashboard');
|
||||
}
|
||||
@ -30,7 +38,7 @@ if (!checkRole(array('admin','moderator'), false)) {
|
||||
// ============================================================================
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||
if ($_POST['status']==='delete') {
|
||||
if ($_POST['type']==='delete') {
|
||||
if (deletePage($_POST['key'])) {
|
||||
Alert::set( $Language->g('The changes have been saved') );
|
||||
}
|
||||
|
@ -23,4 +23,15 @@ checkRole(array('admin'));
|
||||
// ============================================================================
|
||||
$pluginClassName = $layout['parameters'];
|
||||
activatePlugin($pluginClassName);
|
||||
|
||||
if (isset($plugins['all'][$pluginClassName])) {
|
||||
$plugin = $plugins['all'][$pluginClassName];
|
||||
} else {
|
||||
Redirect::page('plugins');
|
||||
}
|
||||
|
||||
if (method_exists($plugin, 'form')) {
|
||||
Redirect::page('configure-plugin/'.$pluginClassName);
|
||||
}
|
||||
|
||||
Redirect::page('plugins#'.$pluginClassName);
|
||||
|
@ -31,6 +31,11 @@ echo '<td>Bludit Build Number</td>';
|
||||
echo '<td>'.BLUDIT_BUILD.'</td>';
|
||||
echo '</tr>';
|
||||
|
||||
echo '<tr>';
|
||||
echo '<td><a href="'.HTML_PATH_ADMIN_ROOT.'developers'.'">Bludit Developers</a></td>';
|
||||
echo '<td></td>';
|
||||
echo '</tr>';
|
||||
|
||||
echo '
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
echo Bootstrap::pageTitle(array('title'=>$L->g('Content'), 'icon'=>'cog'));
|
||||
|
||||
function table($status) {
|
||||
function table($type) {
|
||||
global $url;
|
||||
global $Language;
|
||||
global $published;
|
||||
@ -11,7 +11,7 @@ function table($status) {
|
||||
global $static;
|
||||
global $sticky;
|
||||
|
||||
if ($status=='published') {
|
||||
if ($type=='published') {
|
||||
$list = $published;
|
||||
if (empty($list)) {
|
||||
echo '<p class="mt-4 text-muted">';
|
||||
@ -19,7 +19,7 @@ function table($status) {
|
||||
echo '</p>';
|
||||
return false;
|
||||
}
|
||||
} elseif ($status=='draft') {
|
||||
} elseif ($type=='draft') {
|
||||
$list = $drafts;
|
||||
if (empty($list)) {
|
||||
echo '<p class="mt-4 text-muted">';
|
||||
@ -27,7 +27,7 @@ function table($status) {
|
||||
echo '</p>';
|
||||
return false;
|
||||
}
|
||||
} elseif ($status=='scheduled') {
|
||||
} elseif ($type=='scheduled') {
|
||||
$list = $scheduled;
|
||||
if (empty($list)) {
|
||||
echo '<p class="mt-4 text-muted">';
|
||||
@ -35,7 +35,7 @@ function table($status) {
|
||||
echo '</p>';
|
||||
return false;
|
||||
}
|
||||
} elseif ($status=='static') {
|
||||
} elseif ($type=='static') {
|
||||
$list = $static;
|
||||
if (empty($list)) {
|
||||
echo '<p class="mt-4 text-muted">';
|
||||
@ -43,7 +43,7 @@ function table($status) {
|
||||
echo '</p>';
|
||||
return false;
|
||||
}
|
||||
} elseif ($status=='sticky') {
|
||||
} elseif ($type=='sticky') {
|
||||
$list = $sticky;
|
||||
if (empty($list)) {
|
||||
echo '<p class="mt-4 text-muted">';
|
||||
@ -59,7 +59,7 @@ function table($status) {
|
||||
<tr>
|
||||
<th class="border-0" scope="col">'.$Language->g('Title').'</th>
|
||||
<th class="border-0 d-none d-lg-table-cell" scope="col">'.$Language->g('URL').'</th>
|
||||
<th class="border-0 text-center d-none d-sm-table-cell" scope="col">'.( ((ORDER_BY=='position') || ($status!='published'))?$Language->g('Position'):$Language->g('Creation date')).'</th>
|
||||
<th class="border-0 text-center d-none d-sm-table-cell" scope="col">'.( ((ORDER_BY=='position') || ($type!='published'))?$Language->g('Position'):$Language->g('Creation date')).'</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -67,9 +67,9 @@ function table($status) {
|
||||
|
||||
if (ORDER_BY=='position') {
|
||||
foreach ($list as $pageKey) {
|
||||
$page = buildPage($pageKey);
|
||||
if ($page) {
|
||||
if (!$page->isChild() || $status!='published') {
|
||||
try {
|
||||
$page = new PageX($pageKey);
|
||||
if (!$page->isChild() || $type!='published') {
|
||||
echo '<tr>
|
||||
<td>
|
||||
<a href="'.HTML_PATH_ADMIN_ROOT.'edit-content/'.$page->key().'">'
|
||||
@ -102,12 +102,14 @@ function table($status) {
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
// Continue
|
||||
}
|
||||
}
|
||||
} else {
|
||||
foreach ($list as $pageKey) {
|
||||
$page = buildPage($pageKey);
|
||||
if ($page) {
|
||||
try {
|
||||
$page = new PageX($pageKey);
|
||||
echo '<tr>';
|
||||
echo '<td>
|
||||
<a href="'.HTML_PATH_ADMIN_ROOT.'edit-content/'.$page->key().'">'
|
||||
@ -118,9 +120,11 @@ function table($status) {
|
||||
$friendlyURL = Text::isEmpty($url->filters('page')) ? '/'.$page->key() : '/'.$url->filters('page').'/'.$page->key();
|
||||
echo '<td class="d-none d-lg-table-cell"><a target="_blank" href="'.$page->permalink().'">'.$friendlyURL.'</a></td>';
|
||||
|
||||
echo '<td class="text-center d-none d-sm-table-cell">'.( ((ORDER_BY=='position') || ($status!='published'))?$page->position():$page->dateRaw(ADMIN_PANEL_DATE_FORMAT) ).'</td>';
|
||||
echo '<td class="text-center d-none d-sm-table-cell">'.( ((ORDER_BY=='position') || ($type!='published'))?$page->position():$page->dateRaw(ADMIN_PANEL_DATE_FORMAT) ).'</td>';
|
||||
|
||||
echo '</tr>';
|
||||
} catch (Exception $e) {
|
||||
// Continue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ $page = array(
|
||||
'slug'=>$autosaveUUID,
|
||||
'title'=>$title.' [ Autosave ] ',
|
||||
'content'=>$content,
|
||||
'status'=>'draft'
|
||||
'type'=>'draft'
|
||||
);
|
||||
|
||||
// Get the page key by the UUID
|
||||
|
@ -39,7 +39,7 @@ class dbPages extends dbJSON {
|
||||
{
|
||||
$row = array();
|
||||
|
||||
// Check values on args or set default values
|
||||
// Check values on args and set default values if not exists
|
||||
foreach ($this->dbFields as $field=>$value) {
|
||||
if (isset($args[$field])) {
|
||||
// Sanitize if will be stored on database
|
||||
@ -52,42 +52,50 @@ class dbPages extends dbJSON {
|
||||
$row[$field] = $finalValue;
|
||||
}
|
||||
|
||||
// Tags
|
||||
if (!empty($args['tags'])) {
|
||||
$row['tags'] = $this->generateTags($args['tags']);
|
||||
} else {
|
||||
$row['tags'] = array();
|
||||
// Content
|
||||
// This variable is not belong to the database so is not defined in $row
|
||||
$contentRaw = $args['content'];
|
||||
|
||||
// Parent
|
||||
// This variable is not belong to the database so is not defined in $row
|
||||
$parent = '';
|
||||
if (!empty($args['parent'])) {
|
||||
$parent = $args['parent'];
|
||||
}
|
||||
|
||||
// Slug from the title or the content
|
||||
// This variable is not belong to the database so is not defined in $row
|
||||
if (empty($args['slug'])) {
|
||||
if (!empty($args['title'])) {
|
||||
$args['slug'] = $this->generateSlug($args['title']);
|
||||
if (!empty($row['title'])) {
|
||||
$slug = $this->generateSlug($row['title']);
|
||||
} else {
|
||||
$args['slug'] = $this->generateSlug($args['content']);
|
||||
$slug = $this->generateSlug($contentRaw);
|
||||
}
|
||||
}
|
||||
|
||||
// Parent
|
||||
if (!isset($args['parent'])) {
|
||||
$row['parent'] = '';
|
||||
} else {
|
||||
$slug = $args['slug'];
|
||||
}
|
||||
|
||||
// Generate key
|
||||
$key = $this->generateKey($args['slug'], $args['parent']);
|
||||
// This variable is not belong to the database so is not defined in $row
|
||||
$key = $this->generateKey($slug, $parent);
|
||||
|
||||
// Generate UUID
|
||||
if (empty($args['uuid'])) {
|
||||
if (empty($row['uuid'])) {
|
||||
$row['uuid'] = $this->generateUUID();
|
||||
}
|
||||
|
||||
// Tags
|
||||
if (!empty($row['tags'])) {
|
||||
$row['tags'] = $this->generateTags($args['tags']);
|
||||
}
|
||||
|
||||
// Validate date
|
||||
if (!Valid::date($args['date'], DB_DATE_FORMAT)) {
|
||||
if (!Valid::date($row['date'], DB_DATE_FORMAT)) {
|
||||
$row['date'] = Date::current(DB_DATE_FORMAT);
|
||||
}
|
||||
|
||||
// Schedule page
|
||||
if (($args['date']>Date::current(DB_DATE_FORMAT)) && ($args['type']=='published')) {
|
||||
if (($row['date']>Date::current(DB_DATE_FORMAT)) && ($row['type']=='published')) {
|
||||
$row['type'] = 'scheduled';
|
||||
}
|
||||
|
||||
@ -99,7 +107,7 @@ class dbPages extends dbJSON {
|
||||
}
|
||||
|
||||
// Create the index.txt and save the file
|
||||
if( file_put_contents(PATH_PAGES.$key.DS.FILENAME, $args['content']) === false ) {
|
||||
if( file_put_contents(PATH_PAGES.$key.DS.FILENAME, $contentRaw) === false ) {
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying to create the content in the file ['.FILENAME.']',LOG_TYPE_ERROR);
|
||||
return false;
|
||||
}
|
||||
@ -137,56 +145,73 @@ class dbPages extends dbJSON {
|
||||
$row[$field] = $finalValue;
|
||||
}
|
||||
|
||||
// Tags
|
||||
if (!empty($args['tags'])) {
|
||||
$row['tags'] = $this->generateTags($args['tags']);
|
||||
} else {
|
||||
$row['tags'] = array();
|
||||
}
|
||||
// Content
|
||||
// This variable is not belong to the database so is not defined in $row
|
||||
$contentRaw = $args['content'];
|
||||
|
||||
// Parent
|
||||
if (!isset($args['parent'])) {
|
||||
$row['parent'] = '';
|
||||
// This variable is not belong to the database so is not defined in $row
|
||||
$parent = '';
|
||||
if (!empty($args['parent'])) {
|
||||
$parent = $args['parent'];
|
||||
}
|
||||
|
||||
$newKey = $this->generateKey($args['slug'], $row['parent'], false, $args['key']);
|
||||
// Old key
|
||||
// This variable is not belong to the database so is not defined in $row
|
||||
$key = $args['key'];
|
||||
|
||||
// Slug from the title or the content
|
||||
// This variable is not belong to the database so is not defined in $row
|
||||
if (empty($args['slug'])) {
|
||||
if (!empty($row['title'])) {
|
||||
$slug = $this->generateSlug($row['title']);
|
||||
} else {
|
||||
$slug = $this->generateSlug($contentRaw);
|
||||
}
|
||||
} else {
|
||||
$slug = $args['slug'];
|
||||
}
|
||||
|
||||
// New key
|
||||
// This variable is not belong to the database so is not defined in $row
|
||||
$newKey = $this->generateKey($slug, $parent, false, $key);
|
||||
|
||||
// If the page is draft then the created time is the current
|
||||
if ($this->db[$args['key']]['type']=='draft') {
|
||||
if ($this->db[$key]['type']=='draft') {
|
||||
$row['date'] = Date::current(DB_DATE_FORMAT);
|
||||
} elseif (!Valid::date($args['date'], DB_DATE_FORMAT)) {
|
||||
$row['date'] = $this->db[$args['key']]['date'];
|
||||
} elseif (!Valid::date($row['date'], DB_DATE_FORMAT)) {
|
||||
$row['date'] = $this->db[$key]['date'];
|
||||
}
|
||||
|
||||
// Modified date
|
||||
$row['dateModified'] = Date::current(DB_DATE_FORMAT);
|
||||
|
||||
// Schedule page
|
||||
if (($args['date']>Date::current(DB_DATE_FORMAT)) && ($args['type']=='published')) {
|
||||
if (($row['date']>Date::current(DB_DATE_FORMAT)) && ($row['type']=='published')) {
|
||||
$row['type'] = 'scheduled';
|
||||
}
|
||||
|
||||
if ($climode===false) {
|
||||
// Move the directory from old key to new key.
|
||||
if ($newKey!==$args['key']) {
|
||||
if( Filesystem::mv(PATH_PAGES.$args['key'], PATH_PAGES.$newKey) === false ) {
|
||||
if ($newKey!==$key) {
|
||||
if( Filesystem::mv(PATH_PAGES.$key, PATH_PAGES.$newKey) === false ) {
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying to move the directory to '.PATH_PAGES.$newKey);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Make the index.txt and save the file.
|
||||
if (file_put_contents(PATH_PAGES.$newKey.DS.FILENAME, $args['content'])===false) {
|
||||
if (file_put_contents(PATH_PAGES.$newKey.DS.FILENAME, $contentRaw)===false) {
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying to put the content in the file '.FILENAME);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Remove the old key
|
||||
unset( $this->db[$args['key']] );
|
||||
unset( $this->db[$key] );
|
||||
|
||||
// Reindex Orphan Children
|
||||
$this->reindexChildren($args['key'], $newKey);
|
||||
$this->reindexChildren($key, $newKey);
|
||||
|
||||
// Checksum MD5
|
||||
$row['md5file'] = md5_file(PATH_PAGES.$newKey.DS.FILENAME);
|
||||
|
@ -506,14 +506,11 @@ function deletePage($key) {
|
||||
global $dbPages;
|
||||
global $syslog;
|
||||
|
||||
if( $dbPages->delete($key) ) {
|
||||
if ($dbPages->delete($key)) {
|
||||
// Call the plugins after page deleted
|
||||
Theme::plugins('afterPageDelete');
|
||||
|
||||
// Re-index categories
|
||||
reindexCategories();
|
||||
|
||||
// Re-index tags
|
||||
reindextags();
|
||||
|
||||
// Add to syslog
|
||||
@ -533,10 +530,12 @@ function editUser($args) {
|
||||
global $syslog;
|
||||
|
||||
if ($dbUsers->set($args)) {
|
||||
// Add to syslog
|
||||
$syslog->add(array(
|
||||
'dictionaryKey'=>'user-edited',
|
||||
'notes'=>$args['username']
|
||||
));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -563,10 +562,12 @@ function disableUser($args) {
|
||||
|
||||
// Disable the user
|
||||
if ($dbUsers->disableUser($username)) {
|
||||
// Add to syslog
|
||||
$syslog->add(array(
|
||||
'dictionaryKey'=>'user-disabled',
|
||||
'notes'=>$username
|
||||
));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -604,10 +605,12 @@ function deleteUser($args) {
|
||||
}
|
||||
|
||||
if ($dbUsers->delete($username)) {
|
||||
// Add to syslog
|
||||
$syslog->add(array(
|
||||
'dictionaryKey'=>'user-deleted',
|
||||
'notes'=>$username
|
||||
));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -746,10 +749,12 @@ function changeUserPassword($args) {
|
||||
}
|
||||
|
||||
if ($dbUsers->setPassword(array('username'=>$username, 'password'=>$newPassword))) {
|
||||
// Add to syslog
|
||||
$syslog->add(array(
|
||||
'dictionaryKey'=>'user-password-changed',
|
||||
'notes'=>$username
|
||||
));
|
||||
|
||||
Alert::set($Language->g('The changes have been saved'), ALERT_STATUS_OK);
|
||||
return true;
|
||||
}
|
||||
@ -769,10 +774,12 @@ function checkRole($allowRoles, $redirect=true) {
|
||||
}
|
||||
|
||||
if ($redirect) {
|
||||
// Add to syslog
|
||||
$syslog->add(array(
|
||||
'dictionaryKey'=>'access-deny',
|
||||
'notes'=>$login->username()
|
||||
));
|
||||
|
||||
Alert::set($Language->g('You do not have sufficient permissions'));
|
||||
Redirect::page('dashboard');
|
||||
}
|
||||
@ -792,6 +799,7 @@ function createCategory($category) {
|
||||
}
|
||||
|
||||
if ($dbCategories->add(array('name'=>$category))) {
|
||||
// Add to syslog
|
||||
$syslog->add(array(
|
||||
'dictionaryKey'=>'new-category-created',
|
||||
'notes'=>$category
|
||||
@ -826,6 +834,7 @@ function editCategory($args) {
|
||||
// Change the category key in the pages database
|
||||
$dbPages->changeCategory($args['oldKey'], $newCategoryKey);
|
||||
|
||||
// Add to syslog
|
||||
$syslog->add(array(
|
||||
'dictionaryKey'=>'category-edited',
|
||||
'notes'=>$newCategoryKey
|
||||
@ -845,6 +854,7 @@ function deleteCategory($args) {
|
||||
|
||||
// Remove the category from the pages ? or keep it if the user want to recovery the category ?
|
||||
|
||||
// Add to syslog
|
||||
$syslog->add(array(
|
||||
'dictionaryKey'=>'category-deleted',
|
||||
'notes'=>$args['oldCategoryKey']
|
||||
|
@ -54,8 +54,8 @@ class pluginDisqus extends Plugin {
|
||||
|
||||
if ( !$url->notFound() &&
|
||||
( $url->whereAmI()=='page' &&
|
||||
(($this->getDbField('enablePosts') && $page->status()=='published') ||
|
||||
($this->getDbField('enablePages') && $page->status()=='static'))
|
||||
(($this->getDbField('enablePosts') && $page->published()) ||
|
||||
($this->getDbField('enablePages') && $page->static()))
|
||||
) &&
|
||||
$page->allowComments() ) {
|
||||
$html = '<div id="disqus_thread"></div>';
|
||||
|
13
install.php
13
install.php
@ -275,7 +275,7 @@ function install($adminPassword, $timezone)
|
||||
}
|
||||
|
||||
// Directories for initial plugins
|
||||
$pluginsToInstall = array('simplemde', 'tags', 'about', 'simple-stats');
|
||||
$pluginsToInstall = array('simplemde', 'tags', 'about', 'simple-stats', 'robots');
|
||||
foreach ($pluginsToInstall as $plugin) {
|
||||
if (!mkdir(PATH_PLUGINS_DATABASES.$plugin, DIR_PERMISSIONS, true)) {
|
||||
$errorText = 'Error when trying to created the directory=>'.PATH_PLUGINS_DATABASES.$plugin;
|
||||
@ -497,6 +497,17 @@ function install($adminPassword, $timezone)
|
||||
LOCK_EX
|
||||
);
|
||||
|
||||
// File plugins/robots/db.php
|
||||
file_put_contents(
|
||||
PATH_PLUGINS_DATABASES.'robots'.DS.'db.php',
|
||||
$dataHead.json_encode(
|
||||
array(
|
||||
'position'=>1
|
||||
),
|
||||
JSON_PRETTY_PRINT),
|
||||
LOCK_EX
|
||||
);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user