b2evolution

Multilingual multiuser multiblog engine

b2evolution Technical Documentation (0.9.x) [ class tree: admin ] [ index: admin ] [ all elements ]

Source for file b2blogs.php

Documentation is available at b2blogs.php

  1. <?php
  2. /**
  3.  * Editing the blogs
  4.  *
  5.  * b2evolution - {@link http://b2evolution.net/}
  6.  * Released under GNU GPL License - {@link http://b2evolution.net/about/license.html}
  7.  * @copyright (c)2003-2005 by Francois PLANQUE - {@link http://fplanque.net/}
  8.  *
  9.  * @package admin
  10.  */
  11.  
  12. /**
  13.  * Includes:
  14.  */
  15. require_oncedirname(__FILE__)'/_header.php' )// this will actually load blog params for req blog
  16. $admin_tab 'blogs';
  17. $admin_pagetitle T_('Blogs');
  18. param'action''string' );
  19. param'tab''string''general' );
  20.  
  21. switch($action)
  22. {
  23.     case 'create':
  24.         // ---------- Create blog in DB ----------
  25.         $admin_pagetitle .= ' :: '.T_('New');
  26.         requiredirname(__FILE__).'/_menutop.php' );
  27.         requiredirname(__FILE__).'/_menutop_end.php' );
  28.  
  29.         // Check permissions:
  30.         $current_User->check_perm'blogs''create'true );
  31.  
  32.         ?>
  33.         <div class="panelinfo">
  34.             <h3><?php echo T_('Creating blog...'?></h3>
  35.         <?php
  36.  
  37.         param'blog_tagline''html''' );
  38.         param'blog_longdesc''html''' );
  39.         param'blog_notes''html''' );
  40.         param'blog_stub''string'true );
  41.  
  42.         param'blog_name''string'true );
  43.         param'blog_shortname''string'true );
  44.         param'blog_description''string'true );
  45.         param'blog_locale''string'true );
  46.         param'blog_access_type''string'true );
  47.         param'blog_siteurl''string'true );
  48.         param'blog_keywords''string'true );
  49.         param'blog_disp_bloglist''integer');
  50.         param'blog_in_bloglist''integer');
  51.         param'blog_linkblog''integer');
  52.         param'blog_default_skin''string'true );
  53.         param'blog_force_skin''integer');
  54.         $blog_force_skin 1-$blog_force_skin;
  55.  
  56.         $blog_tagline format_to_post$blog_tagline );
  57.         $blog_longdesc format_to_post$blog_longdesc );
  58.         $blog_notes format_to_post$blog_notes );
  59.  
  60.         ifempty($blog_stub) )
  61.         {    // Stub name is empty
  62.             errors_addT_('You must provide an URL blog name / Stub name!') );
  63.         }
  64.         else if$DB->get_var"SELECT COUNT(*)
  65.                                                 FROM $tableblogs
  66.                                                 WHERE blog_stub = ".$DB->quote($blog_stub) ) )
  67.         {    // Stub name is already in use
  68.             errors_addT_('This URL blog name / Stub name is already in use by another blog. Choose another name.') );
  69.         }
  70.  
  71.         iferrors_displayT_('Cannot create, please correct these errors:' )'') )
  72.         {
  73.             $edited_Blog new BlogNULL );
  74.  
  75.             $edited_Blog->set'tagline'$blog_tagline );
  76.             $edited_Blog->set'longdesc'$blog_longdesc );
  77.             $edited_Blog->set'notes'$blog_notes );
  78.  
  79.             $edited_Blog->set'name'$blog_name );
  80.             $edited_Blog->set'shortname'$blog_shortname );
  81.             $edited_Blog->set'description'$blog_description );
  82.             $edited_Blog->set'locale'$blog_locale );
  83.             $edited_Blog->set'access_type'$blog_access_type );
  84.             $edited_Blog->set'siteurl'$blog_siteurl );
  85.             $edited_Blog->set'stub'$blog_stub );
  86.             $edited_Blog->set'keywords'$blog_keywords );
  87.             $edited_Blog->set'disp_bloglist'$blog_disp_bloglist );
  88.             $edited_Blog->set'in_bloglist'$blog_in_bloglist );
  89.             $edited_Blog->set'links_blog_ID'$blog_linkblog );
  90.             $edited_Blog->set'default_skin'$blog_default_skin );
  91.             $edited_Blog->set'force_skin'$blog_force_skin );
  92.  
  93.             // Additional default params:
  94.             $edited_Blog->set'pingweblogs');
  95.             $edited_Blog->set'allowtrackbacks');
  96.             $edited_Blog->set'allowpingbacks');
  97.  
  98.             // DB INSERT
  99.             $edited_Blog->dbinsert();
  100.  
  101.             // Set default user permissions for this blog
  102.             // Proceed insertions:
  103.             $DB->query"INSERT INTO $tableblogusers( bloguser_blog_ID, bloguser_user_ID, bloguser_ismember,
  104.                                                 bloguser_perm_poststatuses, bloguser_perm_delpost, bloguser_perm_comments,
  105.                                                 bloguser_perm_cats, bloguser_perm_properties )
  106.                                         VALUES ( $edited_Blog->ID$current_User->ID, 1,
  107.                                                          'published,protected,private,draft,deprecated',
  108.                                                             1, 1, 1, 1 ));
  109.  
  110.             // Commit changes in cache:
  111.             $BlogCache->add$edited_Blog );
  112.  
  113.             echo '<p><strong>';
  114.             printfT_('You should <a %s>create categories</a> for this blog now!'),
  115.                             'href="b2categories.php?action=newcat&amp;blog='.$edited_Blog->ID.'"' );
  116.             echo '</strong></p>';
  117.             echo '</div>';
  118.             break;
  119.         }
  120.         echo '</div>';
  121.         // NOTE: no break here, we go on to nexw form if there was an error!
  122.  
  123.  
  124.     case 'new':
  125.         // ---------- New blog form ----------
  126.         if$action == 'new' )
  127.         // we haven't arrived here after a failed creation:
  128.             $admin_pagetitle .= ' :: '.T_('New');
  129.             requiredirname(__FILE__)'/_menutop.php' );
  130.             requiredirname(__FILE__)'/_menutop_end.php' );
  131.  
  132.             // Check permissions:
  133.             $current_User->check_perm'blogs''create'true );
  134.  
  135.             param'blog_name''string'T_('New weblog') );
  136.             param'blog_shortname''string'T_('New blog') );
  137.             param'blog_tagline''html''' );
  138.             param'blog_locale''string'$default_locale );
  139.             param'blog_access_type''string''index.php' );
  140.             param'blog_siteurl''string''' );
  141.             param'blog_stub''string''new' );
  142.             param'blog_default_skin''string''basic' );
  143.             param'blog_longdesc''html''' );
  144.             param'blog_notes''html''' );
  145.             param'blog_description''string''' );
  146.             param'blog_keywords''string''' );
  147.             $blog_disp_bloglist 1;
  148.             $blog_in_bloglist 1;
  149.             param'blog_linkblog''integer');
  150.             $blog_force_skin 0;
  151.             param'blog_linkblog''integer');
  152.         }
  153.  
  154.         echo '<div class="panelblock">';
  155.         echo'<h2>'T_('New blog')':</h2>';
  156.         $next_action 'create';
  157.         requiredirname(__FILE__).'/_blogs_general.form.php' );
  158.         echo '</div>';
  159.  
  160.         requiredirname(__FILE__)'/_footer.php' );
  161.         exit();
  162.  
  163.  
  164.     case 'update':
  165.         // ---------- Update blog in DB ----------
  166.         param'blog''integer'true );
  167.         $edited_Blog $BlogCache->get_by_ID$blog );
  168.         $admin_pagetitle .= ' :: ['.$edited_Blog->dget('shortname').']';
  169.         switch$tab )
  170.         {
  171.             case 'general':
  172.                 $admin_pagetitle .= ' :: 'T_('General');
  173.                 break;
  174.             case 'perm':
  175.                 $admin_pagetitle .= ' :: 'T_('Permissions');
  176.                 break;
  177.             case 'advanced':
  178.                 $admin_pagetitle .= ' :: 'T_('Advanced');
  179.                 break;
  180.         }
  181.  
  182.         requiredirname(__FILE__)'/_menutop.php' );
  183.         requiredirname(__FILE__)'/_menutop_end.php' );
  184.  
  185.         // Check permissions:
  186.         $current_User->check_perm'blog_properties''edit'true$blog );
  187.  
  188.         ?>
  189.         <div class="panelinfo">
  190.             <h3><?php printfT_('Updating Blog [%s]...')$edited_Blog->dget'name' ) )?></h3>
  191.         <?php
  192.  
  193.         switch$tab )
  194.         {
  195.             case 'general':
  196.                 param'blog_tagline''html''' );
  197.                 param'blog_longdesc''html''' );
  198.                 param'blog_notes''html''' );
  199.                 param'blog_stub''string'true );
  200.  
  201.                 param'blog_name''string'true );
  202.                 param'blog_shortname''string'true );
  203.                 param'blog_description''string'true );
  204.                 param'blog_locale''string'true );
  205.                 param'blog_access_type''string'true );
  206.                 param'blog_siteurl''string'true );
  207.                 param'blog_keywords''string'true );
  208.                 param'blog_disp_bloglist''integer');
  209.                 param'blog_in_bloglist''integer');
  210.                 param'blog_linkblog''integer');
  211.                 param'blog_default_skin''string'true );
  212.                 param'blog_force_skin''integer');
  213.                 $blog_force_skin 1-$blog_force_skin;
  214.  
  215.                 $blog_tagline format_to_post$blog_tagline );
  216.                 $blog_longdesc format_to_post$blog_longdesc );
  217.                 $blog_notes format_to_post$blog_notes );
  218.  
  219.                 ifempty($blog_stub) )
  220.                 {    // Stub name is empty
  221.                     errors_addT_('You must provide an URL blog name / Stub name!') );
  222.                 }
  223.                 else if$DB->get_var"SELECT COUNT(*)
  224.                                                         FROM $tableblogs
  225.                                                         WHERE blog_stub = ".$DB->quote($blog_stub)."
  226.                                                             AND blog_ID <> ".$edited_Blog->ID ) )
  227.                 {    // Stub name is already in use
  228.                     errors_addT_('This URL blog name / Stub name is already in use by another blog. Choose another name.') );
  229.                 }
  230.  
  231.                 if errors_displayT_('Cannot update, please correct these errors:' )'') )
  232.                 {
  233.                     echo '</div>';
  234.                     break;
  235.                 }
  236.  
  237.                 $edited_Blog->set'tagline'$blog_tagline );
  238.                 $edited_Blog->set'longdesc'$blog_longdesc );
  239.                 $edited_Blog->set'notes'$blog_notes );
  240.                 $edited_Blog->set'stub'$blog_stub );
  241.                 $edited_Blog->set'name'$blog_name );
  242.                 $edited_Blog->set'shortname'$blog_shortname );
  243.                 $edited_Blog->set'description'$blog_description );
  244.                 $edited_Blog->set'locale'$blog_locale );
  245.                 $edited_Blog->set'access_type'$blog_access_type );
  246.                 $edited_Blog->set'siteurl'$blog_siteurl );
  247.                 $edited_Blog->set'keywords'$blog_keywords );
  248.                 $edited_Blog->set'disp_bloglist'$blog_disp_bloglist );
  249.                 $edited_Blog->set'in_bloglist'$blog_in_bloglist );
  250.                 $edited_Blog->set'links_blog_ID'$blog_linkblog );
  251.                 $edited_Blog->set'default_skin'$blog_default_skin );
  252.                 $edited_Blog->set'force_skin'$blog_force_skin );
  253.  
  254.                 break;
  255.  
  256.             case 'perm':
  257.                 // Update the user permissions for this blog
  258.                 blog_update_user_perms$blog );
  259.                 break;
  260.  
  261.             case 'advanced':
  262.                 param'blog_staticfilename''string''' );
  263.                 $edited_Blog->set'staticfilename'$blog_staticfilename );
  264.  
  265.                 param'blog_allowtrackbacks''integer');
  266.                 $edited_Blog->set'allowtrackbacks'$blog_allowtrackbacks );
  267.  
  268.                 param'blog_allowpingbacks''integer');
  269.                 $edited_Blog->set'allowpingbacks'$blog_allowpingbacks );
  270.  
  271.                 param'blog_pingb2evonet''integer');
  272.                 $edited_Blog->set'pingb2evonet'$blog_pingb2evonet );
  273.  
  274.                 param'blog_pingtechnorati''integer');
  275.                 $edited_Blog->set'pingtechnorati'$blog_pingtechnorati );
  276.  
  277.                 param'blog_pingweblogs''integer');
  278.                 $edited_Blog->set'pingweblogs'$blog_pingweblogs );
  279.  
  280.                 param'blog_pingblodotgs''integer');
  281.                 $edited_Blog->set'pingblodotgs'$blog_pingblodotgs );
  282.  
  283.                 break;
  284.         }
  285.  
  286.         if!errors() )
  287.         {    // Commit update to the DB:
  288.             $edited_Blog->dbupdate();
  289.  
  290.             // Commit changes in cache:
  291.             $BlogCache->add$edited_Blog );
  292.         }
  293.  
  294.         ?>
  295.         </div>
  296.         <?php
  297.         // NOTE: no break here, we go on to edit!
  298.  
  299.     case 'edit':
  300.         // ---------- Edit blog form ----------
  301.         if$action == 'edit' )
  302.         {    // this has not already been displayed on update:
  303.             param'blog''integer'true );
  304.             $edited_Blog $BlogCache->get_by_ID$blog );
  305.             $admin_pagetitle .= ' :: ['.$edited_Blog->dget('shortname').']';
  306.             switch$tab )
  307.             {
  308.                 case 'general':
  309.                     $admin_pagetitle .= ' :: 'T_('General');
  310.                     break;
  311.                 case 'perm':
  312.                     $admin_pagetitle .= ' :: 'T_('Permissions');
  313.                     break;
  314.                 case 'advanced':
  315.                     $admin_pagetitle .= ' :: 'T_('Advanced');
  316.                     break;
  317.             }
  318.             requiredirname(__FILE__)'/_menutop.php' );
  319.             requiredirname(__FILE__)'/_menutop_end.php' );
  320.  
  321.             // Check permissions:
  322.             $current_User->check_perm'blog_properties''edit'true$blog );
  323.         }
  324.         ?>
  325.         <div class="pt" >
  326.             <ul class="hack">
  327.                 <li><!-- Yes, this empty UL is needed! It's a DOUBLE hack for correct CSS display --></li>
  328.             </ul>
  329.             <div class="panelblocktabs">
  330.                 <ul class="tabs">
  331.                 <?php
  332.                     if$tab == 'general' )
  333.                         echo '<li class="current">';
  334.                     else
  335.                         echo '<li>';
  336.                     echo '<a href="b2blogs.php?blog='.$blog.'&amp;action=edit">'T_('General')'</a></li>';
  337.  
  338.                     if$tab == 'perm' )
  339.                         echo '<li class="current">';
  340.                     else
  341.                         echo '<li>';
  342.                     echo '<a href="b2blogs.php?blog='.$blog.'&amp;action=edit&amp;tab=perm">'T_('Permissions')'</a></li>';
  343.  
  344.                     if$tab == 'advanced' )
  345.                         echo '<li class="current">';
  346.                     else
  347.                         echo '<li>';
  348.                     echo '<a href="b2blogs.php?blog='.$blog.'&amp;action=edit&amp;tab=advanced">'T_('Advanced')'</a></li>';
  349.  
  350.                 ?>
  351.                 </ul>
  352.             </div>
  353.         </div>
  354.         <div class="tabbedpanelblock">
  355.  
  356.         <?php
  357.         switch$tab )
  358.         {
  359.             case 'general':
  360.                 if$action == 'edit' )
  361.                 {    // we didn't end up here from a failed update:
  362.                     $blog_name get_bloginfo'name' );
  363.                     $blog_shortname get_bloginfo'shortname' );
  364.                     $blog_tagline get_bloginfo'tagline' );
  365.                     $blog_description get_bloginfo'description' );
  366.                     $blog_longdesc get_bloginfo'longdesc' );
  367.                     $blog_locale get_bloginfo'locale' );
  368.                     $blog_access_type $edited_Blog->get'access_type' );
  369.                     $blog_siteurl get_bloginfo'subdir' );
  370.                     $blog_stub get_bloginfo'stub' );
  371.                     $blog_linkblog get_bloginfo'links_blog_ID' );
  372.                     $blog_notes get_bloginfo'notes' );
  373.                     $blog_keywords get_bloginfo'keywords' );
  374.                     $blog_disp_bloglist get_bloginfo'disp_bloglist' );
  375.                     $blog_in_bloglist get_bloginfo'in_bloglist' );
  376.                     $blog_default_skin get_bloginfo'default_skin' );
  377.                     $blog_force_skin $edited_Blog->get'force_skin' );
  378.                 }
  379.                 $next_action 'update';
  380.                 requiredirname(__FILE__).'/_blogs_general.form.php' );
  381.                 break;
  382.  
  383.             case 'perm':
  384.                 requiredirname(__FILE__).'/_blogs_permissions.form.php' );
  385.                 break;
  386.  
  387.             case 'advanced':
  388.                 $blog_staticfilename get_bloginfo'staticfilename' );
  389.                 $blog_allowtrackbacks get_bloginfo'allowtrackbacks' );
  390.                 $blog_allowpingbacks get_bloginfo'allowpingbacks' );
  391.                 $blog_pingb2evonet get_bloginfo'pingb2evonet' );
  392.                 $blog_pingtechnorati get_bloginfo'pingtechnorati' );
  393.                 $blog_pingweblogs get_bloginfo'pingweblogs' );
  394.                 $blog_pingblodotgs get_bloginfo'pingblodotgs' );
  395.                 requiredirname(__FILE__).'/_blogs_advanced.form.php' );
  396.                 break;
  397.         }
  398.         echo '</div>';
  399.         requiredirname(__FILE__).'/_footer.php' );
  400.         exit();
  401.  
  402.  
  403.  
  404.  
  405.     case 'delete':
  406.         // ----------  Delete a blog from DB ----------
  407.         param'blog''integer'true );
  408.         param'confirm''integer');
  409.         requiredirname(__FILE__)'/_menutop.php' );
  410.         requiredirname(__FILE__)'/_menutop_end.php' );
  411.  
  412.         if$blog == )
  413.             die'You can\'t delete Blog #1!' );
  414.  
  415.         // Check permissions:
  416.         $current_User->check_perm'blog_properties''edit'true$blog );
  417.  
  418.         $deleted_Blog Blog_get_by_ID$blog );
  419.  
  420.         if$confirm )
  421.         {    // Not confirmed
  422.             ?>
  423.             <div class="panelinfo">
  424.                 <h3><?php printfT_('Delete blog [%s]?')$deleted_Blog->dget'name' ) )?></h3>
  425.  
  426.                 <p><?php echo T_('Deleting this blog will also delete all its categories, posts and comments!'?></p>
  427.  
  428.                 <p><?php echo T_('THIS CANNOT BE UNDONE!'?></p>
  429.  
  430.                 <p>
  431.                     <form action="b2blogs.php" method="get" class="inline">
  432.                         <input type="hidden" name="action" value="delete" />
  433.                         <input type="hidden" name="blog" value="<?php $deleted_Blog->ID(?>" />
  434.                         <input type="hidden" name="confirm" value="1" />
  435.  
  436.                         <?php
  437.                         ifis_file$deleted_Blog->get('dynfilepath') ) )
  438.                         {
  439.                             ?>
  440.                             <input type="checkbox" id="delete_stub_file" name="delete_stub_file" value="1" />
  441.                             <label for="delete_stub_file"><?php printfT_('Also try to delete stub file [<strong><a %s>%s</a></strong>]')'href="'.$deleted_Blog->dget('dynurl').'"'$deleted_Blog->dget('dynfilepath') )?></label><br />
  442.                             <br />
  443.                             <?php
  444.                         }
  445.                         ifis_file$deleted_Blog->get('staticfilepath') ) )
  446.                         {
  447.                             ?>
  448.                             <input type="checkbox" id="delete_static_file" name="delete_static_file" value="1" />
  449.                             <label for="delete_static_file"><?php printfT_('Also try to delete static file [<strong><a %s>%s</a></strong>]')'href="'.$deleted_Blog->dget('staticurl').'"'$deleted_Blog->dget('staticfilepath') )?></label><br />
  450.                             <br />
  451.                             <?php
  452.                         }
  453.                         ?>
  454.  
  455.                         <input type="submit" value="<?php echo T_('I am sure!'?>" class="search" />
  456.                     </form>
  457.                     <form action="b2blogs.php" method="get" class="inline">
  458.                         <input type="submit" value="<?php echo T_('CANCEL'?>" class="search" />
  459.                     </form>
  460.                 </p>
  461.  
  462.                 </div>
  463.             <?php
  464.         }
  465.         else
  466.         {    // Confirmed: Delete from DB:
  467.             param'delete_stub_file''integer');
  468.             param'delete_static_file''integer');
  469.  
  470.             echo '<div class="panelinfo">
  471.                             <h3>Deleting Blog [';
  472.             $deleted_Blog->disp'name' );
  473.             echo ']...</h3>';
  474.             $deleted_Blog->dbdelete$delete_stub_file$delete_static_filetrue );
  475.             echo '</div>';
  476.         }
  477.         break;
  478.  
  479.  
  480.     case 'GenStatic':
  481.         // ----------  Generate static homepage for blog ----------
  482.         param'blog''integer'true );
  483.         requiredirname(__FILE__'/_menutop.php' );
  484.         requiredirname(__FILE__'/_menutop_end.php' );
  485.         $edited_Blog Blog_get_by_ID$blog );
  486.         ?>
  487.             <div class="panelinfo">
  488.                 <h3>
  489.                 <?php
  490.                     printfT_('Generating static page for blog [%s]')$edited_Blog->dget('name') );
  491.                 ?>
  492.                 </h3>
  493.         <?php
  494.         $current_User->check_perm'blog_genstatic''any'true$blog );
  495.  
  496.         $staticfilename get_bloginfo('staticfilename');
  497.         ifempty$staticfilename ) )
  498.         {
  499.             echo '<p class="error">'T_('You haven\'t set a static filename for this blog!')"</p>\n</div>\n";
  500.             break;
  501.         }
  502.  
  503.         // GENERATION!
  504.         $static_gen_saved_locale $current_locale;
  505.         $generating_static true;
  506.         $resolve_extra_path false;
  507.         flush();
  508.         ob_start();
  509.         switch$edited_Blog->access_type )
  510.         {
  511.             case 'default':
  512.             case 'index.php':
  513.                 // Access through index.php
  514.                 // We need to set required variables
  515.                 $blog $edited_Blog->ID;
  516.                 # This setting retricts posts to those published, thus hiding drafts.
  517.                 $show_statuses array();
  518.                 # This is the list of categories to restrict the linkblog to (cats will be displayed recursively)
  519.                 $linkblog_cat '';
  520.                 # This is the array if categories to restrict the linkblog to (non recursive)
  521.                 $linkblog_catsel array);
  522.                 # Here you can set a limit before which posts will be ignored
  523.                 $timestamp_min '';
  524.                 # Here you can set a limit after which posts will be ignored
  525.                 $timestamp_max 'now';
  526.                 // That's it, now let b2evolution do the rest! :)
  527.                 require $basepath.'/'.$core_subdir.'/_blog_main.php';
  528.                 break;
  529.  
  530.             case 'stub':
  531.                 // Access through stub file
  532.                 require $edited_Blog->get('dynfilepath');
  533.         }
  534.         $page ob_get_contents();
  535.         ob_end_clean();
  536.         unset$generating_static );
  537.  
  538.         // Switch back to saved locale (the blog page may have changed it):
  539.         locale_activate$static_gen_saved_locale);
  540.  
  541.         $staticfilename $edited_Blog->get('staticfilepath');
  542.  
  543.         if($fp @fopen$staticfilename'w' )) )
  544.         {    // could not open file
  545.             ?>
  546.             <div class="error">
  547.                 <p class="error"><?php echo T_('File cannot be written!'?></p>
  548.                 <p><?php printf'<p>'.T_('You should check the file permissions for [%s]. See <a %s>online manual on file permissions</a>.').'</p>',$staticfilename'href="http://b2evolution.net/man/install/file_permissions.html"' )?></p>
  549.             </div>
  550.             <?php
  551.         }
  552.         else
  553.         {    // file writing OK
  554.             printf'<p>'.T_('Writing to file [%s]...').'</p>'$staticfilename );
  555.             fwrite$fp$page );
  556.             fclose$fp );
  557.  
  558.             echo '<p>'.T_('Done.').'</p>';
  559.         }
  560.         ?>
  561.         </div>
  562.         <?php
  563.         break;
  564.  
  565.  
  566.     default:
  567.         requiredirname(__FILE__)'/_menutop.php' );
  568.         requiredirname(__FILE__)'/_menutop_end.php' );
  569.  
  570. }
  571.  
  572. // List the blogs:
  573. requiredirname(__FILE__)'/_blogs_list.php' );
  574. requiredirname(__FILE__)'/_footer.php' );
  575. ?>

Documentation generated on Tue, 20 May 2008 01:51:16 +0200 by phpDocumentor 1.4.2