Best Atoum code snippet using template.hasChildren
dev_json.php
Source:dev_json.php  
...131            WHERE `Template_ID` = '" . $node_id . "'132            ORDER BY `Priority`, `Template_ID`", ARRAY_A);133        if (!empty($templates)):134            foreach ((array)$templates as $template) {135                $hasChildren = $db->get_var("SELECT COUNT(*) FROM `Template` WHERE `Parent_Template_ID` = '" . $template['Template_ID'] . "'");136                $ret[] = "template-" . $template['Template_ID'];137                $node_id = $template['Parent_Template_ID'];138            }139        else:140            $node_id = false;141        endif;142    }143    if (is_array($ret)):144        $ret = array_reverse($ret);145        array_pop($ret);146        print "while(1);" . nc_array_json($ret);147    endif;148    exit;149}150if ($_GET['action'] == 'get_path' && ($node_type == 'systemclass' || $node_type == 'systemfield') && $node_id) {151    if ($node_type == 'systemfield') {152        $row = $db->get_var("SELECT `System_Table_ID` FROM `Field` WHERE `Field_ID` = '" . $node_id . "'");153        $ret[] = "systemclass-" . $row['System_Table_ID'];154    }155    $ret = array_reverse($ret);156    print "while(1);" . nc_array_json($ret);157    exit;158}159$ret = array();160$ret_dev = array();161$ret_groups = array();162$ret_widgetgroups = array();163$ret_classes = array();164$ret_widgetclasses = array();165$ret_class_group = array();166$ret_class_templates = array();167$ret_fields = array();168$ret_widgetfields = array();169$ret_classificators = array();170$ret_system_class = array();171$ret_system_fields = array();172$ret_templates = array();173// СÑÑоим деÑево Ñаблонов174if ($node_type == 'root') {175    exit;176    //For each buttons make checking - access or no177    $classes_buttons[] = array(178        "image" => "icon_class_import",179        "label" => CONTROL_CLASS_IMPORT,180        "href" => "dataclass.import()"181    );182    $classes_buttons[] = array(183        "image" => "icon_class_add",184        "label" => CONTROL_CLASS_ADD,185        "href" => "dataclass.add()"186    );187    $widgetclasses_buttons[] = array(188        "image" => "icon_widgetclass_import",189        "label" => CONTROL_WIDGETCLASS_IMPORT,190        "href" => "widgetclass.import()"191    );192    $widgetclasses_buttons[] = array(193        "image" => "icon_widgetclass_add",194        "label" => CONTROL_WIDGETCLASS_ADD,195        "href" => "widgetclass.add()"196    );197    // Menu class198    if ($perm->isSupervisor() || $perm->isGuest()) {199        $ret_dev[] = array("nodeId" => "dataclass.list",200            "name" => SECTION_INDEX_DEV_CLASSES,201            "href" => "#dataclass.list",202            "image" => 'icon_classes',203            "hasChildren" => true,204            "dragEnabled" => false);205    }206    // Menu system tables207    if ($perm->isSupervisor() || $perm->isGuest()) {208        $ret_dev[] = array("nodeId" => "systemclass.list",209            "name" => SECTION_SECTIONS_OPTIONS_SYSTEM,210            "href" => "#systemclass.list",211            "sprite" => 'dev-system-tables' . ($File_Mode ? '' : '-v4'),212            "hasChildren" => true,213            "dragEnabled" => false);214    }215    // Menu template216    if ($perm->isSupervisor() || $perm->isGuest()) {217        $templates_buttons[] = array(218            "image" => "nc-icon nc--dev-templates-add nc--hovered",219            "label" => CONTROL_TEMPLATE_TEPL_CREATE,220            "href" => "template.add(0)"221        );222        $ret_dev[] = array(223            "nodeId" => "templates",224            "name" => SECTION_INDEX_DEV_TEMPLATES,225            "href" => "#template.list",226            "image" => 'dev-templates' . ($File_Mode ? '' : '-v4'),227            "hasChildren" => true,228            "dragEnabled" => false229        );230    }231    // Menu widget-class232    if ($perm->isSupervisor() || $perm->isGuest()) {233        $ret_dev[] = array("nodeId" => "widgetclass.list",234            "name" => SECTION_INDEX_DEV_WIDGET,235            "href" => "#widgetclass.list",236            "image" => 'icon_widgetclasses',237            "hasChildren" => true,238            "dragEnabled" => false);239    }240    // Menu classificator241    if ($perm->isAccess(NC_PERM_CLASSIFICATOR, NC_PERM_ACTION_LIST, 0, 0)) {242        if ($perm->isAccess(NC_PERM_CLASSIFICATOR, NC_PERM_ACTION_ADD, 0, 0)) {243            $classificators_buttons[] = array(244                "image" => "icon_classificator_import",245                "label" => CLASSIFICATORS_IMPORT_HEADER,246                "href" => "classificator.import()"247            );248            $classificators_buttons[] = array(249                "image" => "icon_classificator_add",250                "label" => CONTENT_CLASSIFICATORS_ADDLIST,251                "href" => "classificator.add()"252            );253        }254        $ret_dev[] = array(255            "nodeId" => "classificator.list",256            "name" => SECTION_CONTROL_CONTENT_CLASSIFICATOR,257            "href" => "#classificator.list",258            "image" => 'icon_classificators',259            "hasChildren" => true,260            "dragEnabled" => false261        );262    }263} // ÐеÑево Ñаблонов даннÑÑ
264elseif ($node_type == 'dataclass.list') {265    // ÐÑбоÑка гÑÑпп Ñаблонов266    $SQL = "SELECT `Class_Group`,267                   MD5(`Class_Group`) AS `Class_Group_md5`268                FROM `Class`269                    WHERE `System_Table_ID` = 0270                      AND `ClassTemplate` = 0271                      AND `File_Mode` = $File_Mode272                        GROUP BY `Class_Group`273                            ORDER BY `Class_Group`";274    $class_groups = $db->get_results($SQL, ARRAY_A);275    foreach ((array)$class_groups as $class_group) {276        $classgroup_buttons = array();277        $classgroup_buttons[] = nc_get_array_2json_button(278            CONTROL_CLASS_ADD,279            "dataclass$fs_suffix.add(" . $class_group['Class_Group_md5'] . ")",280            "nc-icon nc--dev-components-add nc--hovered"281        );282        $ret_groups[] = array(283            "nodeId" => "group-" . $class_group['Class_Group_md5'],284            "name" => $class_group["Class_Group"] ? $class_group["Class_Group"] : CONTROL_CLASS_CLASS_NO_GROUP,285            "href" => "#classgroup.edit(" . $class_group['Class_Group_md5'] . ")",286            "sprite" => 'dev-components' . ($File_Mode ? '' : '-v4'),287            "acceptDropFn" => "treeClassAcceptDrop",288            "onDropFn" => "treeClassOnDrop",289            "hasChildren" => true,290            "dragEnabled" => true,291            "buttons" => $classgroup_buttons292        );293    }294} elseif ($node_type == 'group' && $node_id) {295    // ÐÑбоÑка Ñаблонов опÑеделенной гÑÑппÑ296    $classes = $db->get_results("297        SELECT `Class_ID`,298               `Class_Name`,299               `ClassTemplate`300            FROM `Class`301                WHERE MD5(`Class_Group`) = '" . $node_id . "'302                  AND `File_Mode` = " . +$_REQUEST['fs'] . "303                  AND `System_Table_ID` = 0304                    ORDER BY `Class_Group`,305                             `Priority`, `Class_ID`", ARRAY_A);306    foreach ((array)$classes as $class) {307        // skip component templates308        if ($class['ClassTemplate']) continue;309        // count component fields310        $hasChildren = $db->get_var("SELECT COUNT(`Field_ID`) FROM `Field`311      WHERE `Class_ID` = '" . $class['Class_ID'] . "'");312        // count component templates313        if (!$hasChildren) {314            $hasChildren = $db->get_var("SELECT COUNT(`Class_ID`) FROM `Class`315        WHERE `ClassTemplate` = '" . $class['Class_ID'] . "'");316        }317        $class_buttons = array();318        $class_buttons[] = nc_get_array_2json_button(319            CONTROL_FIELD_LIST_ADD,320            "field$fs_suffix.add(" . $class['Class_ID'] . ")",321            "nc-icon nc--file-add nc--hovered");322        $class_buttons[] = nc_get_array_2json_button(323            CONTROL_CLASS_DELETE,324            "dataclass$fs_suffix.delete(" . $class['Class_ID'] . ")",325            "nc-icon nc--remove nc--hovered");326        $ret_classes[] = array(327            "nodeId" => "dataclass-" . $class['Class_ID'],328            "name" => $class["Class_ID"] . ". " . $class["Class_Name"],329            "href" => "#dataclass.edit(" . $class['Class_ID'] . ")",330            "sprite" => 'dev-components' . ($File_Mode ? '' : '-v4'),331            "acceptDropFn" => "treeClassAcceptDrop",332            "onDropFn" => "treeClassOnDrop",333            "hasChildren" => $hasChildren,334            "dragEnabled" => true,335            "buttons" => $class_buttons336        );337    }338} elseif ($node_type == 'dataclass' && $node_id) {339    // ÐÑбоÑка полей опÑеделенного Ñаблона340    $fields = $db->get_results("SELECT `Field_ID`, `Field_Name`, `TypeOfData_ID`, `Description`, `NotNull` FROM `Field`341    WHERE `Class_ID` = '" . $node_id . "' AND `System_Table_ID` = 0342    ORDER BY `Priority`", ARRAY_A);343    foreach ((array)$fields as $field) {344        $field_buttons = array();345        $field_buttons[] = nc_get_array_2json_button(346            CONTROL_FIELD_LIST_DELETE,347            "field$fs_suffix.delete(" . $node_id . "," . $field[Field_ID] . ")",348            "nc-icon nc--remove nc--hovered");349        $ret_fields[] = array(350            "nodeId" => "field-" . $field['Field_ID'],351            "name" => $field["Field_ID"] . ". " . $field["Field_Name"],352            "title" => $field["Description"],353            "href" => "#field.edit(" . $field['Field_ID'] . ")",354            "sprite" => $field_types[$field["TypeOfData_ID"]] . ($field['NotNull'] ? ' nc--required' : ''),355            "acceptDropFn" => "treeFieldAcceptDrop",356            "onDropFn" => "treeFieldOnDrop",357            "hasChildren" => false,358            "dragEnabled" => true,359            "buttons" => $field_buttons360        );361    }362    $hasTemplates = $db->get_var("SELECT COUNT(`Class_ID`) FROM `Class` WHERE `ClassTemplate` = '" . $node_id . "'");363    if ($hasTemplates) {364        $class_template_buttons = array();365        $class_template_buttons[] = nc_get_array_2json_button(366            CONTROL_CLASS_CLASS_TEMPLATE_ADD,367            "classtemplate$fs_suffix.add(" . $node_id . ")",368            "nc-icon nc--file-add nc--hovered");369        $ret_class_templates[] = array(370            "nodeId" => "classtemplates-" . $node_id,371            "name" => CONTROL_CLASS_CLASS_TEMPLATES,372            "href" => "#classtemplates.edit(" . $node_id . ")",373            "sprite" => 'dev-templates' . ($File_Mode ? '' : '-v4'),374            "acceptDropFn" => "treeClassAcceptDrop",375            "onDropFn" => "treeClassOnDrop",376            "hasChildren" => $hasTemplates,377            "dragEnabled" => false,378            "buttons" => $class_template_buttons);379    }380} // СпиÑок Ñаблонов компоненÑа381elseif ($node_type == 'classtemplates' && $node_id) {382    // get component templates383    $class_templates = $db->get_results("SELECT `Class_ID`, `Class_Name` FROM `Class`384    WHERE `ClassTemplate` = '" . $node_id . "'", ARRAY_A);385    foreach ((array)$class_templates as $class_template) {386        $class_templates_buttons = array();387        $class_templates_buttons[] = nc_get_array_2json_button(388            CONTROL_CLASS_DELETE,389            "classtemplate$fs_suffix.delete(" . $class_template['Class_ID'] . ")",390            "nc-icon nc--remove nc--hovered");391        $ret_class_templates[] = array(392            "nodeId" => "classtemplate-" . $class_template['Class_ID'],393            "name" => $class_template["Class_ID"] . ". " . $class_template["Class_Name"],394            "href" => "#classtemplate.edit(" . $class_template['Class_ID'] . ")",395            "sprite" => 'dev-templates' . ($File_Mode ? '' : '-v4'),396            "acceptDropFn" => "treeFieldAcceptDrop",397            "onDropFn" => "treeFieldOnDrop",398            "hasChildren" => false,399            "dragEnabled" => false,400            "buttons" => $class_templates_buttons401        );402    }403} // ÐеÑево ÑиÑÑемнÑÑ
 ÑаблиÑ404elseif ($node_type == 'systemclass.list') {405    // ÐÑбоÑка ÑиÑÑемнÑÑ
 ÑаблиÑ406    $system_classes = $db->get_results("SELECT a.`System_Table_ID`, a.`System_Table_Rus_Name`, b.`Class_ID`,407    IF(b.`AddTemplate` <> '' OR b.`AddCond` <> '' OR b.`AddActionTemplate` <> '', 1, 0) AS IsAdd,408    IF(b.`EditTemplate` <> '' OR b.`EditCond` <> '' OR b.`EditActionTemplate` <> '' OR b.`CheckActionTemplate` <> '' OR b.`DeleteActionTemplate` <> '', 1, 0) AS IsEdit,409    IF(b.`SearchTemplate` <> '' OR b.`FullSearchTemplate` <> '', 1, 0) AS IsSearch,410    IF(b.`SubscribeTemplate` <> '' OR b.`SubscribeCond` <> '', 1, 0) AS IsSubscribe411    FROM `System_Table` AS a412    LEFT JOIN `Class` AS b ON (a.`System_Table_ID` = b.`System_Table_ID` AND b.ClassTemplate = 0 )413    " . ($nc_core->modules->get_by_keyword('auth', 0) ? "WHERE IF(b.`System_Table_ID` = 3, (b.`File_Mode` = " . +$_REQUEST['fs'] . ") , 1)" : "") .414        "GROUP BY a.`System_Table_ID` ORDER BY a.`System_Table_ID`", ARRAY_A);415    foreach ((array)$system_classes as $system_class) {416        if (!+$_REQUEST['fs'] && $system_class["System_Table_ID"] != 3) {417            continue;418        }419        $hasChildren = $db->get_var("SELECT COUNT(`Field_ID`) FROM `Field`420      WHERE `System_Table_ID` = '" . $system_class['System_Table_ID'] . "'");421        $system_class_buttons = array();422        $system_class_buttons[] = nc_get_array_2json_button(423            CONTROL_FIELD_LIST_ADD,424            "systemfield$fs_suffix.add(" . $system_class['System_Table_ID'] . ")",425            "nc-icon nc--file-add nc--hovered");426        if ($system_class["Class_ID"] && $nc_core->modules->get_by_keyword('auth', 0)) {427            $href = "#systemclass.edit(" . $system_class['System_Table_ID'] . ")";428        } else {429            $href = "#systemclass.fields(" . $system_class['System_Table_ID'] . ")";430        }431        $ret_system_class[] = array(432            "nodeId" => "systemclass-" . $system_class['System_Table_ID'],433            "name" => $system_class["System_Table_ID"] . ". " . constant($system_class["System_Table_Rus_Name"]),434            "href" => $href,435            "sprite" => 'dev-system-tables' . ($File_Mode ? '' : '-v4'),436            "hasChildren" => $hasChildren,437            "dragEnabled" => false,438            "buttons" => $system_class_buttons439        );440    }441} elseif ($node_type == 'systemclass' && $node_id) {442    // ÐÑбоÑка полей опÑеделенного Ñаблона443    $system_fields = $db->get_results("SELECT field.`Field_ID`, field.`Field_Name`, field.`TypeOfData_ID` FROM `Field` AS field444    LEFT JOIN `Classificator_TypeOfData` AS type ON type.`TypeOfData_ID` = field.`TypeOfData_ID`445    WHERE field.`System_Table_ID` = '" . $node_id . "'446    ORDER BY field.`Priority`", ARRAY_A);447    foreach ((array)$system_fields as $system_field) {448        if ($system_field["TypeOfData_ID"] == 11 && $node_id != 3 && !($nc_core->modules->get_by_keyword('auth') && nc_auth_openid_possibility()))449            continue;450        $system_field_buttons = array();451        $system_field_buttons[] = nc_get_array_2json_button(452            CONTROL_FIELD_LIST_DELETE,453            "systemfield$fs_suffix.delete(" . $node_id . "," . $system_field['Field_ID'] . ")",454            "nc-icon nc--remove nc--hovered");455        $ret_system_fields[] = array(456            "nodeId" => "systemfield-" . $system_field['Field_ID'],457            "name" => $system_field["Field_ID"] . ". " . $system_field["Field_Name"],458            "href" => "#systemfield.edit(" . $system_field['Field_ID'] . ")",459            "sprite" => $field_types[$system_field["TypeOfData_ID"]],460            "acceptDropFn" => "treeSystemFieldAcceptDrop",461            "onDropFn" => "treeSystemFieldOnDrop",462            "hasChildren" => false,463            "dragEnabled" => true,464            "buttons" => $system_field_buttons465        );466    }467    // count component templates468    $hasTemplates = 0;469    if ($node_id == 3 && $nc_core->modules->get_by_keyword('auth')) {470        $hasTemplates = $db->get_var("SELECT COUNT(`Class_ID`) FROM `Class` WHERE `ClassTemplate` > 0 AND `System_Table_ID` = 3 AND File_Mode = " . +$_REQUEST['fs']);471        $user_class_id = $db->get_var("SELECT `Class_ID` FROM `Class` WHERE `ClassTemplate` = 0 AND `System_Table_ID` = 3 AND File_Mode = " . +$_REQUEST['fs']);472    }473    if ($hasTemplates) {474        $class_template_buttons = array();475        $class_template_buttons[] = nc_get_array_2json_button(476            CONTROL_CLASS_CLASS_TEMPLATE_ADD,477            "classtemplate$fs_suffix.add(" . $user_class_id . ")",478            "nc-icon nc--file-add nc--hovered");479        $ret_class_templates[] = array(480            "nodeId" => "classtemplates-" . $user_class_id,481            "name" => CONTROL_CLASS_CLASS_TEMPLATES,482            "href" => "#classtemplates.edit(" . $user_class_id . ")",483            "sprite" => 'dev-templates' . ($File_Mode ? '' : '-v4'),484            "acceptDropFn" => "treeClassAcceptDrop",485            "onDropFn" => "treeClassOnDrop",486            "hasChildren" => $hasTemplates,487            "dragEnabled" => false,488            "buttons" => $class_template_buttons489        );490    }491} // ÐеÑево макеÑов492elseif (($node_type == 'template' && $node_id) || ($node_type == 'templates')) {493    // ÐолÑÑение деÑева макеÑов494    if (!$node_id) $node_id = 0;495    $tamplate_table = nc_db_table::make('Template');496    $templates = $tamplate_table->select('`Template_ID`, `Description`')497        ->where('Parent_Template_ID', $node_id)->where('File_Mode', $File_Mode)498        ->order_by('Priority')->order_by('Template_ID')499        ->index_by_id()->get_result();500    $childrens_count = $tamplate_table->select('COUNT(*) as total, Parent_Template_ID')501        ->where_in('Parent_Template_ID', array_keys($templates))502        ->group_by('Parent_Template_ID')503        ->get_list('Parent_Template_ID', 'total');504    // ÐÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¼Ð°ÐºÐµÑа дизайна505    if ($File_Mode && $node_id) {506        $is_root_template = !$tamplate_table->where_id($node_id)->get_value('Parent_Template_ID');507        if ($is_root_template) {508            $ret_templates[] = array(509                "nodeId"          => "template_partials-{$node_id}",510                "name"            => CONTROL_TEMPLATE_PARTIALS,511                "href"            => "#template.partials_list({$node_id})",512                "sprite"          => 'dev-com-templates',513                "hasChildren"     => (bool)$nc_core->template->has_partial($node_id),514                // "dragEnabled"  => true,515                // "acceptDropFn" => "templateAcceptDrop",516                // "onDropFn"     => "templateOnDrop",517                "buttons"         => array(518                    nc_get_array_2json_button(519                        CONTROL_TEMPLATE_PARTIALS_ADD,520                        "template{$fs_suffix}.partials_add({$node_id})",521                        "nc-icon nc--dev-templates-add nc--hovered"522                    )523                )524            );525        }526    }527    foreach ((array)$templates as $id => $template) {528        $template_buttons = array();529        $template_buttons[] = nc_get_array_2json_button(530            CONTROL_TEMPLATE_TEPL_CREATE,531            "template{$fs_suffix}.add({$id})",532            "nc-icon nc--dev-templates-add nc--hovered");533        $template_buttons[] = nc_get_array_2json_button(534            CONTROL_TEMPLATE_DELETE,535            "template{$fs_suffix}.delete({$id})",536            "nc-icon nc--remove nc--hovered");537        // ÐÐ»Ñ ÐºÐ¾ÑневÑÑ
 макеÑов v5 вÑегда показÑваÑÑ "+", Ñ.к. они имеÑÑ partials538        if ($node_id == 0 && $File_Mode) {539            $has_children = true;540        }541        else {542            $has_children = !empty($childrens_count[$id]);543        }544        $ret_templates[] = array(545            "nodeId"       => "template-{$id}",546            "name"         => "{$id}. {$template['Description']}",547            "href"         => "#template.edit({$id})",548            "sprite"       => 'dev-templates' . ($File_Mode ? '' : '-v4'),549            "hasChildren"  => $has_children,550            "dragEnabled"  => true,551            "acceptDropFn" => "templateAcceptDrop",552            "onDropFn"     => "templateOnDrop",553            "buttons"      => $template_buttons554        );555    }556} // ÐополниÑелÑнÑе ÑÐ°Ð±Ð»Ð¾Ð½Ñ (partials) макеÑа дизайна557elseif ($node_type == 'template_partials' && $node_id) {558    $template_partials = $nc_core->template->get_template_partials($node_id);559    foreach ($template_partials as $partial) {560        $ret_templates[] = array(561            "nodeId" => "template_partial-{$node_id}-{$partial}",562            "name" => $partial,563            "href" => "#template.partials_edit({$node_id}, {$partial})",564            "sprite" => 'dev-com-templates',565            "buttons" => array(566                nc_get_array_2json_button(567                    CONTROL_TEMPLATE_PARTIALS_REMOVE,568                    "template{$fs_suffix}.partials_remove({$node_id}, {$partial})",569                    "nc-icon nc--remove nc--hovered"570                )571            )572        );573    }574} elseif ($node_type == 'widgetclass.list') {575    $SQL = "SELECT `Category`,576                   MD5(`Category`) as `Category_md5`577                FROM `Widget_Class`578                    WHERE File_Mode = $File_Mode579                        GROUP BY `Category`580                            ORDER BY `Category`";581    $widgetclass_groups = $db->get_results($SQL, ARRAY_A);582    foreach ((array)$widgetclass_groups as $widgetclass_group) {583        $widgetclassgroup_buttons = array();584        $widgetclassgroup_buttons[] = nc_get_array_2json_button(585            CONTROL_WIDGETCLASS_ADD,586            "widgetclass$fs_suffix.add(" . $widgetclass_group['Category_md5'] . ")",587            "nc-icon nc--dev-com-widgets-add nc--hovered");588        $ret_widgetgroups[] = array(589            "nodeId" => "widgetgroup-" . $widgetclass_group['Category_md5'],590            "name" => $widgetclass_group["Category"],591            "href" => "#widgetgroup.edit(" . $widgetclass_group['Category_md5'] . ")",592            "sprite" => 'dev-com-widgets' . ($File_Mode ? '' : '-v4'),593            "acceptDropFn" => "treeClassAcceptDrop",594            "onDropFn" => "treeClassOnDrop",595            "hasChildren" => true,596            "dragEnabled" => true,597            "buttons" => $widgetclassgroup_buttons598        );599    }600} elseif ($node_type == 'widgetgroup' && $node_id) {601    $widgetclasses = $db->get_results("602        SELECT `Widget_Class_ID`,603               `Name`,604               `Template`605            FROM `Widget_Class`606                WHERE MD5(`Category`) = '" . $node_id . "'607                  AND File_Mode = " . +$_REQUEST['fs'] . "608                    ORDER BY `Category`,609                             `Widget_Class_ID`", ARRAY_A);610    foreach ((array)$widgetclasses as $widgetclass) {611        $hasChildren = $db->get_var("SELECT COUNT(`Field_ID`) FROM `Field`612      WHERE `Widget_Class_ID` = '" . $widgetclass['Widget_Class_ID'] . "'");613        $widgetclass_buttons = array();614        $widgetclass_buttons[] = nc_get_array_2json_button(615            CONTROL_FIELD_LIST_ADD,616            "widgetfield$fs_suffix.add(" . $widgetclass['Widget_Class_ID'] . ")",617            "nc-icon nc--file-add nc--hovered");618        $widgetclass_buttons[] = nc_get_array_2json_button(619            CONTROL_CLASS_DELETE,620            "widgetclass$fs_suffix.drop(" . $widgetclass['Widget_Class_ID'] . ", 1)",621            "nc-icon nc--remove nc--hovered");622        $ret_widgetclasses[] = array(623            "nodeId" => "widgetclass-" . $widgetclass['Widget_Class_ID'],624            "name" => $widgetclass["Widget_Class_ID"] . ". " . $widgetclass["Name"],625            "href" => "#widgetclass.edit(" . $widgetclass['Widget_Class_ID'] . ")",626            "sprite" => 'dev-com-widgets' . ($File_Mode ? '' : '-v4'),627            "acceptDropFn" => "treeClassAcceptDrop",628            "onDropFn" => "treeClassOnDrop",629            "hasChildren" => $hasChildren,630            "dragEnabled" => true,631            "buttons" => $widgetclass_buttons632        );633    }634} elseif ($node_type == 'widgetclass' && $node_id) {635    $fields = $db->get_results("SELECT `Field_ID`, `Field_Name`, `TypeOfData_ID` FROM `Field`636    WHERE `Widget_Class_ID` = '" . $node_id . "'637    ORDER BY `Priority`", ARRAY_A);638    foreach ((array)$fields as $field) {639        if ($field["TypeOfData_ID"] == 11 && !($nc_core->modules->get_by_keyword('auth') && nc_auth_openid_possibility()))640            continue;641        $widgetfield_buttons = array();642        $widgetfield_buttons[] = nc_get_array_2json_button(643            CONTROL_FIELD_LIST_DELETE,644            "widgetfield$fs_suffix.delete(" . $node_id . "," . $field['Field_ID'] . ")",645            "nc-icon nc--remove nc--hovered");646        $ret_widgetfields[] = array(647            "nodeId" => "field-" . $field['Field_ID'],648            "name" => $field["Field_ID"] . ". " . $field["Field_Name"],649            "href" => "#widgetfield.edit(" . $field['Field_ID'] . ")",650            "sprite" => $field_types[$field["TypeOfData_ID"]],651            "acceptDropFn" => "treeFieldAcceptDrop",652            "onDropFn" => "treeFieldOnDrop",653            "hasChildren" => false,654            "dragEnabled" => true,655            "buttons" => $widgetfield_buttons656        );657    }658} // ÐеÑево ÑпиÑков659elseif ($node_type == 'classificator.list') {660    // полÑÑение деÑева ÑпиÑков661    $classificators = $db->get_results("SELECT `Classificator_ID`, `Classificator_Name`, `System` FROM `Classificator`662    ORDER BY `Classificator_ID`", ARRAY_A);663    $admin_cl = $perm->isAccess(NC_PERM_CLASSIFICATOR, NC_PERM_ACTION_DEL, 0, 0);664    foreach ((array)$classificators as $classificator) {665        $c_id = $classificator['Classificator_ID']; //for short666        // ÐÑовеÑка на пÑаво667        if (!$classificator['System'] && !$perm->isAccess(NC_PERM_CLASSIFICATOR, NC_PERM_ACTION_VIEW, $c_id))668            continue;669        //СиÑÑемнÑе ÑпиÑки показÑваем ÑолÑко пÑи налиÑии ÑооÑвеÑÑÑвÑÑÑиÑ
 пÑав670        if ($classificator['System'] && !$perm->isDirectAccessClassificator(NC_PERM_ACTION_VIEW, $c_id))671            continue;672        $classificator_buttons = array();673        // Ðнопка ÑдалиÑÑ ÑолÑко Ð´Ð»Ñ Ð°Ð´Ð¼Ð¸Ð½Ð° вÑеÑ
 ÑпиÑков, пÑи ÑÑловии ÑÑо ÑпиÑок не ÑиÑÑемнÑй674        if ($admin_cl && !$classificator['System']) {675            $classificator_buttons[] = nc_get_array_2json_button(676                CONTENT_CLASSIFICATORS_LIST_DELETE,677                "classificator.delete(" . $c_id . ")",678                "nc-icon nc--remove nc--hovered");679        }680        $ret_classificators[] = array(681            "nodeId" => "classificator-" . $c_id,682            "name" => $classificator["Classificator_ID"] . ". " . $classificator['Classificator_Name'],683            "href" => "#classificator.edit(" . $c_id . ")",684            "sprite" => 'dev-classificator',685            "hasChildren" => false,686            "dragEnabled" => false,687            "buttons" => $classificator_buttons688        );689    }690}691$ret = array_merge(692    array_values($ret_dev),693    array_values($ret_groups),694    array_values($ret_widgetgroups),695    array_values($ret_classes),696    array_values($ret_widgetclasses),697    array_values($ret_class_templates),698    array_values($ret_fields),699    array_values($ret_widgetfields),...PlanTemplateDetails.php
Source:PlanTemplateDetails.php  
...85        $this->htmlTree = <<<cre86<ul role="group">87cre;88        foreach ($elements as $element) {89            $hasChildren = $this->hasChildren($element->id);90            $elementAttribute = $hasChildren ? 'class="parent_li" role="treeitem"' : 'style="display: list-item;"';91            $nameAttribute = $hasChildren ? 'class="fa fa-lg fa-minus-circle"' : 'class="icon-leaf"';92            $this->htmlTree .= <<<cre93<li $elementAttribute>94    <span><i $nameAttribute></i> <a wire:click="elementEdition($element->id)" href="#" data-toggle="modal" data-target="#edition-modal-element">$element->name</a></span>95cre;96            array_push(97                $elementsArray,98                ['id' => $element->id,99                    'name' => str_pad('', $spaces, '-') . $element->name,100                    'parentNode' => $hasChildren,101                    'level' => $element->level]102            );103            $this->getSubElements($elementsArray, $planTemplateId, $element->id, $spaces + 2);104            $this->htmlTree .= <<<cre105    </li>106cre;107        }108        $this->htmlTree .= <<<cre109</ul>110cre;111        return $elementsArray;112    }113    /**114     * Get detail template structure recursive115     *116     * @param $elementsArray117     * @param $planTemplateId118     * @param $parentId119     * @param $spaces120     */121    private function getSubElements(&$elementsArray, $planTemplateId, $parentId, $spaces)122    {123        $elements = $this->where('plan_template_id', $planTemplateId)->where('parent_id', $parentId)->orderBy('order')->get();124        if($elements->count()) {125            $this->htmlTree .= '<ul role="group">';126        }127        foreach ($elements as $element) {128            $hasChildren = $this->hasChildren($element->id);129            $elementAttribute = $hasChildren ? 'class="parent_li" role="treeitem"' : 'style="display: list-item;"';130            $nameAttribute = $hasChildren ? 'class="fa fa-lg fa-minus-circle"' : 'class="icon-leaf"';131            $this->htmlTree .= <<<cre132<li $elementAttribute>133    <span><i $nameAttribute></i> <a wire:click="elementEdition($element->id)" href="#" data-toggle="modal" data-target="#edition-modal-element">$element->name</a></span>134cre;135            array_push(136                $elementsArray,137                ['id' => $element->id,138                    'name' => str_pad('', $spaces, '-') . $element->name,139                    'parentNode' => $this->hasChildren($element->id),140                    'level' => $element->level]141            );142            $this->getSubElements($elementsArray, $planTemplateId, $element->id, $spaces + 2);143            $this->htmlTree .= <<<cre144</li>145cre;146        }147        if($elements->count()) {148            $this->htmlTree .= '</ul>';149        }150    }151    /**152     * Checks if an element has children153     *154     * @param $parent_id155     * @return mixed156     */157    public function hasChildren($parent_id)158    {159        return $this->where('parent_id', $parent_id)->count();160    }161}...TemplatePages.php
Source:TemplatePages.php  
...59												   ORDER BY name = \'FÅoldal\' DESC, name = \'Kapcsolat\' ASC, name ASC');60		 $result->execute();61		 62		 foreach($result->fetchAll(PDO::FETCH_ASSOC) as $key => $value ){63			 $hasChildren = TemplatePages::hasChildren($value['id']);64			 $pages = new Pages($value);65			 $menu .= '<li class="';66			 if($hasChildren){67			  	$menu.='dropdown ';68			 } 69			 70			 $menu .= TemplatePages::isActiveMenu(TemplatePages::pageURLCheck($pages->getLink()));71			 $menu .= TemplatePages::isDisabledMenu($pages->__get('active'));72			 $menu .= '">';73			 $menu .= '<a ';74			 75			 if($hasChildren){76			  	$menu.='class="dropdown-toggle"77       					data-toggle="dropdown"78       					href="#">';79			 }else {80			 	$menu .='href="'.$pages->getLink().'" >';81			 }82			 83			 $menu .= $pages->__get('name');84			 85			 if($hasChildren){86			  	$menu.=' <i class="icon-caret-down"></i>';87			 }88			 $menu .= '</a>';89			90			 if($hasChildren){91			 	92				$menu .= TemplatePages::getChildren($value['id']);93			 94			 }				 95			 96			 $menu .= '</li>';97			 98		 }99		 100		 return $menu;101	 }102	 103	 /**104	  *105	  *106	  */107	 108	 private static function hasChildren($id){109		 	global $connection;110			111			$result = $connection->database->prepare('SELECT * FROM pages 112													  WHERE parent_id = :parent_id 113													  AND hidden = 1');114		 	115			$result->execute(array(':parent_id'=>$id));116			117			if($result->rowCount() > 0){118				return true;119			}	120			121			return false;122	 }...Menu.php
Source:Menu.php  
...20        $html='';21        foreach($items as $item) {22            $id=isset($item['id'])?' id="'.$this->htmlOptions['id'].'_item_'.$item['id'].'"':'';23            $css='';24            if($this->nesting>$level && isset($item['hasChildren']) && $item['hasChildren']) {25                if($css!=='')26                    $css.=' ';27                $css.='hasChildren';28            }29            if(isset($item['url']) && strpos(Yii::app()->request->getRequestUri(), $item['url'])!==false) {30                if($css!=='')31                    $css.=' ';32                $css.='current';33            }34			if($css!=='')35				$css=' class="'.$css.'"';36            $html.='<li'.$id.$css.'>'.$this->renderTemplate($item, $level);37            if($this->nesting>$level && isset($item['hasChildren']) && $item['hasChildren']) {38                $html.="\n<ul>\n";39                $html.=$this->saveAsHtml($item['children'], $level+1);40                $html.="</ul>\n";41            }42            $html.="</li>\n";43        }44        return $html;45    }46    protected function renderTemplate($item, $level) {47        $template=$this->getTemplate($level);48        preg_match_all('#{([a-z]+)}#i', $template, $matches);49        foreach($matches[1] as $param) {50            if(isset($item[$param]) && is_string($item[$param])) {51                $template = str_replace('{'.$param.'}', CHtml::encode($item[$param]), $template);...hasChildren
Using AI Code Generation
1$templates = $this->wire('templates');2$hasChildren = $templates->hasChildren($template);3$pages = $this->wire('pages');4$hasChildren = $pages->hasChildren($page);5$templates = $this->wire('templates');6$hasChildren = $templates->hasChildren($template);7$pages = $this->wire('pages');8$hasChildren = $pages->hasChildren($page);9$templates = $this->wire('templates');10$hasChildren = $templates->hasChildren($template);11$pages = $this->wire('pages');12$hasChildren = $pages->hasChildren($page);13$templates = $this->wire('templates');14$hasChildren = $templates->hasChildren($template);15$pages = $this->wire('pages');16$hasChildren = $pages->hasChildren($page);17$templates = $this->wire('templates');hasChildren
Using AI Code Generation
1$templates = $this->wire('templates');2$parent = $this->wire('page');3$children = $parent->children();4foreach($children as $child) {5	$childTemplate = $templates->get($child->template);6	if($childTemplate->hasChildren()) {7	}8}9$templates = $this->wire('templates');10$parent = $this->wire('page');11$children = $parent->children();12foreach($children as $child) {13	$childTemplate = $templates->get($child->template);14	if($childTemplate->hasChildren()) {15	}16}17$templates = $this->wire('templates');18$parent = $this->wire('page');19$children = $parent->children();20foreach($children as $child) {21	$childTemplate = $templates->get($child->template);22	if($childTemplate->hasChildren()) {23	}24}25$templates = $this->wire('templates');26$parent = $this->wire('page');27$children = $parent->children();28foreach($children as $child) {29	$childTemplate = $templates->get($child->template);30	if($childTemplate->hasChildren()) {31	}32}33$templates = $this->wire('templates');34$parent = $this->wire('page');35$children = $parent->children();36foreach($children as $child) {37	$childTemplate = $templates->get($child->template);38	if($childTemplate->hasChildren()) {39	}40}41$templates = $this->wire('templates');42$parent = $this->wire('page');43$children = $parent->children();44foreach($children as $child) {45	$childTemplate = $templates->get($child->template);46	if($childTemplate->hasChildren()) {47	}48}hasChildren
Using AI Code Generation
1$templates = $pages->get("/")->children();2foreach($templates as $template) {3    echo $template->name . " has children: " . ($template->hasChildren() ? 'Yes' : 'No') . "4";5}6$templates = $pages->get("/")->children("template=template1");7foreach($templates as $template) {8    echo $template->name . " has children: " . ($template->hasChildren() ? 'Yes' : 'No') . "9";10}11$templates = $pages->get("/")->children("template=template1");12foreach($templates as $template) {13    echo $template->name . " has children: " . ($template->hasChildren() ? 'Yes' : 'No') . "14";15}16$templates = $pages->get("/")->children("template=template1");17foreach($templates as $template) {18    echo $template->name . " has children: " . ($template->hasChildren() ? 'Yes' : 'No') . "19";20}21$templates = $pages->get("/")->children("template=template1");22foreach($templates as $template) {23    echo $template->name . " has children: " . ($template->hasChildren() ? 'Yes' : 'No') . "24";25}26$templates = $pages->get("/")->children();27foreach($templates as $template) {28    echo $template->name . " has children: " . ($template->hasChildren() ? 'Yes' : 'No') . "29";30}31$templates = $pages->get("/")->children("template=template1");32foreach($templates as $template) {33    echo $template->name . " has children: " . ($template->hasChildren() ? 'Yes' : 'No') . "34";35}hasChildren
Using AI Code Generation
1$templates = $this->wire('templates');2$templates->hasChildren($template);3$templates = $this->wire('templates');4$templates->hasChildren($template);5$templates = $this->wire('templates');6$templates->hasChildren($template);7$templates = $this->wire('templates');8$templates->hasChildren($template);9$templates = $this->wire('templates');10$templates->hasChildren($template);11$templates = $this->wire('templates');12$templates->hasChildren($template);13$templates = $this->wire('templates');14$templates->hasChildren($template);15$templates = $this->wire('templates');16$templates->hasChildren($template);17$templates = $this->wire('templates');18$templates->hasChildren($template);19$templates = $this->wire('templates');20$templates->hasChildren($template);21$templates = $this->wire('templates');22$templates->hasChildren($template);23$templates = $this->wire('templates');24$templates->hasChildren($template);hasChildren
Using AI Code Generation
1$templates = $this->wire('templates');2if($templates->has('home')) {3    echo 'Template home exists';4} else {5    echo 'Template home does not exist';6}7$fieldgroups = $this->wire('fieldgroups');8if($fieldgroups->has('title')) {9    echo 'Fieldgroup title exists';10} else {11    echo 'Fieldgroup title does not exist';12}13$fields = $this->wire('fields');14if($fields->has('title')) {15    echo 'Field title exists';16} else {17    echo 'Field title does not exist';18}19$pages = $this->wire('pages');20if($pages->has('home')) {21    echo 'Page home exists';22} else {23    echo 'Page home does not exist';24}25$users = $this->wire('users');26if($users->has('admin')) {27    echo 'User admin exists';28} else {29    echo 'User admin does not exist';30}31$usergroups = $this->wire('usergroups');32if($usergroups->has('guest')) {33    echo 'Usergroup guest exists';34} else {35    echo 'Usergroup guest does not exist';36}37$roles = $this->wire('roles');38if($roles->has('guest')) {39    echo 'Role guest exists';40} else {41    echo 'Role guest does not exist';42}43$permissions = $this->wire('permissions');44if($permissions->has('page-edit')) {45    echo 'Permission page-edit exists';46} else {47    echo 'Permission page-edit does not exist';48}49$templatefiles = $this->wire('templatefiles');50if($templatefiles->has('home')) {51    echo 'TemplateFile home exists';hasChildren
Using AI Code Generation
1if($page->hasChildren) {2}3if($page->hasChildren) {4}5if($page->hasChildren) {6}7if($page->hasChildren) {8}9if($page->hasChildren) {10}11if($page->hasChildren) {12}13if($page->hasChildren) {14}15if($page->hasChildren) {16}17if($page->hasChildren) {18}19if($page->hasChildren) {20}21if($page->hasChildren) {22}hasChildren
Using AI Code Generation
1$templates = $templates->find("parent_id=0, sort=sort"); 2foreach($templates as $template) {3    if($template->hasChildren()) {4    }5}6$templates = $templates->find("parent_id=0, sort=sort"); 7foreach($templates as $template) {8    $children = $template->children();9    foreach($children as $child) {10    }11}12$templates = $templates->find("parent_id=0, sort=sort"); 13foreach($templates as $template) {14    $children = $template->children();15    foreach($children as $child) {16    }17}18$templates = $templates->find("parent_id=0, sort=sort"); 19foreach($templates as $template) {20    $children = $template->children();21    foreach($children as $child) {22    }23}24$templates = $templates->find("parent_id=0, sort=sort"); 25foreach($templates as $template) {26    $children = $template->children();27    foreach($children as $child) {28    }29}30$templates = $templates->find("parent_id=0, sort=sort"); 31foreach($templates as $template) {32    $children = $template->children();33    foreach($children as $child) {34    }35}36$templates = $templates->find("parent_id=0, sort=sort"); 37foreach($templates as $template) {38    $children = $template->children();39    foreach($children as $child) {40    }41}42$templates = $templates->find("parent_id=0, sort=sort");hasChildren
Using AI Code Generation
1$templates = $this->wire('templates');2$hasChildren = $templates->get('templateName')->hasChildren();3$pages = $this->wire('pages');4$hasChildren = $pages->get('pageId')->hasChildren();5$pages = $this->wire('pages');6$children = $pages->find("template=templateName, parent=pageId");7$hasChildren = $children->hasChildren();hasChildren
Using AI Code Generation
1$tmpl = $this->wire('templates')->get('name_of_template');2if ($tmpl->hasChildren) {3}4$parent = $this->wire('pages')->get('name_of_parent_page');5if ($parent->hasChildren) {6}7$children = $this->wire('pages')->find('parent_of_children');8if ($children->hasChildren) {9}10$children = $this->wire('pages')->find('parent_id=123');11if (count($children)) {12}Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Execute automation tests with hasChildren on a cloud-based Grid of 3000+ real browsers and operating systems for both web and mobile applications.
Test now for FreeGet 100 minutes of automation test minutes FREE!!
