Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 General Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 08-15-2005, 09:45 AM
dwh's Avatar
dwh dwh is offline
 
Join Date: Feb 2002
Posts: 278
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default pre_save()?

What does pre_save() do?
I tried to read through the code but didn't understand it.
Reply With Quote
  #2  
Old 08-15-2005, 09:51 AM
Andreas's Avatar
Andreas Andreas is offline
 
Join Date: Jan 2004
Location: Germany
Posts: 6,863
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

It does necessary Actions before a Record is being saved.
Reply With Quote
  #3  
Old 08-15-2005, 09:57 AM
dwh's Avatar
dwh dwh is offline
 
Join Date: Feb 2002
Posts: 278
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Sorry to bug you, but if you can elaborate it would be most helpful. I can't understand lines like

PHP Code:
pre_save($doquery true
It was called as pre_save() so what is the value of $doquery?

PHP Code:
 if ($this->presave_called !== null)
{
return 
$this->presave_called;
}
if (!
parent::pre_save($doquery))
{
$this->presave_called false;
return 
false;
}
if (!
$this->pre_save_post($doquery))
{
$this->presave_called false;
return 
false;

Totally lost on this?

PHP Code:
 if (!$this->condition)
{
$this->set('lastpost'$this->fetch_field('dateline'));
$this->set('lastposter'$this->fetch_field('username''post'));
$this->set('replycount'0);
$this->set('hiddencount'0);

dateline? username? post? Where are they getting all this from?

PHP Code:
 if (!$this->condition AND $this->fetch_field('open') === null)

fetch_field? From where? The database? The existing arrays?


No clue in the slightest what's going on here.
Reply With Quote
  #4  
Old 08-15-2005, 10:30 AM
Andreas's Avatar
Andreas Andreas is offline
 
Join Date: Jan 2004
Location: Germany
Posts: 6,863
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hmm, it's documented - you just have to look

Code:
/**
* This variable prevents the pre_save() method from being called more than once.
* In some classes, it is helpful to explicitly call pre_save() before
* calling save as additional checks are done. This variable is used to prevent
* pre_save() from being executed when save() is called. If null, pre_save()
* has yet to be called; else, it is the return value of pre_save().
*
* @var	null|bool
*/
var $presave_called = null;

/**
* Any checks to run immediately before saving. If returning false, the save will not take place.
*
* @param	boolean	Do the query?
*
* @return	boolean	True on success; false if an error occurred
*/
function pre_save($doquery = true)
Quote:
PHP Code:
 if ($this->presave_called !== null)
{
return 
$this->presave_called;

Check if it was called already, if this is the Case return the previous result.

Quote:
PHP Code:
if (!parent::pre_save($doquery))
{
$this->presave_called false;
return 
false;

If pre_save() fails in the Parent-Class it's failed.

Quote:
PHP Code:
if (!$this->pre_save_post($doquery))
{
$this->presave_called false;
return 
false;

If pre_save() for the Post failed, pre_save() for the Thread failed.

Quote:
dateline? username? post? Where are they getting all this from?
These are required Fields, so they must be present upon saving, eg. can be loaded with fetch_field():

PHP Code:
/**
* Fetches info about the current data object - if a new value is set, it returns this, otherwise it will return the existing data
*
* @param    string    Fieldname
*
* @return    mixed    The requested data
*/
function &fetch_field($fieldname$table null)
{
    if (
$table === null)
    {
        
$table =& $this->table;
    }

    if (isset(
$this->{$table}["$fieldname"]))
    {
        return 
$this->{$table}["$fieldname"];
    }
    else if (isset(
$this->existing["$fieldname"]))
    {
        return 
$this->existing["$fieldname"];
    }
    else
    {
        return 
null;
    }

Reply With Quote
  #5  
Old 08-15-2005, 10:51 AM
dwh's Avatar
dwh dwh is offline
 
Join Date: Feb 2002
Posts: 278
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks.
There's an awful lot to learn.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 08:56 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01825 seconds
  • Memory Usage 2,227KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)bbcode_code
  • (8)bbcode_php
  • (4)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (5)post_thanks_box
  • (5)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (5)post_thanks_postbit_info
  • (5)postbit
  • (5)postbit_onlinestatus
  • (5)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete