MOOHA   Документация

  

Установка и настройка

Установка

Разархивируйте файл mooha.zip в корневую директорию вашего проекта. После этого файловая структура должна выглядеть следующим образом:

mooha
mooha_data
main.php
.htaccess

Установите права доступа к директории mooha_data и ко всем содержащимся в ней папкам и файлам в значение 777 (-rwxrwxrwx).

Редактор установлен и может быть запущен в браузере следующей адресной строкой — http://your_project_name/mooha/

Настройки проекта

Другие настройки, доступные в разделе PROJECT PROPS:

MySQL
Для того, чтобы настроить подключение к базе данных MySQL перейдите во вкладку Mysql и заполните поля Host и Database. Для полноценной работы редактора MOOHA с базой данных вам необходимо иметь пользователя с максимальными разрешениями (ALL PRIVILEGES). Данные этого пользователя (User,Password) нужно заполнить в разделе DEVELOPER ACCOUNT. В разделе USER ACCOUNT вы можете либо продублировать данные из предыдущего раздела, либо ввести данные пользователя с органиченными правами (стандартная учетная запись для работы с готовым проектом).

Scripts
Во вкладке Scripts выбирается сценарий (скрипт), который выполняется первым при запуске проекта.

Code
Во вкладке Code вы можете настроить вывод комментариев в генерируемом PHP коде.

Export/Import
Любые созданные в редакторе элементы, файлы и таблицы базы данных могут быть сохранены в виде ассетов (наборов элементов). При экспорте ассет можно сохранить локально, или отправить в открытую библиотеку ассетов прямо из окна экспорта. Доступ к ассетам этой библитеки можно получить в этой же вкладке (Export/Import), нажав на кнопку "Open Asset Library".

Интерфейс

Панели свойств

По-умолчанию в редакоре выводится две панели свойств, которые расположены по краям окна браузера. Каждая панель содержит свой набор инструментов (вкладок). Количество панелей, их размер, местоположение и содержимое можно изменять. В панели свойств можно выводить следующие инструменты:

  • SCRIPTS – список скриптов (освновные рабочие файлы проекта);
  • SNIPPETS – список пользовательских нодовых схем;
  • TABLES – список таблиц базы данных MySQL;
  • PHP SOURCE – сгенерированный редактором PHP код открытого в редакторе скрипта;
  • HTML SOURCE – HTML код, который является результатом выполнения текущего PHP скрипта;
  • OUTPUT – результат работы PHP скрипта, выводимый в браузере;
  • NODE PROPS – свойства выделенной ноды;
  • FUNCTIONS – редактор пользовательских функций;
  • FILE EDITOR – файловый редактор;
  • SCRIPT PROPS – свойства открытого скрипта;
  • PROJECT PROPS – свойства проекта.

Для того, чтобы скрыть или показать панель свойств, нужно кликнуть правой кнопкой в любом месте рабочего поля редактора, в открывшемся контекстном меню выбрать пункт tabs и снять (или поставить) соответствующую галочку.

Чтобы добавить новую панель нужно использовать следующий путь в контекстном меню редактора: tabs > + new tab.

Удалить панель из проекта можно кликом на иконке в заголовке панели свойств

Чтобы изменить инструменты, выводимые в панели, нужно кликнуть на иконку в заголовке панели.

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

Нодовый редактор

Основной рабочий инструмент для создания скриптов и логики работы проекта - это нодовый редактор.

Функциональные элементы редактора - ноды.

Нода – это функциональный блок, который может иметь входящие или исходящие соединения в зависимости от его назначния.

Для того, чтобы добавить ноду на сцену, нужно кликнуть правой кнопкой мыши в любом пустом месте редактора и выбрать из появившегося списка нужный инструмент:

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

Чтобы разорвать или изменить соединение, нужно навести курсор на соединительную линию и, зажав левую кнопку мыши, перенести курсор в нужное место. Если отпустить кнопку мыши на пустом месте редактора - соединение удалится.

Hello, world!

Попробуем создать простой скрипт, который выводит текст в браузер. Для этого находим панель свойств, которая содержит вкладку SCRIPTS (по умолчанию эта панель находится слева, а SCRIPTS - первый инструмент в списке). Нажимаем на вкладку SCRIPTS, после чего в панели появится список скриптов. Нажимаем на кнопку New Script и в появившемся диалоговом окне вводим название нового скрипта, например, "my script".

После того, как скрипт будет создан, он появится в списке. Теперь двойным щелчком мыши открываем скрипт в редакторе.

Создаем нашу первую ноду. Это будет строковая переменная с текстом Hello, World!. Для этого кликом правой кнопкой мыши в рабочем поле редактора открываем контекстное меню и в категории data выбираем ноду VAR.

В панели свойств во вкладке NODE PROPS появятся свойства нашей ноды. Вызвать эту панель можно в любой момент кликом на ноде. Здесь, во вкладке Data, находим текстовое поле и вводим в него строку Hello, World!.

Наша переменная создана, осталось вывести ее на стрнице. Для этого у нас в категории output есть нода print. Добавляем эту ноду в редактор и соединяем коннектор зеленого цвета ноды VAR с коннектором красного цвета ноды Print.

Для того, чтобы наш поток выполнился, создаем ноду Exec (категория service), и подключаем ее справа таким же способом к ноде Print (зеленый коннектор Print и красный коннектор Exec), чтобы получилась такая схема:

Все, наш скрипт готов. Находим в панелях свойств вкладки PHP SOURCE, HTML SOURCE и OUTPUT и смотрим, что у нас получилось.

Во вкладке PHP SOURCE будет виден сгенерированный php код, HTML SOURCE показывает html код страницы, а OUTPUT выводит то, что мы увидим в браузере.

Поток выполняется слева направо. Значение #0 над нодой Exec означает место в очереди потоков. Т.е. если потоков будет несколько, порядок их выполнения можно контролировать этим значением, которое меняется в свойствах ноды Exec. Например, в следующей схеме сначала выведется переменная из ноды VAR 1, потом - из ноды VAR 2.

Ноды

Категории нод

Все ноды делятся на категории по функциональному назначению. Список категорий, который находится в контекстном меню редактора:

  • data – к этой категории относятся ноды, которые являются источниками различных данных (переменные, выборки из таблиц, темплейты, импорт других скриптов а также объявление классов)
  • processing – категория содержит функциональные ноды (функции, арифметические операции, методы классов, логические операторы и т.п.)
  • html/xml – ноды вывода HTML или XML тэгов
  • service – в основном здесь собраны вспомогательные ноды для управления схемами (очередь потоков, группирование нод, сортировка подключений, вставка пользовательского php кода в поток)
  • output – различные операции вывода, такие как var_dump и print, а также запись в файл и отправка email.
  • snippets – список сниппетов (сохраненных пользовательских схем)
  • script i/o (доступна только вне группы) – вспомогательные ноды script input и script output, которые используются для удобства обмена данными между скриптами при импорте одного скрипта в другой.
  • group i/o (доступна только внутри группы) – ноды group input и group output, которые соответственно принимают данные из входящих соединений или отправляют данные в исходящие соединения группы.

Параметры ноды

Каждая нода имеет свой набор параметров, которые отображаются во вкладке NODE PROPS панели свойств. Чтобы перейти в панель с параметрами ноды, нужно кликнуть на самой ноде, чтобы она стала активной.

Базовые параметры, присущие каждой ноде:
Type - тип ноды (только для чтения)
Name - название ноды
Color - цвет ноды

Некоторые ноды содержат такие базовые вкладки, как Placeholders и IO.

Вкладка Placeholders

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

Если нода имеет редактируемое значение в своих параметрах, то вкладка Placeholders всегда присутствует.

Этот инструмент удобен для работы с шаблонами, когда, например, необходимо заменять специально подготовленные переменные внтури html кода значениями из базы данных.

Простой пример схемы с применением placeholder`а:

Для удобства названия нод соответствуют значениям переменных. Во второй ноде с простым html шаблоном добавлен placeholder %user%:

Галочка рядом с placeholder`ом означает то, что он выводится в ноде в виде входящего коннектора. Значение, подключенное в это соединение, заменит все placeholder`ы внутри переменной. Т.е. результатом этой схемы будет такой html код:

<div>Hello, John!</div>

Вкладка IO

Во вкладке IO отображаются все соединения ноды. У большинства нод порядок расположения соединений можно изменять - это позволяет избежать пересечений в линиях соединенний, что облегчает визуальное восприятие схемы. Порядок вывода соединений меняется с помощью перетаскивания элементов в этой вкладке.

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

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

Очередь потоков и замыкания

Поток - это отдельная цепочка из нод. Выполняется слева направо. Чтобы поток запустился, последней нодой в цепочке должна быть нода Exec.

Пример очереди из двух потоков:

Значения #0 и #1 над нодами Exec обозначают место каждого потока в очереди на выполнение. В нашем случае сначала выполнится команда print для переменной VAR 1, потом - эта же команда для переменной VAR 2.

Изменяя параметр Number in a queue ноды Exec можно регулировать последовательность выполнения потоков в очереди.

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

В приведенном примере замыкание сработает во втором потоке в ноде Print. Очередь потоков будет проигнорирована, а выполнится только та часть второго потока, которая замыкается нодой Print (все подключения слева от ноды). Даже если после ноды с замыканием будут следовать другие подключения, они выполняться не будут.

Чтобы отключить замыкание, нужно сделать повторный двойной щелчек на ноде.

Работа с функциями

Любая функция в редакторе Mooha - это нода, у которой есть входящие соединения для передачи аргументов, и исходящее соединение для возвращения результата выполнения.

Если аргумент передается по ссылке, то для него в ноде будет присутствовать дополнительное исходящее соединение, куда передается значение этого аргумента.

Стандартные функции PHP

Чтобы добавить в поток стандартную PHP функцию, нужно использовать ноду Function (категория processing). В параметре Function Type надо выбрать значение Other Function, после чего в поле Function набрать имя нужной функции.

После того, как имя функции будет выбрано, в параметрах ноды появится список аргументов. Если функция предусматривает динамическое количество аргументов, то новые аргументы можно добавлять вручную, с помощью кнопки Add Argument.

Пример работы PHP функции str_replace :

Для наглядности, значения переменных пробублированы в названиях нод. Результатом будет строка I love oranges.

Пользовательские функции

Работа с пользовательскими функциями происходит во встроенном редакторе, который находится во вкладке FUNCTIONS панели свойств.

Чтобы создать новую функцию, нужно нажать на кнопку со знаком "+" рядом со списком функций (параметр Function). После ввода названия функции в открывшемся окне, в параметрах появится возможность добавления аргументов. Строка аргумента состоит из следующих полей:

  • argument name - имя, которое можно будет использовать в коде функции для доступа к аргументу
  • type - тип переменной аргумента
  • def - имеет ли аргумент значение по умолчанию
  • def value - значение по умолчанию для аргумента
  • ref - принимается ли аргумент по ссылке

Вкладка Code содержит редактор php кода для функции.

Чтобы использовать созданную пользовательскую функцию, нужно воспользоваться нодой Function. В параметре Function Type нужно выбрать Mooha Function, а из списка Function выбрать нужную функцию. После этого в параметрах ноды появится список аргументов, а у ноды - соответствующие соединения.

Работа с классами

Для работы с классами используются такие ноды, как CLASS (категория data), и Method (категория processing).

Для того, чтобы использовать пользовательские классы, необходимо разместить файлы классов в папку mooha_data/classes. Все классы из этой папки автоматически добавляются в систему.

Создание экземпляра класса (нода CLASS)

Экземпляр класса создается добавлением в поток ноды CLASS. В параметрах этой ноды можно выбрать тип класса (Class Type):

  • Mooha Classes - пользовательский класс из папки mooha_data/classes
  • Other Classes - стандартный PHP класс

Если выбрать тип класса Mooha Classes, то в параметре Class File появится список всех найденных классов из директории mooha_data/classes. Тип класса Other Classes дает возможность выбирать из стандартных классов PHP.

После назначения класса будет создан его экземпляр. Если конструктор класса принимает аргументы, то они появятся в параметрах ноды.

Нода класса имеет одно исходящее соединение, в котором передается переменная экземпляра класса. Она используется для подключения к ней методов класса.

Методы класса (нода Method)

Метод класса добавляется в поток с помощью ноды Method категории processing. Чтобы задействовать метод класса, его надо привязать к конкретному экземпляру класса. Для этого необходимо либо подключить класс во входящее соединении ноды Method (соединение class), либо в настройках ноды Method в параметре Class Instance выбрать существующий экземпляр класса.

После того, как метод будет привязан к экземпляру класса, в параметре Class Method можно выбрать название метода из существующих методов класса. После того, как метод будет выбран, в параметрах ноды появятся аргументы метода и соответствующие соединения.

Первым исходящим соединением метода всегда будет переменная экземпляра класса (class), для возможности подключения следующего метода в цепочке. Вторым соединением будет результат выполнения самого метода (значение из выражения return).

В примере ниже продемонстрировано использование стандартного класса DateTime для вывода даты в заданном формате:

В данной схеме к экземпляру классу DateTime подключен метод этого класса format. В качестве аргумента для формата даты передается переменная со значением Y-m-d H:i:s.

Группы

Очень удобным инструментом для управления нодовой схемой является возможность создания групп.

Для этого существует специальная нода Group, внутрь которой можно помещать части схемы или целые потоки. Вложенность таких групп не имеет ограничений, т.е. схема внутри группы может содержать другую группу со схемой и так далее.

Создание групп и управление соединениями

Создать группу можно двумя способами. Первый способ заключается в создании пустой ноды Group. Переход "внутрь" группы осуществляется двойным щелчком на этой ноде. Внутри группы можно создавать такие же схемы, как и на верхнем уровне скрипта. Чтобы вернуться на уровень выше - достаточно сделать двойной щелчек мышью в любом пустом месте редактора внутри группы.

Второй способ создания группы - создание новой группы для уже существующей схемы. Для этого нужно выделить часть схемы (или всю схему целиком) и нажать правой кнопкой мыши на любой из выделенных нод, а затем, в открывшемся контекстном меню, выбрать пункт add to group. После этого все выделенные ноды и связи между ними переместятся внутрь созданной группы.

Для того, чтобы передавать поток в группу или выводить поток из группы, существуют специальные ноды group in и group out (категория group i/o). При добавлении таких нод в группу, у самой ноды Group автоматически добавляются коннекторы для соединений. Таким образом, все ноды group in будут содержать потоки, подключенные к соответствующим входящим соединениям группы, а выходящие соединения будут содержать потоки, подключенные к нодам group out внутри группы.

Пример группы с одним входящим и одним исходящим соединением:

Внутри группы следующая схема:

Ноды in и out транслируют соответствующие потоки соединений группы. Таким образом из ноды in мы получаем строку Hello, Tom!. Внутри группы к этой строке применяется функция str_replace, результат которой передается через ноду out в выходящее соединение группы.

Вывод переменных в параметры группы

Любые переменные внутри группы могут быть выведены в настройки группы в виде параметров. Это бывает удобно, когда в группу спрятана сложная схема и для управления её работой достаточно изменения нескольких переменных. Эти переменные выводятся в настройки группы и становятся ее свойствами.

Сохраненные схемы (Snippets)

Сниппеты (snippets) - это сохраненные схемы из нод, которые можно использовать повторно в любом скрипте.

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

Список сниппетов можно найти во вкладке SNIPPETS панели свойств, либо в главном контекстном меню в категории snippets.

Чтобы использовать сохраненную схему сниппета в текущем скрипте, нужно либо выбрать сниппет из категории snippets, либо выполнить двойной щелчек мыши на сниппете во вкладке SNIPPETS панели свойств.

HTML/XML ноды

В редакторе существуют специальные ноды для вывода HTML/XML тэгов. Список нод находится в соответствующей категории html/xml.

Значение из входящего соединения html попадает в содержимое тега. В параметрах ноды есть возможность добавлять и атрибуты, которые тоже могут выводиться в ноде, как входящие коннекторы.

Пример, как с помощью html/xml нод может выглядеть структура документа:

Здесь в нодах div, body, head и html входящие коннекторы принимают содержимое для своих тэгов. Нода meta настроена на прием артибутов name и content (эти атрибуты добавлены в параметрах ноды и настроены как входящие соединения). Результат будет примерно следующим:

<html> <head> <meta name="description" content="content" /> </head> <body> <div>div content</div> </body> </html>

Html/xml ноды удобны для быстрого создания прототипов, но для реальных проектов лучше использовать готовые шаблоны.

Работа с базой данных

Инструменты для работы с базой данных MySQL

Редактор Mooha содержит встроенный набор базовых инструментов для управления таблицами базы данных MySQL. Во вкладке TABLES панели свойств отображается список всех таблиц базы данных, к которой создано подключение (вкладка PROJECT PROPS панели свойств).

Чтобы создать новую таблицу, нужно нажать кнопку Add Table.

Чтобы редактировать структуру уже созданной таблицы, просмотреть или отредактировать данные, очистить или удалить таблицу, необходимо кликнуть правой кнопкой мыши на нужной таблице в списке и выбрать соответствующий пункт контекстного меню.

Запросы к базе данных в контексте выполнения скрипта создаются с помощью специальных табличных нод, а также нод SQL-модификаторов, которые находятся в категории processing > DB. Подробнее о создании запросов в разделе Построение SQL инструкций.

Все сгенерированные скрипты используют PDO.

Построение SQL инструкций

Базовый запрос к таблице создается с помощью специальной табличной ноды. Добавить ее на рабочее поле редактора можно либо из списка таблиц во вкладке TABLES панели свойств (двойной щелчек на таблице), либо выбрав таблицу из категории data > DB > tables главного контекстного меню редактора.

Табличная нода состоит из списка всех полей этой таблицы и специального поля *. Такая нода создает базовый SQL запрос. Тип запроса, который меняется в параметрах ноды, может принимать значения SELECT, INSERT, UPDATE и DELETE (по умолчанию - SELECT). В зависимости от выбранного типа запроса, меняется количество входящих и исходящих соединений табличной ноды.

Запрос SELECT

При выборе этого типа запроса напротив каждого поля таблицы появится коннектор для исходящего соединения. Подключение к полю таблицы выведет в поток все значения этого поля в виде массива. Подключение к полю * - выведет массив объектов всех полей таблицы.

Возьмем для примера следующую таблицу users:

CREATE TABLE `users` (
`id` int(10),
`Name` varchar(200),
`Birthday` date,
);

INSERT INTO `users` (`id`, `Name`, `Birthday`) VALUES
(1, 'Jack', '1978-12-20'),
(2, 'Michael', '1981-02-04'),
(3, 'Bill', '1984-05-11');

Создадим подключение к полю Name:

На выходе получим массив ["Jack", "Michael", "Bill"].

Подключение к полю *:

Получим массив объектов в JSON формате:

[ { "id":"1", "Name":"Jack", "Birthday":"1978-12-20" }, { "id":"2", "Name":"Michael", "Birthday":"1981-02-04" }, { "id":"3", "Name":"Bill", "Birthday":"1984-05-11" } ]

Для того, чтобы добавить дополнительные инструкции в наш запрос, можно воспользоваться специальными нодами - SQL-модификаторами (категория processing > DB). Рассмотрим следующий пример:

Выполнится следующий запрос:

SELECT * FROM `users` WHERE (`id` > '1' AND `Birthday` BETWEEN '1981-01-01' AND '1985-01-01') ORDER BY `id` DESC;

Для упрощения объяснения переменные вписаны прямо в запрос, но вообще в редакторе используется PDO, а переменные передаются через placeholder’ы. Результат выполнения будет таким:

[ { "id":"3", "Name":"Bill", "Birthday":"1984-05-11" }, { "id":"2", "Name":"Michael", "Birthday":"1981-02-04" } ]

Теперь рассмотрим подробнее построение этой конструкции.

Нода CONDITION отвечает за операции сравнения в запросе. В параметрах ноды выбирается оператор сравнения (например, > - больше). Подключение одного коннектора к полю id, а другого к переменной 1 (со значением 1) добавляет к WHERE инструкции следующее выражение: `id` > '1'.

Аналогично строится выражение "`Birthday` BETWEEN '1981-01-01' AND '1985-01-01'" с помощью SQL-модификатора BETWEEN.

Обратите внимание на ноду AND. Помимо того, что она создает логический оператор AND в инструкции WHERE, она также добавляет дополнительные инструкции в SQL запрос, такие как ORDER BY и LIMIT.

Объединение таблиц (инструкция JOIN) может быть реализовано следующим способом:

Нода CONDITION подключается к полям * двух таблиц, после чего в ее параметрах появляется возможность выбрать тип объединения и ввести строку для инструкции ON.

Запрос INSERT

В режиме INSERT табличная нода имеет входящие соединения для полей таблицы, а также одно исходящее соединение для получения id добавленной записи. Рассмотрим пример:

Выполнится следующий запрос:

INSERT INTO `users` (`id`, `Name`, `Birthday`) VALUES ('4', 'Tom', '1976-11-04');

В исходящую ноду выведется значение 4.

Но следует обратить внимание на то, что в режиме редактора вставка данных в таблицу произведена не будет, это произойдет только при запуске скрипта в рабочем режиме. Это касается таких типов запросов, как INSERT, UPDATE и DELETE, которые приводят к модификации данных в таблице. Чтобы такой запрос не изменяя данных все-таки выводил значение, можно воспользоваться вкладкой Emulate Result, в которой есть возможность указать тестовое значение результата для использования его в потоке.

Запрос UPDATE

При этом типе запроса, помимо входящих соединений для полей таблицы, нода имеет еще один входящий коннектор condition для условия, при котором выполнится обновление строк.

В этот коннектор можно подключить строковую переменную с инструкцией WHERE, либо собранную конструкцию из SQL-модификаторов. Пример обновления с применением SQL-модификатора:

Для того, чтобы переменная id интерпретировалась в запросе, как поле таблицы, в параметре Data Type этой ноды нужно выбрать значение field. Запрос, построенный в этой схеме, будет выглядеть так:

UPDATE `users` SET `Name` = 'Tom' WHERE `id` = '1';

Выходящее соединение выведет количество обновленных записей (affected rows). Как и INSERT запросе в режиме редактора данные таблицы обновлены не будут.

Запрос DELETE

Нода для запроса DELETE содержит одно входящее соединение для условия (condition), и одно исходящее для вывода результата (количество удаленных записей). Условие работает по аналогии с запросом UPDATE (строковая переменная с WHERE условием или собранная из SQL-модификаторов инструкция).

Пользовательский SQL запрос

Специальная нода SQL (раздел processing > DB) позволяет создавать пользовательские запросы к базе данных. Входящее соединение этой ноды принимает набор placeholder`ов в виде json объекта либо ассоциативного массива. Имена этих placeholder`ов можно использовать внутри пользовательской SQL инструкции.

Например, в этой схеме переменная placeholders, у которой Data Type установлен в json, содержит такие данные:

{":id":"1", ":date":"1984-01-01"}

А значение ноды SQL следующее:

SELECT * FROM `users` WHERE `id`>:id AND `Birthday`<:date

Нода SQL, как и запросы типа INSERT, UPDATE и DELETE не будет выполняться в режиме редактора, поскольку может содержать запросы, которые модифицируют данные в таблицах. Но при необходимости, во вкладке Execute есть возможность включить выполнение этой ноды и в самом редакторе.

Экспорт/Импорт

В редакторе предусмотрена возможность создавать наборы (ассеты) элементов для экспорта и импорта в другие проекты. Такие наборы могут содержать:

  • скрипты
  • функции
  • таблицы
  • любые связанные с проектом файлы (классы, сниппеты, темплейты и т.д.)

Инструменты для экспорта/импорта находятся во вкладке PROJECT PROPS панели свойств, вкладка Export/Import.

Для того, чтобы создать свой ассет, нужно нажать на кнопку Export Asset, после чего, в открывшемся окне экспорта выбрать из списков необходимые элементы, которые будут добавлены в ассет.

Раздел EXPORT TO FILE позволяет сохранить ассет локально. Из раздела EXPORT TO LIBRARY можно загрузить ассет в открытую библиотеку, где он станет доступен всем пользователям редактора Mooha.

Чтобы импортировть ассет из локального файла, нужно выбрать файл в разделе IMPORT ASSET FROM FILE и нажать кнопку Import.

Чтобы импортировать ассет из открытой библитеки, нужно нажать на кнопку Open Asset Library, а затем, воспользовавшись поиском в открывшемся окне, найти нужный ассет.

Другие инструменты

Копирование по массиву или объекту (Нода Copy)

Еще одним удобным инструментом для работы с шаблонами является нода Copy. Она позволяет клонировать потоки (например, заготовленные шаблоны) по массиву или по объекту, заменяя нужные данные значениями из источника копирования.

Рассмотрим следующий пример:

Нода array - переменная, которая содержит массив ["John", "Bill", "Tom"].
Нода template - строковая переменная, которая содержит html код <p>Hello, %user%!</p>.

В ноде template создан Placeholder со значением %user%, который мы планируем заменять значениями из массива:

Нода array подключается к ноде Copy через соединение data, нода template - через соединение component.

Как только любая нода подключается к соединению component ноды Copy, в параметрах этой ноды появляется дополнительная вкладка Copy. В этой вкладке происходит управление данными, которые будут заменены значениями из массива.

Вот так выглядит вкладка Copy ноды template:

Здесь создано одно правило для копирования. В первом поле driver указано нода Copy, которая активирует процесс копирования, в поле attribute - элемент, который будет заменен (это может быть атрибут ноды, либо созданный заранее placeholder). В нашем случае это %user%.

Результатом выполнения потока будет следующий html код:

<p>Hello, John!</p>
<p>Hello, Bill!</p>
<p>Hello, Tom!</p>

Поле filter во вкладке Copy позволяет фильтровать данные, если копирование происходит по массиву, содержащему объекты. Синтаксис для строки фильтра описан в разделе JSON фильтр.

Например, если бы переменная template содержала значение <p>Hello, %user%! You are %age%.</p>, а данные в переменной array были следующими:

[ { "Name": "John", "Age": "34", }, { "Name": "Bill", "Age": "28", }, { "Name": "Top", "Age": "39", } ]

В этом случае, мы можем добавить в переменную template новый placeholder со значением %age%, а во вкладке Copy создадим следующие правила:

Результатом будет следующий html код:

<p>Hello, John! You are 34.</p>
<p>Hello, Bill! You are 28.</p>
<p>Hello, Tom! You are 39.</p>

JSON фильтр

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

Строка фильтра используется в следующих нодах:

  1. JSON Filter
  2. Copy с параметром Merge Type, установленным в Object (object data as property)
  3. Во всех других нодах, которые копируются с помощью ноды Copy (вкладка Copy, поле template object)

Строка фильтра состоит из условий, разделенных точкой. Точка является разделителем уровней JSON дерева. Каждое условие применяется к соответствующему уровню в структуре JSON. В качестве условия могут использоваться свойства объектов, фильтры для массива, а также выражения с использованием специальных переменных.

Для примера построим следующую схему:

Products - переменная (нода VAR), у которой параметр Data Type установлен в json, Editor Type установлен в textarea, а само значение переменной следующее:

{ "Products": [ { "Name": "Pink Floyd", "Album": "The Best Of Pink Floyd: A Foot In The Door", }, { "Name": "Depeche Mode", "Album": "A Question Of Time", }, { "Name": "Aphex Twin", "Album": "I Care Because You Do", }, { "Name": "Daft Punk", "Album": "Discovery", }, { "Name": "Gorillaz", "Album": "Plastic Beach", } ] }


Таблица примеров фильтрации JSON данных:

Описание Строка фильтра Результат
Доступ к элементам через свойства объектов. Products.Name [ "Pink Floyd", "Depeche Mode", "Aphex Twin", "Daft Punk", "Gorillaz" ]
Доступ к элементу массива по индексу. Products.[3] { "Name": "Daft Punk", "Album": "Discovery" }
Доступ к нескольким элементам массива перечислением индексов. Products.Name.[0,1,3] [ "Pink Floyd", "Depeche Mode", "Daft Punk" ]
Доступ к нескольким элементам массива, используя диапазон индексов. Products.Name.[1-3] [ "Depeche Mode", "Aphex Twin", "Daft Punk" ]
Исключение элемента массива по индексу. Products.Name.[!2] [ "Pink Floyd", "Depeche Mode", "Daft Punk", "Gorillaz" ]
Доступ к элементам по диапазону и отдельному индексу. Products.Name.[0-2, 4] [ "Pink Floyd", "Depeche Mode", "Aphex Twin", "Gorillaz" ]
Доступ к элементам по диапазону индексов, исключая один элемент. Products.Name.[0-3 ^1] [ "Pink Floyd", "Aphex Twin", "Daft Punk" ]
Использование специальных переменных и выражений
Вычисляется выражение в круглых скобках, где @len - количество элементов в массиве. Products.Name.[(@len-2)] [ "Daft Punk" ]
Доступ по индексу, совмещенный с выражением, в котором @val - значение элемента. Products.Name.[0, (@val=='Gorillaz')] [ "Pink Floyd", "Gorillaz" ]
Выражение, с участием свойства объекта. Products.[(@Album=="Plastic Beach")].Name [ "Gorillaz" ]

Справочник по нодам

Таблица нод

Название Категория Описание
VARdataПеременная
URLdataПолучение данных по URL запросу
CLASSdataСоздание экземпляра класса.
INCLUDEdataВыполнение любого другого скрипта внутри схемы.
INSTANCEdataСоздание копии уже существующей переменной.
TABLEdata > DB > tablesЗапрос к таблице из базы данных.
GLOBALSdataНабор нод для глобальных переменных.
TEMPLATEdataВывод содержимого темплейта.
Copyprocessing > LogicКопирование компонентов по массиву или объекту.
Switchprocessing > LogicПереключатель потоков.
Compareprocessing > LogicСравнение двух потоков.
Logicalprocessing > LogicВыполнение логического оператора.
NOTprocessing > LogicЛогический оператор NOT (!).
Catchprocessing > LogicОбработчик ошибок.
Catch Boolprocessing > LogicОбработчик ошибок. Возвращает булевый результат.
JSON Filterprocessing > JSONФильтр JSON потока.
String to JSONprocessing > JSONПреобразование строкового значения в JSON объект.
JSON to Stringprocessing > JSONПреобразование JSON объекта в строку.
XML to JSONprocessing > JSONПреобразование XML данных в JSON формат.
ANDprocessing > DBSQL-модификатор. Добавляет логический оператор AND сравнения в выражение WHERE, либо объединяет несколько SQL инструкций.
ORprocessing > DBSQL-модификатор. Добавляет логический оператор OR сравнения в выражение WHERE.
CONDITIONprocessing > DBSQL-модификатор. Добавляет оператор сравнения в выражение WHERE.
IS NOT NULLprocessing > DBSQL-модификатор. Добавляет выражение IS NOT NULL в условие WHERE.
IS NULLprocessing > DBSQL-модификатор. Добавляет выражение IS NULL в условие WHERE.
BETWEENprocessing > DBSQL-модификатор. Добавляет выражение BETWEEN в условие WHERE.
NOT BETWEENprocessing > DBSQL-модификатор. Добавляет выражение NOT BETWEEN в условие WHERE.
ORDERprocessing > DBSQL-модификатор. Добавляет инструкцию ORDER BY в SQL запрос.
LIMITprocessing > DBSQL-модификатор. Добавляет инструкцию LIMIT в SQL запрос.
SQLprocessing > DBСоздание пользовательского SQL запроса.
ArithmeticprocessingАрифметический оператор.
FunctionprocessingВыполнение функции.
MethodprocessingВыполнение метода класса.
EvalprocessingВыполнение произвольного кода, переданного строкой во входящее соединение.
ExecserviceДобавление потока в очередь выполнения.
GroupserviceСоздание группы (слоя), в которую можно помещать нодовые схемы.
MergeserviceСоединение значений из потоков с помощью конкатенации с возможностью сортировки этих значений в результирующей строке.
CommentserviceВывод комментария в виде ноды.
CodeserviceПроизвольный php код, выполняемый в потоке.
TraceoutputВывод значения потока с помощью функции var_dump. Работает только в режиме замыкания.
PrintoutputВывод на экран значения потока.
FileoutputСохранение значения потока в файл.
MailoutputОтправка email.
script inputscript i/oТрансляция потока из входящего соединения ноды INCLUDE при подключении текущего скрипта.
script outputscript i/oТрансляция потока в исходящее соединение ноды INCLUDE при подключении текущего скрипта.
group inputgroup i/oТрансляция потока в группу, подключенного к входящему соединению ноды Group.
group outputgroup i/oТрансляция потока из группы в исходящее соединение ноды Group.

Описание нод

VAR

Категория:data

Описание:Создание переменной заданного типа

Исходящие соединения:
data (mixed)Значение переменной.

Параметры:
Data TypeТип переменной.
Input On/OffУправление возможностью принимать значение переменной из входящего соединения.
Editor TypeТип встроенного редактора для управления значением переменной. Значения параметра:
textbox - обычное однострочное текстовое поле
textarea - многострочное текстовое поле
html code editor - html редактор с подстветкой тэгов
slider (number) - управление диапазоном значений с возможностью установки стартового значения, конечного значения и шага
select - возможность создания выпадающего списка со значениями
ValueРедактор значения переменной.

URL

Категория:data

Описание:Получение данных из файла. Выполнение функции file_get_contents

Исходящие соединения:
data (string)Полученное значение.

Параметры:
UrlПуть к локальному или удаленному файлу. Чтобы использовать в адресе путь к корневой директории проекта, используется @root.

CLASS

Категория:data

Описание:Создание экземпляра класса

Исходящие соединения:
class (class)Переменная класса.

Параметры:
Class TypeВыбор типа класса.
Mooha Classes - пользовательские классы, помещенные в директорию mooha_data/classes.
Other Classes - встроенные классы PHP.
Class FileФайл из директории mooha_data/classes. Доступно, если выбран тип Mooha Classes.
ClassВстроенный класс PHP. Доступно, если выбран тип Other Classes.
Add ArgumentДобавление аргументов, которые будут передаваться в конструктор класса.
inputИспользование коннектора для получения значения. Доступно в добавляемых аргументах.
by refПередача агрумента по ссылке. Для вывода значения аргумента добавляется исходящий коннектор. Доступно в добавляемых аргументах.

INCLUDE

Категория:data

Описание: Подключение скрипта. Выполнение функции include.
Если подключаемый скрипт содержит ноды script in или script out, в родительской ноде появится соответствующее количесто входящих и исходящих коннекторов.

Исходящие соединения:
exec (null)Коннектор используется для инициализации ноды в потоке.

Параметры:
Include Mooha ScriptВыбор подключаемого скрипта.

INSTANCE

Категория:data

Описание: Клонирование переменной для доступа к ее значению в разных потоках.
В PHP коде - просто обращение к переменной.

Исходящие соединения:
data (mixed)Значение переменной.

Параметры:
Instance OfВыбор переменной для доступа к значению. Список состоит из всех переменных и классов скрипта, включая скрипты, подключенные через ноду INCLUDE

TABLE

Категория:data > DB > tables

Описание: Создание запроса к таблице базы данных.

Тип запроса: SELECT

SELECT запрос к таблице базы данных. По умолчанию выводит массив всех значений поля, к которому подключен поток. Поле со знаком * выводит все записи из таблицы в виде массива объектов в JSON формате.
Чтобы изменять SQL инструкцию запроса к базе данных, можно использовать специальные ноды из категории processing > DB. Подробнее в разделе "Построение SQL инструкций"

Исходящие соединения:
field 1 (array)
field 2 (array)
...
field n (array)
Массив всех значений поля таблицы, для которого создано подключение.
* (array)Массив объектов всех записей таблицы.

Тип запроса: INSERT

INSERT запрос к таблице базы данных. Добавляет строку в таблицу базы данных используя подключенные к полям значения.

Входящие соединения:
field 1 (array)
field 2 (array)
...
field n (array)
Добавляемые значения полей.

Исходящие соединения:
result (integer)ID новой записи.

Тип запроса: UPDATE

UPDATE запрос к таблице базы данных. Обновляет строки таблицы базы данных используя подключенные к полям значения. В качестве условия для инструкции WHERE могут приниматься как строковые переменные, так и построенные конструкции из SQL нод. (подробнее в разделе "Построение SQL инструкций")

Входящие соединения:
condition (mixed)Условие выполнения запроса (инструкция WHERE). Может приниматься строка условия, либо специальная конструкция из SQL нод.
field 1 (array)
field 2 (array)
...
field n (array)
Новые значения полей.

Исходящие соединения:
result (integer)Количество обработанных записей.

Тип запроса: DELETE

DELETE запрос к таблице базы данных. Удаляет строки из таблицы базы данных. В качестве условия для инструкции WHERE могут приниматься как строковые переменные, так и построенные конструкции из SQL нод (подробнее в разделе "Построение SQL инструкций").

Входящие соединения:
condition (mixed)Условие выполнения запроса (инструкция WHERE). Может приниматься строка условия, либо специальная конструкция из SQL нод.

Исходящие соединения:
result (integer)Количество обработанных записей.

Параметры:
Query TypeТип создаваемого запроса (SELECT, INSERT, UPDATE, DELETE).
Emulate Result
(only in development mode)
Для запросов INSERT, UPDATE и DELETE возможно указание возвращаемого значения из коннектора result, поскольку в режиме разработки (development mode) запросы не выполняются.

GLOBALS

Категория:data

Описание: Глобальные переменные $_SERVER, $_FILES, $_COOKIE, $_SESSION, $_REQUEST, $_ENV.

Исходящие соединения:
data (mixed)Значение переменной.

Параметры:
KeyКлюч в массиве глобальной переменной.

TEMPLATE

Категория:data

Описание: Вывод шаблона из файла.

Исходящие соединения:
data (string)Содержимое файла шаблона.

Параметры:
Template FileФайл шаблона (в списке выводятся все файлы шаблонов из директории mooha_data/templates с расширением 'tpl').

Copy

Категория:processing > Logic

Описание: Копирование компонентов по массиву или объекту. Подробнее о копировании компонентов в разделе Копирование по массиву или объекту

Входящие соединения:
data (array, object)Массив или объект, по которому будет копироваться компонент и значения которого могут быть использованы в "размноженных" компонентах
component (mixed)Компонент (весь входящий поток), который будет скопирован столько раз, сколько элементов находится в массиве или объекте, пришедшем в соединение data. После подключения потока к этому соединению, у всех нод потока появляется дополнительная вкладка Copy, в которой можно управлять выводимой информацией из массива или объекта, по которому происходит копирование. Поробнее об управлении копируемыми объектами в разделе Копирование по массиву или объекту

Исходящие соединения:
data (mixed)Результат копирования.

Параметры:
TypeМетод копирования.
foreach - используется входящий в соединение data массив или объект.
for - для копирования используется инкремент с параметрами start, stop и step.
startНачальное значение инкремента. Доступно для типа for. Может выводиться для входящего подключения.
stopКонечное значение инкремента. Доступно для типа for. Может выводиться для входящего подключения.
stepШаг инкремента. Доступно для типа for. Может выводиться для входящего подключения.
Increment TypeТип инкремента (возрастающий или убывающий). Доступно для типа for.
Merge TypeТип соединения копируемых элементов.
Concat - объединение элементов в строку.
Array - возвращение массива из "размноженных" элементов.
Object (index as property) - возвращение объекта, в котором индекс записи помещается в название поля.
Object (object data as property) - работает только с массивом объектов в качестве источника копирования. Необходимо указать название свойства объекта источника в поле Filter, значение которого будет помещено в название свойста нового объекта.
Filter
(path to property)
Путь к свойству объекта (источника копирования), значения которого будут использованы для названия свойств нового объекта.

Switch

Категория:processing > Logic

Описание: Переключатель потоков. Каждому потоку в ноде присваивается значение (case), которое сравнивается со значением из соединения condition. Выполняется тот поток, case которого соответствует значению из condition. Если совпадений нет - выполняется поток default

Входящие соединения:
switchСоединение для потока, с которым будут сравниваться все присвоенные потокам значения.
case 1
case 2
...
case n
Коннекторы для потоков.
defaultКоннектор для потока, который выполняется по умолчанию, если условие не совпало ни с одним из присвоенных значений.

Исходящие соединения:
data (mixed)Значение выполняемого потока.

Параметры:
case 1
case 2
...
case n
Значения, присваиваемые потокам.

Compare

Категория:processing > Logic

Описание: Сравнение значений двух потоков

Входящие соединения:
data 1Первый поток для сравнения
data 2Второй поток для сравнения

Исходящие соединения:
data (bool)Результат операции сравнения.

Параметры:
OperatorОператор сравнения
Input 1Ручной ввод первого значения для сравнения (для активации необходимо выключить чекбокс над полем)
Input 2Ручной ввод второго значения для сравнения (для активации необходимо выключить чекбокс над полем)

Logical

Категория:processing > Logic

Описание: Логический оператор

Входящие соединения:
emptyСоединение для сравнения. Количество соединений неограничено. При подключении добавляется новое свободное соединение.

Исходящие соединения:
data (bool)Результат работы логического оператора.

Параметры:
OperatorВыбор логического оператора (AND, OR, XOR, NAND, NOR, NXOR)

NOT

Категория:processing > Logic

Описание: Логическое NOT. Инвертирует булевое значение.

Входящие соединения:
data (bool)Соединение для значения, которое будет инвертировано.

Исходящие соединения:
data (bool)Результат работы логического оператора.

Catch

Категория:processing > Logic

Описание: Обработчик ошибок. Возвращает массив с данными о последней ошибке в потоке, или false - если ошибок не было.

Входящие соединения:
data (mixed)Соединение для потока, в котором будет проверяться наличие ошибок.

Исходящие соединения:
data (mixed)Если ошибок не было - возвращает false.
Если ошибка была, возвращает массив с описанием последней ошибки в этом потоке. Массив будет состоять из следующих данных:
[0] - номер ошибки
[1] - текст описания ошибки
[2] - файл, в котором произошла ошибка
[3] - номер строки с ошибкой

Catch Bool

Категория:processing > Logic

Описание: Обработчик ошибок. Возвращает true при возникновении ошибки в потоке, false - если ошибок не было.

Входящие соединения:
data (mixed)Соединение для потока, в котором будет проверяться наличие ошибок.

Исходящие соединения:
data (bool)true - были ошибки в потоке.
false - ошибок в потоке не было.

JSON Filter

Категория:processing > JSON

Описание: Фильтр JSON потока.

Входящие соединения:
data (json)Соединение для JSON данных, которые будут фильтроваться.

Исходящие соединения:
data (json)JSON данные после применения фильтра.

Параметры:
FilterСтрока фильтра. Включение чекбокса над полем дает возможность заменить строку данными из входящего соединения.
Подробнее о строке фильтра в разделе JSON фильтр

String To JSON

Категория:processing > JSON

Описание: Преобразование строкового значения в JSON объект.

Входящие соединения:
data (string)Соединение для строки, которая будет преобразована в JSON.

Исходящие соединения:
data (json)Данные в JSON формате.

JSON To String

Категория:processing > JSON

Описание: Преобразование JSON объекта в строку.

Входящие соединения:
data (json)Соединение для JSON объекта, которое будет преобразовано в строку.

Исходящие соединения:
data (string)Преобразованные в строку JSON данные.

XML To JSON

Категория:processing > JSON

Описание: Преобразование XML данных в JSON формат.

Входящие соединения:
data (xml)Соединение для XML данных, которые будут преобразованы в JSON.

Исходящие соединения:
data (json)Данные в JSON формате.

AND

Категория:processing > DB

Описание: SQL-модификатор. Добавляет логический оператор AND сравнения в выражение WHERE, либо объединяет несколько SQL инструкций. Подробнее в разделе "Построение SQL инструкций"

Входящие соединения:
emptyСоединения для других SQL-модификаторов. Количество соединений неограничено. При подключении добавляется новое свободное соединение.

Исходящие соединения:
dataSQL инструкция.

OR

Категория:processing > DB

Описание: SQL-модификатор. Добавляет логический оператор OR сравнения в выражение WHERE. Подробнее в разделе "Построение SQL инструкций"

Входящие соединения:
emptyСоединения для других SQL-модификаторов. Количество соединений неограничено. При подключении добавляется новое свободное соединение.

Исходящие соединения:
dataSQL инструкция.

CONDITION

Категория:processing > DB

Описание: SQL-модификатор. Добавляет оператор сравнения в выражение WHERE. При подключении к полям (*) добавляет инструкцию объединения таблиц (JOIN). Подробнее в разделе "Построение SQL инструкций"

Входящие соединения:
data 1Первое соединение для поля таблицы или для переменной.
data 2Второе соединение для поля таблицы или для переменной.

Исходящие соединения:
dataSQL инструкция.

Параметры:
Input 1 <оператор> Input 2Оператор сравнения.
Input 1Значение для сравнения (если выключен соответствующий коннектор).
Input 2Значение для сравнения (если выключен соответствующий коннектор).
JOIN TYPEТип объединения в инструкции JOIN. Доступно, если входящие соединения подключены к полям *.
ON ConditionСтрока для выражения ON в объединении таблиц. В качестве алиасов названий таблиц используются t0, t1, t2 и т.д.. Доступно, если входящие соединения подключены к полям *.

IS NOT NULL

Категория:processing > DB

Описание: SQL-модификатор. Добавляет выражение IS NOT NULL в условие WHERE.

Входящие соединения:
inputСоединение для поля таблицы, с участием которого будет построено выражение.

Исходящие соединения:
dataSQL инструкция.

Параметры:
InputЗначение для выражения (если выключен соответствующий коннектор).

IS NULL

Категория:processing > DB

Описание: SQL-модификатор. Добавляет выражение IS NULL в условие WHERE.

Входящие соединения:
inputСоединение для поля таблицы, с участием которого будет построено выражение.

Исходящие соединения:
dataSQL инструкция.

Параметры:
InputЗначение для выражения (если выключен соответствующий коннектор).

BETWEEN

Категория:processing > DB

Описание: SQL-модификатор. Добавляет выражение BETWEEN в условие WHERE.

Входящие соединения:
dataСоединение для поля таблицы, с участием которого будет построено выражение.
data1Соединение для первого значения в выражении BETWEEN.
data2Соединение для второго значения в выражении BETWEEN.

Исходящие соединения:
dataSQL инструкция.

Параметры:
FieldЗначение, к которому применяется условие BETWEEN (если выключен соответствующий коннектор). Чтобы указать поле таблицы, нужно заключить значение в кавычки ``.
Input 1Первое значение в выражении BETWEEN (если выключен соответствующий коннектор).
Input 2Второе значение в выражении BETWEEN (если выключен соответствующий коннектор).

NOT BETWEEN

Категория:processing > DB

Описание: SQL-модификатор. Добавляет выражение NOT BETWEEN в условие WHERE.

Входящие соединения:
dataСоединение для поля таблицы, с участием которого будет построено выражение.
data1Соединение для первого значения в выражении NOT BETWEEN.
data2Соединение для второго значения в выражении NOT BETWEEN.

Исходящие соединения:
dataSQL инструкция.

Параметры:
FieldЗначение, к которому применяется условие NOT BETWEEN (если выключен соответствующий коннектор). Чтобы указать поле таблицы, нужно заключить значение в кавычки ``.
Input 1Первое значение в выражении NOT BETWEEN (если выключен соответствующий коннектор).
Input 2Второе значение в выражении NOT BETWEEN (если выключен соответствующий коннектор).

ORDER

Категория:processing > DB

Описание: SQL-модификатор. Добавляет инструкцию ORDER BY в SQL запрос.

Входящие соединения:
dataСоединение для поля таблицы, для которого будет добавлена инструкция ORDER BY.

Исходящие соединения:
dataSQL инструкция.

Параметры:
Order TypeТип сортировки (по возрастанию или по убыванию).

LIMIT

Категория:processing > DB

Описание: SQL-модификатор. Добавляет инструкцию LIMIT в SQL запрос.

Входящие соединения:
dataСоединение для потока из SQL-модификаторов или для поля таблицы (может быть подключен в любом месте SQL потока).

Исходящие соединения:
dataSQL инструкция.

Параметры:
OffsetИндекс записи, с которой начинать вывод результатов запроса (возможен вывод в качестве соединения).
CountКоличество выводимых записей (возможен вывод в качестве соединения).

SQL

Категория:processing > DB

Описание: Создание пользовательского SQL запроса. Подробнее в разделе "Пользовательский SQL запрос"

Входящие соединения:
placeholders (array | json)JSON объект или ассоциативный массив, содержащий набор placeholder`ов для SQL выражения.

Исходящие соединения:
dataРезультат выполнения запроса.

Параметры:
SQL EditorПоле для ввода пользовательского SQL запроса.
Enable executing in design modeВозможность включения выполнения запроса в режиме редактора. Подробнее в разделе "Пользовательский SQL запрос".
Emulate Result
(only in development mode)
Для запросов INSERT, UPDATE и DELETE возможно указание возвращаемого значения из коннектора result.

Arithmetic

Категория:processing

Описание: Арифметический оператор.

Входящие соединения:
emptyСоединение, принимающее значение для операции. Количество соединений неограничено. При подключении добавляется новое свободное соединение.

Исходящие соединения:
dataРезультат выполнение арифметической операции.

Параметры:
OperationВыбор арифметической операции.

Function

Категория:processing

Описание: Выполнение функции. Подробнее о работе с функциями в разделе "Работа с функциями".

Входящие соединения:
arg 1
arg 2
...
arg 3
Количество аргументов зависит от выбранной в параметрах ноды функции.

Исходящие соединения:
return (mixed)Результат выполнение функции.

Параметры:
Function TypeТип функции:
Mooha Function - пользовательская функция
Other Function - стандартная php функция
FunctionВыбор функции
Add ArgumentДобавление аргумента для функции. Подробнее в разделе "Работа с функциями"

Method

Категория:processing

Описание: Выполнение метода класса. Подробнее в разделе "Методы класса".

Входящие соединения:
class (class)Соединение для подключения экземпляра класса.
arg 1
arg 2
...
arg 3
Количество аргументов зависит от выбранного метода в параметрах ноды.

Исходящие соединения:
class (class)Возвращает экземпляр класса, метод которого выполнился.
return (mixed)Результат выполнение метода.

Параметры:
Class InstanceСписок из всех экземпляров классов, которые присутствуют в скрипте. Выбор значения в этом списке заменяет подключение класса через соединение.
Class MethodВыбор метода из подключенного класса.
Add ArgumentДобавление агрумента в метод класса. Подробнее в разделе "Методы класса".

Eval

Категория:processing

Описание: Выполнение произвольного кода, переданного строкой во входящее соединение.

Входящие соединения:
data (string)Соединение для строки, которая будет выполнена.

Исходящие соединения:
nullПодключение для выполнения ноды в потоке.

Exec

Категория:service

Описание: Добавление потока в очередь выполнения. Подробнее об очереди выполнения в разделе "Очередь потоков и замыкания"

Входящие соединения:
data (mixed)Соединение для потока, который будет добавлен в очередь выполнения.

Параметры:
Number in a queueПорядковый номер (индекс) выполнения потока в очереди.

Group

Категория:service

Описание: Создание группы (слоя), в которую можно помещать нодовые схемы. Подробнее о создании и управлении группами в разделе "Группы".

Параметры:
Add ParameterВывод в параметры группы переменных из схем внутри этой группы. Подробнее в разделе "Вывод переменных в параметры группы".

Merge

Категория:service

Описание: Соединение значений из потоков с помощью конкатенации с возможностью сортировки этих значений в результирующей строке.

Входящие соединения:
data (mixed)Соединение для входящих потоков.

Исходящие соединения:
data (mixed)Результат конкатенации потоков.

Параметры:
Input SortingСписок подключенных потоков с возможностью drug&drop сортировки.

Comment

Категория:service

Описание: Вывод комментария в виде ноды.

Параметры:
CommentТекст комментария.

Code

Категория:service

Описание: Произвольный php код, выполняемый в потоке.

Исходящие соединения:
data (null)Соединение для инициализации ноды в потоке.

Параметры:
New Output VariableСоздание переменной для исходящего соединения. Для этого переменная должна быть создана в коде ноды. Ее значение будет передаваться в соответствующий коннектор.

Trace

Категория:output

Описание: Вывод значения потока с помощью функции var_dump. Используется для отладки и работает только в режиме замыкания (подробнее о замыканиях в разделе "Очередь потоков и замыкания")

Входящие соединения:
data (mixed)Соединение для потока, результат которого нужно вывести.

Print

Категория:output

Описание: Вывод на экран значения потока. Выполняется php функция print.

Входящие соединения:
data (mixed)Соединение для потока, результат которого нужно вывести.

Исходящие соединения:
data (int)Соединение для получения результата выполнения функции print - 1.

File

Категория:output

Описание: Сохранение значения потока в файл. Выполняется php функция file_put_contents. Если файл отсутствует - он будет создан.

Входящие соединения:
data (mixed)Соединение для потока, результат которого нужно сохранить в файл.

Исходящие соединения:
data (mixed)Соединение для получения результата выполнения функции file_put_contents - количества записанных в файл байт или false, в случае неудачи.

Параметры:
Path to FileПуть к файлу, в который будет записано значение из потока. В строке может быть использована переменная @root, которая является алиасом корневой директории проекта.
Append ModeЕсли чекбокс выключен - существующий файл будет заменен новым, если включен - значение потока добавится к существующему файлу.

Mail

Категория:output

Описание: Отправка email. Выполнение php функции mail.

Входящие соединения:
to (string)Email получателя сообщения.
subject (string)Тема сообщения.
message (string)Текст сообщения.

Исходящие соединения:
data (bool)Соединение для получения результата выполнения функции mail.

Параметры:
toEmail получателя сообщения. Доступно, если выключен соответствующий коннектор.
subjectТема сообщения. Доступно, если выключен соответствующий коннектор.
headerЗначение, передающееся в заголовок письма (параметр header функции mail).
messageТекст сообщения. Доступно, если выключен соответствующий коннектор.

script in

Категория:script i/o

Описание: Трансляция потока из входящего соединения ноды INCLUDE при подключении текущего скрипта.

Исходящие соединения:
data (mixed)Значение из соответствующего входящего соединения ноды INCLUDE.

script out

Категория:script i/o

Описание: Трансляция потока в исходящее соединение ноды INCLUDE при подключении текущего скрипта.

Входящие соединения:
data (mixed)Соединение, значение из которого передается в соответствующий исходящий коннектор ноды INCLUDE.

group input

Категория:group i/o

Описание: Трансляция потока в группу, подключенного к входящему соединению ноды Group.

Исходящие соединения:
data (mixed)Значение из соответствующего входящего соединения группы.

group output

Категория:group i/o

Описание: Трансляция потока из группы в исходящее соединение ноды Group.

Входящие соединения:
data (mixed)Соединение, значение из которого передается в соответствующий исходящий коннектор группы.

@ Mooha.net, 2014

mail.mooha@gmail.com