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

Reply
 
Thread Tools Display Modes
  #1  
Old 12-05-2018, 02:03 PM
BulliM's Avatar
BulliM BulliM is offline
 
Join Date: Oct 2017
Location: Bremen/Germany
Posts: 44
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Make array usable in template

I need an array of userids in template "conversation_userinfo". This array is written in a html or php file.

HTML-File: 1,2,3,4....
PHP-File:echo array(1,2,3,4...);

It should be used like:

Code:
<vb:if condition="in_array($conversation['userid'], $arrayofuserids)">...</vb:if>
How can I get and set that array as $arrayofuserids in template "conversation_userinfo" ?
Reply With Quote
  #2  
Old 12-05-2018, 07:40 PM
noypiscripter's Avatar
noypiscripter noypiscripter is offline
 
Join Date: Jul 2013
Posts: 468
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Try this:
Code:
{vb:set arrayofuserids, {vb:php array, 1, 2, 3, 4}}
Reply With Quote
  #3  
Old 12-06-2018, 09:20 AM
BulliM's Avatar
BulliM BulliM is offline
 
Join Date: Oct 2017
Location: Bremen/Germany
Posts: 44
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hey noypiscripter,

thanks, but this is not, what I ask for. I ask for an example, how to get the array from file into a variable in template. I set a hook:

Code:
ob_start();
include('path/arrayofuserids.php');
$arrayofuserids=ob_get_contents();
ob_end_clean();
Normally, I would expect variable $arrayofuserids is available in template, but is not. Don't know why. May I use the wrong hook (conversation_before_display_controls) ?
Reply With Quote
  #4  
Old 12-06-2018, 09:30 AM
shka shka is offline
 
Join Date: Mar 2016
Posts: 79
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You have to register your variable for your template (or register global)

In vB4 you can
PHP Code:
ob_start();
include(
'path/arrayofuserids.php');
$arrayofuserids=ob_get_contents();
ob_end_clean();

vB_Template::preRegister('templateUsingYourArray',array('arrayofuserids' => $arrayofuserids)); 
Is vB5 the same syntax?
http://vb5support.com/resources/api/...ethod_register
Reply With Quote
  #5  
Old 12-06-2018, 09:35 AM
BulliM's Avatar
BulliM BulliM is offline
 
Join Date: Oct 2017
Location: Bremen/Germany
Posts: 44
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Here: https://www.vbulletin.com/docs/html/..._externalfiles they say it is needed on 4+. Logic, 5>4.

I'll try.

EDIT: I get no result. Neither for {vb:raw $arrayofuserids} nor {vb:raw arrayofuserids}
Reply With Quote
  #6  
Old 12-06-2018, 10:08 AM
shka shka is offline
 
Join Date: Mar 2016
Posts: 79
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Try {vb:debugvardump $arrayofuserids}
Reply With Quote
  #7  
Old 12-06-2018, 10:10 AM
BulliM's Avatar
BulliM BulliM is offline
 
Join Date: Oct 2017
Location: Bremen/Germany
Posts: 44
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Result: NULL
Reply With Quote
  #8  
Old 12-06-2018, 12:00 PM
shka shka is offline
 
Join Date: Mar 2016
Posts: 79
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ok, my mistake. It seems that vB5 doesn't have a plugin/hook system like vB4. The hooks you see are template hooks, you need php hooks.

For my addons I use only api extensions
Simple example:
- create in /forum/core/packages a subdir /testimportarray/api
- create a file arr.php
PHP Code:
<?php

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

class 
TestImportArray_Api_Arr extends vB_Api_Extensions
{
    public 
$product 'testimportarray';
    public 
$developer 'testdev';
    public 
$minver '5.0.0';
    public 
$maxver '6.0.0 Alpha 1';
    public 
$infourl '';
    public 
$checkurl '';
    public 
$AutoInstall 1;
    public 
$title 'TestImportArray';
    public 
$version '1.0.0';

    public 
$extensionOrder 5;

    public static function 
getArray($prevResult)
    {
        return [
1,2,3,4];
    }
}
The subdir name /testimportarray has to be the same as in class TestImportArray_Api_Arr and public $product = 'testimportarray';
The subsubdir name /api is repeated in class TestImportArray_Api_Arr
The filename arr.php has to be the same like in class TestImportArray_Api_Arr

Then check in AdminCP/Add-ons & Hooks/Api Extensions and PHP Hooks if your Api is listed without error

Code:
Add-on: testimportarray
TestImportArray  (1.0.0) 	TestImportArray_Api_Arr 	Ja 	5.0.0 	6.0.0 Alpha 1 	Ja 	5
Then you can use the api function getArray in each template
PHP Code:
{vb:data userIdsarrgetArray}
{
vb:debugvardump $userIds
Reply With Quote
  #9  
Old 12-06-2018, 12:03 PM
BulliM's Avatar
BulliM BulliM is offline
 
Join Date: Oct 2017
Location: Bremen/Germany
Posts: 44
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I'll try that tomorrow. Thank you.
Reply With Quote
  #10  
Old 12-07-2018, 12:22 AM
noypiscripter's Avatar
noypiscripter noypiscripter is offline
 
Join Date: Jul 2013
Posts: 468
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by BulliM View Post
Here: https://www.vbulletin.com/docs/html/..._externalfiles they say it is needed on 4+. Logic, 5>4.
vB4 mod system != vB5 mod system, so that isn't logically always true.

Anyway, follow what @shka suggested which is using API extensions. An alternative is to use frontend controller. Frontend controller functions are also accessible from the template. But using API extensions is cleaner and more elegant.
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 11:55 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.04178 seconds
  • Memory Usage 2,269KB
  • 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
  • (4)bbcode_code
  • (3)bbcode_php
  • (1)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
  • (10)post_thanks_box
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (10)post_thanks_postbit_info
  • (10)postbit
  • (10)postbit_onlinestatus
  • (10)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