|
Tytuł: 4images i PHP-Nuke - moduł i integracja Wiadomość wysłana przez: andreoid Grudzień 20, 2006, 15:39:23 Pomysł i wykonanie: Gustave Dahl 2003
Integracja użytkowników: Ken Arnold 2004 Modyfikacja dla PHP-Nuke: Coldcut (P.A) CyberTipps.com 2004-2006 PHP-Nuke 6.5 - 7.9 Chatserv's 3.2 Patch dodany Oryginalna galeria 4images z www.4homepages.de (C) 2002-2006 4homepages.de Wstęp W związku z zapytaniem, o integrację 4images z popularnym również w Polsce, CMS'em PHP-Nuke, pragnę przedstawić instalację i integrację tych dwóch skrptów, autorswa Gustave Dahl i Ken Arnold. Demo (http://phpnuke.fotoan.com/) Pełna instalacja składa się z czterech części: 1 część - Instalacja 4images w PHP-Nuke jako moduł 2 część - Integracja użytkowników 4images w PHP-Nuke 3 część - Dalsze ustawienia galerii 4images 4 część - 4images Design (wygląd graficzny) Uwaga! Aby integracja funkcjonowała prawidłowo należy wygospodarować sobie, odpowiednią ilość czasu. Nie jest to zadanie na 2-4 godziny, pod warunkiem że pójdzie wszystko bez większych problemów, średnio zaawansowani koderzy muszą liczyć na około 10 godzin, lub więcej. Natomias jeżeli chcemy rozłożyż to na dwa, lub trzy dni, należy dokończyć daną część instalacji, a nową rozpocząć w następnym terminie. Odradzam wszystkim tym, którzy są niecierpliwi. Przed rozpoczęciem integracji należy wykonać backup (kopię zapasową) bazy danych, oraz wszystkich plików, aby w razie problemów powrócić do stanu wyjściowego. Wymagania systemowe:
Skrypty PHP-Nuke można pobrać z ... (tutaj mam problem bo są trzy polskie portale wspierające PHP-Nuke, w związku z tym że nie specjalizuę się w PHP-Nuke i nie chcę propagować tylko jednego, podam wszystkie)
Oryginalny plik można pobrać z:
4images i PHP-Nuke - moduł i integracja 1 część - Instalacja 4images w PHP-Nuke jako moduł Krok 1. W uprzednio zainstalowanym skrypcie PHP-Nuke, stworzymy nowy folder "Gallery", w katalogu modules, ścieżka /php_nuke/modules/Gallery. Do nowo stworzonego folderu załadujemy, rozpakowane pliki 4images, nadając nowe prawa dostępu (chmod) odpowiednim katalogom i plikom. Wpisując w przeglądarce internetowej http://twoja_domene.pl/modules/Gallery, przystąpimy do procesu instalacyjnego galerii 4images. Patrz instalacja 4images. (http://www.fotoan.com/component/option,com_smf/Itemid,19/topic,4.msg4#msg4) Wskazówka Prefix_ wskazany przez 4images pozostawiamy bez zmian. (do tematu prefix_ powrócimy ) Krok 2. 4images jest skryptem samodzielnym i możemy podciągnąć go nawet do kategorii CMS'ów, ale z pewnością nie określimy go jako moduł. Aby móc go zintegrować z PHP-Nuke, musimy nadać galerii 4images, nazwijmy to właściwości modułu. W tym celu musimy zmienić następujące pliki:
1. Edytuj plik page_header.php, ścieżka /php_nuke/modules/Gallery/includes/page_header.php i odszukaj (mniej więcej wiersz 33) Kod: $site_template->cache_templates($template_list); i zmień go na: Dla PHP-Nuke 6.5 – 6.9 ( Patch-Level do 2.8 ) Kod: if (!stristr($_SERVER['SCRIPT_NAME'], "modules.php")) { die ("You can't access this file directly..."); } if (!isset($mainfile)) {include("mainfile.php");} $index = 0; include("header.php"); OpenTable(); Dla PHP-Nuke 7.0 – 7.9 ( od Patch-Level 2.9 ) Kod: if ( !defined('MODULE_FILE') ) { die("You can't access this file directly..."); } define('INDEX_FILE', false); include("header.php"); OpenTable(); 2. Edytuj plik page_footer.php, ścieżka /php_nuke/modules/Gallery/includes/page_footer.php i odszukaj (mniej więcej wiersz 75) Kod: echo pack("V", $gzip_size); } i dodaj za nim Kod: CloseTable(); include 'footer.php'; ob_end_flush(); 3. Następną sprawą jest zmiana definicji otwierania plików 4images, z poziomu PHP_Nuke. W tym celu Edytuj plik index.php, ścieżka /php_nuke/modules/Gallery/index.php na samym początku odszukaj Kod: define('ROOT_PATH', './'); i zmiań go na Kod: define('ROOT_PATH', 'modules/Gallery/'); Tą czynność powtarzamy w następujących plikach, /php_nuke/modules/Gallery/... :
Po zakończeniu tej operacji, możemy już, podziwiać 4images jako wbudowany moduł w PHP-Nuke, wywołując modules.php?name=Gallery np. http://www.twoja_domena/modules.php?name=Gallery Jednakże odnośniki w galerii 4images nie funkcjonują tak ja powinny. Zmaina ścieżek w odnośnikach będzie następnym punktem naszej integracji. W tym celu przygotujcie sobie duży termos kawy (nie palić bo szkodzi) i dużą tabliczkę czekolady, dla poprawienia humoru. Wyłączcie "komórki" i zamknijcie się w pokoju. 4. Aby móc sterować galerią 4images z poziomu PHP-Nuke, musimy dokonać zmiany ścażek do plików. I tak, przyjmijmy za standard "NUKE_PATH" Edytuj w tym celu global.php, ścieżka /php_nuke/modules/Gallery/global.php, odszukaj (na początku) Kod: if (!defined('ROOT_PATH')) { die("Security violation"); } i dodaj za tym kodem Kod: define('NUKE_PATH','modules.php?name=Gallery&file='); W tym miejscu zaczyna się najgorsza praca, "złodziej czasu". Bardzo uważnie proszę podejść do tej części. Bardzo szybko możemy popełnić błąd. (Ja podchodziłem trzy razy) Zaczniemy z plikiem functions.php, ścieżka /php_nuke/modules/Gallery/includes/functions.php, odszukaj (mniej więcej wiersz 319) Kod: (ROOT_PATH."search.php?search_keywords=".urlencode($val) i zmień go na Kod: (NUKE_PATH."search&search_keywords=".urlencode($val) to znaczy, że wszystkie ścieżki w odsyłaczach PHP, które można kliknąć,musz być zmienione: z "ROOT_PATH" na "NUKE_PATH" i z ".php?" na "&" Pod żednym pozorem nie mogą być zmienione następujące definicje: include(ROOT_PATH.'global.php'); require(ROOT_PATH.'includes/sessions.php'); $user_access = get_permission(); include(ROOT_PATH.'includes/page_header.php'); oraz ścieżki do katalogu admina, np. $site_sess->url(ROT_PATH."admin/index.php?goto=" W następujących plikach odnajdziesz definicje ścieżek, podlegające powyższym zmianą:
np. Kod: $site_sess->url(ROOT_PATH."lightbox.php".$page_url) zmień na Kod: $site_sess->url(NUKE_PATH."lightbox".$page_url) tak, aby odsyłacze mogły być widoczne w PHP-Nuke.Jeżeli jakaś ścieżka, zostanie niezauważywszy pominięta, będziesz poinformowany poprzez wyświetlony błąd. Część pierwsza jest zakończona, jeżeli coś nie wyszło, "nie zwieszajcie zaraz głowy", spróbujcie ponownie. ;) [PS. Jeżeli do tego punktu jest wszystko poprawnie wykonane, proponuję wykonać backup plików :)] Tytuł: Odp: 4images i PHP-Nuke - moduł i integracja Wiadomość wysłana przez: andreoid Grudzień 21, 2006, 00:57:26 2 część -Integracja użytkowników 4images w PHP-Nuke
Po udanej instalacji 4images, jako moduł PHP-Nuke, możemy przystąpić do integracji użytkowników. Integracja użytkowników, ma na celu użycie tylko jednego meldunku [logowania], dla obydwóch skryptów. Krok 1. Następnym krokiem jest rozszerzenie bazy danych. Proszę o bardzo uważne prześledzenie tej czynności. Za pomocą myAdmin otwieramy bazę danych i odszukujeny tabelę "nuke_user". Tą właśnie tabele rozszerzymy o 6 nowych pól:
Kod: ALTER TABLE nuke_users ADD user_level2 smallint(6) DEFAULT '2' NOT NULL; ALTER TABLE nuke_users ADD user_allowemails tinyint(1) DEFAULT '1' NOT NULL; ALTER TABLE nuke_users ADD user_invisible tinyint(1) DEFAULT '0' NOT NULL; ALTER TABLE nuke_users ADD user_lastaction int(11) DEFAULT '0' NOT NULL; ALTER TABLE nuke_users ADD user_location varchar(255) DEFAULT '' NOT NULL; ALTER TABLE nuke_users ADD user_comments smallint(6) DEFAULT '0' NOT NULL; Różnica między "user_level2", a "user_level" jest taka, że do tej pory "user_level" zawierał podstawowe ustawienia uprawnień. Dla uświadomienia sprawy: level w PHPNuke gość - ustawienie 1 admin - ustawienia 2 użytkownik - ustawienia 1 level w 4images goSC - ustawienie -1 admin - ustawienia 9 użytkownik - ustawienia 2 Po dodaniu nowych pól, musimy nadać administratorowi dodatko uprawnienia dla galerii 4images. W tym celu w tabeli "nuke_user", odszukaj pseudonim administratora (prawdopodobnie własny) i w polu "user_level2", wartość 2 zmień na 9. Krok 2. Następnie musimy dokonać paru ustawie w plikach. 1. W tym celu Edytuj plik config.php w PHPNuke, odszukaj Kod: $user_prefix = "nuke"; i za nim dodaj Kod: $galprefix = "4images"; za pomocą tego kodu PHPNuke poznał prefix galerii 4images.2. Edytuj plik config.php w galerii 4images, ścieżka /php_nuke/modules/Gallery/config.php, odszukaj Kod: $table_prefix = "4images_"; i za nim dodaj Kod: $nuke_prefix = "nuke_"; za pomocą tego kodu galeria 4images poznała prefix PHPNuke3. Edytuj plik index.php ścieżka /php_nuke/modules/Your_Account/index.php, odszukaj Kod: function logout() { global $prefix, $db, $user, $cookie, $redirect; cookiedecode($user); $r_uid = $cookie[0]; $r_username = $cookie[1]; setcookie("user"); $db->sql_query("DELETE FROM ".$prefix."_session WHERE uname='$r_username'"); $db->sql_query("DELETE FROM ".$prefix."_bbsessions WHERE session_user_id='$r_uid'"); $user = ""; include("header.php"); OpenTable(); if ($redirect != "") { echo "<META HTTP-EQUIV=\"refresh\" content=\"3;URL=modules.php?name=$redirect\">"; } else { echo "<META HTTP-EQUIV=\"refresh\" content=\"3;URL=index.php\">"; } echo "<center><font class=\"option\"><b>"._YOUARELOGGEDOUT."</b></font></center>"; CloseTable(); include("footer.php"); } i zmień go na Kod: function logout() { global $prefix, $db, $user, $cookie, $redirect, $galprefix; cookiedecode($user); $r_uid = $cookie[0]; $r_username = $cookie[1]; setcookie("user"); $db->sql_query("DELETE FROM ".$prefix."_session WHERE uname='$r_username'"); $db->sql_query("DELETE FROM ".$prefix."_bbsessions WHERE session_user_id='$r_uid'"); $db->sql_query("DELETE FROM ".$galprefix."_sessions WHERE session_user_id='$r_uid'"); // end custom script $user = ""; include("header.php"); OpenTable(); if ($redirect != "") { echo "<META HTTP-EQUIV=\"refresh\" content=\"3;URL=modules.php?name=$redirect\">"; } else { echo "<META HTTP-EQUIV=\"refresh\" content=\"3;URL=index.php\">"; } echo "<center><font class=\"option\"><b>"._YOUARELOGGEDOUT."</b></font></center>"; CloseTable(); include("footer.php"); } 4. Edytuj plik sessions.php, ścieżka /php_nuke/modules/Gallery/includes/sessions.php, odszukaj Kod: user_table_fields = array( "user_id" => "user_id", "user_level" => "user_level", "user_name" => "user_name", "user_password" => "user_password", "user_email" => "user_email", "user_showemail" => "user_showemail", "user_allowemails" => "user_allowemails", "user_invisible" => "user_invisible", "user_joindate" => "user_joindate", "user_activationkey" => "user_activationkey", "user_lastaction" => "user_lastaction", "user_location" => "user_location", "user_lastvisit" => "user_lastvisit", "user_comments" => "user_comments", "user_homepage" => "user_homepage", "user_icq" => "user_icq" ); i zmień go na Kod: $user_table_fields = array( "user_id" => "user_id", "user_level" => "user_level2", "user_name" => "username", "user_password" => "user_password", "user_email" => "user_email", "user_showemail" => "user_viewemail", "user_allowemails" => "user_allowemails", "user_invisible" => "user_invisible", "user_joindate" => "user_regdate", "user_activationkey" => "user_actkey", "user_lastaction" => "user_lastaction", "user_location" => "user_location", "user_lastvisit" => "user_lastvisit", "user_comments" => "user_comments", "user_homepage" => "user_website", "user_icq" => "user_icq" ); Dalej, odszukaj Kod: $user_password = md5($user_password); i usuń go odszukaj Kod: // Get Userinfo $session_info = $site_sess->return_session_info(); $user_info = $site_sess->return_user_info(); i zmień go na Kod: // Get Userinfo // start custom script if (eregi("modules.php", $PHP_SELF)) { global $user, $cookie, $prefix, $db, $user_prefix; cookiedecode($user); $uname = $cookie[1]; if (isset($uname) && $user_info['user_id'] !== GUEST) { $sql = "SELECT user_password FROM ".USERS_TABLE." WHERE username='$uname'"; $result = $db->sql_query($sql); $row = $db->sql_fetchrow($result); $dbpass = $row[user_password]; $site_sess->login($uname, $dbpass, 0); } $session_info = $site_sess->return_session_info(); $user_info = $site_sess->return_user_info(); } else { $session_info = $site_sess->return_session_info(); $user_info = $site_sess->return_user_info(); } // end custom script 5. Edytuj plik constants.php, ścieżka /php_nuke/modules/Gallery/includes/constants.php, odszukaj Kod: define('USERS_TABLE', $table_prefix.'users'); i zmień go na Kod: define('USERS_TABLE', $nuke_prefix.'users'); 6. Edytuj plik admin_global.php, ścieżka /php_nuke/modules/Gallery/admin/admin_global.php, odszukaj Kod: $loginpassword = trim($HTTP_POST_VARS['loginpassword']); i za nim dodaj Kod: $loginpassword = md5($loginpassword); 7. Edytuj plik user_logininfo.html, ścieżka /php_nuke/modules/Gallery/templates/twoj_szablon/user_logininfo.html, odszukaj Kod: » <a href="{url_logout}">{lang_logout}</a> i usuń go. W ten oto sposób, dokonaliśmy integracji użytkowników dla obydwóch skryptów. Prawda że łatwe :) ;) Tytuł: Odp: 4images i PHP-Nuke - moduł i integracja Wiadomość wysłana przez: andreoid Grudzień 21, 2006, 00:59:56 3 część - Dalsze ustawienia galerii 4images
Po udanej integracji 4images i PHPNuke, praktycznie całość gotowa jest do pracy. Otwieramy administracyjny panel kontrolny w 4images, dokonujemy żądanych ustawień, klikamy na link powrotny do galerii i ..., no właśnie nie działa. Link powrotny z APC do strony głównej galerii nie działa. Krok 1. Aby przywrócić funkcjonalność linku Otwórz galerię w APC, Edytuj plik index.php ścieżka /php_nuke/modules/Gallery/admin/index.php odszukaj Kod: <tr> <td><img src="images/logo.gif"></td> <td align="right"><b><a href="<?php echo $site_sess->url(ROOT_PATH); ?>" target="_blank"><?php echo $lang['goto_homepage']; ?></a> </b></TD> </tr> </table> i zmień go na Kod: <tr> Uwaga<td><img src="images/logo.gif"></td> <td align="right"><b><a href="http://yourdomain.com/modules.php?name=Gallery"target="_blank"><?php echo $lang['goto_homepage']; ?></a> </b></TD> </tr> </table> <a href="http://twoja_domena.pl/modules.php?name=Gallery"target="_blank"> zmień naturalnie na własną domenę. Gotowe. Krok 2. Następna spraw , która uszła naszej uwadze jest to, że nasi użytkownicy nie mogą dodawać komentarze do zdjęć. Naturalnie i tą funkcję powinniśmy przywrócić do życia. W tym celu otwieramy plik global.php ścieżka /php_nuke/modules/Gallery/global.php odszukaj Kod: //if (getenv("QUERY_STRING")) { // $self_url .= "?".getenv("QUERY_STRING"); // $self_url = preg_replace(array("/([?|&])action=[^?|&]*/", "/([?|&])mode=[^?|&]*/", "/([?|&])phpinfo=[^?|&]*/", "/([?|&])printstats=[^?|&]*/", "/[?|&]".URL_ID."=[^?|&]*/", "/[?|&]l=[^?|&]*/", "/[&?]+$/"), array("", "", "", "", "", "", ""), $self_url); //} //else { if (preg_match("/details.php/", $self_url) && !preg_match("/[?|&]".URL_IMAGE_ID."=[^?|&]*/", $self_url) && $image_id) { $self_url .= "?".URL_IMAGE_ID."=".$image_id; } elseif (preg_match("/categories.php/", $self_url) && !preg_match("/[?|&]".URL_CAT_ID."=[^?|&]*/", $self_url)) { $self_url .= "?".URL_CAT_ID."=".$cat_id; } if (isset($show_result) && $show_result) { $self_url .= preg_match("/\?/", $self_url) ? "&" : "?"; $self_url .= "show_result=1"; } if ($page && $page != 1) { $self_url .= preg_match("/\?/", $self_url) ? "&" : "?"; $self_url .= URL_PAGE."=".$page; } //} i zmie go na Kod: if (getenv("QUERY_STRING")) { $self_url .= "?".getenv("QUERY_STRING"); $self_url = preg_replace(array("/([?|&])action=[^?|&]*/", "/([?|&])mode=[^?|&]*/", "/([?|&])phpinfo=[^?|&]*/", "/([?|&])printstats=[^?|&]*/", "/[?|&]".URL_ID."=[^?|&]*/", "/[?|&]l=[^?|&]*/", "/[&?]+$/"), array("", "", "", "", "", "", ""), $self_url); } else { if (preg_match("/details/", $self_url) && !preg_match("/[?|&]".URL_IMAGE_ID."=[^?|&]*/", $self_url) && $image_id) { $self_url .= "?".URL_IMAGE_ID."=".$image_id; } elseif (preg_match("/categories/", $self_url) && !preg_match("/[?|&]".URL_CAT_ID."=[^?|&]*/", $self_url)) { $self_url .= "?".URL_CAT_ID."=".$cat_id; } if (isset($show_result) && $show_result) { $self_url .= preg_match("/\?/", $self_url) ? "&" : "?"; $self_url .= "show_result=1"; } if ($page && $page != 1) { $self_url .= preg_match("/\?/", $self_url) ? "&" : "?"; $self_url .= URL_PAGE."=".$page; } } Gotowe. 4 część - 4images Design (wygląd graficzny) Ta część integracji jest chyba najbardziej interesująca i dlatego pozostawiam ją waszej inicjatywie. Design jest sprawą inwidualną i każdy z was ma własne pomysły. Dla przykładu dodałem szablon standardowy, który zmieniłe trochę dla potrzeb PHPNuke. Patrz demo (http://phpnuke.fotoan.com/) Dodatkowo mogę jeszcze podpowiedziec, jak wyświetlić galerię 4images bez lewego bloku menu. Edytuj plik theme.php ścieżka /php_nuke/themes/twoj_temat/theme.php odszukaj Kod: function themeheader() { dalej w tej funkcji odszukajKod: $name; np.Kod: global $banners, $sitename, $name; dalej w tej funkcji szukaj Kod: blocks(left); i blocks(left); zmień na Kod: if ($name=='Gallery') { W ten sposób lewy blok nawigacji PHPNuke, powinien zostać wyłączony podczas wyświetlania galerii 4images.} else { blocks(left); } Ważne!!! Pamiętajmy o tym, że nie możemy usunąć Copyright w 4images! Ta galeria nie posiada licencji GNU/GPL! Autorzy skryptu 4images, mają prawo zabronić używania galerii, włącznie z konsekwencją finansową, w razie nie dotrzymywania warunków licencji. PS. W forum nie będe prowadzone porady, co do funkcjonowania lub szaty graficznej PHPNuke. Tymi sprawami, zajmują się serwisy dotyczące samego skryptu PHPNuke, gdzie z pewnością uzyskacie zadawlające odpowiedzi na wasze pytania. Życzę powodzenia i udanej integracji. Tytuł: Odp: 4images i PHP-Nuke - moduł i integracja Wiadomość wysłana przez: stomka.net Wrzesień 23, 2008, 23:11:25 Cześć
witam po dłuuugiejjjjjjjjjjjjj nieobecności mam mały problem (a w zasadzie kilka) po integracji nie zauważyłem kilku problemów z działaniem galerii 1. w serwisie jest wszystko ok, natomiast w galeria nie przyjmuje polskich znaków - kiedy wpiszemy w komentarzu, tutule zdjęcia etc. polski znak i np chcemy wgrać zdjęcie lub komentarz efekt jest taki że nie ma błędów ale i nic się nie dzieje - tak jak by nie wpisac zupełnie nic 2. nie działają e-karki mimo iż pliki e-kartek były modyfikowane po otrzymaniu e-karki i kliknięciu w lik pojawia się komunikat o braku strony Kod: "Podany w zapytaniu URL /postcards.php?postcard_id=61b959d23b25c387cbf96323e17899f4 nie został odnaleziony na tym serwerze. " kiedy dokleimy w adresie konieczną a brakującą część /"modules/galeria " pojawia się komunikat Kod: "Fatal error: require() [function.require]: Failed opening required 'modules/Galeria/includes/sessions.php' (include_path='.:/home/lib:/home/conf/lib:/usr/share/fpdf:/usr/share/pear:/usr/share/php') in /home/users/tarpan/public_html/jarek/modules/Galeria/postcards.php on line 28" 3. Nie działa pobieranie pików w formacie zip, po kliknięciu pojawia się biała strona 4. Nie działają linki w module ostatnie komentarze. Po kliknięciu w jakikolwiek odnośnik modułu pojawia się błąd Kod: "Fatal error: require() [function.require]: Failed opening required 'modules/Galeria/includes/sessions.php' (include_path='.:/home/lib:/home/conf/lib:/usr/share/fpdf:/usr/share/pear:/usr/share/php') in /home/users/tarpan/public_html/jarek/modules/Galeria/details.php on line 26" z góry dzięki za pomoc ps. moje problemy umieściłem w kolejności priorytetów ;) stomka |