Installieren von weiteren MODs ins easyUCP

Forum_easyUCP_Desc

Installieren von weiteren MODs ins easyUCP

Beitragvon AmigaLink » 29. Aug 2004 12:30

Es ist sehr einfach andere MODs mit Profiländerungen ins easyUCP zu integrieren!

Bei vielen MOD Installationsanletungen, wie z.B. die des Birthday Mods, gibt es nichts zu beachten! Ausser das die Änderungen der profile_view_body.tpl nun in die easyucp_body.tpl eingefügt werden müssen! :)
(Ein gewisses Grundwissen in HTML ist hierbei von nöten.)

Bei einigen MODs, wie z.B. dem Gender MOD, muss man allerdings aufpassen das die änderungen in der usercp_register.php und/oder in der profile_add_body.tpl an er richtigen Stelle durchgefürt werden, was allerdings auch nicht schwierig ist!
Für ein besseres Verständnis, wirf mal einen Blick in die beigefügten add ons. Es ist wirklich nicht schwer!

Code: Alles auswählen
#
#----------[ OPEN ]-------------------------------------
#

\includes\usercp_register.php

#
#----------[ FIND ]-------------------------------------
#

         $sql = "UPDATE " . USERS_TABLE . "
            SET " . $username_sql . $passwd_sql . "user_email = '" . str_replace("\'", "''", $email) ."', user_icq = '" . str_replace("\'", "''", $icq) . "', user_website = '" . str_replace("\'", "''", $website) . "', user_occ = '" . str_replace("\'", "''", $occupation) . "', user_from = '" . str_replace("\'", "''", $location) . "', user_interests = '" . str_replace("\'", "''", $interests) . "', user_sig = '" . str_replace("\'", "''", $signature) . "', user_sig_bbcode_uid = '$signature_bbcode_uid', user_viewemail = $viewemail, user_aim = '" . str_replace("\'", "''", str_replace(' ', '+', $aim)) . "', user_yim = '" . str_replace("\'", "''", $yim) . "', user_msnm = '" . str_replace("\'", "''", $msn) . "', user_attachsig = $attachsig, user_allowsmile = $allowsmilies, user_allowhtml = $allowhtml, user_allowbbcode = $allowbbcode, user_allow_viewonline = $allowviewonline, user_notify = $notifyreply, user_notify_pm = $notifypm, user_popup_pm = $popup_pm, user_timezone = $user_timezone, user_dateformat = '" . str_replace("\'", "''", $user_dateformat) . "', user_lang = '" . str_replace("\'", "''", $user_lang) . "', user_style = $user_style, user_active = $user_active, user_actkey = '" . str_replace("\'", "''", $user_actkey) . "'" . $avatar_sql . "
            WHERE user_id = $user_id";
         if ( !($result = $db->sql_query($sql)) )
         {
            message_die(GENERAL_ERROR, 'Could not update users table', '', __LINE__, __FILE__, $sql);
         }

Änderungen an diesem Code müssen nun am entsprechendem Teil (beachte Kommentarzeile wie z.B // Profile Info) des folgenden Codes durchgeführt werden.
Code: Alles auswählen
#
#----------[ FIND ]-------------------------------------
#

// <!-- BEGIN easyUCP -->
         if ( isset($HTTP_GET_VARS['ucp_mode']) || isset($HTTP_POST_VARS['ucp_mode']) )
         {
            $ucp_mode = ( isset($HTTP_GET_VARS['ucp_mode']) ) ? $HTTP_GET_VARS['ucp_mode'] : $HTTP_POST_VARS['ucp_mode'];
            $ucp_mode = htmlspecialchars($ucp_mode);
         }
/*
         $sql = "UPDATE " . USERS_TABLE . "
            SET " . $username_sql . $passwd_sql . "user_email = '" . str_replace("\'", "''", $email) ."', user_icq = '" . str_replace("\'", "''", $icq) . "', user_website = '" . str_replace("\'", "''", $website) . "', user_occ = '" . str_replace("\'", "''", $occupation) . "', user_from = '" . str_replace("\'", "''", $location) . "', user_interests = '" . str_replace("\'", "''", $interests) . "', user_sig = '" . str_replace("\'", "''", $signature) . "', user_sig_bbcode_uid = '$signature_bbcode_uid', user_viewemail = $viewemail, user_aim = '" . str_replace("\'", "''", str_replace(' ', '+', $aim)) . "', user_yim = '" . str_replace("\'", "''", $yim) . "', user_msnm = '" . str_replace("\'", "''", $msn) . "', user_attachsig = $attachsig, user_allowsmile = $allowsmilies, user_allowhtml = $allowhtml, user_allowbbcode = $allowbbcode, user_allow_viewonline = $allowviewonline, user_notify = $notifyreply, user_notify_pm = $notifypm, user_popup_pm = $popup_pm, user_timezone = $user_timezone, user_dateformat = '" . str_replace("\'", "''", $user_dateformat) . "', user_lang = '" . str_replace("\'", "''", $user_lang) . "', user_style = $user_style, user_active = $user_active, user_actkey = '" . str_replace("\'", "''", $user_actkey) . "'" . $avatar_sql . "
            WHERE user_id = $user_id";
         if ( !($result = $db->sql_query($sql)) )
         {
            message_die(GENERAL_ERROR, 'Could not update users table', '', __LINE__, __FILE__, $sql);
         }
*/
// Registration Info
         if ( $ucp_mode == 'ucp_require' || $ucp_mode == '' )
         {
         $sql = "UPDATE " . USERS_TABLE . "
            SET " . $username_sql . $passwd_sql . "user_email = '" . str_replace("\'", "''", $email) ."', user_active = $user_active, user_actkey = '" . str_replace("\'", "''", $user_actkey) . "'
            WHERE user_id = $user_id";
           if ( !($result = $db->sql_query($sql)) )
           {
              message_die(GENERAL_ERROR, 'Could not update users table', '', __LINE__, __FILE__, $sql);
           }
         }
// Profile Info
         if ( $ucp_mode == 'ucp_info' || $ucp_mode == '' )
         {
         $sql = "UPDATE " . USERS_TABLE . "
            SET user_icq = '" . str_replace("\'", "''", $icq) . "', user_website = '" . str_replace("\'", "''", $website) . "', user_occ = '" . str_replace("\'", "''", $occupation) . "', user_from = '" . str_replace("\'", "''", $location) . "', user_interests = '" . str_replace("\'", "''", $interests) . "',user_aim = '" . str_replace("\'", "''", str_replace(' ', '+', $aim)) . "', user_yim = '" . str_replace("\'", "''", $yim) . "', user_msnm = '" . str_replace("\'", "''", $msn) . "'
            WHERE user_id = $user_id";
           if ( !($result = $db->sql_query($sql)) )
           {
              message_die(GENERAL_ERROR, 'Could not update users table', '', __LINE__, __FILE__, $sql);
           }
         }
// Preferences
         if ( $ucp_mode == 'ucp_prefs' || $ucp_mode == '' )
         {
         $sql = "UPDATE " . USERS_TABLE . "
            SET user_viewemail = $viewemail, user_attachsig = $attachsig, user_allowsmile = $allowsmilies, user_allowhtml = $allowhtml, user_allowbbcode = $allowbbcode, user_allow_viewonline = $allowviewonline, user_notify = $notifyreply, user_notify_pm = $notifypm, user_popup_pm = $popup_pm, user_timezone = $user_timezone, user_dateformat = '" . str_replace("\'", "''", $user_dateformat) . "', user_lang = '" . str_replace("\'", "''", $user_lang) . "', user_style = $user_style
            WHERE user_id = $user_id";
           if ( !($result = $db->sql_query($sql)) )
           {
              message_die(GENERAL_ERROR, 'Could not update users table', '', __LINE__, __FILE__, $sql);
           }
         }
// Avatar
         if ( $ucp_mode == 'ucp_avatar' && $avatar_sql != '' || $ucp_mode == '' && $avatar_sql != '' )
         {
         $sql = "UPDATE " . USERS_TABLE . "
            SET " . substr($avatar_sql,2) . "
            WHERE user_id = $user_id";
           if ( !($result = $db->sql_query($sql)) )
           {
              message_die(GENERAL_ERROR, 'Could not update users table', '', __LINE__, __FILE__, $sql);
           }
         }
// Signature
         if ( $ucp_mode == 'ucp_signature' || $ucp_mode == '' )
         {
         $sql = "UPDATE " . USERS_TABLE . "
            SET user_sig_bbcode_uid = '$signature_bbcode_uid', user_sig = '" . str_replace("\'", "''", $signature) . "'
            WHERE user_id = $user_id";
           if ( !($result = $db->sql_query($sql)) )
           {
              message_die(GENERAL_ERROR, 'Could not update users table', '', __LINE__, __FILE__, $sql);
           }
         }
// <!-- END easyUCP -->


Und bei Änderungen in der profile_add_body.tpl muss darauf geachtet werden, das sie innerhalb der UCP_Switches z.B.
Code: Alles auswählen
<!-- BEGIN switch_ucp_info -->
und
Code: Alles auswählen
<!-- END switch_ucp_info -->
erfolgen.

Mods die ebenfalls solche Switches in die profile_add_body.tpl einfügen (meistens solche Mods, bei denen man die neue Funktion im ACP ein und ausschalten kann) müssen mit 90%iger Sicherheit angepasst werden.
Und zwar muss bei solchen Mods die definierung des Switches an die verschachtelung des easyUCP angepasst werden. Auch hier gild: Schau zum besserem Verständnis mal in die vorhandenen Addons!
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon AmigaLink » 7. Feb 2007 09:25

Nochmal zu den Switches.
Wie schon erwähnt müssen MODs die mit Switches Arbeiten, oftmals an den easyUCP angepasst werden. Das liegt daran das verschachtelte Switches nur funktionieren, wenn der Switch weis in welchem (anderem) Switch er eingesetzt wird. Man muss sich also bereits beim definieren des Switches (in der usercp_register.php) Gedanken machen wie und wo der Switch in der profile_add_body.tpl eingesetzt wird.

Hier mal ein Beispiel anhand des UPI2DB:
Die tpl sieht etwa so aus:
Code: Alles auswählen
   <!-- BEGIN switch_ucp_prefs -->
<!-- BEGIN switch_upi2db_is_on -->
   <tr>
     <th class="thSides" colspan="2" height="25" valign="middle">{L_UPI2DB_SYSTEM}</th>
   </tr>
<!-- END switch_upi2db_is_on -->
<!-- BEGIN switch_upi2db_user_select -->
   <tr>
     <td class="row1"><span class="gen">{L_UPI2DB_WHICH_SYSTEM}:</span><br />
      <span class="gensmall">{L_UPI2DB_WHICH_SYSTEM_EXPLAIN}</span></td>
     <td class="row2">
     <input type="radio" name="upi2db_which_system" value="0" {COOKIE_SYSTEM} />
      <span class="gen">{L_COOKIE_SYSTEM}</span>&nbsp;&nbsp;
 
      <input type="radio" name="upi2db_which_system" value="1" {UPI2DB_SYSTEM} />
      <span class="gen">{L_UPI2DB_SYSTEM}</span>
      </td>
   </tr>
<!-- END switch_upi2db_user_select -->
<!-- BEGIN switch_upi2db_words -->
   <tr>
     <td class="row1"><span class="gen">{L_UPI2DB_NEW_WORD}:</span><br />
      <span class="gensmall">{L_UPI2DB_NEW_WORD_EXPLAIN}</span></td>
     <td class="row2">
      <input type="radio" name="upi2db_new_word" value="1" {UPI2DB_NEW_WORD_YES} />
      <span class="gen">{L_YES}</span>&nbsp;&nbsp;
      <input type="radio" name="upi2db_new_word" value="0" {UPI2DB_NEW_WORD_NO} />
      <span class="gen">{L_NO}</span></td>
   </tr>
   <tr>
     <td class="row1"><span class="gen">{L_UPI2DB_EDIT_WORD}:</span><br />
      <span class="gensmall">{L_UPI2DB_EDIT_WORD_EXPLAIN}</span></td>
     <td class="row2">
      <input type="radio" name="upi2db_edit_word" value="1" {UPI2DB_EDIT_WORD_YES} />
      <span class="gen">{L_YES}</span>&nbsp;&nbsp;
      <input type="radio" name="upi2db_edit_word" value="0" {UPI2DB_EDIT_WORD_NO} />
      <span class="gen">{L_NO}</span></td>
   </tr>
   <tr>
     <td class="row1"><span class="gen">{L_UPI2DB_UNREAD_COLOR}:</span></td>
     <td class="row2">
      <input type="radio" name="upi2db_unread_color" value="1" {UPI2DB_UNREAD_COLOR_YES} />
      <span class="gen">{L_YES}</span>&nbsp;&nbsp;
      <input type="radio" name="upi2db_unread_color" value="0" {UPI2DB_UNREAD_COLOR_NO} />
      <span class="gen">{L_NO}</span></td>
   </tr>
<!-- END switch_upi2db_words -->
   <!-- END switch_ucp_prefs -->

Der Original Code des UPI2DB geht so:
Code: Alles auswählen
//<!-- BEGIN Unread Post Information to Database Mod -->       
   if(!$userdata['user_upi2db_disable'])
   {
      if(check_group_auth($userdata) == TRUE)
      {
         if ($board_config['upi2db_on'] != '0')
         {
            $template->assign_block_vars('switch_upi2db_is_on', array());
            $template->assign_block_vars('switch_upi2db_words', array());
         }

         if ($board_config['upi2db_on'] == '2')
         {
            $template->assign_block_vars('switch_upi2db_user_select', array());
         }   
      }
   }
//<!-- END Unread Post Information to Database Mod -->

Das kann nicht Funktionieren, weil die Switches des UPI2DB innerhalb eines easyUCP Switches (switch_ucp_prefs) eingesetzt werden!
Deswegen lassen wird diesen UPI2DB Code weg. Suchen die Definition von switch_ucp_prefs und fügen dort einen leicht Modifizierten UPI2DB Code ein.
Und zwar so:
Code: Alles auswählen
   if ( $ucp_mode == 'ucp_prefs' || $ucp_mode == '' )
   {
      $template->assign_block_vars('switch_ucp_prefs', array() );
//<!-- BEGIN Unread Post Information to Database Mod -->       
      if(!$userdata['user_upi2db_disable'])
      {
         if(check_group_auth($userdata) == TRUE)
         {
            if ($board_config['upi2db_on'] != '0')
            {
               $template->assign_block_vars('switch_ucp_prefs.switch_upi2db_is_on', array());
               $template->assign_block_vars('switch_ucp_prefs.switch_upi2db_words', array());
            }

            if ($board_config['upi2db_on'] == '2')
            {
               $template->assign_block_vars('switch_ucp_prefs.switch_upi2db_user_select', array());
            }   
         }
      }
//<!-- END Unread Post Information to Database Mod -->
   }


Leider lassen sich für Anpassungen dieser art keine Generell gültige Anleitung schreiben. Aber ich denke mal das es so einigermaßen verständlich ausgedrückt ist.
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW


Zurück zu easy UCP



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste

cron