/**
* @file mod/admin.php
- *
+ *
* @brief Friendica admin
*/
* @param App $a
*
*/
-if(! function_exists('admin_post')) {
function admin_post(&$a){
$func($a);
}
}
- goaway($a->get_baseurl(true) . '/admin/plugins/' . $a->argv[2] );
+ goaway('admin/plugins/'.$a->argv[2]);
return; // NOTREACHED
break;
case 'themes':
if($a->argc < 2) {
if(is_ajax()) return;
- goaway($a->get_baseurl(true) . '/admin/' );
+ goaway('admin/');
return;
}
info(t('Theme settings updated.'));
if(is_ajax()) return;
- goaway($a->get_baseurl(true) . '/admin/themes/' . $theme );
+ goaway('admin/themes/'.$theme);
return;
break;
case 'features':
}
}
- goaway($a->get_baseurl(true) . '/admin' );
+ goaway('admin');
return; // NOTREACHED
}
-}
/**
* @brief Generates content of the admin panel pages
* @param App $a
* @return string
*/
-if(! function_exists('admin_content')) {
function admin_content(&$a) {
if(!is_site_admin()) {
* Side bar links
*/
$aside_tools = array();
- // array( url, name, extra css classes )
+ // array(url, name, extra css classes)
// not part of $aside to make the template more adjustable
$aside_sub = array(
- 'site' => array($a->get_baseurl(true)."/admin/site/", t("Site") , "site"),
- 'users' => array($a->get_baseurl(true)."/admin/users/", t("Users") , "users"),
- 'plugins'=> array($a->get_baseurl(true)."/admin/plugins/", t("Plugins") , "plugins"),
- 'themes' => array($a->get_baseurl(true)."/admin/themes/", t("Themes") , "themes"),
- 'features' => array($a->get_baseurl(true)."/admin/features/", t("Additional features") , "features"),
- 'dbsync' => array($a->get_baseurl(true)."/admin/dbsync/", t('DB updates'), "dbsync"),
- 'queue' => array($a->get_baseurl(true)."/admin/queue/", t('Inspect Queue'), "queue"),
- 'federation' => array($a->get_baseurl(true)."/admin/federation/", t('Federation Statistics'), "federation"),
+ 'site' => array("admin/site/", t("Site") , "site"),
+ 'users' => array("admin/users/", t("Users") , "users"),
+ 'plugins'=> array("admin/plugins/", t("Plugins") , "plugins"),
+ 'themes' => array("admin/themes/", t("Themes") , "themes"),
+ 'features' => array("admin/features/", t("Additional features") , "features"),
+ 'dbsync' => array("admin/dbsync/", t('DB updates'), "dbsync"),
+ 'queue' => array("admin/queue/", t('Inspect Queue'), "queue"),
+ 'federation' => array("admin/federation/", t('Federation Statistics'), "federation"),
);
/* get plugins admin page */
$aside_tools['plugins_admin']=array();
foreach ($r as $h){
$plugin =$h['name'];
- $aside_tools['plugins_admin'][] = array($a->get_baseurl(true)."/admin/plugins/".$plugin, $plugin, "plugin");
+ $aside_tools['plugins_admin'][] = array("admin/plugins/".$plugin, $plugin, "plugin");
// temp plugins with admin
$a->plugins_admin[] = $plugin;
}
- $aside_tools['logs'] = array($a->get_baseurl(true)."/admin/logs/", t("Logs"), "logs");
- $aside_tools['viewlogs'] = array($a->get_baseurl(true)."/admin/viewlogs/", t("View Logs"), 'viewlogs');
- $aside_tools['diagnostics_probe'] = array($a->get_baseurl(true).'/probe/', t('probe address'), 'probe');
- $aside_tools['diagnostics_webfinger'] = array($a->get_baseurl(true).'/webfinger/', t('check webfinger'), 'webfinger');
+ $aside_tools['logs'] = array("admin/logs/", t("Logs"), "logs");
+ $aside_tools['viewlogs'] = array("admin/viewlogs/", t("View Logs"), 'viewlogs');
+ $aside_tools['diagnostics_probe'] = array('probe/', t('probe address'), 'probe');
+ $aside_tools['diagnostics_webfinger'] = array('webfinger/', t('check webfinger'), 'webfinger');
$t = get_markup_template("admin_aside.tpl");
- $a->page['aside'] .= replace_macros( $t, array(
+ $a->page['aside'] .= replace_macros($t, array(
'$admin' => $aside_tools,
'$subpages' => $aside_sub,
'$admtxt' => t('Admin'),
'$logtxt' => t('Logs'),
'$diagnosticstxt' => t('diagnostics'),
'$h_pending' => t('User registrations waiting for confirmation'),
- '$admurl'=> $a->get_baseurl(true)."/admin/"
+ '$admurl'=> "admin/"
));
$o = admin_page_federation($a);
break;
default:
- notice( t("Item not found.") );
+ notice(t("Item not found."));
}
} else {
$o = admin_page_summary($a);
return $o;
}
}
-}
/**
* @brief Subpage with some stats about "the federation" network
* @param App $a
* @return string
*/
-if(! function_exists('admin_page_federation')) {
function admin_page_federation(&$a) {
// get counts on active friendica, diaspora, redmatrix, hubzilla, gnu
// social and statusnet nodes this node is knowing
// Add more platforms if you like, when one returns 0 known nodes it is not
// displayed on the stats page.
$platforms = array('Friendica', 'Diaspora', '%%red%%', 'Hubzilla', 'GNU Social', 'StatusNet');
+ $colors = array('Friendica' => '#ffc018', // orange from the logo
+ 'Diaspora' => '#a1a1a1', // logo is black and white, makes a gray
+ '%%red%%' => '#c50001', // fire red from the logo
+ 'Hubzilla' => '#43488a', // blue from the logo
+ 'GNU Social'=> '#a22430', // dark red from the logo
+ 'StatusNet' => '#789240'); // the green from the logo (red and blue have already others
$counts = array();
$total = 0;
// get a total count for the platform, the name and version of the
// highest version and the protocol tpe
$c = q('SELECT count(*) AS total, platform, network, version FROM gserver
- WHERE platform LIKE "%s" AND last_contact > last_failure
+ WHERE platform LIKE "%s" AND last_contact > last_failure AND `version` != ""
ORDER BY version ASC;', $p);
$total = $total + $c[0]['total'];
// what versions for that platform do we know at all?
// again only the active nodes
$v = q('SELECT count(*) AS total, version FROM gserver
- WHERE last_contact > last_failure AND platform LIKE "%s"
+ WHERE last_contact > last_failure AND platform LIKE "%s" AND `version` != ""
GROUP BY version
ORDER BY version;', $p);
$newVC = $vv['total'];
$newVV = $vv['version'];
$posDash = strpos($newVV, '-');
- if($posDash)
+ if($posDash)
$newVV = substr($newVV, 0, $posDash);
if(isset($newV[$newVV]))
- $newV[$newVV] += $newVC;
+ $newV[$newVV] += $newVC;
else
- $newV[$newVV] = $newVC;
+ $newV[$newVV] = $newVC;
}
foreach ($newV as $key => $value) {
array_push($newVv, array('total'=>$value, 'version'=>$key));
$v = $newVv;
}
+ foreach ($v as $key => $vv)
+ $v[$key]["version"] = trim(strip_tags($vv["version"]));
+
// the 3rd array item is needed for the JavaScript graphs as JS does
// not like some characters in the names of variables...
- $counts[$p]=array($c[0], $v, str_replace(array(' ','%'),'',$p));
+ $counts[$p]=array($c[0], $v, str_replace(array(' ','%'),'',$p), $colors[$p]);
}
// some helpful text
'$baseurl' => $a->get_baseurl(),
));
}
-}
/**
* @brief Admin Inspect Queue Page
* @param App $a
* @return string
*/
-if(! function_exists('admin_page_queue')) {
function admin_page_queue(&$a) {
// get content from the queue table
$r = q("SELECT c.name,c.nurl,q.id,q.network,q.created,q.last from queue as q, contact as c where c.id=q.cid order by q.cid, q.created;");
'$entries' => $r,
));
}
-}
/**
* @brief Admin Summary Page
* @param App $a
* @return string
*/
-if(! function_exists('admin_page_summary')) {
function admin_page_summary(&$a) {
$r = q("SELECT `page-flags`, COUNT(uid) as `count` FROM `user` GROUP BY `page-flags`");
$accounts = array(
- array( t('Normal Account'), 0),
- array( t('Soapbox Account'), 0),
- array( t('Community/Celebrity Account'), 0),
- array( t('Automatic Friend Account'), 0),
- array( t('Blog Account'), 0),
- array( t('Private Forum'), 0)
+ array(t('Normal Account'), 0),
+ array(t('Soapbox Account'), 0),
+ array(t('Community/Celebrity Account'), 0),
+ array(t('Automatic Friend Account'), 0),
+ array(t('Blog Account'), 0),
+ array(t('Private Forum'), 0)
);
$users=0;
foreach ($r as $u){ $accounts[$u['page-flags']][1] = $u['count']; $users+= $u['count']; }
- logger('accounts: ' . print_r($accounts,true),LOGGER_DATA);
+ logger('accounts: '.print_r($accounts,true),LOGGER_DATA);
$r = q("SELECT COUNT(id) as `count` FROM `register`");
$pending = $r[0]['count'];
// We can do better, but this is a quick queue status
- $queues = array( 'label' => t('Message queues'), 'deliverq' => $deliverq, 'queue' => $queue );
+ $queues = array('label' => t('Message queues'), 'deliverq' => $deliverq, 'queue' => $queue);
$t = get_markup_template("admin_summary.tpl");
'$title' => t('Administration'),
'$page' => t('Summary'),
'$queues' => $queues,
- '$users' => array( t('Registered users'), $users),
+ '$users' => array(t('Registered users'), $users),
'$accounts' => $accounts,
- '$pending' => array( t('Pending registrations'), $pending),
- '$version' => array( t('Version'), FRIENDICA_VERSION),
+ '$pending' => array(t('Pending registrations'), $pending),
+ '$version' => array(t('Version'), FRIENDICA_VERSION),
'$baseurl' => $a->get_baseurl(),
'$platform' => FRIENDICA_PLATFORM,
'$codename' => FRIENDICA_CODENAME,
'$build' => get_config('system','build'),
- '$plugins' => array( t('Active plugins'), $a->plugins )
+ '$plugins' => array(t('Active plugins'), $a->plugins)
));
}
-}
/**
* @brief Process send data from Admin Site Page
- *
+ *
* @param App $a
*/
-if(! function_exists('admin_page_site_post')) {
function admin_page_site_post(&$a) {
if(!x($_POST,"page_site")) {
return;
$parsed = @parse_url($new_url);
if(!$parsed || (!x($parsed,'host') || !x($parsed,'scheme'))) {
notice(t("Can not parse base url. Must have at least <scheme>://<domain>"));
- goaway($a->get_baseurl(true) . '/admin/site' );
+ goaway('admin/site');
}
/* steps:
$q = sprintf("UPDATE %s SET %s;", $table_name, $upds);
$r = q($q);
if(!$r) {
- notice( "Failed updating '$table_name': " . $db->error );
- goaway($a->get_baseurl(true) . '/admin/site' );
+ notice("Failed updating '$table_name': ".$db->error);
+ goaway('admin/site');
}
}
info("Relocation started. Could take a while to complete.");
- goaway($a->get_baseurl(true) . '/admin/site' );
+ goaway('admin/site');
}
// end relocate
$dfrn_only = ((x($_POST,'dfrn_only')) ? True : False);
$ostatus_disabled = !((x($_POST,'ostatus_disabled')) ? True : False);
$ostatus_poll_interval = ((x($_POST,'ostatus_poll_interval')) ? intval(trim($_POST['ostatus_poll_interval'])) : 0);
+ $ostatus_full_threads = ((x($_POST,'ostatus_full_threads')) ? True : False);
$diaspora_enabled = ((x($_POST,'diaspora_enabled')) ? True : False);
$ssl_policy = ((x($_POST,'ssl_policy')) ? intval($_POST['ssl_policy']) : 0);
$force_ssl = ((x($_POST,'force_ssl')) ? True : False);
$only_tag_search = ((x($_POST,'only_tag_search')) ? True : False);
$rino = ((x($_POST,'rino')) ? intval($_POST['rino']) : 0);
$embedly = ((x($_POST,'embedly')) ? notags(trim($_POST['embedly'])) : '');
+ $worker = ((x($_POST,'worker')) ? True : False);
+ $worker_queues = ((x($_POST,'worker_queues')) ? intval($_POST['worker_queues']) : 4);
+ $worker_dont_fork = ((x($_POST,'worker_dont_fork')) ? True : False);
if($a->get_path() != "")
$diaspora_enabled = false;
set_config('system','language', $language);
set_config('system','theme', $theme);
- if( $theme_mobile === '---' ) {
+ if($theme_mobile === '---') {
del_config('system','mobile-theme');
} else {
set_config('system','mobile-theme', $theme_mobile);
}
- if( $singleuser === '---' ) {
+ if($singleuser === '---') {
del_config('system','singleuser');
} else {
set_config('system','singleuser', $singleuser);
set_config('system','dfrn_only', $dfrn_only);
set_config('system','ostatus_disabled', $ostatus_disabled);
set_config('system','ostatus_poll_interval', $ostatus_poll_interval);
+ set_config('system','ostatus_full_threads', $ostatus_full_threads);
set_config('system','diaspora_enabled', $diaspora_enabled);
set_config('config','private_addons', $private_addons);
set_config('system','proxy_disabled', $proxy_disabled);
set_config('system','old_pager', $old_pager);
set_config('system','only_tag_search', $only_tag_search);
-
+ set_config('system','worker', $worker);
+ set_config('system','worker_queues', $worker_queues);
+ set_config('system','worker_dont_fork', $worker_dont_fork);
if($rino==2 and !function_exists('mcrypt_create_iv')) {
notice(t("RINO2 needs mcrypt php extension to work."));
set_config('system','embedly', $embedly);
- info( t('Site settings updated.') . EOL);
- goaway($a->get_baseurl(true) . '/admin/site' );
+ info(t('Site settings updated.').EOL);
+ goaway('admin/site');
return; // NOTREACHED
}
-}
/**
* @brief Generate Admin Site subpage
* @param App $a
* @return string
*/
-if(! function_exists('admin_page_site')) {
function admin_page_site(&$a) {
/* Installed langs */
$files = glob('view/theme/*');
if($files) {
foreach($files as $file) {
- if(intval(file_exists($file . '/unsupported')))
+ if(intval(file_exists($file.'/unsupported')))
continue;
$f = basename($file);
- $theme_name = ((file_exists($file . '/experimental')) ? sprintf("%s - \x28Experimental\x29", $f) : $f);
- if(file_exists($file . '/mobile')) {
+ $theme_name = ((file_exists($file.'/experimental')) ? sprintf("%s - \x28Experimental\x29", $f) : $f);
+ if(file_exists($file.'/mobile')) {
$theme_choices_mobile[$f] = $theme_name;
} else {
$theme_choices[$f] = $theme_name;
'$advanced' => t('Advanced'),
'$portable_contacts' => t('Auto Discovered Contact Directory'),
'$performance' => t('Performance'),
+ '$worker_title' => t('Worker'),
'$relocate'=> t('Relocate - WARNING: advanced function. Could make this server unreachable.'),
'$baseurl' => $a->get_baseurl(true),
// name, label, value, help string, extra data...
'$max_author_posts_community_page' => array('max_author_posts_community_page', t("Posts per user on community page"), get_config('system','max_author_posts_community_page'), t("The maximum number of posts per user on the community page. (Not valid for 'Global Community')")),
'$ostatus_disabled' => array('ostatus_disabled', t("Enable OStatus support"), !get_config('system','ostatus_disabled'), t("Provide built-in OStatus \x28StatusNet, GNU Social etc.\x29 compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed.")),
'$ostatus_poll_interval' => array('ostatus_poll_interval', t("OStatus conversation completion interval"), (string) intval(get_config('system','ostatus_poll_interval')), t("How often shall the poller check for new entries in OStatus conversations? This can be a very ressource task."), $ostatus_poll_choices),
+ '$ostatus_full_threads' => array('ostatus_full_threads', t("Only import OStatus threads from our contacts"), get_config('system','ostatus_full_threads'), t("Normally we import every content from our OStatus contacts. With this option we only store threads that are started by a contact that is known on our system.")),
'$ostatus_not_able' => t("OStatus support can only be enabled if threading is enabled."),
'$diaspora_able' => $diaspora_able,
'$diaspora_not_able' => t("Diaspora support can't be enabled because Friendica was installed into a sub directory."),
'$rino' => array('rino', t("RINO Encryption"), intval(get_config('system','rino_encrypt')), t("Encryption layer between nodes."), array("Disabled", "RINO1 (deprecated)", "RINO2")),
'$embedly' => array('embedly', t("Embedly API key"), get_config('system','embedly'), t("<a href='http://embed.ly'>Embedly</a> is used to fetch additional data for web pages. This is an optional parameter.")),
+ '$worker' => array('worker', t("Enable 'worker' background processing"), get_config('system','worker'), t("The worker background processing limits the number of parallel background jobs to a maximum number and respects the system load.")),
+ '$worker_queues' => array('worker_queues', t("Maximum number of parallel workers"), get_config('system','worker_queues'), t("On shared hosters set this to 2. On larger systems, values of 10 are great. Default value is 4.")),
+ '$worker_dont_fork' => array('worker_dont_fork', t("Don't use 'proc_open' with the worker"), get_config('system','worker_dont_fork'), t("Enable this if your system doesn't allow the use of 'proc_open'. This can happen on shared hosters. If this is enabled you should increase the frequency of poller calls in your crontab.")),
+
'$form_security_token' => get_form_security_token("admin_site")
));
-}
+
}
/**
* @param App $a
* @return string
**/
-if(! function_exists('admin_page_dbsync')) {
function admin_page_dbsync(&$a) {
$o = '';
if($a->argc > 3 && intval($a->argv[3]) && $a->argv[2] === 'mark') {
- set_config('database', 'update_' . intval($a->argv[3]), 'success');
+ set_config('database', 'update_'.intval($a->argv[3]), 'success');
$curr = get_config('system','build');
if(intval($curr) == intval($a->argv[3]))
set_config('system','build',intval($curr) + 1);
- info( t('Update has been marked successful') . EOL);
- goaway($a->get_baseurl(true) . '/admin/dbsync');
+ info(t('Update has been marked successful').EOL);
+ goaway('admin/dbsync');
}
if(($a->argc > 2) AND (intval($a->argv[2]) OR ($a->argv[2] === 'check'))) {
if($a->argc > 2 && intval($a->argv[2])) {
require_once('update.php');
- $func = 'update_' . intval($a->argv[2]);
+ $func = 'update_'.intval($a->argv[2]);
if(function_exists($func)) {
$retval = $func();
if($retval === UPDATE_FAILED) {
}
return $o;
-}
+
}
/**
* @brief Process data send by Users admin page
- *
+ *
* @param App $a
*/
-if(! function_exists('admin_page_users_post')) {
function admin_page_users_post(&$a){
- $pending = ( x($_POST, 'pending') ? $_POST['pending'] : array() );
- $users = ( x($_POST, 'user') ? $_POST['user'] : array() );
- $nu_name = ( x($_POST, 'new_user_name') ? $_POST['new_user_name'] : '');
- $nu_nickname = ( x($_POST, 'new_user_nickname') ? $_POST['new_user_nickname'] : '');
- $nu_email = ( x($_POST, 'new_user_email') ? $_POST['new_user_email'] : '');
+ $pending = (x($_POST, 'pending') ? $_POST['pending'] : array());
+ $users = (x($_POST, 'user') ? $_POST['user'] : array());
+ $nu_name = (x($_POST, 'new_user_name') ? $_POST['new_user_name'] : '');
+ $nu_nickname = (x($_POST, 'new_user_nickname') ? $_POST['new_user_nickname'] : '');
+ $nu_email = (x($_POST, 'new_user_email') ? $_POST['new_user_email'] : '');
check_form_security_token_redirectOnErr('/admin/users', 'admin_users');
if(!($nu_name==="") && !($nu_email==="") && !($nu_nickname==="")) {
require_once('include/user.php');
- $result = create_user( array('username'=>$nu_name, 'email'=>$nu_email, 'nickname'=>$nu_nickname, 'verified'=>1) );
+ $result = create_user(array('username'=>$nu_name, 'email'=>$nu_email, 'nickname'=>$nu_nickname, 'verified'=>1));
if(! $result['success']) {
notice($result['message']);
return;
notification(array(
'type' => "SYSTEM_EMAIL",
'to_email' => $nu['email'],
- 'subject'=> sprintf( t('Registration details for %s'), $a->config['sitename']),
+ 'subject'=> sprintf(t('Registration details for %s'), $a->config['sitename']),
'preamble'=> $preamble,
'body' => $body));
if(x($_POST,'page_users_block')) {
foreach($users as $uid){
q("UPDATE `user` SET `blocked`=1-`blocked` WHERE `uid`=%s",
- intval( $uid )
+ intval($uid)
);
}
- notice( sprintf( tt("%s user blocked/unblocked", "%s users blocked/unblocked", count($users)), count($users)) );
+ notice(sprintf(tt("%s user blocked/unblocked", "%s users blocked/unblocked", count($users)), count($users)));
}
if(x($_POST,'page_users_delete')) {
require_once("include/Contact.php");
foreach($users as $uid){
user_remove($uid);
}
- notice( sprintf( tt("%s user deleted", "%s users deleted", count($users)), count($users)) );
+ notice(sprintf(tt("%s user deleted", "%s users deleted", count($users)), count($users)));
}
if(x($_POST,'page_users_approve')) {
user_deny($hash);
}
}
- goaway($a->get_baseurl(true) . '/admin/users' );
+ goaway('admin/users');
return; // NOTREACHED
}
-}
/**
* @brief Admin panel subpage for User management
* @param App $a
* @return string
*/
-if(! function_exists('admin_page_users')) {
function admin_page_users(&$a){
if($a->argc>2) {
$uid = $a->argv[3];
$user = q("SELECT username, blocked FROM `user` WHERE `uid`=%d", intval($uid));
if(count($user)==0) {
- notice( 'User not found' . EOL);
- goaway($a->get_baseurl(true) . '/admin/users' );
+ notice('User not found'.EOL);
+ goaway('admin/users');
return ''; // NOTREACHED
}
switch($a->argv[2]){
require_once("include/Contact.php");
user_remove($uid);
- notice( sprintf(t("User '%s' deleted"), $user[0]['username']) . EOL);
+ notice(sprintf(t("User '%s' deleted"), $user[0]['username']).EOL);
}; break;
case "block":{
check_form_security_token_redirectOnErr('/admin/users', 'admin_users', 't');
q("UPDATE `user` SET `blocked`=%d WHERE `uid`=%s",
- intval( 1-$user[0]['blocked'] ),
- intval( $uid )
+ intval(1-$user[0]['blocked']),
+ intval($uid)
);
- notice( sprintf( ($user[0]['blocked']?t("User '%s' unblocked"):t("User '%s' blocked")) , $user[0]['username']) . EOL);
+ notice(sprintf(($user[0]['blocked']?t("User '%s' unblocked"):t("User '%s' blocked")) , $user[0]['username']).EOL);
}; break;
}
- goaway($a->get_baseurl(true) . '/admin/users' );
+ goaway('admin/users');
return ''; // NOTREACHED
}
$a->set_pager_itemspage(100);
}
- $users = q("SELECT `user` . * , `contact`.`name` , `contact`.`url` , `contact`.`micro`, `lastitem`.`lastitem_date`, `user`.`account_expired`
+ $users = q("SELECT `user`.* , `contact`.`name` , `contact`.`url` , `contact`.`micro`, `lastitem`.`lastitem_date`, `user`.`account_expired`
FROM
(SELECT MAX(`item`.`changed`) as `lastitem_date`, `item`.`uid`
FROM `item`
while(count($users)) {
$new_user = array();
- foreach( array_pop($users) as $k => $v) {
+ foreach(array_pop($users) as $k => $v) {
$k = str_replace('-','_',$k);
$new_user[$k] = $v;
}
'$select_all' => t('select all'),
'$h_pending' => t('User registrations waiting for confirm'),
'$h_deleted' => t('User waiting for permanent deletion'),
- '$th_pending' => array( t('Request date'), t('Name'), t('Email') ),
+ '$th_pending' => array(t('Request date'), t('Name'), t('Email')),
'$no_pending' => t('No registrations.'),
'$approve' => t('Approve'),
'$deny' => t('Deny'),
'$h_users' => t('Users'),
'$h_newuser' => t('New User'),
- '$th_deleted' => array( t('Name'), t('Email'), t('Register date'), t('Last login'), t('Last item'), t('Deleted since') ),
- '$th_users' => array( t('Name'), t('Email'), t('Register date'), t('Last login'), t('Last item'), t('Account') ),
+ '$th_deleted' => array(t('Name'), t('Email'), t('Register date'), t('Last login'), t('Last item'), t('Deleted since')),
+ '$th_users' => array(t('Name'), t('Email'), t('Register date'), t('Last login'), t('Last item'), t('Account')),
'$confirm_delete_multi' => t('Selected users will be deleted!\n\nEverything these users had posted on this site will be permanently deleted!\n\nAre you sure?'),
'$confirm_delete' => t('The user {0} will be deleted!\n\nEverything this user has posted on this site will be permanently deleted!\n\nAre you sure?'),
$o .= paginate($a);
return $o;
}
-}
+
/**
* @brief Plugins admin page
* @param App $a
* @return string
*/
-if(! function_exists('admin_page_plugins')) {
function admin_page_plugins(&$a){
/*
if($a->argc == 3) {
$plugin = $a->argv[2];
if(!is_file("addon/$plugin/$plugin.php")) {
- notice( t("Item not found.") );
+ notice(t("Item not found."));
return '';
}
if($idx !== false) {
unset($a->plugins[$idx]);
uninstall_plugin($plugin);
- info( sprintf( t("Plugin %s disabled."), $plugin ) );
+ info(sprintf(t("Plugin %s disabled."), $plugin));
} else {
$a->plugins[] = $plugin;
install_plugin($plugin);
- info( sprintf( t("Plugin %s enabled."), $plugin ) );
+ info(sprintf(t("Plugin %s enabled."), $plugin));
}
set_config("system","addon", implode(", ",$a->plugins));
- goaway($a->get_baseurl(true) . '/admin/plugins' );
+ goaway('admin/plugins');
return ''; // NOTREACHED
}
'$baseurl' => $a->get_baseurl(true),
'$function' => 'plugins',
'$plugins' => $plugins,
- '$pcount' => count($plugins),
- '$noplugshint' => sprintf( t('There are currently no plugins available on your node. You can find the official plugin repository at %1$s and might find other interesting plugins in the open plugin registry at %2$s'), 'https://github.com/friendica/friendica-addons', 'http://addons.friendi.ca'),
+ '$pcount' => count($plugins),
+ '$noplugshint' => sprintf(t('There are currently no plugins available on your node. You can find the official plugin repository at %1$s and might find other interesting plugins in the open plugin registry at %2$s'), 'https://github.com/friendica/friendica-addons', 'http://addons.friendi.ca'),
'$form_security_token' => get_form_security_token("admin_themes"),
));
}
-}
/**
* @param array $themes
* @param string $th
* @param int $result
*/
-if(! function_exists('toggle_theme')) {
function toggle_theme(&$themes,$th,&$result) {
for($x = 0; $x < count($themes); $x ++) {
if($themes[$x]['name'] === $th) {
}
}
}
-}
/**
* @param array $themes
* @param string $th
* @return int
*/
-if(! function_exists('theme_status')) {
function theme_status($themes,$th) {
for($x = 0; $x < count($themes); $x ++) {
if($themes[$x]['name'] === $th) {
}
return 0;
}
-}
+
/**
* @param array $themes
* @return string
*/
-if(! function_exists('rebuild_theme_table')) {
function rebuild_theme_table($themes) {
$o = '';
if(count($themes)) {
}
return $o;
}
-}
+
/**
* @brief Themes admin page
* @param App $a
* @return string
*/
-if(! function_exists('admin_page_themes')) {
function admin_page_themes(&$a){
$allowed_themes_str = get_config('system','allowed_themes');
if($files) {
foreach($files as $file) {
$f = basename($file);
- $is_experimental = intval(file_exists($file . '/experimental'));
- $is_supported = 1-(intval(file_exists($file . '/unsupported')));
+ $is_experimental = intval(file_exists($file.'/experimental'));
+ $is_supported = 1-(intval(file_exists($file.'/unsupported')));
$is_allowed = intval(in_array($f,$allowed_themes));
if($is_allowed OR $is_supported OR get_config("system", "show_unsupported_themes"))
}
if(! count($themes)) {
- notice( t('No themes found.'));
+ notice(t('No themes found.'));
return '';
}
if($a->argc == 3) {
$theme = $a->argv[2];
if(! is_dir("view/theme/$theme")) {
- notice( t("Item not found.") );
+ notice(t("Item not found."));
return '';
}
$s = rebuild_theme_table($themes);
if($result) {
install_theme($theme);
- info( sprintf('Theme %s enabled.',$theme));
+ info(sprintf('Theme %s enabled.',$theme));
}
else {
uninstall_theme($theme);
- info( sprintf('Theme %s disabled.',$theme));
+ info(sprintf('Theme %s disabled.',$theme));
}
set_config('system','allowed_themes',$s);
- goaway($a->get_baseurl(true) . '/admin/themes' );
+ goaway('admin/themes');
return ''; // NOTREACHED
}
$admin_form = __get_theme_admin_form($a, $theme);
}
- $screenshot = array( get_theme_screenshot($theme), t('Screenshot'));
+ $screenshot = array(get_theme_screenshot($theme), t('Screenshot'));
if(! stristr($screenshot[0],$theme))
$screenshot = null;
'$form_security_token' => get_form_security_token("admin_themes"),
));
}
-}
+
/**
* @brief Prosesses data send by Logs admin page
- *
+ *
* @param App $a
*/
-if(! function_exists('admin_page_logs_post')) {
function admin_page_logs_post(&$a) {
if(x($_POST,"page_logs")) {
check_form_security_token_redirectOnErr('/admin/logs', 'admin_logs');
set_config('system','loglevel', $loglevel);
}
- info( t("Log settings updated.") );
- goaway($a->get_baseurl(true) . '/admin/logs' );
+ info(t("Log settings updated."));
+ goaway('admin/logs');
return; // NOTREACHED
}
-}
/**
* @brief Generates admin panel subpage for configuration of the logs
* @param App $a
* @return string
*/
-if(! function_exists('admin_page_logs')) {
function admin_page_logs(&$a){
$log_choices = array(
'$form_security_token' => get_form_security_token("admin_logs"),
'$phpheader' => t("PHP logging"),
'$phphint' => t("To enable logging of PHP errors and warnings you can add the following to the .htconfig.php file of your installation. The filename set in the 'error_log' line is relative to the friendica top-level directory and must be writeable by the web server. The option '1' for 'log_errors' and 'display_errors' is to enable these options, set to '0' to disable them."),
- '$phplogcode' => "error_reporting(E_ERROR | E_WARNING | E_PARSE );\nini_set('error_log','php.out');\nini_set('log_errors','1');\nini_set('display_errors', '1');",
+ '$phplogcode' => "error_reporting(E_ERROR | E_WARNING | E_PARSE);\nini_set('error_log','php.out');\nini_set('log_errors','1');\nini_set('display_errors', '1');",
));
}
-}
/**
* @brief Generates admin panel subpage to view the Friendica log
* @param App $a
* @return string
*/
-if(! function_exists('admin_page_viewlogs')) {
function admin_page_viewlogs(&$a){
$t = get_markup_template("admin_viewlogs.tpl");
$f = get_config('system','logfile');
'$logname' => get_config('system','logfile')
));
}
-}
/**
* @brief Prosesses data send by the features admin page
- *
+ *
* @param App $a
*/
-if(! function_exists('admin_page_features_post')) {
function admin_page_features_post(&$a) {
check_form_security_token_redirectOnErr('/admin/features', 'admin_manage_features');
- logger('postvars: ' . print_r($_POST,true),LOGGER_DATA);
+ logger('postvars: '.print_r($_POST,true),LOGGER_DATA);
$arr = array();
$features = get_features(false);
foreach($features as $fname => $fdata) {
foreach(array_slice($fdata,1) as $f) {
$feature = $f[0];
- $feature_state = 'feature_' . $feature;
- $featurelock = 'featurelock_' . $feature;
+ $feature_state = 'feature_'.$feature;
+ $featurelock = 'featurelock_'.$feature;
if(x($_POST[$feature_state]))
- $val = intval($_POST['feature_' . $feature]);
+ $val = intval($_POST['feature_'.$feature]);
else
$val = 0;
set_config('feature',$feature,$val);
}
}
- goaway($a->get_baseurl(true) . '/admin/features' );
+ goaway('admin/features');
return; // NOTREACHED
}
-}
/**
* @brief Subpage for global additional feature management
- *
+ *
* This functin generates the subpage 'Manage Additional Features'
* for the admin panel. At this page the admin can set preferences
- * for the user settings of the 'additional features'. If needed this
+ * for the user settings of the 'additional features'. If needed this
* preferences can be locked through the admin.
- *
+ *
* The returned string contains the HTML code of the subpage 'Manage
* Additional Features'
- *
+ *
* @param App $a
* @return string
*/
-if(! function_exists('admin_page_features')) {
function admin_page_features(&$a) {
-
+
if((argc() > 1) && (argv(1) === 'features')) {
$arr = array();
$features = get_features(false);
$set = $f[3];
$arr[$fname][1][] = array(
array('feature_' .$f[0],$f[1],$set,$f[2],array(t('Off'),t('On'))),
- array('featurelock_' .$f[0],sprintf( t('Lock feature %s'),$f[1]),(($f[4] !== false) ? "1" : ''),'',array(t('Off'),t('On')))
+ array('featurelock_' .$f[0],sprintf(t('Lock feature %s'),$f[1]),(($f[4] !== false) ? "1" : ''),'',array(t('Off'),t('On')))
);
}
}
-
+
$tpl = get_markup_template("admin_settings_features.tpl");
$o .= replace_macros($tpl, array(
'$form_security_token' => get_form_security_token("admin_manage_features"),
return $o;
}
}
-}