Go Back   vb.org Archive > vBulletin 5 Connect Discussion > vB5 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #11  
Old 12-07-2018, 03:40 AM
delicjous's Avatar
delicjous delicjous is offline
 
Join Date: Nov 2014
Posts: 352
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

If you use a new API like ARR, make it your own API and don't extend it.
You could extend API like Page, Node, User... but why your own?!

PHP Code:
 <?php

if (!defined('VB_ENTRY')) {
    die(
'Access denied.');
}

class 
TestImportArray_Api_Arr extends vB_Api
{

    public static function 
getArray($prevResult)
    {
        return [
1,2,3,4];
    }
}
HTML Code:
{vb:data userIds, testimportarray:arr, getArray}
{vb:debugvardump $userIds}
There is a working example-mod here: https://vbulletin.org/forum/showthre...light=skeleton
Reply With Quote
  #12  
Old 12-07-2018, 03:55 AM
BulliM's Avatar
BulliM BulliM is offline
 
Join Date: Oct 2017
Location: Bremen/Germany
Posts: 44
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by shka View Post
...
It works like a charm. Thank you shka! Thank to all!

--------------- Added [DATE]1544164891[/DATE] at [TIME]1544164891[/TIME] ---------------

One problem left. Why I cannot use that array in a condition?

Code:
{vb:data arrayofuserids, arr, getArray}
{vb:debugvardump $arrayofuserids}
Result:

HTML Code:
var_dump: $arrayofuserids

array(4) {
  [0]=>
  string(2) "1
"
  [1]=>
  string(4) "2
"
  [2]=>
  string(2) "3
"
  [3]=>
  string(1) "4"
}

But...

Code:
{vb:data arrayofuserids, arr, getArray}
<vb:if condition="in_array($conversation['userid'], $arrayofuserids)">...</vb:if>
...works not.

Solved. My solution:

PHP Code:
return "1,2,3,4"
Code:
{vb:data arrayofuserids, arr, getArray}
{vb:set userIds, {vb:php explode, ',', {vb:raw arrayofuserids.0}}}
<vb:if condition="in_array($conversation['userid'], $userIds)">...</vb:if>
Works, but isn't quite elegant. If there is a better way, I would be interested in. I want that array of userids also global. No need, to load on every post.
Reply With Quote
  #13  
Old 12-07-2018, 05:06 AM
shka shka is offline
 
Join Date: Mar 2016
Posts: 79
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Von hinten durch die Brust
Reply With Quote
  #14  
Old 12-07-2018, 05:08 AM
BulliM's Avatar
BulliM BulliM is offline
 
Join Date: Oct 2017
Location: Bremen/Germany
Posts: 44
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by shka View Post
Von hinten durch die Brust
Ja, voll. Die vB-Templates nerven ganz sch?n. Das dauert noch, bis ich das kann.
Reply With Quote
  #15  
Old 12-07-2018, 06:53 AM
delicjous's Avatar
delicjous delicjous is offline
 
Join Date: Nov 2014
Posts: 352
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Dein Array-Inhalt sind strings. Du ben?tigst aber int.

PHP Code:
return array(1,2,3,4); 
liefert mir

HTML Code:
var_dump: $array

array(3) {
  [0]=>
  int(2)
  [1]=>
  int(3)
  [2]=>
  int(4)
}
und dann funktioniert es.

HTML Code:
<vb:if condition="in_array($user['userid'], $array)">
Yes
<vb:else />
No
</vb:if>
Deine Funktion sollte public function und nicht public static function sein.
Reply With Quote
  #16  
Old 12-07-2018, 06:57 AM
BulliM's Avatar
BulliM BulliM is offline
 
Join Date: Oct 2017
Location: Bremen/Germany
Posts: 44
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by delicjous View Post
Dein Array-Inhalt sind strings. Du ben?tigst aber int.
Die Vermutung hatte ich auch. Ich lade das Array aber aus einer Datei. Will nicht jedesmal neu aus der DB laden. Bei mir lautet die Zeile also return file('path/file'); wo vorher die userids untereinander standen und jetzt als eine Zeile, durch Kommas getrennt. Diesen ganzen Aufwand k?nnte ich mir sparen, wenn ich die Tabelle in der Foren-DB anlegen w?rde. Da ?berlege ich noch, weil ich Sicherheitsbedenken habe.
Reply With Quote
  #17  
Old 12-07-2018, 07:00 AM
shka shka is offline
 
Join Date: Mar 2016
Posts: 79
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I think the problem with his first try is - his strings are two chars (with \n ?)

He wrotes

PHP Code:
array(4) {
  [
0]=>
  
string(2"1
"
  
[1]=>
  
string(4"2
"
  
[2]=>
  
string(2"3
"
  
[3]=>
  
string(1"4"

String 0..2 are incorrect so in_array results false, only last strinf is of correct length string(1)
Reply With Quote
  #18  
Old 12-07-2018, 07:35 AM
delicjous's Avatar
delicjous delicjous is offline
 
Join Date: Nov 2014
Posts: 352
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by BulliM View Post
Die Vermutung hatte ich auch. Ich lade das Array aber aus einer Datei. Will nicht jedesmal neu aus der DB laden. Bei mir lautet die Zeile also return file('path/file'); wo vorher die userids untereinander standen und jetzt als eine Zeile, durch Kommas getrennt. Diesen ganzen Aufwand k?nnte ich mir sparen, wenn ich die Tabelle in der Foren-DB anlegen w?rde. Da ?berlege ich noch, weil ich Sicherheitsbedenken habe.
Naja, wenn die IDs aus einer Datei kommen werden diese wohl weniger oft gewechselt. Dann solltest Du die wie aufgezeigt ?ber eine API ziehen. Ich glaube nicht, das es sicherer ist die IDs in einer Datei zu "generieren" (woher auch immer) und diese Datei dann in die API einzubinden. Warum sollte ein Datenbankzugriff unsicher sein? Wenn dieser korrekt eingerichtet ist, sollte das definitiv die bessere L?sung sein.
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 05:20 AM.


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.04290 seconds
  • Memory Usage 2,253KB
  • Queries Executed 11 (?)
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
  • (3)bbcode_code
  • (4)bbcode_html
  • (4)bbcode_php
  • (4)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (8)post_thanks_box
  • (8)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (8)post_thanks_postbit_info
  • (8)postbit
  • (8)postbit_onlinestatus
  • (8)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_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
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete