From 77fd1f51a3c5f5a52f72ef8a299fe368228e2285 Mon Sep 17 00:00:00 2001 From: vdigital Date: Fri, 23 May 2008 21:05:41 +0000 Subject: git-svn-id: http://piwigo.org/svn/trunk@2357 68402e56-0260-453c-a942-63ccdbb3a9ee --- BSF/admin/site_manager.php | 307 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 307 insertions(+) create mode 100644 BSF/admin/site_manager.php (limited to 'BSF/admin/site_manager.php') diff --git a/BSF/admin/site_manager.php b/BSF/admin/site_manager.php new file mode 100644 index 000000000..def9fe579 --- /dev/null +++ b/BSF/admin/site_manager.php @@ -0,0 +1,307 @@ +append( + 'remote_output', + array( + 'CLASS' => 'remote'.ucfirst(strtolower($matches[1])), + 'CONTENT' => $line + ) + ); + } + } + } + else + { + array_push($page['errors'], l10n('site_err_remote_file_not_found')); + } +} + + +// +-----------------------------------------------------------------------+ +// | template init | +// +-----------------------------------------------------------------------+ +$template->set_filenames(array('site_manager'=>'admin/site_manager.tpl')); + +// +-----------------------------------------------------------------------+ +// | new site creation form | +// +-----------------------------------------------------------------------+ +if (isset($_POST['submit']) and !empty($_POST['galleries_url']) + and !is_adviser() ) +{ + $is_remote = url_is_remote( $_POST['galleries_url'] ); + $url = preg_replace('/[\/]*$/', '', $_POST['galleries_url']); + $url.= '/'; + if (! $is_remote) + { + if ( ! (strpos($url, '.') === 0 ) ) + { + $url = './' . $url; + } + } + + // site must not exists + $query = ' +SELECT COUNT(id) AS count + FROM '.SITES_TABLE.' + WHERE galleries_url = \''.$url.'\' +;'; + $row = mysql_fetch_array(pwg_query($query)); + if ($row['count'] > 0) + { + array_push($page['errors'], + l10n('site_already_exists').' ['.$url.']'); + } + if (count($page['errors']) == 0) + { + if ($is_remote) + { + if ( ! isset($_POST['no_check']) ) + { + $clf_url = $url.'create_listing_file.php'; + $clf_url.= '?action=test'; + $clf_url.= '&version='.PHPWG_VERSION; + if ( ($lines = @file($clf_url)) !== false) + { + $first_line = strip_tags($lines[0]); + if (!preg_match('/^PWG-INFO-2:/', $first_line)) + { + array_push($page['errors'], + l10n('site_err').' : '.$first_line); + } + } + else + { + array_push($page['errors'], l10n('site_err_remote_file_not_found') ); + } + } + } + else + { // local directory + if ( ! file_exists($url) ) + { + array_push($page['errors'], + l10n('Directory does not exist').' ['.$url.']'); + } + } + } + + if (count($page['errors']) == 0) + { + $query = ' +INSERT INTO '.SITES_TABLE.' + (galleries_url) + VALUES + (\''.$url.'\') +;'; + pwg_query($query); + array_push($page['infos'], + $url.' '.l10n('site_created')); + } +} + +// +-----------------------------------------------------------------------+ +// | actions on site | +// +-----------------------------------------------------------------------+ +if (isset($_GET['site']) and is_numeric($_GET['site'])) +{ + $page['site'] = $_GET['site']; +} +if (isset($_GET['action']) and isset($page['site']) and !is_adviser()) +{ + $query = ' +SELECT galleries_url + FROM '.SITES_TABLE.' + WHERE id = '.$page['site'].' +;'; + list($galleries_url) = mysql_fetch_array(pwg_query($query)); + switch($_GET['action']) + { + case 'generate' : + { + $title = $galleries_url.' : '.l10n('remote_site_generate'); + remote_output($galleries_url.'create_listing_file.php?action=generate'); + break; + } + case 'test' : + { + $title = $galleries_url.' : '.l10n('remote_site_test'); + remote_output($galleries_url.'create_listing_file.php?action=test&version='.PHPWG_VERSION); + break; + } + case 'clean' : + { + $title = $galleries_url.' : '.l10n('remote_site_clean'); + remote_output($galleries_url.'create_listing_file.php?action=clean'); + break; + } + case 'delete' : + { + delete_site($page['site']); + array_push($page['infos'], + $galleries_url.' '.l10n('site_deleted')); + break; + } + } +} + +$template->assign( array( + 'U_HELP' => get_root_url().'popuphelp.php?page=site_manager', + 'F_ACTION' => get_root_url().'admin.php' + .get_query_string_diff( array('action','site') ) + ) ); + +// +-----------------------------------------------------------------------+ +// | remote sites list | +// +-----------------------------------------------------------------------+ + +if ( is_file(PHPWG_ROOT_PATH.'listing.xml') ) +{ + $xml_content = getXmlCode(PHPWG_ROOT_PATH.'listing.xml'); + $local_listing_site_url = getAttribute( + getChild($xml_content, 'informations'), + 'url' + ); + if ( !url_is_remote($local_listing_site_url) ) + { + $local_listing_site_url = null; + } +} + +$query = ' +SELECT c.site_id, COUNT(DISTINCT c.id) AS nb_categories, COUNT(i.id) AS nb_images + FROM '.CATEGORIES_TABLE.' AS c LEFT JOIN '.IMAGES_TABLE.' AS i + ON c.id=i.storage_category_id + WHERE c.site_id IS NOT NULL + GROUP BY c.site_id +;'; +$sites_detail = hash_from_query($query, 'site_id'); + +$query = ' +SELECT * + FROM '.SITES_TABLE.' +;'; +$result = pwg_query($query); + +while ($row = mysql_fetch_array($result)) +{ + $is_remote = url_is_remote($row['galleries_url']); + $base_url = PHPWG_ROOT_PATH.'admin.php'; + $base_url.= '?page=site_manager'; + $base_url.= '&site='.$row['id']; + $base_url.= '&action='; + + $update_url = PHPWG_ROOT_PATH.'admin.php'; + $update_url.= '?page=site_update'; + $update_url.= '&site='.$row['id']; + + $tpl_var = + array( + 'NAME' => $row['galleries_url'], + 'TYPE' => l10n( $is_remote ? 'site_remote' : 'site_local' ), + 'CATEGORIES' => (int)@$sites_detail[$row['id']]['nb_categories'], + 'IMAGES' => (int)@$sites_detail[$row['id']]['nb_images'], + 'U_SYNCHRONIZE' => $update_url + ); + + if ($is_remote) + { + $tpl_var['remote'] = + array( + 'U_TEST' => $base_url.'test', + 'U_GENERATE' => $row['galleries_url'].'create_listing_file.php?action=generate', + 'U_CLEAN' => $base_url.'clean', + ); + } + + if ($row['id'] != 1) + { + $tpl_var['U_DELETE'] = $base_url.'delete'; + } + + $plugin_links = array(); + //$plugin_links is array of array composed of U_HREF, U_HINT & U_CAPTION + $plugin_links = + trigger_event('get_admins_site_links', + $plugin_links, $row['id'], $is_remote); + $tpl_var['plugin_links'] = $plugin_links; + + $template->append('sites', $tpl_var); + + if ( isset($local_listing_site_url) and + $row['galleries_url']==$local_listing_site_url ) + { + $local_listing_site_id = $row['id']; + $template->assign( 'local_listing', + array( + 'URL' => $local_listing_site_url, + 'U_SYNCHRONIZE' => $update_url.'&local_listing=1' + ) + ); + } +} + +if ( isset($local_listing_site_url) and !isset($local_listing_site_id) ) +{ + $template->assign( 'local_listing', + array( + 'URL' => $local_listing_site_url, + 'CREATE' => true + ) + ); +} + + +$template->assign_var_from_handle('ADMIN_CONTENT', 'site_manager'); +?> -- cgit v1.2.3