Example #1
0
 protected function indexAction()
 {
     $this->view->title = 'Просмотр новостей';
     $this->view->headers = array(array('title' => 'Просмотр новостей'), array('title' => 'Обычная новость', 'href' => '/admin/addnew/'), array('title' => 'Мультиязычная новость', 'href' => '/admin/addmultinew'));
     $this->view->sections = K_TreeQuery::crt('/news/')->types('section')->go();
     $this->render('news');
 }
Example #2
0
 protected static function init()
 {
     if (self::$_isInit) {
         return;
     }
     $prices = K_TreeQuery::gOne('/payment/accountscost/', 'prices');
     self::$_adminCost = $prices['admin_cost'];
     self::$_userCost = $prices['user_cost'];
     self::$_isInit = true;
 }
Example #3
0
 public function ask()
 {
     if (!K_Request::isPost()) {
         $this->putAjax('ERROR');
     }
     // var_dump( $_POST['capcha']);var_dump(K_Auth::getUserInfo('capchaText'));
     if (strcasecmp(trim($_POST['capcha']), K_Auth::getUserInfo('capchaText')) != 0 || time() - 300 > K_Auth::getUserInfo('capchaTime')) {
         $jsonReturn['error'] = true;
         $jsonReturn['msg'] = array(1 => array('label' => t('Символы с картинки', 'Символи з картинки'), 'error' => t('Неправильно введён код с картинки !!!', 'Неправильно введений код з малюнка !!!')));
         $capchaText = K_Secur::genCapchaText();
         K_Auth::setUserKey('capchaText', $capchaText);
         K_Auth::setUserKey('capchaTime', time());
         $jsonReturn['callback'] = 'function callback(){$("#captcha-img").attr("src","data:image/png;base64,' . K_Secur::genCapcha($capchaText) . '");$("#capcha-text").val("")}';
         if (K_Request::isAjax()) {
             $this->putJSON($jsonReturn);
         } else {
             K_Request::redirect('/');
         }
     }
     $nameAccos = array('userName' => t('Ваше имя:', "Ваше ім'я:"), 'userContact' => t('Ваш E-mail*:', 'Ваш E-mail*:'), 'userPhone' => t('Ваш Телефон*:', 'Ваш Телефон*:'), 'userMessage' => t('Ваше сообщение:', 'Ваше повідомлення:'));
     $data = array('userName' => trim($_POST['userName']), 'userContact' => trim($_POST['userContact']), 'userPhone' => trim($_POST['userPhone']), 'userMessage' => trim($_POST['userMessage']), 'manager_email' => trim($_POST['manager_email']));
     $managers = K_TreeQuery::crt('/manager/')->types('manager')->go();
     foreach ($managers as $v) {
         $managerMails[] = $v['email'];
     }
     $validate = array('userName' => array('maxlen' => 255), 'userContact' => array('required' => true, 'notEmpty', 'email'), 'userPhone' => array('required' => true, 'notEmpty', 'phone'), 'userMessage' => array('required' => true, 'notEmpty', 'maxlen' => 1500), 'manager_email' => array('required' => true, 'notEmpty', 'enum' => $managerMails));
     $commentModel = new Admin_Model_Valid();
     if ($commentModel->isValidRow($data, $validate)) {
         $jsonReturn['error'] = false;
         $jsonReturn['msg'] = t("Ваш вопрос был отправлено успешно. Спасибо.", "Ваше питання було надіслано успішно. Спасибi.");
         $jsonReturn['clean'] = true;
         //Send mail
         ///////////////////////////////////////////////////////////////////
         $toMail = strip_tags(trim($data['manager_email']));
         $mailText = 'Вам на сайт добавили вопрос. /r /n';
         $mailText .= 'Имя:' . strip_tags($data['userName']) . ' /r /n';
         $mailText .= 'E-mail:' . strip_tags($data['userContact']) . ' /r /n';
         $mailText .= 'Телефон:' . strip_tags($data['userPhone']) . ' /r /n';
         $mailText .= ' Сообщение: /r /n' . strip_tags($data['userMessage']);
         $mailer = new K_mail();
         $mailer->setBody($mailText);
         $mailer->addTo($toMail);
         $mailer->send('*****@*****.**', 'На ваш сайт добавили новый вопрос');
         ////////////////////////////////////////////////////////////////
     } else {
         $jsonReturn['error'] = true;
         $jsonReturn['msg'] = $commentModel->getErrorsD($nameAccos);
     }
     if (K_Request::isAjax()) {
         $this->putJSON($jsonReturn);
     } else {
         K_Request::redirect('/');
     }
 }
Example #4
0
 public function indexAction()
 {
     K_Crumbs::add(array('Новости', 'taxi-novosti'));
     // how many records per page
     $size = 10;
     $this->view->page = 1;
     // we get the current page from $_GET
     if (isset($_GET['page'])) {
         $this->view->page = (int) $_GET['page'];
     }
     $pag_info = K_Paginator::prepear($this->view->page, $size);
     list($this->view->news, $this->view->countItems) = K_TreeQuery::crt('/news/')->type(array('news'))->limit($pag_info['onPage'], $pag_info['start'])->order(array('news' => 'date'))->go(array('childs' => true, 'count' => true, 'orderby' => 'DESC'));
     $this->view->pages = ceil($this->view->countItems / $pag_info['onPage']);
     $this->render('news');
 }
Example #5
0
 public function indexAction()
 {
     //кастомные страницы
     $staticPages = K_TreeQuery::crt("/pages/")->types('page')->go();
     $noInSitemap = array('baseblocks', '404', 'sitemap');
     foreach ($staticPages as $v) {
         if (!in_array($v['tree_name'], $noInSitemap)) {
             $v['tree_level'] = '1';
             $sitemArr[] = $v;
         }
     }
     $sitemArr = array_merge($sitemArr, K_TreeQuery::crt("/news/")->types('news')->go());
     $sitemArr[] = array('tree_type' => 'page', 'tree_name' => 'service', 'title' => 'Услуги', 'tree_level' => '1');
     $sitemArr = array_merge($sitemArr, K_TreeQuery::crt("/service/")->types('service')->go());
     $sitemArr[] = array('tree_type' => 'page', 'tree_name' => 'promo', 'title' => 'Акции', 'tree_level' => '1');
     $sitemArr = array_merge($sitemArr, K_TreeQuery::crt("/promo/")->types('promo')->go());
     $sitemArr[] = array('tree_type' => 'page', 'tree_name' => 'portfolio', 'title' => 'Портфолио', 'tree_level' => '1');
     $sitemArr = array_merge($sitemArr, K_TreeQuery::crt("/portfolio/")->types('portfolio')->go());
     $this->view->sitemap = $this->menuBuilder($sitemArr, 1);
 }
Example #6
0
 public function indexAction()
 {
     $this->view->news = K_TreeQuery::crt('/news/')->type(array('news'))->limit(3, 0)->order(array('news' => 'date'))->go(array('childs' => true, 'orderby' => 'DESC'));
     $this->render('lastnews');
 }
Example #7
0
date_default_timezone_set('UTC');
$filename = WWW_PATH . '/sitemap.xml';
$sitemap = new K_Sitemap();
//Главная
$sitemap->addUrl('', 1);
//Страницы статические
$noInSitemap = array('404', 'baseblocks', 'index', 'one', 'sitemap');
$priority = array('taxi-about-us' => 0.9, 'taxi-price' => 0.9, 'taxi-contact-us' => 0.9, 'taxi-work' => 0.9, 'taxi-novosti' => 0.9, 'skorost-i-bezopasnost' => 0.8, 'peregon-avto' => 0.8, 'luchshie-tsenyi' => 0.8, 'perevozka-gruzov' => 0.8);
$pages = K_TreeQuery::crt('/pages/')->types(array('page'))->go();
foreach ($pages as $v) {
    if (!in_array($v['tree_name'], $noInSitemap)) {
        $p = $priority[$v['tree_name']];
        $sitemap->addUrl('/' . $v['tree_name'], isset($p) ? $p : 0.5);
    }
}
//Страницы новостей
$pages = K_TreeQuery::crt('/news/')->types(array('news'))->go();
foreach ($pages as $v) {
    if (!in_array($v['tree_name'], $noInSitemap)) {
        $sitemap->addUrl('/' . $v['tree_name'], 0.7);
    }
}
//Страницы статтей
$pages = K_TreeQuery::crt('/articles/')->types(array('articles'))->go();
foreach ($pages as $v) {
    if (!in_array($v['tree_name'], $noInSitemap)) {
        $p = $priority[$v['tree_name']];
        $sitemap->addUrl('/' . $v['tree_name'], isset($p) ? $p : 0.5);
    }
}
file_put_contents($filename, $sitemap->genSitemap());
Example #8
0
             $pCount = ceil($pagesCounts[$v['tree_name']]/10);
                  for($i=2;$i<$pCount;$i++){ 
             // статические страницы с листалкой - сама листалка
                        echo "<url>\n<loc>".$siteurl.'/'.$v['tree_name'].'.list.'.$i.".10</loc> 
                                  <lastmod>$update</lastmod> 
                                  <changefreq>daily</changefreq> 
                                  <priority>0.5</priority> 
                               </url>\n"; 
                     }
         }
                             }else{
        */
        // статические страницы без листалки
        $sitemap->addUrl($siteurl . '/' . $v['tree_name'], $update, 'daily', '0.5');
        // }
    }
    //добавить страницу в игнор лист, что-бы небыло повторов.
    $noInSitemap[] = $v['tree_name'];
}
$articles = K_TreeQuery::crt("/articles/")->type("/articles/")->go();
foreach ($articles as $v) {
    $sitemap->addUrl($siteurl . '/' . $v['tree_name'] . ".html", $update, 'daily', '0.5');
}
$q = new K_query();
$objects = $q->q("SELECT url FROM obj_objects WHERE  url !=''", true);
foreach ($objects as $v) {
    $sitemap->addUrl($siteurl . '/' . $v['url'], $update, 'daily', '0.5');
}
echo $sitemap->genSitemap();
$this->disableLayout = true;
exit;
 public function indexAction()
 {
     $this->view->promo = K_TreeQuery::crt('/promo/')->type('promo')->limit(3)->go(array('childs' => true));
 }
Example #10
0
    protected function tagsGUI()
    {
        $this->tabs['tags'] = 'Теги';
        $tagsOptions = '';
        $tagsInputs = '';
        $tags = K_TreeQuery::crt('/blogtags/')->type('blogtag')->go();
        $blogTagsMode = new Admin_Model_BlogTag();
        $blogTags = $blogTagsMode->fetchAssoc('bt_tag_id', K_Db_Select::create()->where(array('bt_blog_id' => $this->nodeData['tree_id'])));
        $blogTagsIds = array_keys($blogTags);
        foreach ($tags as $v) {
            $tagsOptions .= '<option value="' . $v['tree_id'] . '" >' . ($v['name'] ? htmlspecialchars($v['name']) : 'Нет названия') . '</option>';
            if (in_array($v['tree_id'], $blogTagsIds)) {
                $tagsInputs .= '<input style="display:none" name="tags[]"  value="' . $v['tree_id'] . '">';
                $tagsSelOptions .= '<option value="' . $v['tree_id'] . '" >' . ($v['name'] ? htmlspecialchars($v['name']) : 'Нет названия') . '</option>';
            }
        }
        return <<<HTML
         
         
             <div class="b-padded mainForm"> 
                   <div id="flash-msg-nNote" class="nNote hideit" style="display: none;"><p></p></div>
            
              
             <form action="/admin/blogs/settags/" class="ajax-form" method="post">
                 <div class="rowElem noborder admin-form-row">
                                  <label>
                                    Добавить новый тег:
                                  </label>
                                  <div class="formRight">
                                    <input type="text" name="new-teg" id="add-new-tag-name" />
                                  </div>
                                  <div class="fix"></div>
                                  <input type="button" value="Добавить" id="add-new-tag" class="b-button greyishBtn submitForm">
                                  
                </div>
                  <div class="fix"></div>
                 <table class="sel-tags-table" >
                     <tr>
                          <td>
                              <select  class="blog-tags" id="sel-tags-start" multiple="on">
                                {$tagsOptions}
                              </select>
                          </td>
                          <td>
                              <select name="tags[]" id="sel-tags" class="tags-select" multiple="on">
                                {$tagsSelOptions}
                              </select>
                          </td>
                      <tr>
                  </table>
                 <div id="sel-tags-int">
                  {$tagsInputs}
                 </div>   
                 <input type="hidden" name="this_key"  value="{$this->nodeData['tree_id']}" />
                 <input type="submit" value="Сохранить теги" id="save_button" class="b-button greyishBtn submitForm">
             </form>
             </div>
             
HTML;
    }
Example #11
0
    public static function addField($form, $type, $element, $elementData, $formData)
    {
        switch ($type) {
            case 'text':
                $form->{$type}($element->values->name, !empty($elementData) ? $elementData : (!empty($element->values->default) ? $element->values->default : ''), array('class' => $element->values->class, 'id' => $element->values->id, 'placeholder' => $element->values->placeholder));
                break;
            case 'textarea':
                $form->{$type}($element->values->name, !empty($elementData) ? $elementData : (!empty($element->values->default) ? $element->values->default : ''), array('class' => $element->values->class, 'id' => $element->values->id, 'placeholder' => $element->values->placeholder));
                break;
            case 'wysiwyg':
                $form->textarea($element->values->name, !empty($elementData) ? $elementData : (!empty($element->values->default) ? $element->values->default : ''), array('class' => $element->values->class . ' wysiwyg-redactor', 'id' => $element->values->id));
                echo '
				<script type="text/javascript">
            
                  $(function() {
                 	$(".wysiwyg-redactor").ckeditor({
                   	                allowedContent: true,
   									toolbar: "Standard",
   								   removePlugins : "resize,about,save",
                        		filebrowserBrowseUrl : "/adm/plugins/ckfinder/ckfinder.html",
            						filebrowserImageBrowseUrl : "/adm/plugins/ckfinder/ckfinder.html?Type=Images",
            						filebrowserFlashBrowseUrl : "/adm/plugins/ckfinder/ckfinder.html?Type=Flash",
            						filebrowserUploadUrl : "/adm/plugins/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files",
            						filebrowserImageUploadUrl : "/adm/plugins/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images",
            						filebrowserFlashUploadUrl : "/adm/plugins/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash",
						
                              editorConfig : function( config )
                                                {
                                                   CKEDITOR.replace( "content_id", {
                                                        allowedContent: true})
                                                   config.protectedSource.push(/<(style)[^>]*>.*<\\/style>/ig);
                                                   return config;
                                                   
                                                }
                   	});
                     
                     
                     
                  });
                  
                 </script>';
                /*
                				$(".wysiwyg-redactor").redactor({
                				        
                				        imageUpload: "/admin/api/uploadImage",
                				        autoformat: true,
                            cleanUp: true,
                					    convertDivs: false,
                            removeClasses: true,
                            removeStyles: true,
                            convertLinks: false,
                            buttons: ["html", "|", "formatting", "|", "bold", "italic" , "deleted","|","norderedlist", "orderedlist", "outdent", "indent", "|","image","video","table", "link", "|","fontcolor", "backcolor", "|","alignleft", "aligncenter", "alignright", "justify", "|","horizontalrule", "fullscreen"] 
                				});
                */
                break;
            case 'formbuilder':
                K_Loader::load('formbuilder', APP_PATH . '/plugins');
                $form_builder = new Formbuilder(unserialize($elementData));
                echo '
				<div id="my-form-builder"></div>
				<input type="hidden" name="' . $element->values->name . '" id="f_' . $element->values->name . '"></div>
				
				<script type="text/javascript">		
					$("#my-form-builder").formbuilder({
						"save_url": false,
						"load_url": false,
						"preview_url": false,
						"saveInDom": true,
						' . (!empty($elementData) ? '"load_source": ' . $form_builder->render_json(false) . ',' : '') . '
						"domElementId": "f_' . $element->values->name . '",
						"useJson" : true 
					});
				</script>
				';
                break;
            case 'file':
                $form->{$type}($element->values->name, array('class' => $element->values->class, 'id' => $element->values->id));
                if (self::$adminka) {
                    echo ' <input type="checkbox" name="' . $element->values->name . '_delete">Удалить файл</input>';
                }
                if ($elementData) {
                    echo '<div>' . (preg_match('/^.*\\.(jpg|png|jpeg|gif|bmp)$/im', $elementData) ? '<br /><img  src="/images/' . $elementData . '?h=120" style="margin-top:5px" /></div>' : '<span class="file_address_text"><a href="/upload/' . htmlentities(urlencode($elementData)) . '">' . $elementData . '</a></span></div>');
                }
                break;
            case 'multifile':
                echo '<div id = ' . $element->values->id . ' data-filename = ' . $element->values->name . ' class = "multifile">';
                $i = 0;
                if ($elementData) {
                    $fileArr = unserialize($elementData);
                    if (count($fileArr)) {
                        foreach ($fileArr as $v) {
                            echo '<div style="margin:15px 0"  id="' . $element->values->id . '_a_' . $i . '">';
                            echo '<input type="text" value="' . $v['t'] . '" style="width:150px;margin-right:5px" name="' . $element->values->name . '_t_' . $i . '" id="' . $element->values->id . '_t_' . $i . '"/>';
                            $form->file($element->values->name . '_f_' . $i, array('class' => $element->values->class, 'id' => $element->values->id . '_f_' . $i));
                            if (self::$adminka) {
                                echo '<br/> <input type="checkbox" name="' . $element->values->name . '_delete_' . $i . '">Удалить файл</input>';
                            }
                            echo '<div>' . (preg_match('/^.*\\.(jpg|png|jpeg|gif|bmp)$/im', $v['f']) ? '<br /><img  src="/images/' . $v['f'] . '?w=150&h=150&zc=C" style="margin-top:5px" /></div><br/>' : '<span class="file_address_text"><a href="/upload/' . htmlentities(urlencode($v['f'])) . '">' . ($v['t'] ? $v['t'] : $v['f']) . '</a></span></div><br/>');
                            $i++;
                            echo '</div>';
                        }
                    }
                }
                if (!$i) {
                    echo '<div style="margin:15px 0"  id="' . $element->values->id . '_a_0">';
                    echo '<input type="text"  style="width:150px;margin-right:5px" name="' . $element->values->name . '_t_0" id="' . $element->values->id . '_t_0"/>';
                    $form->file($element->values->name . '_f_0', array('style' => 'width:220px', 'class' => $element->values->class, 'id' => $element->values->id . '_f_0'));
                    echo '<a data-fileid="' . $element->values->id . '_0' . '" class="file_field_delete" href="javascript:void(0);" title="Убрать лишний"></a>';
                    echo '</div>';
                }
                echo '</div>';
                echo "<script type=\"text/javascript\"> \n                            \$(function(){\n                                 \$('#" . $element->values->id . "').multifile(); \n                            });\n                         </script>";
                break;
            case 'select':
                $listOptions = self::getListOptions($element);
                $listAttr = array('class' => $element->values->class, 'id' => $element->values->id);
                if ($element->multiple == "checked") {
                    $listAttr['multiple'] = 'multiple';
                }
                //  var_dump($element);
                $treeIds = array();
                if ($element->values->method) {
                    $params = json_decode($element->values->method, true);
                    // var_dump($params);
                    // $params = explode(':',$element->values->method);
                    $source = trim($params['node']);
                    $field = 'tree_' . $params['field'];
                    if (strpos($params['field'], 'type') !== false) {
                        $field = str_replace('type_', '', $params['field']);
                    }
                    if (preg_match('/^\\/.*\\/$/', $source)) {
                        //  var_dump($params);
                        $goParams = array_merge($params['go'], array('orderby' => $params['order'][1]));
                        // var_dump($goParams);
                        $nodeChilds = K_TreeQuery::crt($source)->types($params['filter'])->limit($params['limit'])->order($params['order'][0])->go($goParams);
                        //   var_dump($nodeChilds);
                        // var_dump($nodeChilds);
                        //   $start=$nodeChilds[1]['tree_level'];
                        //  var_dump($treeBrach);
                        // str_repeat('&nbsp;&nbsp;',$v['tree_level']).$v['tree_title']
                        $firstNode = true;
                        foreach ($nodeChilds as $v) {
                            if ($firstNode == true) {
                                $startLevel = $v['tree_level'];
                            }
                            $firstNode = false;
                            $title = $v[$field];
                            $treeIds[$title] = $v['tree_id'];
                            // str_repeat('&nbsp;&nbsp;',$v['tree_level']-$start).
                            if ($params['title'] && count($params['title'])) {
                                $optTitle = array();
                                foreach ($params['title'] as $tile) {
                                    $optTitle[] = $v[$tile];
                                }
                                $listOptions[0][$title] = str_repeat('&nbsp;&nbsp;', $v['tree_level'] - $startLevel) . implode(' - ', $optTitle);
                            } else {
                                $listOptions[0][$title] = str_repeat('&nbsp;&nbsp;', $v['tree_level'] - $startLevel) . $v['tree_title'];
                            }
                        }
                        //var_dump( $listOptions[0] );
                    } else {
                        $node = K_Tree::getNode($elementData);
                        $nodesBro = K_Tree::getChilds($node['tree_pid']);
                        foreach ($nodesBro as $v) {
                            $title = $v[$field];
                            $treeIds[$title] = $v['tree_id'];
                            $listOptions[0][$title] = $v['tree_title'];
                        }
                        echo "<script type=\"text/javascript\"> \n                           \$('#" . $source . "').off('.formsel'); \n                           \$('#" . $source . "').on('change.formsel',function(){selectLoad(this,'#{$listAttr['id']}','{$params['0']}','')});\n                           </script>";
                        /*
                                               if(! empty($elementData)){
                              $checkJs="if(v.value=='$elementData'){cheked='selected=\"selected\"}";
                        //  $this->loadSelect[$source]=array('select'=>$listAttr['id'],'field'=>$params['0'],'opt'=>$elementData);
                           
                          echo "selectLoad('#".$source ."','#{$listAttr['id']}','{$params['0']}','$elementData',);";  
                          } 
                        */
                    }
                }
                $form->{$type}($element->values->name . (isset($listAttr['multiple']) && $listAttr['multiple'] ? '[]' : ''), $listOptions[0], !empty($elementData) ? $elementData : $listOptions[0], $listAttr, $treeIds);
                break;
            case 'checkbox':
                $listOptions = self::getListOptions($element);
                $listAttr = array('class' => $element->values->class, 'id' => $element->values->id);
                if (count($listOptions[0]) > 0) {
                    $i = 1;
                    foreach ($listOptions[0] as $key => $value) {
                        echo '<label>';
                        $form->{$type}($element->values->name . (count($listOptions[0]) > 1 ? '[]' : ''), $listOptions[1] == $i || count($listOptions[0]) == 1 && $elementData == 'on' ? true : false, $key, $listAttr);
                        echo $key . ' &nbsp;' . '</label>';
                        $i++;
                    }
                }
                break;
            case 'radio':
                $listOptions = self::getListOptions($element);
                $listAttr = array('class' => $element->values->class, 'id' => $element->values->id);
                if (count($listOptions[0]) > 0) {
                    $i = 1;
                    foreach ($listOptions[0] as $key => $value) {
                        echo '<label>';
                        $form->{$type}($element->values->name . (count($listOptions[0]) > 1 ? '[]' : ''), $listOptions[1] == $i || count($listOptions[0]) == 1 && $elementData == 'on' ? true : false, $key, $listAttr);
                        echo $key . ' &nbsp;' . '</label>';
                        $i++;
                    }
                }
                //  var_dump($listOptions[0]);
                // $form->$type($element->values->name . (''), $listOptions[0], $listOptions[1], $listAttr);
                break;
            case 'submit':
                $form->{$type}($element->values->label, array('class' => $element->values->class, 'id' => $element->values->id));
                break;
            case 'reset':
                $form->{$type}($element->values->label, array('class' => $element->values->class, 'id' => $element->values->id));
                break;
            case 'hidden':
                $form->{$type}($element->values->name, $element->values->value, array('class' => $element->values->class, 'id' => $element->values->id));
                break;
        }
    }
 public function indexAction()
 {
     $this->view->vacancies = K_TreeQuery::crt('/vacancies/')->type(array('vacancy'))->limit(2, 0)->go(array('childs' => true, 'orderby' => 'DESC'));
     $this->render('lastvacancies');
 }
Example #13
0
    
    Returns data for client-side tree
    
    var data = [
    {
    label: 'Тест',
    children: [
    { label: 'child1' },
    { label: 'child2' }
    ]
    },
    {
    label: 'Тест 2',
    children: [
    { label: 'child3' }
    ]
    }
    ];
    
    */
    public function getAction()
    {
        $this->disableRender = true;
        $query = new K_Db_Query();
        $treeStructure = array();
        $treeElements = array();
        if ($this->getParam('pid')) {
            $nodeId = $this->getParam('pid');
        } else {
            $nodeId = 0;
        }
        // Прийдётся лезть в тип списка
        $pidType = K_TreeQuery::gOne((int) $nodeId);
        //var_dump($pidType);
        if ($pidType['sorted'] == "По алфавиту") {
            $order = "`t1`.`tree_title`";
        } else {
            $order = "`t1`.`tree_lkey`";
        }
        $sql = 'SELECT `t1`.*, COUNT(`t2`.`tree_id`) as subElements FROM `tree` as `t1` 
				LEFT JOIN `tree` as `t2` ON `t2`.`tree_pid` = `t1`.`tree_id`
				WHERE `t1`.`tree_pid`=' . (int) $nodeId . '
				GROUP BY `t1`.`tree_id`, `t1`.`tree_pid`, `t1`.`tree_title`
				ORDER BY ' . $order;
        $treeElements = $query->q($sql);
        foreach ($treeElements as $key => $column) {
            $treeElements[$key] = $column->toArray();
        }
        if ($nodeId != '0') {
            $nodeArr = K_tree::getParents($nodeId);
            // выбираем всех родителей ноды
            $nodeArr[] = $nodeId;
            // добовляем id самой ноды
            // проверяем на доступ ноду со всеми её родителями к которой запрашиваються потомки
            /* foreach ( $pid_node_perents as $v ) {
			if ( is_string( $v ) ) {
			$resourse_arr[] = $v;
			$resourse = 't:' . implode( '/', $resourse_arr );
			// echo $resourse;
			try {
			$access = K_Access::acl()->isAllowed( K_Auth::getRoles(), $resourse, 'view' );
			// var_dump($access);
			}
			catch ( exception $e ) {
			$access = $allow_trigger;
			}
			$allow_trigger = $access;
			}
			}*/
            //строим ресур запрашиваемой ноды если нода не равна 0
            $allowTrigger = false;
            $access = false;
            $_nodeArr = $nodeArr;
            for ($i = count($_nodeArr); $i > 0; $i--) {
                $resourse = implode('/', $_nodeArr);
                array_pop($_nodeArr);
                $access = K_Access::aclTree()->isAllowed(K_Auth::getRoles(), $resourse, true);
                if (K_Access::aclTree()->lastResource) {
                    break;
                }
            }
            $allowTrigger = $access;
Example #14
0
 private function genLeftMenu()
 {
     $menu_arr = K_CupTree::rootPath(K_TreeQuery::crt('/leftmenu/')->types(array('menulink'))->go(), '/leftmenu/');
     return K_Menu::buildTreeMenu($menu_arr, 0, $this->meta['link']);
 }
Example #15
0
 public function one()
 {
     return K_TreeQuery::gOne($this->nid);
 }