From acfbcac7bb1f7a50463aa187ad15bf8fcb1f725d Mon Sep 17 00:00:00 2001 From: z0rglub Date: Thu, 23 Sep 2004 23:41:23 +0000 Subject: - (re)added feature : in remote site management, if a listing.xml file is found at PhpWebGallery root directory, it can be used to update a remote site - size and maxlength of prefix_thumbnail in admin/configuration are 10 git-svn-id: http://piwigo.org/svn/trunk@534 68402e56-0260-453c-a942-63ccdbb3a9ee --- admin/remote_site.php | 192 +++++++++++++++++++++++-------- language/en_UK.iso-8859-1/admin.lang.php | 9 +- template/default/admin/configuration.tpl | 2 +- template/default/admin/remote_site.tpl | 10 ++ template/default/default.css | 24 ++++ 5 files changed, 184 insertions(+), 53 deletions(-) diff --git a/admin/remote_site.php b/admin/remote_site.php index 5a5b2de91..6358a210d 100644 --- a/admin/remote_site.php +++ b/admin/remote_site.php @@ -158,6 +158,56 @@ INSERT INTO '.$table_name.' mysql_query($query); } +/** + * read $listing_file and update a remote site according to its id + * + * @param string listing_file + * @param int site_id + * @return void + */ +function update_remote_site($listing_file, $site_id) +{ + global $lang, $counts, $template, $removes, $errors; + + if (@fopen($listing_file, 'r')) + { + $counts = array( + 'new_elements' => 0, + 'new_categories' => 0, + 'del_elements' => 0, + 'del_categories' => 0 + ); + $removes = array(); + + $xml_content = getXmlCode($listing_file); + insert_remote_category($xml_content, $site_id, 'NULL', 0); + update_category(); + + $template->assign_block_vars( + 'update', + array( + 'NB_NEW_CATEGORIES'=>$counts['new_categories'], + 'NB_DEL_CATEGORIES'=>$counts['del_categories'], + 'NB_NEW_ELEMENTS'=>$counts['new_elements'], + 'NB_DEL_ELEMENTS'=>$counts['del_elements'] + )); + + if (count($removes) > 0) + { + $template->assign_block_vars('update.removes', array()); + } + foreach ($removes as $remove) + { + $template->assign_block_vars('update.removes.remote_remove', + array('NAME'=>$remove)); + } + } + else + { + array_push($errors, $lang['remote_site_listing_not_found']); + } +} + /** * searchs the "dir" node of the xml_dir given and insert the contained * categories if the are not in the database yet. The function also deletes @@ -318,14 +368,21 @@ SELECT id,file WHERE storage_category_id = '.$category_id.' ;'; $result = mysql_query($query); + $to_delete = array(); while ($row = mysql_fetch_array($result)) { if (!in_array($row['file'], $xml_files)) { - array_push($removes, $row['file']); - delete_element($row['id']); + // local_dir is cached + if (!isset($local_dir)) + { + $local_dir = get_local_dir($category_id); + } + array_push($removes, $local_dir.$row['file']); + array_push($to_delete, $row['id']); } } + delete_elements($to_delete); $database_elements = array(); $query = ' @@ -442,6 +499,9 @@ $template->assign_vars( 'L_NB_DEL_CATEGORIES'=>$lang['update_nb_del_categories'], 'L_REMOTE_SITE_REMOVED_TITLE'=>$lang['remote_site_removed_title'], 'L_REMOTE_SITE_REMOVED'=>$lang['remote_site_removed'], + 'L_REMOTE_SITE_LOCAL_FOUND'=>$lang['remote_site_local_found'], + 'L_REMOTE_SITE_LOCAL_NEW'=>$lang['remote_site_local_new'], + 'L_REMOTE_SITE_LOCAL_UPDATE'=>$lang['remote_site_local_update'], 'F_ACTION'=>add_session_id(PHPWG_ROOT_PATH.'admin.php?page=remote_site') ) @@ -523,85 +583,119 @@ if (isset($_GET['site']) and is_numeric($_GET['site'])) if (isset($_GET['action'])) { - $query = ' + if (isset($page['site'])) + { + $query = ' SELECT galleries_url FROM '.SITES_TABLE.' WHERE id = '.$page['site'].' ;'; - $row = mysql_fetch_array(mysql_query($query)); - $clf = $row['galleries_url'].'create_listing_file.php'; - + list($galleries_url) = mysql_fetch_array(mysql_query($query)); + } + switch($_GET['action']) { case 'delete' : { delete_site($page['site']); - + $template->assign_block_vars( 'confirmation', array( - 'CONTENT'=>$row['galleries_url'].' '.$lang['remote_site_deleted'] + 'CONTENT'=>$galleries_url.' '.$lang['remote_site_deleted'] )); break; } case 'generate' : { - $title = $row['galleries_url'].' : '.$lang['remote_site_generate']; + $title = $galleries_url.' : '.$lang['remote_site_generate']; $template->assign_vars(array('REMOTE_SITE_TITLE'=>$title)); - remote_output($clf.'?action=generate'); + remote_output($galleries_url.'create_listing_file.php?action=generate'); break; } case 'update' : { - $title = $row['galleries_url'].' : '.$lang['remote_site_update']; + $title = $galleries_url.' : '.$lang['remote_site_update']; $template->assign_vars(array('REMOTE_SITE_TITLE'=>$title)); - - if (@fopen($row['galleries_url'].'listing.xml', 'r')) + update_remote_site($galleries_url.'listing.xml', $page['site']); + break; + } + case 'clean' : + { + $title = $galleries_url.' : '.$lang['remote_site_clean']; + $template->assign_vars(array('REMOTE_SITE_TITLE'=>$title)); + remote_output($galleries_url.'create_listing_file.php?action=clean'); + break; + } + case 'local_update' : + { + $local_listing = PHPWG_ROOT_PATH.'listing.xml'; + $xml_content = getXmlCode($local_listing); + $url = getAttribute(getChild($xml_content, 'informations'), 'url'); + + // is the site already existing ? + $query = ' +SELECT id + FROM '.SITES_TABLE.' + WHERE galleries_url = \''.addslashes($url).'\' +;'; + $result = mysql_query($query); + if (mysql_num_rows($result) == 0) { - $counts = array( - 'new_elements' => 0, - 'new_categories' => 0, - 'del_elements' => 0, - 'del_categories' => 0 - ); - $removes = array(); - - $xml_content = getXmlCode($row['galleries_url'].'listing.xml'); - insert_remote_category($xml_content, $page{'site'}, 'NULL', 0); - update_category(); - - $template->assign_block_vars( - 'update', - array( - 'NB_NEW_CATEGORIES'=>$counts['new_categories'], - 'NB_DEL_CATEGORIES'=>$counts['del_categories'], - 'NB_NEW_ELEMENTS'=>$counts['new_elements'], - 'NB_DEL_ELEMENTS'=>$counts['del_elements'] - )); - - if (count($removes) > 0) - { - $template->assign_block_vars('update.removes', array()); - } - foreach ($removes as $remove) - { - $template->assign_block_vars('update.removes.remote_remove', - array('NAME'=>$remove)); - } + // we have to register this site in the database + $query = ' +INSERT INTO '.SITES_TABLE.' + (galleries_url) + VALUES + (\''.$url.'\') +;'; + mysql_query($query); + $site_id = mysql_insert_id(); } else { - array_push($errors, $lang['remote_site_listing_not_found']); + // we get the already registered id + $row = mysql_fetch_array($result); + $site_id = $row['id']; } + + $title = $url.' : '.$lang['remote_site_local_update']; + $template->assign_vars(array('REMOTE_SITE_TITLE'=>$title)); + update_remote_site($local_listing, $site_id); break; } - case 'clean' : + } +} +else +{ + // we search a "local" listing.xml file + $local_listing = PHPWG_ROOT_PATH.'listing.xml'; + if (is_file($local_listing)) + { + $xml_content = getXmlCode($local_listing); + $url = getAttribute(getChild($xml_content, 'informations'), 'url'); + + $base_url = PHPWG_ROOT_PATH.'admin.php?page=remote_site&action='; + + $template->assign_block_vars( + 'local', + array( + 'URL' => $url, + 'U_UPDATE' => add_session_id($base_url.'local_update') + ) + ); + + // is the site already existing ? + $query = ' +SELECT COUNT(*) + FROM '.SITES_TABLE.' + WHERE galleries_url = \''.addslashes($url).'\' +;'; + list($count) = mysql_fetch_array(mysql_query($query)); + if ($count == 0) { - $title = $row['galleries_url'].' : '.$lang['remote_site_clean']; - $template->assign_vars(array('REMOTE_SITE_TITLE'=>$title)); - remote_output($clf.'?action=clean'); - break; + $template->assign_block_vars('local.new_site', array()); } } } diff --git a/language/en_UK.iso-8859-1/admin.lang.php b/language/en_UK.iso-8859-1/admin.lang.php index e78743206..d127cf299 100644 --- a/language/en_UK.iso-8859-1/admin.lang.php +++ b/language/en_UK.iso-8859-1/admin.lang.php @@ -1,9 +1,9 @@ | -// | branch : BSF (Best So Far) | +// | branch : BSF (Best So Far) | // +-----------------------------------------------------------------------+ // | file : $RCSfile$ // | last update : $Date$ @@ -66,11 +66,14 @@ $lang['remote_site_delete'] = 'delete'; $lang['remote_site_delete_hint'] = 'delete this site and all its attached elements'; $lang['remote_site_file_not_found'] = 'file create_listing_file.php on remote site was not found'; $lang['remote_site_error'] = 'an error happened'; -$lang['remote_site_listing_not_found'] = 'remote listing file was not found'; +$lang['remote_site_listing_not_found'] = 'listing.xml file was not found'; $lang['remote_site_removed'] = 'was removed on remote site'; $lang['remote_site_removed_title'] = 'Removed elements'; $lang['remote_site_created'] = 'created'; $lang['remote_site_deleted'] = 'deleted'; +$lang['remote_site_local_found'] = 'A local listing.xml file has been found for '; +$lang['remote_site_local_new'] = '(new site)'; +$lang['remote_site_local_update'] = 'read local listing.xml and update'; // Categorie words $lang['cat_up'] = 'Move up'; diff --git a/template/default/admin/configuration.tpl b/template/default/admin/configuration.tpl index 98a5c2171..da0174ab7 100644 --- a/template/default/admin/configuration.tpl +++ b/template/default/admin/configuration.tpl @@ -25,7 +25,7 @@ {general.L_CONF_TN_PREFIX} :
{general.L_CONF_TN_PREFIX_INFO} - + {general.L_CONF_ACCESS} :
{general.L_CONF_ACCESS_INFO} diff --git a/template/default/admin/remote_site.tpl b/template/default/admin/remote_site.tpl index 4eb511fa4..397c8c144 100644 --- a/template/default/admin/remote_site.tpl +++ b/template/default/admin/remote_site.tpl @@ -42,6 +42,16 @@ + +
+ {L_REMOTE_SITE_LOCAL_FOUND} {local.URL} + + {L_REMOTE_SITE_LOCAL_NEW} + + [{L_REMOTE_SITE_LOCAL_UPDATE}] +
+ +
{L_REMOTE_SITE_CREATE} diff --git a/template/default/default.css b/template/default/default.css index 7e2d58e95..d17a4645b 100644 --- a/template/default/default.css +++ b/template/default/default.css @@ -412,3 +412,27 @@ span.update_error_element, span.update_category_error { .update_summary_del { color:#ffe1e1; } + +div.remoteOutput, div.remoteLocal { + background-color:#444444; + border:1px solid black; + margin:10px; + text-align:left; + padding:5px; +} + +li.remoteInfo { + color:gray; +} + +li.remoteWarning { + color:#ffe1e1; +} + +li.remoteError { + color:orange; +} + +div.remoteLocal { + text-align:center; +} \ No newline at end of file -- cgit v1.2.3