Jump to content

siv1987

Пользователи
  • Регистрация

  • В сети

Posts posted by siv1987

  1. 8 часов назад, aplayer сказал:

    Не хочу городить 1000 строк кода в теле функции hookData(), а сделать инклюд который сформирует переменную $content.

     

    Этот файл как раз для этого и преднозначен. Не хватает абстракции в одном файле, создавайте приложение и разделяйте код по логике. Вы для начало напишите эти 1000 строк а потом уже будете думать надо ли расширятся или нет. Это частая ошибка новичков когда они с самого начала хотят написать мега крутую аппликацию с сложной структурой.

     

    1 час назад, aplayer сказал:

    если честно я не понял о чем речь. Точнее не понял что значит отделить логику от шаблона.

    https://ru.m.wikipedia.org/wiki/Model-View-Controller

     

    26 минут назад, Desti сказал:

    Такая же фигня :) тут, по моему, уже никто не понимает, о чем речь :)

    Значит вы не знакомы с паттерными проектирования. 

  2. 57 минут назад, aplayer сказал:

    код шаблонов со скобочками не подсвечивается наверно ни одним редактором

    Код, как сказали выше, надо разделять от представления - шаблона. Пишите свою логику в методах класса, там подсветка и проверка синтаксиса работает, а шаблоны используйте только для оформления. Что мешает написать в том же методе hookData логику работы а потом скомпилировать шаблон на основе этих данных? Зачем городить костыли с инклудом левого файла, а потом еще придумывать как этот файл записать на диске при установке.

    Возьмите пару тройку плагинов которые используют нужный вам принцип и посмотрите какм там это реализовано, не нужно изобретать свои велосипеды, особенно когда знания языка не особо это позволяет. 

    1 час назад, aplayer сказал:

    А вот когда дело дойдет до php там редакторы начнут спотыкаться.

    Php в шаблоне по большему счету делать нечего. В шаблонизаторе используются только простые выражения, там подсветка не нужна, вся логика отдельно.

  3. Для гостей кешируется шаблон на небольшой срок. Пару секунд абсолютно не критично и, если не ошибаюсь это время можно настроить. Инклуды это дичь, и не знаю чем это спасет ситуацю, но если так сильно хочеться можете попробовать всунуть ваш код в файле хука, отдельно от класса. 

  4. 4 минуты назад, Lafko сказал:

    Вот так работать будет?

    Нет.
     

    	if ( !$this->key )
    	{
    		do
    		{
    			$this->key = $this->generate();
    		}
    		while ( \count( \IPS\Db::i()->select( '*', 'nexus_licensekeys', array( 'lkey_key=?', $this->key ) ) ) );
    
    		/* create external connect */
    		\IPS\Db::i(
    			'remote_database_name', 
    			array(
    				'sql_host'      => 'host',
    				'sql_user'      => 'user',
    				'sql_pass'      => 'pass',
    				'sql_database'  => 'database',
    			) 
    		);
    
    		\IPS\Db::i('remote_database_name')->insert('your_table', array('license_key' => $this->key));
    	}

     

  5. 1 минуту назад, Lafko сказал:

    Не совсем понял вопрос про пользователя который имеет доступ но я думаю что нет? Мне надо создать новое подключение.

    Выполнить запрос SHOW DATABASES в админцентр форума > Support > SQL Toolbox
    Или посмотреть в phpmyadmin
    image.thumb.png.7816a96761d34ce0b622623edf9b411d.png

    4 минуты назад, Lafko сказал:

    Вот весь код файла LicenseKey.php

    На какой хрен засорять тему, он у меня и так есть.
    Вставьте после
     

    while ( \count( \IPS\Db::i()->select( '*', 'nexus_licensekeys', array( 'lkey_key=?', $this->key ) ) ) );

     

  6. mysql пользователь который использует форум имеет доступ к этой базе данных? Если да, то запрос можно выполнить от текущего подключения.
    Если нет то http://ipbskins.ru/forum/topic15779.html#entry105651
     

    /* create external connect */
    \IPS\Db::i(
        'remote_database_name', 
        array(
            'sql_host'      => 'host',
            'sql_user'      => 'user',
            'sql_pass'      => 'pass',
            'sql_database'      => 'database',
        ) 
    );
    
    \IPS\Db::i('remote_database_name')->insert('you_table', array('license_key' => $this->key));

     

  7. А чем таблица форума не устраивает? Можно создать mysql триггер таблицы при inserte чтобы данные копировались в другую таблицы.

    wanted, достаточно будет в конце условия добавить 

    \IPS\Db::i()->insert( 'your_table', array(
    		'license_key' => $this->key
    	) );

    Только насколько я понял ТС нужно вставить еще и в другую бд. Тут либо создать другое подключение, либо если у mysql пользователя есть доступ к этой бд, использовать нативный метод \IPS\Db::i()->query с указанием таблицы другой базы данных INSERT INTO other_db.your_table

  8. Форум использует запрос к бд для дополнительных полей. Отдельных методов нету.

    $profileFields = ['member_id' => %member_id, 'field_%id' => 'new_value'];
    \IPS\Db::i()->replace( 'core_pfields_content', $profileFields );

     

    При большем желании можно написать плагин который добавит новый метод к \IPS\Member для обновления дополнительных полей.

  9. 17 минут назад, Temtaime сказал:

    Error: Call to a member function setQueryString() on null in /var/www/forum/uploads/template_6_1bb0e8f6d56f81d6c7163246c7be5ae2_forums.php:1134
    Stack trace:

    Какбы не тоже самое. Вам нужно или перестроить кеш шаблонов или обновить до актуальной версии.

  10. Ничего странного как раз нету. В новой версии - новые файлы, а иногда и новая структура. При откате перезаливом сверху перезаписываются только пересекающиеся файлы, а новые, не совместимые со старой версии могут остаться вызывая проблемы.