Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
git-svn-id: http://piwigo.org/svn/trunk@28694 68402e56-0260-453c-a942-63ccdbb3a9ee
- Loading branch information
Showing
137 changed files
with
3,939 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
<?php | ||
defined('ADMINTOOLS_PATH') or die('Hacking attempt!'); | ||
|
||
if (isset($_POST['save_config'])) | ||
{ | ||
$conf['AdminTools'] = array( | ||
'default_open' => isset($_POST['default_open']), | ||
'closed_position' => $_POST['closed_position'], | ||
'public_quick_edit' => isset($_POST['public_quick_edit']), | ||
); | ||
|
||
conf_update_param('AdminTools', $conf['AdminTools']); | ||
$page['infos'][] = l10n('Information data registered in database'); | ||
} | ||
|
||
|
||
$template->assign(array( | ||
'AdminTools' => $conf['AdminTools'], | ||
)); | ||
|
||
|
||
$template->set_filename('admintools_content', realpath(ADMINTOOLS_PATH . 'template/admin.tpl')); | ||
$template->assign_var_from_handle('ADMIN_CONTENT', 'admintools_content'); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,310 @@ | ||
<?php | ||
defined('ADMINTOOLS_PATH') or die('Hacking attempt!'); | ||
|
||
/** | ||
* Class managing multi views system | ||
*/ | ||
class MultiView | ||
{ | ||
/** @var bool $is_admin */ | ||
private $is_admin = false; | ||
|
||
/** @var array $data */ | ||
private $data = array(); | ||
private $data_url_params = array(); | ||
|
||
/** @var array $user */ | ||
private $user = array(); | ||
|
||
/** | ||
* Constructor, load $data from session | ||
*/ | ||
function __construct() | ||
{ | ||
global $conf; | ||
|
||
$this->data = array_merge( | ||
array( | ||
'view_as' => 0, | ||
'theme' => '', | ||
'lang' => '', | ||
'show_queries' => $conf['show_queries'], | ||
'debug_l10n' => $conf['debug_l10n'], | ||
'debug_template' => $conf['debug_template'], | ||
'template_combine_files' => $conf['template_combine_files'], | ||
'no_history' => false, | ||
), | ||
pwg_get_session_var('multiview', array()) | ||
); | ||
|
||
$this->data_url_params = array_keys($this->data); | ||
$this->data_url_params = array_map(create_function('$d', 'return "ato_".$d;'), $this->data_url_params); | ||
} | ||
|
||
/** | ||
* @return bool | ||
*/ | ||
public function is_admin() | ||
{ | ||
return $this->is_admin; | ||
} | ||
|
||
/** | ||
* @return array | ||
*/ | ||
public function get_data() | ||
{ | ||
return $this->data; | ||
} | ||
|
||
/** | ||
* @return array | ||
*/ | ||
public function get_user() | ||
{ | ||
return $this->user; | ||
} | ||
|
||
/** | ||
* Save $data in session | ||
*/ | ||
private function save() | ||
{ | ||
pwg_set_session_var('multiview', $this->data); | ||
} | ||
|
||
/** | ||
* Returns the current url minus MultiView params | ||
* | ||
* @param bool $with_amp - adds ? or & at the end of the url | ||
* @return string | ||
*/ | ||
public function get_clean_url($with_amp=false) | ||
{ | ||
if (script_basename() == 'picture') | ||
{ | ||
$url = duplicate_picture_url(array(), $this->data_url_params); | ||
} | ||
else if (script_basename() == 'index') | ||
{ | ||
$url = duplicate_index_url(array(), $this->data_url_params); | ||
} | ||
else | ||
{ | ||
$url = get_query_string_diff($this->data_url_params); | ||
} | ||
|
||
if ($with_amp) | ||
{ | ||
$url.= strpos($url, '?')!==false ? '&' : '?'; | ||
} | ||
|
||
return $url; | ||
} | ||
|
||
/** | ||
* Triggered on "user_init", change current view depending of URL params. | ||
*/ | ||
public function user_init() | ||
{ | ||
global $user, $conf; | ||
|
||
$this->is_admin = is_admin(); | ||
|
||
$this->user = array( | ||
'id' => $user['id'], | ||
'username' => $user['username'], | ||
'language' => $user['language'], | ||
'theme' => $user['theme'], | ||
); | ||
|
||
// inactive on ws.php to allow AJAX admin tasks | ||
if ($this->is_admin && script_basename() != 'ws') | ||
{ | ||
if ($this->data['view_as'] == 0) | ||
{ | ||
$this->data['view_as'] = $user['id']; | ||
} | ||
if (empty($this->data['lang'])) | ||
{ | ||
$this->data['lang'] = $user['language']; | ||
} | ||
if (empty($this->data['theme'])) | ||
{ | ||
$this->data['theme'] = $user['theme']; | ||
} | ||
|
||
// view_as | ||
if (!defined('IN_ADMIN')) | ||
{ | ||
if (isset($_GET['ato_view_as'])) | ||
{ | ||
$this->data['view_as'] = (int)$_GET['ato_view_as']; | ||
} | ||
if ($this->data['view_as'] != $user['id']) | ||
{ | ||
$user = build_user($this->data['view_as'], true); | ||
if (isset($_GET['ato_view_as'])) | ||
{ | ||
$this->data['theme'] = $user['theme']; | ||
$this->data['lang'] = $user['language']; | ||
} | ||
} | ||
} | ||
|
||
// theme | ||
if (isset($_GET['ato_theme'])) | ||
{ | ||
$this->data['theme'] = $_GET['ato_theme']; | ||
} | ||
$user['theme'] = $this->data['theme']; | ||
|
||
// lang | ||
if (isset($_GET['ato_lang'])) | ||
{ | ||
$this->data['lang'] = $_GET['ato_lang']; | ||
} | ||
$user['language'] = $this->data['lang']; | ||
|
||
// show_queries | ||
if (isset($_GET['ato_show_queries'])) | ||
{ | ||
$this->data['show_queries'] = (bool)$_GET['ato_show_queries']; | ||
} | ||
$conf['show_queries'] = $this->data['show_queries']; | ||
|
||
// debug_l10n | ||
if (isset($_GET['ato_debug_l10n'])) | ||
{ | ||
$this->data['debug_l10n'] = (bool)$_GET['ato_debug_l10n']; | ||
} | ||
$conf['debug_l10n'] = $this->data['debug_l10n']; | ||
|
||
// debug_template | ||
if (isset($_GET['ato_debug_template'])) | ||
{ | ||
$this->data['debug_template'] = (bool)$_GET['ato_debug_template']; | ||
} | ||
$conf['debug_template'] = $this->data['debug_template']; | ||
|
||
// template_combine_files | ||
if (isset($_GET['ato_template_combine_files'])) | ||
{ | ||
$this->data['template_combine_files'] = (bool)$_GET['ato_template_combine_files']; | ||
} | ||
$conf['template_combine_files'] = $this->data['template_combine_files']; | ||
|
||
// no_history | ||
if (isset($_GET['ato_no_history'])) | ||
{ | ||
$this->data['no_history'] = (bool)$_GET['ato_no_history']; | ||
} | ||
if ($this->data['no_history']) | ||
{ | ||
add_event_handler('pwg_log_allowed', create_function('', 'return false;')); | ||
} | ||
|
||
$this->save(); | ||
} | ||
} | ||
|
||
/** | ||
* Returns the language of the current user if different from the current language | ||
* false otherwise | ||
*/ | ||
function get_user_language() | ||
{ | ||
if (isset($this->user['language']) && isset($this->data['lang']) | ||
&& $this->user['language'] != $this->data['lang'] | ||
) | ||
{ | ||
return $this->user['language']; | ||
} | ||
return false; | ||
} | ||
|
||
/** | ||
* Triggered on "init", in order to clean template files (not initialized on "user_init") | ||
*/ | ||
public function init() | ||
{ | ||
if ($this->is_admin) | ||
{ | ||
if (isset($_GET['ato_purge_template'])) | ||
{ | ||
global $template; | ||
$template->delete_compiled_templates(); | ||
FileCombiner::clear_combined_files(); | ||
} | ||
} | ||
} | ||
|
||
/** | ||
* Mark browser session cache for deletion | ||
*/ | ||
public static function invalidate_cache() | ||
{ | ||
global $conf; | ||
conf_update_param('multiview_invalidate_cache', true, true); | ||
} | ||
|
||
/** | ||
* Register custom API methods | ||
*/ | ||
public static function register_ws($arr) | ||
{ | ||
$service = &$arr[0]; | ||
|
||
$service->addMethod( | ||
'multiView.getData', | ||
array('MultiView', 'ws_get_data'), | ||
array(), | ||
'AdminTools private method.', | ||
null, | ||
array('admin_only' => true, 'hidden' => true) | ||
); | ||
} | ||
|
||
/** | ||
* API method | ||
* Return full list of users, themes and languages | ||
*/ | ||
public static function ws_get_data($params) | ||
{ | ||
global $conf; | ||
|
||
// get users | ||
$query = ' | ||
SELECT | ||
'.$conf['user_fields']['id'].' AS id, | ||
'.$conf['user_fields']['username'].' AS username | ||
FROM '.USERS_TABLE.' | ||
ORDER BY CONVERT('.$conf['user_fields']['username'].', CHAR) | ||
;'; | ||
$out['users'] = array_from_query($query); | ||
|
||
// get themes | ||
include_once(PHPWG_ROOT_PATH.'admin/include/themes.class.php'); | ||
$themes = new themes(); | ||
foreach (array_keys($themes->db_themes_by_id) as $theme) | ||
{ | ||
if (!empty($theme)) | ||
{ | ||
$out['themes'][] = $theme; | ||
} | ||
} | ||
|
||
// get languages | ||
foreach (get_languages() as $code => $name) | ||
{ | ||
$out['languages'][] = array( | ||
'id' => $code, | ||
'name' => $name, | ||
); | ||
} | ||
|
||
conf_delete_param('multiview_invalidate_cache'); | ||
|
||
return $out; | ||
} | ||
} |
Oops, something went wrong.