home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 April / PCWorld_2005-04_cd.bin / akce / web / phpnuke / PHP-Nuke-7.5.exe / Addons-Modules.txt next >
Text File  |  2004-07-18  |  10KB  |  254 lines

  1. PHP-Nuke Addons & Modules System
  2. ================================
  3.  
  4.  
  5. Since PHP-Nuke 5.0 you can add new modules, addons or plugins simply
  6. copying the addons files into a directory. With this feature, PHP-Nuke
  7. gains modularity and you, the webmaster, the choice to install and/or
  8. unistall the modules you want with an easy step.
  9.  
  10. This document has two main parts, one for webmasters/users and other
  11. for Addons developers.
  12.  
  13. Please read it carefully and remember that this system, as the whole
  14. PHP-Nuke comes without any warranty and all you do from here is under
  15. your own responsability and risk. Always remember to backup your
  16. database and all your files before doing anything.
  17.  
  18.  
  19. ====================================
  20. 1.- Information for Webmasters/Users
  21. ====================================
  22.  
  23. We start on the "modules" directory where you can add or delete all the
  24. modules, addons or plugins you want.
  25.  
  26. The directories names under /modules/ dir have a rule to work properly:
  27.  
  28. a) All spaces are filled with "_", so if you have a module called for example
  29.    Web Links, your directory name need to be Web_Links
  30.    
  31. Modules links will be automaticaly added to the Main Menu block at the end
  32. of your entries. The selected list method, instead of the use of LI html tag,
  33. is:
  34.  
  35. <strong>· </strong>Module Name<br>
  36.  
  37. This is because we want to provide HTML 4.0 Transitional compatibility, if you
  38. want to change this, just edit mainfile.php file on the function mainblock(), but
  39. try to stay under the HTML standards and eliminate any <LI> tag from all your
  40. blocks, why? because on the new standard you need to use <UL> and </UL> before
  41. and after the listed items, if you do this the box will not looks good on the
  42. site.
  43.  
  44. If you want to maintain or test a new Addons but don't want to show a link to your
  45. users, just login as admin and click on your addon in the Modules block. When you
  46. copy a new addon to the /modules/ directory, it will be added automaticaly into your
  47. database with "Inactive" status. Inactive Modules can be viewed and accesed only by
  48. Administrators.
  49. If you have Inactive the Modules block but you want to offer a module service, just
  50. Active the module/addon (not the block) from administration page and provide a link like:
  51.  
  52. http://www.yoursite.com/modules.php?mop=modload&name=Addon_Name&file=index
  53.  
  54. where &name=Addon_Name is the directory name under modules directory
  55. and &file=index is the name of the main .php file (without the extension) of
  56. your module. The rest of the URL is required.
  57.  
  58. To simplify this process, you can just provide a link with "name" variable, like:
  59.  
  60. http://www.yoursite.com/modules.php?name=Addon_Name
  61.  
  62. you can do this "only" if your file name is "index.php" and no functions inside
  63. need to be called.
  64.  
  65. When install a new addon please be sure that the blank spaces on the directory's
  66. name are replaced with "_", for Example: Web_Links. The directory name is
  67. case sensitive, this mean that isn't the same web_links than Web_Links. The "_"
  68. character is replaced automaticaly by a blank space when the addon link appears
  69. in the Modules block. So "Web_Links" module directory name will be changed to
  70. "Web Links".
  71.  
  72. Also, please read the addon instructions that will be included by the addon author
  73. for installation purpouses.
  74.  
  75.  
  76. =====================================
  77. 2.- Information for Addons Developers
  78. =====================================
  79.  
  80.  
  81. Making a new addon with this system is pretty easy. Developer just need to know
  82. a few rules:
  83.  
  84. a) On each addon file please remember to add the following code as the first
  85.    lines:
  86.    
  87.     if (!eregi("modules.php", $_SERVER['PHP_SELF'])) {
  88.     die ("You can't access this file directly...");
  89.     }
  90.  
  91.     This is to avoid direct access to the addons files, so users need to click on
  92.     your link, with this we assure to include the theme layout for each page.
  93.  
  94. b) The best way is to follow the translation system by defines. To do this just
  95.    create a "language" directory inside your addon main directory, and on each
  96.    module file include this code:
  97.    
  98.    require_once("mainfile.php");
  99.    $module_name = basename(dirname(__FILE__));
  100.    get_lang($module_name);  
  101.  
  102.    This will include (if exist) the language file according to the user's cookie.
  103.    You can take a look at any included module to see an example for this feature.
  104.     
  105. c) When declare a switch() do not use the variable $mop to do it. Use another
  106.    variable name like $op, for example.
  107.    
  108. d) On the Addon directory name do not use blank spaces, instead use the character
  109.    "_". For example if you want to create an addon called "The Web Ring", the
  110.    directory name will be "The_Web_Ring".
  111.    
  112. e) Any link on the addons files need to have the following syntax:
  113.  
  114.    http://www.yoursite.com/modules.php?mop=modload&name=The_Web_Ring&file=index
  115.    
  116.    where "modules.php?mop=modload" is required as is, "&name=The_Web_Ring" is the
  117.    directory name of the addon and "&file=index" declares the file name to access,
  118.    without the .php extension. The extension will be added automaticaly.
  119.    
  120. Easy, no? Ok, if you need to link to a specified function to any file of your
  121. addon, to the above URL just add:
  122.  
  123.     &switchname=name
  124.     
  125. So, if you declared a switch like:
  126.     
  127.     switch($func) {
  128.     case "func-one":
  129.     funct-one();
  130.     break;    
  131.     }
  132.     
  133. you will call it:
  134.     
  135.     http://www.yoursite.com/modules.php?mop=modload&name=The_Web_Ring&file=index&func=func-one
  136.     
  137. if your function need to receive variables values, your switch will look like:
  138.     
  139.     switch($func) {
  140.     case "func-one":
  141.     funct-one($xid, $xname);
  142.     break;    
  143.     }
  144.     
  145. your link need to be:
  146.     
  147.     http://www.yoursite.com/modules.php?name=The_Web_Ring&file=index&func=func-one&xid=$xid&xname=$xname
  148.  
  149.     If you need to use forms in your addon, use this method:
  150.     
  151.     <form action="modules.php?name=Addon_Sample&file=index&func=function" method="post">
  152.     ...
  153.     </form>
  154.     
  155. but remember to not use reserved variables names like "name" and/or "file" and use a switch
  156. variable different of "$mop".
  157.     
  158. Hope that these rules are clear.
  159. Another important note is that you need to know that modules system have
  160. reserved variables, they are:
  161.  
  162. $name:  Used to declare the addon name
  163. $file:  Used to declare the filename in use
  164. $mop:   Used for the modules.php switch
  165. $index: Used to add or remove the right blocks
  166. $modload: The call
  167. $mod_active: Used to check modules' status
  168.  
  169. As an additional and interesting note, you can make that your addon show left
  170. and right blocks by using the $index variable. At the begining of your file
  171. just declare the varibale:
  172.  
  173. $index = 1;
  174.  
  175. If the value is "1" your addon will show the right blocks, if the value is "0"
  176. will only show the left blocks, of course with the default or user selected
  177. theme layout.
  178.  
  179. Remember that you can also use your own language translation file, called
  180. for example lang-english.php so we can create language compatibility with
  181. the rest of the site using language system.
  182.  
  183.  
  184. Well, this was not a very big documentation but a basic one to let you start
  185. using and/or making your addons/modules/plugins. Hope that you enjoy this new
  186. feature of PHP-Nuke.
  187.  
  188. ===================================
  189. 2.- Using the SQL Abstraction Layer
  190. ===================================
  191.  
  192.     The SQL abstraction layer is a method to make the SQL queries so any user
  193. of any database server can use PHP-Nuke.
  194.     From version 6.5 and up, PHP-Nuke users the same abstraction layer of phpBB
  195. for compatibility reasons. It's very easy and highly tested.
  196.     Normaly you make a query on MySQL like this:
  197.     
  198.     $sql = "SELECT uid, uname FROM nuke_users";
  199.     $result = mysql_query($sql);
  200.     list($uid, $uname) = mysql_fetch_row($result);
  201.  
  202.     With the SQL abstraction layer on PHP-Nuke you should declare $db as a global
  203. variable and then:
  204.     
  205.     $sql = "SELECT uid, uname FROM nuke_users";
  206.     $result = $db->sql_query($sql);
  207.     $row = $db->sql_fetchrow($result);
  208.     
  209.     This will return the array $row[] with the results. If you want to work
  210. with more friendly names you should do this:
  211.  
  212.     $uid = $row[uid];
  213.     $uname = $row[uname];
  214.     
  215.     But is much faster for you and the system to use just the array values
  216. directly, ie:
  217.  
  218.     echo "Hello $row[uname], Welcome to my site!";
  219.  
  220.     Note that there isn't any "sql_fetch_array", the sql_fetch_row automaticaly
  221. will create the array with the results of your query. It's clear? Yeah.
  222.     The old method using the file sql_layer.php and the variable $dbi is now
  223. deprecated. It works for compatibility reasons, but I strongly suggest to any
  224. developer making new modules or modifying a module to start using the new
  225. method.
  226.  
  227. ============================================================================
  228.  
  229. NOTE: To stay under HTML 4.01 Transitional standard is very important that
  230. you substitute all "&" characters in the URLs with "&" tag. So, for
  231. example, the URL:
  232.  
  233.     <a href="modules.php?name=FAQ&file=index">
  234.  
  235. need to be written:
  236.  
  237.     <a href="modules.php?&name=FAQ&file=index">
  238.  
  239. without this, your pages will not validate as HTML 4.01 compatible.
  240.  
  241. =============================================================================
  242.  
  243. COPYRIGHT WARNING!!!
  244.  
  245.     Since PHP-Nuke is licensed under the GNU/GPL License, whatever module,
  246.     addon, plugin, theme, block, etc. that needs any PHP-Nuke part of code
  247.     to properly run need to be released under a GPL compatible license.
  248.     Doesn't matter what license you choose to use, that work is automaticaly
  249.     licensed under the terms of the GNU/GPL license.
  250.     Please read the GPL License carefully, it's in COPYING.TXT file
  251.  
  252. =============================================================================
  253.  
  254. Have fun now!