Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


 Content Type 



IPS4 Providers

Release Notes

IPS4 Guides

IPS4 Developer Documentation

Invision Community Blog



Everything posted by Numbered

  1. I got this issue on older versions, when IN_DEV constant was defined to true (js load problems). In your (production) not dev mode it may be same js problem. At first - try to clean up all caches (ACP - > Support -> Something not working). If it not fix you problem - open Chrome Console (Ctrl + Shift + I -> Console tab), refresh page and see errors with JS. Solve it, or copy them here.
  2. Hi friends. Could anybody help me with mixins? I have a plugin, which redefine relative dates return of \IPS\DateTime class. All worked well, but in some JS-generated blocks, such as quote/citation block in editor return relative date, generated by JS. I found method and file, who did it. But got a trouble with redefine this method with mixin. I read two documents: But there said about mixins for controllers (and i not understand where it must be located, how named and how activate them on needed places). So, better doc or simple example will be perfect for me. Example, which will alert('test') on using ips.utils.time relative method. Calls @Rikki here too Thanks!
  3. And our very special case example - we need to save write access to PM to users, which have temporary posting limit (from warn). And block PM only for users, which are got a permanent ban without date of expire.
  4. I think it depends on community and their culture. For our merging fast posts are better than a lot of different many posts. Moreover. I'd like to see this split in some other messangers for fix a lot of alerts with something like that: - hi - i - need - to - ask you - some * want to add him to black-list * So, globally disabled this specially for messages - isn't good thing, as i think. May be better to add different value or different setting for conversations for make a sense for all variants
  5. Got the same error in my docker instance for 220 mb file. I got a '413 (Request Entity Too Large)' error in chrome console. After that i set 'client_max_body_size 5000m;' in nginx file and it's solved the problem. So i can't reproduce it now and any big file saved well. I see you wrote about 2048m param in nginx. But, may be your param located in different server section or inside a location, not in the server directive?
  6. And one more - you can install any theme for CKEditor from their skins page. For example, Moono Dark: https://ckeditor.com/addon/moono-dark
  7. Search with term: m?sk will found => mask, misk.. Search with term: reac* will found => reactions, reacted, reactonmesofter... But search with reac*ed will found same as term reac* and found => reacted, reactions, react <= without ending ed match Is that behavior correct?
  8. Same problem (4.2.3). I want to create single landing page and use a nav menu for a create anchor links. But it can't save with #anchor. If i hardcode this link in template - it work (move to the anchor in page), but address line changed to bad link. Example https://example.com/#anchor moved to right id, but address line changed to https://example.com/anchor. Very unusable thing. Will be happy if this problem will fixed as a part of core cms without my custom menu reinvent of right wheel.
  9. Hi IPS. This idea - improvement for parent / children themes. We have this themes heritage: 4.2 - Default Theme Example - Theme With HTML Templates, Default Resources and Custom Theme variables Theme_1 - theme, where we do some coloring for a structure in Example Theme_2 - theme, where we redefine some resources, which replace default resources from Example. For example, background image for body Theme_3 - theme, where we redefine some variables Problems: we want remove rosource jpg file from Theme_2 and Theme_3 and get this image from parent Example theme. Now if we remove resource - it can't load by {resource='back.jpg'...} from Example we want to change some global color in Example theme with variable - we can't do it, if we not define or remove this variable from children theme {theme="some_color"} - didn't load it from Example Will be perfect, if theme varibales and resources will load from parent, if in child theme it not defined. Thanks!
  10. + suggestions: ability to move forums tabs to "archive" (in front side for owners) ability to re-arrange club tabs (now we can't do this from anywhere) special permissions for each forum tabs (read/write for members, guests, non-members) API (we will use clubs like a 'clans' system for online game. so this 'clubs' must created by special api calls and club members must adds/remove from that api too) Thx
  11. \applications\core\extensions\core\Queue\RebuildPosts.php:28 Change with understanding -) I still wait any way to add ability to use background tasks in multi-threads. I use 1 dedical db host (+ 1 db slave) and 8 php servers, which got a load. But cron jobs activeted only on one instance (like a pseudo-master). If I can use cron background queue in multi-thread - so i don't need to use my own cron php jobs outside of IPS sheduler.
  12. May be better using API for that search connection? Anyway if you need to post to search you can create dirty way for that. Make a forcelogin file (it will give to you authenticated session) Do a search and get an answer Close connection / store it for the other searches Be careful - you need to restrict access to your force login file by the correct web-server params (like a grant access only from special ip address ranges) and this script shoud auth as some special created standard users with default permissions. You might sure for this user can get only public search results Simple example of forcelogin script i posted recently here as another question:
  13. Any chance to use that for Clubs? We realy need to work with them via API (create clubs, remove that, grand and revoke permissions for users inside)
  14. Agree with that. Our users like to use tickers. Here is example image, which must exclude from imageproxy (or set different caching time, than others)
  15. Script like that will be better, as I think <?php // script located in document root require 'init.php'; // you need to have authenticated session with mod permissions for doing that \IPS\Session\Front::i(); // init session - after that IPS can see you as loggedIn member, if session exist foreach (\IPS\Db::i()->select('member_id', 'core_members', 'email like "%mail.ru" AND member_last_post is NULL') as $spammer_id) { $spammer = \IPS\Member::load($spammer_id); $spammer->flagAsSpammer(); print_r('Member '.$spammer->name.' with email '.$spammer->email.' marked as spammer'.PHP_EOL); } I write this script here and didn't check them. Check it first before running on production. With SQL you can simply restrict users from posting with command: UPDATE core_members SET restrict_post = -1 WHERE email LIKE '%mail.ru' AND member_last_post IS NULL; After that script member didn't set as spammer. But you can mass restrict their from posting very fast. But it's not good way for doing that. Better is using standard IPS method as I wrote at bottom. Hope this will help you
  16. We have a large community (5+ million users) with the same number of content posted. Our conversion process doing more than week. But we haven't ability for do 1 week downtime period. So we create incremental convertion script, which load last ID's of needed tables (forums, topics, posts, messenger), connect to production DB and load into new DB each row with correct class (\IPS\forums\Topic, \IPS\forums\Topic\Post), needed LegacyTextParsers works (with our special methods included) and other incremental convertion works. So this method gave to us ability to switch in special time forums from old engine to new. I hope this method will help you. In convertion problems i think CLI upgrader can't be better, than WEB upgrader. Most of perfomance not using because this convertion can works only on 1 CPU on 1 thread. I am sure - if upgrader (and background tasks, such as queue) will can do a lot of works in parallel mode (10x copies on 10x CPUs) - it will be x10 faster. Big members table, big posts table - all of them need more CPU than DB select/insert speed. And I not say about posts table, where LegacyTextParser with a lot of RegEx using 99% time from CPU and 1% from DB. So, if you, IPS, will think about upgrader and background tasks improvements - try to research about multitasking. Thanks!
  17. Up this topic. This stay actually. Our users can't create some news and guides and set youtube embedded to center align
  18. Please, add counters recount to background queue task too. It take very heavy (and useless) load. Typical situation: we have: Discuss -> Child Discuss -> Topic. Topic title a very hot and got a more than 2-3 messages per second (!). For that situation forum not work only for INSERT new content to MySQL. IPS start recount of every (!) parents counters on every (!) post! Of couse we don't need actually numbers if they changed few times in second. Update it one time in minut is enough. And posting will be very faster. Try this clause. More than.. Posted content added to search index in the same time! So it's make the posting is slower. Why this job (for add new content to index) can't work in background? I am about \IPS\Content\Search\Index class which extended by _Index in /system/Content/Search/Mysql/Index.php This class is very very huge and has a lot of sql transactions. Be very bad doing them synchronous with the posting. Just saving class with id of nearest parent in Store (any.. such as APC, Redis, Memcache) and task read them one per minut and do them in background. More than.. we can recount counters for topic one time, not 100 time (posts per minuts). For example, we have 100 posts to 1 topic in 1 minuts: - every new message put this var to temp store: \IPS\forums\Topic (classname) - 1234 (topic id). So we will have only one record - need to recount counters one time for this topic and parents - every new message put this var to temp store: \IPS\forums\Topic\Post (classname) - 123456 (post id). So we will have 100 records - get all, read and add to index. I wrote about this bottleneck when write a benchmark testing here: Difference is 20-15 PPS (Posts Per Second) between 340 PPS - without search indexer in sync mode. @Matt, be attention on my feedback, please.
  19. More about RebuildPosts background job. In my env this task with cron working less then 5 seconds. And after that it will wait for the next minute start (cron). This is because varibale $rebuild hardcoded to 100. So, a lot of time (~90%) is waiting for next minut. After I change this setting to 4000 task start working 45-55 seconds. It's very great. Not more 60 sec waiting -> cron next iteration will start very quick -> doing x40 more data -> x40 lesser time to do this. May be create some logic, which track avg time of work and boost this $rebuild value to larger, if last task do fast. And this logic can decrease this setting if time of work be more than 60 sec. This logic must try to set 50-55 seconds for working. With that it's guarantee for that speed. upd. and may be set avg time of work is 5 min is good too? why not? with this time we get a lesser non-working time than with 60s
  20. We want to see them in core. Typical situation: we want to use forever saving image to our server (if we choose 30d or 1d - it's not fix our problem). But users want to post their generated userbars in signatures. For example: This signature will update if new data receive. With imageproxy for that we can't see their update. I very like imageproxy function and understand - it can't know about this type of images. But if you create setting for select excluded domains for imageproxy - it will be perfect! Thanks
  21. We have forums in cluster. 8 app instances, 2 physical db hosts (master-slave), Ceph as a storage and CDN. Now cron task active only on one app instance. Have we any chance to have ability to use background jobs on any instance? Now our bottleneck for it's performance is vCPU of 1 app instance. And of course we want to have ability to scale them. I am not sure about boost of 1 queue (but in special situations we can create correct logic), but i am sure we can now separate jobs per instance. If someone take them, others see they status as 'taken'. Very simply and clear, as I think.
  22. With Pages app very simply. Create block in ACP, which contain your image with link and after this select your new block in front block editor. If you haven't Pages app you can do this not so simply and clear - with template editor
  23. We did this with exec commands in install/upgrade steps. As example <?php // example public function step1() { $srv = $_SERVER['DOCUMENT_ROOT']; $tmp_dir = \sys_get_temp_dir(); `rm -rf $tmp_dir/plugin_repo_name`; `git clone https://user@our.git.server.example.com/project_name/plugin_repo_name.git $tmp_dir/plugin_repo_name`; `cp -r $tmp_dir/plugin_repo_name/upload/* $srv/`; return true; } So our repo contain plugin_name.xml which we upload when want to install and upload folder, which contain any path, for your example it may be such as: /uploads/system/3rd_party/otherClass/...files_folders_here... In this way created a lot of plugins, which need to copy uploads folder via ftp with hands. In our way we do it automatically with setup/upgrade. Ofcouse, if your php settings allow exec function which is not good for secure (in our schema we have nginx location '/admin' which is closed from world and open only for office IP's and backend for this location is different php-fpm daemon with different php.ini settings, which allow exec). Hope our experience will help you) I am know this way is not clear. But create application type for very simply functionality is not better as i think. Good example of this working is creating new login handler. Now you can't create login handler file in /system/Login/YourHandler.php via plugin or application. It must be dedical file, not a hook. So, you need to put them manually or with the this method. Additionally you can put your helpful class (LoginOpenId, for example) only to git folder. And all your files guaranteed placed to right places and all will works well. IPS had many places, which devs must create dedical new files, not a hooks. Other examples is adding new sharer service (we add Vk), create new external widgets and more-more...
  24. I recorded video for better understanding of this Affected both and 4.2 How to reproduce: Create custom stream with ownership filter Open this stream and add new member to ownership filter Err: counting is back to 1 member (but description is ok) and all of them united to one. After save and refresh all is ok Video attached upd.: remove attach. uploaded to youtube:
  • Create New...