Page 1 of 1

Bid History strtotime

PostPosted: Sat Mar 03, 2012 8:14 am
by JGerrity
Hello,

I'm modifying the view_product.html template to show the bid history Which is working except that I'm having trouble showing the date in a more friendly format. My code is using strval
Code: Select all
          {foreach from=$product->getRelatedRecordObjects('bids') item=bid}
        <dd>{$bid->val('username')} : ${$bid->val('bid_amount')} {$bid->strval('time_of_bid')}
      {/foreach}


When I try to use strtotime instead of strval I get the error below. Do I need to create a strtotime function?

Fatal error: Call to undefined method Dataface_RelatedRecord::strtotime()

Thanks,
J.

PS If anyone is interested, you could create a scoll box to show the history of bids so the page doesn't grow to large by wrapping it in an HTML <div> tag ie: <div style="height:120px;width:250px;overflow:scroll;">

Re: Bid History strtotime

PostPosted: Sun Mar 04, 2012 11:54 am
by shannah
Use {$bid->display('time_of_bid')}

-Steve

Re: Bid History strtotime

PostPosted: Sun Mar 04, 2012 4:24 pm
by JGerrity
Thanks Steve but that didn't work.

Result format is:

20120225204927

Which is the same as using strval. I'd like it to be similar to output of "high bidder"

2012-02-20 20:49:27

Better still would be in D:MM:YYYY and 12:hr clock without seconds that I thought I had read was possible using strtotime function...

Also, how could I reverse the order of the bids being shown?

Regards,
Jason

Re: Bid History strtotime

PostPosted: Mon Mar 05, 2012 9:09 am
by shannah
Hmm... strange.... This may be a bug.

It should format it correctly when using the display method. I'll need to look into this one.
(You can always implement the time_of_bid__display() method in the bids delegate class to output your own custom format also)

Re: Bid History strtotime

PostPosted: Tue Mar 06, 2012 8:48 am
by JGerrity
Thanks Steve I'll look into using the delegate class.

Could you please let me know how to sort the out of bids so that the most recent is first(top)? That way, people don't have to scroll down to see recent bid history.

Cheers,
J.

Re: Bid History strtotime

PostPosted: Tue Mar 06, 2012 12:58 pm
by shannah
Code: Select all
$product->getRelatedRecordObjects('bids', null, null, 0, 'time_of_bid desc');

Re: Bid History strtotime

PostPosted: Wed Mar 07, 2012 10:12 pm
by JGerrity
shannah wrote:Hmm... strange.... This may be a bug.

It should format it correctly when using the display method. I'll need to look into this one.
(You can always implement the time_of_bid__display() method in the bids delegate class to output your own custom format also)


Hello,

Ok I'm struggling with showing the date in bid history in anything other than a string value. I've tried the time_of_bid__display() in the bids delegate class. I've tried using $bid->htmlValue however they come back as No Access.

It does however work when you log in as a user (you can only see the dates of your bids, all others are "no access") so it looks like an access permision on the time_of_bid record.(anyway to disregard permissions for time_of_bid?)

Here is my method in the delegate class:

Code: Select all
   function time_of_bid__display(&$record){
      return date('Y-m-d g:i a', strtotime($record->strval('time_of_bid')));
   }   


I've even tried it by adding: (to disregard permissions)
Code: Select all
   function time_of_bid__display(&$record){
      $record->secureDisplay = false;
      return date('Y-m-d g:i a', strtotime($record->strval('time_of_bid')));
   }   


I continue to get the no Access result.

I've confirm no access issue by using a no_access_text($record) function and returning 'subscribe'...yep, so it now says "subscribe" instead of no access.

My view_products.html is:
Code: Select all
{$bid->val('username')} : ${$bid->val('bid_amount')} on: {$bid->display('time_of_bid')}


Your help would be appreciated as always!

Cheers,
J

Re: Bid History strtotime

PostPosted: Tue Mar 13, 2012 12:57 pm
by JGerrity
..anyone got any ideas?

What I'd like show is the level of detail when someone is logged in and views the product detail page such as

gerrity : $60 on: 2012-03-13 5:58 pm
cameron : $55 on: SUBSCRIBE
gerrity : $50 on: 2012-03-13 3:44 pm

However, they shouldn't have to be logged in like gerrity was above. It's a table or field permission issue since user cameron wasn't logged in and it would say no access instead of subscribe (that's myy own troubleshooting)

Thanks,
J.

Re: Bid History strtotime

PostPosted: Wed Mar 14, 2012 10:10 am
by shannah
Settings secureDisplay to false inside your display method won't have any effect because your display method won't even be called if secureDisplay was already true (which is default) and the user doesn't have permission to view that cell.

Currently the permissions on the bids table are set up to provide access ONLY for the person who made the bid. This is why you're seeing NO ACCESS. If you want to make bids public, you might just make the following change in the bids table delegate class:

Code: Select all
function getPermissions(&$record){
   /*
      $app =& Dataface_Application::getInstance();
      $del =& $app->getDelegate();
      $perms =& $del->getPermissions($record);
   */
      //if ( $record ) echo "Yes"; else echo "No";
      //if ( $record and $record->val('username') ) echo "We have a username";
      if ( isAdmin() or ( $record and ($record->strval('username') == getUsername()))) {
         $perms = Dataface_PermissionsTool::ALL();
      } else {
         $perms = Dataface_PermissionsTool::NO_ACCESS();
      }
      $perms['new'] = 1;
      return $perms;
   }


Change the line
Code: Select all
$perms = Dataface_PermissionsTool::NO_ACCESS();

to
Code: Select all
$perms = Dataface_PermissionsTool::READ_ONLY();


-Steve

Re: Bid History strtotime

PostPosted: Wed Mar 14, 2012 1:32 pm
by JGerrity
Perfect!

Excellent support again Steve!

Thanks,
J.