class AdminActions extends BaseActions
{
- // reference to the skin object for which a part is being parsed
- private $skin;
-
private $skintype;
/* NOTE: list of whole available action names for tags
'batchmovetype',
'blogcatlist',
'blognotifysetting',
- 'blogselectbox',
'blogsetting',
'blogsettingyesno',
'blogteamlist',
'importskininfo',
'inputyesno',
'insertpluginfo',
- 'insertpluginoptions',
'insplugoptcontent',
'iprangeinput',
'itemnavlist',
static private $default_actions = array(
'addtickettourl',
'adminurl',
+ 'codename',
'customhelplink',
+ 'date',
+ 'extrahead',
'headmessage',
'helplink',
+ 'member',
+ 'newestcompare',
+ 'pagehead',
+ 'pagefoot',
+ 'qmenuaddselect',
+ 'quickmenu',
+ 'sitevar',
'sprinttext',
- 'ticket'
+ 'ticket',
+ 'version',
+ 'versioncheckurl'
);
/**
'adminskinremovetype' => _ADM_SKPRT_ADMINSKINREMOVETYPE,
'admintemplatedelete' => _ADM_SKPRT_ADMINTEMPLATEDELETE,
'admintemplateedit' => _ADM_SKPRT_ADMINTEMPLATEEDIT,
- 'admintemplateoverview' => _ADM_SKPRT_ADMINTEMPLATEOVERVIEW,
+ 'admntemplateoverview' => _ADM_SKPRT_ADMINTEMPLATEOVERVIEW,
'backupoverview' => _ADM_SKPRT_BACKUPOVERVIEW,
'backuprestore' => _ADM_SKPRT_BACKUPRESTORE,
'banlist' => _ADM_SKPRT_BANLIST,
'batchmovecat' => _ADM_SKPRT_BATCHMOVECAT,
'batchteam' => _ADM_SKPRT_BATCHTEAM,
'blogcommentlist' => _ADM_SKPRT_BLOGCOMMENTLIST,
- 'blogselectbox' => _ADM_SKPRT_BLOGSELECTBOX,
'blogsettings' => _ADM_SKPRT_BLOGSETTINGS,
'bookmarklet' => _ADM_SKPRT_BOOKMARKLET,
'browseowncomments' => _ADM_SKPRT_BROWSEOWNCOMMENTS,
'createnewlog' => _ADM_SKPRT_CREATENEWLOG,
'deleteblog' => _ADM_SKPRT_DELETEBLOG,
'editmembersettings' => _ADM_SKPRT_EDITMEMBERSETTINGS,
- 'insertpluginoptions' => _ADM_SKPRT_INSERTPLUGINO,
'itemcommentlist' => _ADM_SKPRT_ITEMCOMMENTLIST,
'itemdelete' => _ADM_SKPRT_ITEMDELETE,
'itemedit' => _ADM_SKPRT_ITEMEDIT,
'adminbatchlist',
);
break;
- case 'blogselectbox':
- $extra_actions = array(
- 'blogselectbox',
- );
- break;
case 'blogsettings':
$extra_actions = array(
'adminbloglink',
'categories',
'currenttime',
'init',
- 'itemoptions',
+ 'pluginoptions',
'pluginextras'
);
break;
'pluginoptions',
);
break;
- case 'insertpluginoptions':
- $extra_actions = array(
- 'insertpluginoptions',
- );
- break;
case 'itemcommentlist':
$extra_actions = array(
'requestblogid',
'categories',
'currenttime',
'itemtime',
- 'pluginextras',
- 'itemoptions'
+ 'pluginoptions',
+ 'pluginextras'
);
break;
case 'itemlist':
'yrbloglist',
);
break;
- case 'pagefoot':
- $extra_actions = array(
- 'date',
- 'qmenuaddselect',
- 'member',
- 'quickmenu',
- );
- break;
- case 'pagehead':
- $extra_actions = array(
- 'charset',
- 'sitevar',
- 'adminurl',
- 'extrahead',
- 'member',
- 'versioncheckurl',
- 'version',
- 'codename',
- 'newestcompare',
- );
- break;
case 'plugindelete':
$extra_actions = array(
'editpluginfo',
}
/**
- * AdminActions::setSkin()
- * Set the skin
- * @param object $skin an instance of Skin class
- * @return void
- */
- public function setSkin(&$skin)
- {
- $this->skin =& $skin;
- return;
- }
-
- /**
* AdminActions::parse_actionloglist()
* Parse skinvar actionloglist
*
if ( !array_key_exists('ADMIN_BATCHLIST', $templates) || empty($templates['ADMIN_BATCHLIST']) )
{
- $template = '<li><%text(_BATCH_EXECUTING)%>'
- . '<b><%adminbatchaction%></b>'
- . '<%batchlisttype%>'
- . '<b><%batchid%></b>...'
+ $template = '<li><%text(_BATCH_EXECUTING)%> '
+ . '<b><%adminbatchaction%></b> '
+ . '<%batchlisttype%> '
+ . '<b><%batchid%></b>... '
. '<b><%batchlistmsg%></b>'
. '</li>' . "\n";
}
}
else
{
- DB::execute("UPDATE {$setadminsql} {$selectedid};");
+ DB::execute("UPDATE {$unsetupsql} {$selectedid};");
}
break;
default:
$handler = new AdminActions('template');
$parser = new Parser($handler);
+ $output = Template::fill($template, $data);
ob_start();
- $parser->parse($template);
- $template = ob_get_contents();
+ $parser->parse($output);
+ $output = ob_get_contents();
ob_end_clean();
- echo Template::fill($template, $data);
+ echo "{$output}<br />";
}
return;
}
$template['content'] = 'adminskinlist';
$template['tabindex'] = 10;
- $template['friendly_names'] = $this->skin->getAvailableTypes();
+ $template['friendly_names'] = $this->parser->skin->getAvailableTypes();
Showlist($query, 'table', $template, $templateName);
return;
}
* @param void
* @return void
*/
- public function parse_adminskinselectoptions()
+ public function parse_adminskinselectoptions($templateName = '')
{
global $CONF;
$query = "SELECT sdname as text, sdnumber as value FROM %s WHERE sdname LIKE 'admin/%%';";
$template['name'] = 'adminskin';
$template['selected'] = $CONF['AdminSkin'];
$template['tabindex'] = 110;
- Showlist($query, 'select', $template, '');
+ Showlist($query, 'select', $template, $templateName);
return;
}
$templates = Template::read($templateName);
}
- $nType = $this->skin->getAvailableTypes();
+ $nType = $this->parser->skin->getAvailableTypes();
$skinid = intRequestVar('skinid');
$query = "SELECT stype FROM %s WHERE stype NOT IN (%s) AND sdesc=%d;";
{
global $DIR_ADMINSKINS;
$skinType = strtolower(trim(requestVar('type')));
- $actions = $this->skin->getAllowedActionsForType($skinType);
+ $actions = $this->parser->skin->getAllowedActionsForType($skinType);
sort($actions);
while ( $current = array_shift($actions) )
* @param void
* @return void
*/
- public function parse_blogcatlist()
+ public function parse_blogcatlist($templateName = '')
{
global $manager;
$blogid = intRequestVar('blogid');
$template['tabindex'] = 200;
$batch = new Batch('category');
- $batch->showlist($query, 'table', $template);
+ $batch->showlist($query, 'table', $template, $templateName);
return;
}
}
/**
- * AdminActions::parse_blogselectbox()
- * Parse skinvar blogselectbox
- *
- * @param void
- * @return void
- */
- public function parse_blogselectbox()
- {
- global $member;
-
- $selectData = requestVar('selectData');
- $mode = $selectData['mode'];
- $name = Entity::hsc($selectData['name']);
- $tabindex = Entity::hsc($selectData['tabindex']);
- $aBlogIds = array_map('intval', $selectData['aBlogIds']);
- $showNewCat = intval($selectData['showNewCat']);
- $selected = intval($selectData['selected']);
-
- echo "<select name=\"{$name}\" tabindex=\"{$tabindex}\">\n";
-
- // 1. select blogs (we'll create optiongroups)
- // (only select those blogs that have the user on the team)
- $queryBlogs = "SELECT bnumber, bname FROM %s WHERE bnumber in (%s) ORDER BY bname;";
- $queryBlogs = sprintf($queryBlogs, sql_table('blog'), implode(',', $aBlogIds));
- $blogs = DB::getResult($queryBlogs);
-
- if ( $mode == 'category' )
- {
- if ( $blogs->rowCount() > 1 )
- {
- $multipleBlogs = 1;
- }
- foreach ( $blogs as $rBlog )
- {
- if ( isset($multipleBlogs) && !empty($multipleBlogs) )
- {
- echo '<optgroup label="' . Entity::hsc($rBlog['bname']) . "\">\n";
- }
-
- // show selection to create new category when allowed/wanted
- if ( $showNewCat )
- {
- // check if allowed to do so
- if ( $member->blogAdminRights($rBlog['bnumber']) )
- {
- echo '<option value="newcat-' . $rBlog['bnumber'] . '">' . _ADD_NEWCAT . "</option>\n";
- }
- }
-
- // 2. for each category in that blog
- $catQuery = "SELECT cname, catid FROM %s WHERE cblog=%d ORDER BY cname ASC;";
- $catQuery = sprintf($catQuery, sql_table('category'), (integer) $rBlog['bnumber']);
- $categories = DB::getResult($catQuery);
- foreach ( $categories as $rCat )
- {
- if ( $rCat['catid'] == $selected )
- {
- $selectText = ' selected="selected" ';
- }
- else
- {
- $selectText = '';
- }
- echo '<option value="' . $rCat['catid'] . '" ' . $selectText . '>' . Entity::hsc($rCat['cname']) . "</option>\n";
- }
-
- if ( isset($multipleBlogs) && !empty($multipleBlogs) )
- {
- echo '</optgroup>';
- }
- }
- }
- else
- {
- // blog mode
- foreach ( $blogs as $rBlog )
- {
- echo '<option value="' . $rBlog['bnumber'] . '"';
- if ( $rBlog['bnumber'] == $selected )
- {
- echo '<option value="' . $rBlog['bnumber'] . '" selected="selected">' . Entity::hsc($rBlog['bname']) . "</option>\n";
- }
- else
- {
- echo '<option value="' . $rBlog['bnumber'] . '">' . Entity::hsc($rBlog['bname']) . "</option>\n";
- }
- }
- }
- echo "</select>\n";
- return;
- }
-
- /**
* AdminActions::parse_blogsetting()
* Parse skinvar blogsetting
*
$template['tabindex'] = 10;
$batch = new Batch('team');
- $batch->showlist($query, 'table', $template, _LISTS_NOMORE, $templateName);
+ $batch->showList($query, 'table', $template, $templateName, _LISTS_NOMORE);
return;
}
$catid = $contents['catid'];
}
- Admin::selectBlogCategory('catid', $catid, $startidx, 1, $blog->getID());
+ $this->selectBlog('catid', 'category', $catid, $startidx, 1, $blog->getID());
return;
}
$templates = Template::read($templateName);
}
- $types = $this->skin->getAvailableTypes();
+ $types = $this->parser->skin->getAvailableTypes();
ksort($types);
/* NOTE: set templates for HEAD/BODY/FOOT */
{
global $CONF, $manager, $member;
- $fNames = $this->skin->getAvailableTypes();
+ $fNames = $this->parser->skin->getAvailableTypes();
$sType = strtolower(trim(requestVar('type')));
switch ( $type )
echo intRequestVar('skinid');
break;
case 'name':
- echo Entity::hsc($this->skin->getName());
+ echo Entity::hsc($this->parser->skin->getName());
break;
case 'desc':
- echo Entity::hsc($this->skin->getDescription());
+ echo Entity::hsc($this->parser->skin->getDescription());
break;
case 'type':
- echo Entity::hsc($this->skin->getContentType());
+ echo Entity::hsc($this->parser->skin->getContentType());
break;
case 'content':
- echo Entity::hsc($this->skin->getContentFromDB($sType));
+ echo Entity::hsc($this->parser->skin->getContentFromDB($sType));
break;
case 'skintype':
$skinType = !array_key_exists($sType, $fNames) ? ucfirst($sType) : $fNames[$sType];
echo Entity::hsc($sType);
break;
case 'prefix':
- echo Entity::hsc($this->skin->getIncludePrefix());
+ echo Entity::hsc($this->parser->skin->getIncludePrefix());
break;
case 'mode':
$incMode = $skin->getIncludeMode() ? _PARSER_INCMODE_SKINDIR : _PARSER_INCMODE_NORMAL;
$template['tabindex'] = 10;
$batch = new Batch('member');
- $batch->showlist($query, 'table', $template, _LISTS_NOMORE, $templateName);
+ $batch->showList($query, 'table', $template, $templateName, _LISTS_NOMORE);
return;
}
*/
public function parse_editpluginfo($type)
{
+ global $manager;
+
$pid = intRequestVar('plugid');
switch ( $type )
{
echo $pid;
break;
case 'name':
- echo Entity::hsc(getPluginNameFromPid($pid));
+ echo Entity::hsc($manager->getPluginNameFromPid($pid));
break;
}
return;
*/
public function parse_geteditpluginfo($type)
{
+ global $manager;
$pid = intRequestVar('plugid');
switch ( $type )
{
return $pid;
break;
case 'name':
- return Entity::hsc(getPluginNameFromPid($pid));
+ return Entity::hsc($manager->getPluginNameFromPid($pid));
break;
}
return;
public function parse_helpplugname()
{
$plugid = intGetVar('plugid');
- Entity::hsc(getPluginNameFromPid($plugid));
+ Entity::hsc($manager->getPluginNameFromPid($plugid));
return;
}
}
/**
- * AdminActions::parse_insertpluginoptions()
- * Parse skinvar insertpluginoptions
- *
- * @param string $templateName name of template
- * @return void
- */
- public function parse_insertpluginoptions($templateName = '')
- {
- $options = Admin::getAdminaOption();
- $template = array();
- $templats = array();
-
- if ( $templateName )
- {
- $templates = Template::read($templateName);
- }
- if ( !array_key_exists('INSERT_PLUGOPTION_TITLE', $templates) || empty($templates['INSERT_PLUGOPTION_TITLE']) )
- {
- $template['title'] = "<tr>"
- . "<th colspan=\"2\"><%sprinttext(_PLUGIN_OPTIONS_TITLE, <|%insertpluginfo(name)%|>)%></th>"
- . "</tr>\n";
- }
- else
- {
- $template['title'] = $templates['INSERT_PLUGOPTION_TITLE'];
- }
- if ( !array_key_exists('INSERT_PLUGOPTION_BODY', $templates) || empty($templates['INSERT_PLUGOPTION_BODY']) )
- {
- $template['body'] = "<tr>"
- . "<%listplugplugoptionrow%>"
- . "</tr>\n";
- }
- else
- {
- $template['body'] = $templates['INSERT_PLUGOPTION_BODY'];
- }
-
- $prevPid = -1;
-
- include_libs('ACTIONS.php');
- $handler = new Actions($this->skintype);
- $parser = new PARSER($handler);
-
- foreach ( $options as $option )
- {
-
- // new plugin?
- if ( $prevPid != $option['pid'] )
- {
- $prevPid = $option['pid'];
- $parser->parse($template['title']);
- }
-
- $meta = NucleusPlugin::getOptionMeta($option['typeinfo']);
-
- if ( @$meta['access'] != 'hidden' )
- {
- $parsed = $parser->parse($template['body']);
- }
- }
- return;
- }
-
- /**
* AdminActions::parse_insplugoptcontent()
* Parse skinvar insplugoptcontent
*
* @param void
* @return void
*/
- public function parse_itemnavlist()
+ public function parse_itemnavlist($templateName)
{
global $CONF, $manager, $member;
. " LIMIT {$start},{$amount}";
$template['content'] = 'itemlist';
-
+
$navList = new Navlist($this->skintype, $start, $amount, 0, 1000, $blogid, $search, 0);
- $navList->showBatchList('item', $query, 'table', $template);
- return;
- }
-
- /**
- * AdminActions::parse_itemoptions()
- * Parse skinvar itemoptions
- * Adds the itemOptions of a plugin to a page
- * @author TeRanEX
- */
- public function parse_itemoptions()
- {
- $this->parse_pluginoptions('item');
+ $navList->showBatchList('item', $query, 'table', $template, '', $templateName);
return;
}
/**
- * AdminActions::parse_itemoptions()
- *
+ * AdminActions::parse_itemtime()
* date change on edit item
*
- * Parse skinvar itemoptions
- * Adds the itemOptions of a plugin to a page
- * @author TeRanEX
+ * @param string $key key of PHP's getDate()
+ * @return void
*/
- public function parse_itemtime($what)
+ public function parse_itemtime($key)
{
global $manager;
$manager->notify('PreAddItemForm', $data);
}
$itemtime = getdate($contents['timestamp']);
- echo $itemtime[$what];
+ echo $itemtime[$key];
return;
}
switch ( $actionType )
{
case 'batchitem':
- Admin::selectBlogCategory('destcatid');
+ $this->selectBlog('destcatid', 'category');
break;
case 'batchcategory':
- Admin::selectBlog('destblogid');
+ $this->selectBlog('destblogid');
break;
default:
if ( $this->skintype == 'itemmove' )
$query = "SELECT icat as result FROM %s WHERE inumber=%d;";
$query = sprintf($query, sql_table('item'), intRequestVar('itemid'));
$catid = DB::getValue(sprintf($query, intRequestVar('itemid')));
- Admin::selectBlogCategory('catid', $catid, 10, 1);
+ $this->selectBlog('catid', 'category', $catid, 10, 1);
}
break;
}
$query = "SELECT mname as text, mnumber as value FROM %s WHERE mnumber NOT IN (%s);";
$query = sprintf($query, sql_table('member'), implode(', ', $tmem));
- $template['name'] = 'memberid';
- $template['tabindex'] = 10000;
+ $template = array(
+ 'name' => 'memberid',
+ 'tabindex' => 10000,
+ 'selected' => 0
+ );
Showlist($query, 'select', $template, $templateName);
return;
}
global $manager, $DIR_PLUGINS;
$plugid = intGetVar('plugid');
- $plugName = getPluginNameFromPid($plugid);
+ $plugName = $manager->getPluginNameFromPid($plugid);
$plug =& $manager->getPlugin($plugName);
if ( $plug->supportsFeature('HelpPage') > 0 )
* @param string $type type of plugin option
* @return void
*/
- public function parse_pluginoptions($type = 'global')
+ public function parse_pluginoptions($context='global', $templateName='')
{
- global $itemid;
+ global $itemid, $manager;
- switch ( $type )
+ switch ( $context )
{
case 'member':
- $id = intRequestVar('memberid');
+ $contextid = intRequestVar('memberid');
break;
case 'blog':
- $id = intRequestVar('blogid');
+ $contextid = intRequestVar('blogid');
break;
case 'category':
- $id = intRequestVar('catid');
+ $contextid = intRequestVar('catid');
break;
case 'item':
- $id = $itemid;
+ $contextid = $itemid;
break;
}
- Admin::insertPluginOptions($type, $id);
+
+ /* Actually registererd plugin options */
+ $aIdToValue = array();
+ $query = "SELECT oid, ovalue FROM %s WHERE ocontextid=%d;";
+ $query = sprintf($query, sql_table('plugin_option'), (integer) $contextid);
+ $res = DB::getResult($query);
+ foreach ( $res as $row )
+ {
+ $aIdToValue[$row['oid']] = $row['ovalue'];
+ }
+
+ /* Currently available plugin options */
+ $query = "SELECT * FROM %s, %s WHERE opid=pid and ocontext= %s ORDER BY porder, oid ASC;";
+ $query = sprintf($query, sql_table('plugin_option_desc'), sql_table('plugin'), DB::quoteValue($context));
+ $res = DB::getResult($query);
+
+ $options = array();
+ foreach ($res as $row )
+ {
+ if ( !array_key_exists($row['oid'], $aIdToValue) )
+ {
+ $value = $row['odef'];
+ }
+ else
+ {
+ $value = $aIdToValue[$row['oid']];
+ }
+
+ $options[] = array(
+ 'pid' => $row['pid'],
+ 'pfile' => $row['pfile'],
+ 'oid' => $row['oid'],
+ 'value' => $value,
+ 'name' => $row['oname'],
+ 'description' => $row['odesc'],
+ 'type' => $row['otype'],
+ 'typeinfo' => $row['oextra'],
+ 'contextid' => $contextid,
+ 'extra' => ''
+ );
+ }
+
+ $data = array(
+ 'context' => $context,
+ 'contextid' => $contextid,
+ 'options' => &$options
+ );
+ $manager->notify('PrePluginOptionsEdit', $data);
+
+ $template = array();
+ if ( $templateName )
+ {
+ $templates = Template::read($templateName);
+ if ( !array_key_exists('INSERT_PLUGOPTION_TITLE', $templates) || empty($templates['INSERT_PLUGOPTION_TITLE']) )
+ {
+ $template['title'] = "<tr>"
+ . "<th colspan=\"2\"><%sprinttext(_PLUGIN_OPTIONS_TITLE, <|%insertpluginfo(name)%|>)%></th>"
+ . "</tr>\n";
+ }
+ else
+ {
+ $template['title'] = $templates['INSERT_PLUGOPTION_TITLE'];
+ }
+
+ if ( !array_key_exists('INSERT_PLUGOPTION_BODY', $templates) || empty($templates['INSERT_PLUGOPTION_BODY']) )
+ {
+ $template['body'] = "<tr>"
+ . "<%listplugplugoptionrow%>"
+ . "</tr>\n";
+ }
+ else
+ {
+ $template['body'] = $templates['INSERT_PLUGOPTION_BODY'];
+ }
+ }
+
+ $prevPid = -1;
+
+ include_libs('ACTIONS.php');
+ $handler = new Actions($this->skintype);
+ $parser = new PARSER($handler);
+
+ foreach ( $options as $option )
+ {
+ // new plugin?
+ if ( $prevPid != $option['pid'] )
+ {
+ $prevPid = $option['pid'];
+ $parser->parse($template['title']);
+ }
+
+ $meta = NucleusPlugin::getOptionMeta($option['typeinfo']);
+
+ if ( @$meta['access'] != 'hidden' )
+ {
+ $parsed = $parser->parse($template['body']);
+ }
+ }
+
return;
}
switch ( $type )
{
case 'skin':
- $res = DB::getResult('SELECT * FROM ' . sql_table('skin_desc'));
+ $res = DB::getResult('SELECT * FROM ' . sql_table('skin_desc'). " WHERE sdname NOT LIKE 'admin/%%';");
foreach ( $res as $row )
{
$data = array(
* @param $templateName
* @param $showlist
*/
- private function input_yesno($name,
+ public function input_yesno($name,
$checkedval,
$tabindex = 0,
$value1 = 1,
{
global $DIR_PLUGINS;
- $candidates = array();
+ $query = "SELECT * FROM %s;";
+ $query = sprintf($query, sql_table('plugin'));
+ $res = DB::getResult($query);
+
+ $installed = array();
+ foreach( $res as $row )
+ {
+ $installed[] = $row['pfile'];
+ }
+
$files = scandir($DIR_PLUGINS);
+ $candidates = array();
foreach ( $files as $file )
{
- if ( preg_match("#^NP_(.*)\.php$#", $file, $matches) )
+ if ( preg_match("#^(NP_.*)\.php$#", $file, $matches) )
{
- $name = $matches[1];
- $query = "SELECT * FROM %s WHERE pfile=%s;";
- $query = sprintf($query, sql_table('plugin'), DB::quoteValue("{NP_{$name}"));
- $res = DB::getResult($query);
-
- if ( $res->rowCount() == 0 )
+ if ( !in_array($matches[1], $installed) )
{
- $candidates[] = $name;
+ $candidates[] = preg_replace("#^NP_#", "", $matches[1]);
}
}
- continue;
}
$this->newPlugCandidates = $candidates;
return (count($candidates) > 0);
}
+
+ /**
+ * AdminActions::pagehead()
+ * Output admin page head
+ *
+ * @param void
+ * @return void
+ */
+ public function parse_pagehead()
+ {
+ global $member, $nucleus, $CONF, $manager;
+
+ $extrahead = Admin::getAdminextrahead();
+ $data = array(
+ 'extrahead' => &$extrahead,
+ 'action' => Admin::getAdminAction()
+ );
+ $manager->notify('AdminPrePageHead', $data);
+
+ $content = $this->parser->skin->getContentFromDB('pagehead');
+ if ( !$content )
+ {
+ $baseUrl = Entity::hsc($CONF['SkinsURL']);
+
+ /*
+ * TODO: obsoleted
+ if ( !array_key_exists('AdminCSS', $CONF) )
+ {
+ DB::execute("INSERT INTO " . sql_table('config') . " VALUES ('AdminCSS', 'original')");
+ $CONF['AdminCSS'] = 'original';
+ }
+ */
+
+ /* HTTP 1.1 application for no caching */
+ header("Cache-Control: no-cache, must-revalidate");
+ header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
+
+ $root_element = 'html';
+ $charset = i18n::get_current_charset();
+ $locale = preg_replace('#_#', '-', i18n::get_current_locale());
+ $xml_version_info = self::$xml_version_info;
+ $formal_public_identifier = self::$formal_public_identifier;
+ $system_identifier = self::$system_identifier;
+ $xhtml_namespace = self::$xhtml_namespace;
+
+ echo "<?xml version=\"{$xml_version_info}\" encoding=\"{$charset}\" ?>\n";
+ echo "<!DOCTYPE {$root_element} PUBLIC \"{$formal_public_identifier}\" \"{$system_identifier}\">\n";
+ echo "<{$root_element} xmlns=\"{$xhtml_namespace}\" xml:lang=\"{$locale}\" lang=\"{$locale}\">\n";
+ echo "<head>\n";
+ echo '<title>' . Entity::hsc($CONF['SiteName']) . " - Admin</title>\n";
+ /*
+ * TODO: obsoleted
+ echo "<link rel=\"stylesheet\" title=\"Nucleus Admin Default\" type=\"text/css\" href=\"{$baseUrl}admin/defaultadmin/styles/admin_{$CONF["AdminCSS"]}.css\" />\n";
+ */
+ echo "<link rel=\"stylesheet\" title=\"Nucleus Admin Default\" type=\"text/css\" href=\"{$baseUrl}admin/defaultadmin/styles/addedit.css\" />\n";
+ echo "<script type=\"text/javascript\" src=\"{$baseUrl}javascripts/edit.js\"></script>\n";
+ echo "<script type=\"text/javascript\" src=\"{$baseUrl}javascripts/admin.js\"></script>\n";
+ echo "<script type=\"text/javascript\" src=\"{$baseUrl}javascripts/compatibility.js\"></script>\n";
+ echo "{$extrahead}\n";
+ echo "</head>\n\n";
+ echo "<body>\n";
+ echo "<div id=\"adminwrapper\">\n";
+ echo "<div class=\"header\">\n";
+ echo '<h1>' . Entity::hsc($CONF['SiteName']) . "</h1>\n";
+ echo "</div>\n";
+ echo "<div id=\"container\">\n";
+ echo "<div id=\"content\">\n";
+ echo "<div class=\"loginname\">\n";
+
+ if ( !$member->isLoggedIn() )
+ {
+ echo '<a href="index.php?action=showlogin" title="Log in">' . _NOTLOGGEDIN . "</a><br />\n";
+ }
+ else
+ {
+ echo _LOGGEDINAS . ' ' . $member->getDisplayName() ." - <a href='index.php?action=logout'>" . _LOGOUT. "</a><br />\n";
+ echo "<a href='index.php?action=overview'>" . _ADMINHOME . "</a> - ";
+ }
+
+ echo "<a href='".$CONF['IndexURL']."'>"._YOURSITE."</a><br />\n";
+ echo '(';
+
+ if ( !array_key_exists('codename', $nucleus) || empty($nucleus['codename']) )
+ {
+ $codenamestring = '';
+ }
+ else
+ {
+ $codenamestring = ' "' . $nucleus['codename'].'"';
+ }
+
+ if ( $member->isLoggedIn() && $member->isAdmin() )
+ {
+ $checkURL = sprintf(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_URL, getNucleusVersion(), getNucleusPatchLevel());
+ echo '<a href="' . $checkURL . '" title="' . _ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_TITLE . '">Nucleus CMS ' . $nucleus['version'] . $codenamestring . '</a>';
+
+ $newestVersion = getLatestVersion();
+ $newestCompare = str_replace('/', '.', $newestVersion);
+ $currentVersion = str_replace(array('/','v'), array('.',''), $nucleus['version']);
+
+ if ( $newestVersion && version_compare($newestCompare, $currentVersion) > 0 )
+ {
+ echo "<br />\n";
+ echo '<a style="color:red" href="http://nucleuscms.org/upgrade.php" title="' . _ADMIN_SYSTEMOVERVIEW_LATESTVERSION_TITLE . '">';
+ echo _ADMIN_SYSTEMOVERVIEW_LATESTVERSION_TEXT . $newestVersion;
+ echo "</a>";
+ }
+ }
+ else
+ {
+ echo "Nucleus CMS {$nucleus['version']}{$codenamestring}";
+ }
+ echo ')';
+ echo '</div>';
+ }
+ else
+ {
+ $this->parser->parse($content);
+ }
+
+ return;
+ }
+
+ /**
+ * AdminActionss::pagefoot()
+ * Output admin page foot include quickmenu
+ *
+ * @param void
+ * @return void
+ */
+ public function parse_pagefoot()
+ {
+ global $action, $member, $manager;
+
+ $data = array(
+ 'action' => Admin::getAdminAction()
+ );
+ $manager->notify('AdminPrePageFoot', $data);
+
+ $content = $this->parser->skin->getContentFromDB('pagefoot');
+ if ( !$content )
+ {
+ if ( $member->isLoggedIn() && ($action != 'showlogin') )
+ {
+ echo '<h2>' . _LOGOUT . "</h2>\n";
+ echo "<ul>\n";
+ echo '<li><a href="index.php?action=overview">' . _BACKHOME . "</a></li>\n";
+ echo '<li><a href="index.php?action=logout">' . _LOGOUT . "</a></li>\n";
+ echo "</ul>\n";
+ }
+
+ echo "<div class=\"foot\">\n";
+ echo '<a href="' . _ADMINPAGEFOOT_OFFICIALURL . '">Nucleus CMS</a> © 2002-' . date('Y') . ' ' . _ADMINPAGEFOOT_COPYRIGHT;
+ echo '-';
+ echo '<a href="' . _ADMINPAGEFOOT_DONATEURL . '">' . _ADMINPAGEFOOT_DONATE . "</a>\n";
+ echo "</div>\n";
+
+ echo "<div id=\"quickmenu\">\n";
+
+ if ( ($action != 'showlogin') && ($member->isLoggedIn()) )
+ {
+ echo "<ul>\n";
+ echo '<li><a href="index.php?action=overview">' . _QMENU_HOME . "</a></li>\n";
+ echo "</ul>\n";
+
+ echo '<h2>' . _QMENU_ADD . "</h2>\n";
+ echo "<form method=\"get\" action=\"index.php\">\n";
+ echo "<p>\n";
+ echo "<input type=\"hidden\" name=\"action\" value=\"createitem\" />\n";
+
+ $showAll = requestVar('showall');
+
+ if ( ($member->isAdmin()) && ($showAll == 'yes') )
+ {
+ // Super-Admins have access to all blogs! (no add item support though)
+ $query = "SELECT bnumber as value, bname as text FROM %s ORDER BY bname;";
+ $query = sprintf($query, sql_table('blog'));
+ }
+ else
+ {
+ $query = "SELECT bnumber as value, bname as text FROM %s, %s WHERE tblog=bnumber and tmember=%d ORDER BY bname;";
+ $query = sprintf($query, sql_table('blog'), sql_table('team'), (integer) $member->getID());
+ }
+ $template['name'] = 'blogid';
+ $template['tabindex'] = 15000;
+ $template['extra'] = _QMENU_ADD_SELECT;
+ $template['selected'] = -1;
+ $template['shorten'] = 10;
+ $template['shortenel'] = '';
+ $template['javascript'] = 'onchange="return form.submit()"';
+ showlist($query, 'select', $template);
+
+ echo "</p>\n";
+ echo "</form>\n";
+
+ echo "<h2>{$member->getDisplayName()}</h2>\n";
+ echo "<ul>\n";
+ echo '<li><a href="index.php?action=editmembersettings">' . _QMENU_USER_SETTINGS . "</a></li>\n";
+ echo '<li><a href="index.php?action=browseownitems">' . _QMENU_USER_ITEMS . "</a></li>\n";
+ echo '<li><a href="index.php?action=browseowncomments">' . _QMENU_USER_COMMENTS . "</a></li>\n";
+ echo "</ul>\n";
+
+ if ( $member->isAdmin() )
+ {
+ echo '<h2>' . _QMENU_MANAGE . "</h2>\n";
+ echo "<ul>\n";
+ echo '<li><a href="index.php?action=actionlog">' . _QMENU_MANAGE_LOG . "</a></li>\n";
+ echo '<li><a href="index.php?action=settingsedit">' . _QMENU_MANAGE_SETTINGS . "</a></li>\n";
+ echo '<li><a href="index.php?action=systemoverview">' . _QMENU_MANAGE_SYSTEM . "</a></li>\n";
+ echo '<li><a href="index.php?action=usermanagement">' . _QMENU_MANAGE_MEMBERS . "</a></li>\n";
+ echo '<li><a href="index.php?action=createnewlog">' . _QMENU_MANAGE_NEWBLOG . "</a></li>\n";
+ echo '<li><a href="index.php?action=backupoverview">' . _QMENU_MANAGE_BACKUPS . "</a></li>\n";
+ echo '<li><a href="index.php?action=pluginlist">' . _QMENU_MANAGE_PLUGINS . "</a></li>\n";
+ echo "</ul>\n";
+
+ echo "<h2>" . _QMENU_LAYOUT . "</h2>\n";
+ echo "<ul>\n";
+ echo '<li><a href="index.php?action=skinoverview">' . _QMENU_LAYOUT_SKINS . "</a></li>\n";
+ echo '<li><a href="index.php?action=templateoverview">' . _QMENU_LAYOUT_TEMPL . "</a></li>\n";
+ echo '<li><a href="index.php?action=skinieoverview">' . _QMENU_LAYOUT_IEXPORT . "</a></li>\n";
+ echo "</ul>\n";
+ }
+
+ $data = array('options' => array());
+
+ $manager->notify('QuickMenu', $data);
+
+ if ( count($data['options']) > 0 )
+ {
+ echo "<h2>" . _QMENU_PLUGINS . "</h2>\n";
+ echo "<ul>\n";
+ foreach ( $data['options'] as $option )
+ {
+ echo '<li><a href="' . Entity::hsc($option['url']) . '" title="' . Entity::hsc($option['tooltip']) . '">' . Entity::hsc($option['title']) . "</a></li>\n";
+ }
+ echo "</ul>\n";
+ }
+ }
+ else if ( ($action == 'activate') || ($action == 'activatesetpwd') )
+ {
+
+ echo '<h2>' . _QMENU_ACTIVATE . '</h2>' . _QMENU_ACTIVATE_TEXT;
+ }
+ else
+ {
+ echo '<h2>' . _QMENU_INTRO . '</h2>' . _QMENU_INTRO_TEXT;
+ }
+
+ echo "<!-- quickmenu -->\n";
+ echo "</div>\n";
+
+ echo "<!-- content -->\n";
+ echo "</div>\n";
+
+ echo "<!-- container -->\n";
+ echo "</div>\n";
+
+ echo "<!-- adminwrapper -->\n";
+ echo "</div>\n";
+
+ echo "</body>\n";
+ echo "</html>\n";
+ }
+ else
+ {
+ $this->parser->skin->parse('pagefoot');
+ exit;
+ }
+
+ return;
+ }
+ /**
+ * AdminActions::selectBlog()
+ * Inserts a HTML select element with choices for all blogs to which the user has access
+ * mode = 'blog' => shows blognames and values are blogids
+ * mode = 'category' => show category names and values are catids
+ *
+ * @param string $name
+ * @param string $mode
+ * @param integer $selected
+ * @param integer $tabindex
+ * @param integer $showNewCat
+ * @param integer $iForcedBlogInclude ID for weblog always included
+ * @param $iForcedBlogInclude
+ * ID of a blog that always needs to be included, without checking if the
+ * member is on the blog team (-1 = none)
+ * @return void
+ */
+ private function selectBlog($name, $mode='blog', $selected = 0, $tabindex = 0, $showNewCat = 0, $iForcedBlogInclude = -1)
+ {
+ global $member, $CONF;
+
+ // 0. get IDs of blogs to which member can post items (+ forced blog)
+ $aBlogIds = array();
+ if ( $iForcedBlogInclude != -1 )
+ {
+ $aBlogIds[] = intval($iForcedBlogInclude);
+ }
+
+ if ( $member->isAdmin() && array_key_exists('ShowAllBlogs', $CONF) && $CONF['ShowAllBlogs'] )
+ {
+ $query = "SELECT bnumber FROM %s ORDER BY bname;";
+ $query = sprintf($query, sql_table('blog'));
+ }
+ else
+ {
+ $query = "SELECT bnumber FROM %s, %s WHERE tblog=bnumber AND tmember=%d;";
+ $query = sprintf($query, sql_table('blog'), sql_table('team'), (integer) $member->getID());
+ }
+
+ $rblogids = DB::getResult($query);
+ foreach ( $rblogids as $row )
+ {
+ if ( $row['bnumber'] != $iForcedBlogInclude )
+ {
+ $aBlogIds[] = intval($row['bnumber']);
+ }
+ }
+
+ if ( count($aBlogIds) == 0 )
+ {
+ return;
+ }
+
+ echo "<select name=\"{$name}\" tabindex=\"{$tabindex}\">\n";
+
+ // 1. select blogs (we'll create optiongroups)
+ // (only select those blogs that have the user on the team)
+ $queryBlogs = "SELECT bnumber, bname FROM %s WHERE bnumber in (%s) ORDER BY bname;";
+ $queryBlogs = sprintf($queryBlogs, sql_table('blog'), implode(',', $aBlogIds));
+ $blogs = DB::getResult($queryBlogs);
+
+ if ( $mode == 'category' )
+ {
+ if ( $blogs->rowCount() > 1 )
+ {
+ $multipleBlogs = 1;
+ }
+ foreach ( $blogs as $rBlog )
+ {
+ if ( isset($multipleBlogs) && !empty($multipleBlogs) )
+ {
+ echo '<optgroup label="' . Entity::hsc($rBlog['bname']) . "\">\n";
+ }
+
+ // show selection to create new category when allowed/wanted
+ if ( $showNewCat )
+ {
+ // check if allowed to do so
+ if ( $member->blogAdminRights($rBlog['bnumber']) )
+ {
+ echo '<option value="newcat-' . $rBlog['bnumber'] . '">' . _ADD_NEWCAT . "</option>\n";
+ }
+ }
+
+ // 2. for each category in that blog
+ $catQuery = "SELECT cname, catid FROM %s WHERE cblog=%d ORDER BY cname ASC;";
+ $catQuery = sprintf($catQuery, sql_table('category'), (integer) $rBlog['bnumber']);
+ $categories = DB::getResult($catQuery);
+ foreach ( $categories as $rCat )
+ {
+ if ( $rCat['catid'] == $selected )
+ {
+ $selectText = ' selected="selected" ';
+ }
+ else
+ {
+ $selectText = '';
+ }
+ echo '<option value="' . $rCat['catid'] . '" ' . $selectText . '>' . Entity::hsc($rCat['cname']) . "</option>\n";
+ }
+
+ if ( isset($multipleBlogs) && !empty($multipleBlogs) )
+ {
+ echo '</optgroup>';
+ }
+ }
+ }
+ else
+ {
+ foreach ( $blogs as $rBlog )
+ {
+ echo '<option value="' . $rBlog['bnumber'] . '"';
+ if ( $rBlog['bnumber'] == $selected )
+ {
+ echo '<option value="' . $rBlog['bnumber'] . '" selected="selected">' . Entity::hsc($rBlog['bname']) . "</option>\n";
+ }
+ else
+ {
+ echo '<option value="' . $rBlog['bnumber'] . '">' . Entity::hsc($rBlog['bname']) . "</option>\n";
+ }
+ }
+ }
+ echo "</select>\n";
+ return;
+ }
}