コード例 #1
0
ファイル: Yml.php プロジェクト: infrajs/yml
 public static function parse($data)
 {
     $gid = 0;
     $pid = 0;
     $groups = array();
     $poss = array();
     $conf = static::$conf;
     if (!$conf['name']) {
         throw new \Exception('В конфиге yml требуется указать name. Наименование компании без организационный формы');
     }
     if (!$conf['company']) {
         throw new \Exception('В конфиге yml требуется указать company, название компании с организационной формой ООО');
     }
     Xlsx::runPoss($data, function (&$pos) {
         $pos['Описание'] = Yml::tostr($pos['Описание']);
     });
     Xlsx::runGroups($data, function (&$group, $i, &$parent) use(&$gid, &$groups) {
         $group['id'] = ++$gid;
         if ($parent) {
             $group['parentId'] = $parent['id'];
         }
         $groups[] =& $group;
     });
     Xlsx::runPoss($data, function (&$pos, $i, &$group) use(&$pid, &$poss) {
         $pos['id'] = ++$pid;
         $pos['categoryId'] = $group['id'];
         $poss[] =& $pos;
     });
     $d = array("conf" => $conf, "support" => Access::$conf["admin"]["support"], "site" => View::getPath(), "poss" => $poss, "groups" => $groups);
     $html = Template::parse('-yml/yml.tpl', $d);
     return $html;
 }
コード例 #2
0
ファイル: Seojson.php プロジェクト: infrajs/layer-seojson
 public function check(&$layer)
 {
     if (!empty($layer['seojsontpl'])) {
         $layer['seojson'] = Template::parse(array($layer['seojsontpl']), $layer);
     }
     if (empty($layer['seojson'])) {
         return;
     }
     $item = self::load($layer['seojson']);
     if (!$item) {
         return;
     }
     $html = View::html();
     if (!empty($item['image_src'])) {
         self::meta($html, $item, 'link', 'image_src');
         self::meta($html, $item, 'property', 'og:image', $item['image_src']);
         self::meta($html, $item, 'name', 'twitter:image', $item['image_src']);
         //self::meta($html, $item, 'itemprop', 'image', $item['image_src']);
     }
     if (!empty($item['canonical'])) {
         self::meta($html, $item, 'link', 'canonical');
         self::meta($html, $item, 'name', 'twitter:site', $item['canonical']);
         self::meta($html, $item, 'property', 'og:url', $item['canonical']);
         //self::meta($html, $item, 'property', 'business:contact_data:website', $item['canonical']);
     }
     if (!empty($item['description'])) {
         self::meta($html, $item, 'name', 'description');
         self::meta($html, $item, 'property', 'og:description', $item['description']);
         self::meta($html, $item, 'name', 'twitter:description', $item['description']);
     }
     self::meta($html, $item, 'name', 'keywords');
     if (!empty($item['title'])) {
         self::meta($html, $item, 'title', 'title');
         self::meta($html, $item, 'property', 'og:title', $item['title']);
         self::meta($html, $item, 'name', 'twitter:title', $item['title']);
     }
     if (!empty($item['site_name'])) {
         self::meta($html, $item, 'property', 'site_name');
         self::meta($html, $item, 'itemprop', 'name', $item['site_name']);
         self::meta($html, $item, 'property', 'og:site_name', $item['site_name']);
     }
     if (!empty($item['properties'])) {
         foreach ($item['properties'] as $k => $v) {
             self::meta($html, $item['properties'], 'property', $k);
         }
     }
     if (!empty($item['names'])) {
         foreach ($item['names'] as $k => $v) {
             self::meta($html, $item['names'], 'name', $k);
         }
     }
     if (!empty($item['itemprops'])) {
         foreach ($item['itemprops'] as $k => $v) {
             self::meta($html, $item['itemprops'], 'itemprop', $k);
         }
     }
     View::html($html, true);
 }
コード例 #3
0
ファイル: Css.php プロジェクト: infrajs/layer-css
 public static function check(&$layer)
 {
     if (!isset($layer['css'])) {
         return;
     }
     if (static::$ready[$css]) {
         return;
     }
     Each::fora($layer['css'], function ($css) use(&$layer) {
         Css::$ready[$css] = true;
         $code = Load::loadTEXT($css);
         View::html('<style>' . $code . '</style>', $layer['div']);
         $r = null;
         return $r;
     });
 }
コード例 #4
0
ファイル: Controller.php プロジェクト: infrajs/controller
 public static function check(&$layers)
 {
     static::$layers =& $layers;
     //Пробежка по слоям
     Event::tik('Infrajs');
     Event::tik('layer');
     Event::fire('Infrajs.oninit');
     //сборка событий
     Run::exec(static::$layers, function &(&$layer, &$parent) {
         //Запускается у всех слоёв в работе
         $r = null;
         if ($parent) {
             $layer['parent'] =& $parent;
         }
         Event::fire('layer.oninit', $layer);
         if (!Event::fire('layer.ischeck', $layer)) {
             return $r;
         }
         Event::fire('layer.oncheck', $layer);
         return $r;
     });
     //разрыв нужен для того чтобы можно было наперёд определить показывается слой или нет. oncheck у всех. а потом по порядку.
     Event::fire('oncheck');
     //момент когда доступны слои по getUnickLayer
     Run::exec(static::$layers, function &(&$layer) {
         //С чего вдруг oncheck у всех слоёв.. надо только у активных
         $r = null;
         if (Event::fire('layer.isshow', $layer)) {
             //Событие в котором вставляется html
             Event::fire('layer.onshow', $layer);
             //при клике делается отметка в конфиге слоя и слой парсится... в oncheck будут подстановки tpl и isRest вернёт false
             //onchange показанный слой не реагирует на изменение адресной строки, нельзя привязывать динамику интерфейса к адресной строке, только черещ перепарсивание
         }
         return $r;
     });
     //у родительского слоя showed будет реальное а не старое
     Event::fire('Infrajs.onshow');
     //loader, setA, seo добавить в html, можно зациклить check
     $html = View::html();
     //View::html('',true);
     return $html;
 }
コード例 #5
0
ファイル: Access.php プロジェクト: infrajs/access
 /**
  * Access::admin(true) - пропускает только если ты администратор, иначе выкидывает окно авторизации
  * Access::admin(false) - пропускает только если ты НЕ администратор, иначе выкидывает окно авторизации
  * $ans выводится в json если нажать отмена
  * Access::admin(array('login','pass'));.
  */
 public static function admin($break = null, $ans = array('msg' => 'Требуется авторизация', 'result' => 0))
 {
     $data = static::$conf['admin'];
     $_ADM_NAME = $data['login'];
     $_ADM_PASS = $data['password'];
     $admin = null;
     //Неизвестно
     $realkey = md5($_ADM_NAME . $_ADM_PASS . $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']);
     if (is_array($break)) {
         Nostore::on();
         //Если имя в конфиге указано, и переданные данные в массиве соответствуют
         $admin = $_ADM_NAME && $break[0] === $_ADM_NAME && $break[1] === $_ADM_PASS;
         if ($admin) {
             View::setCookie('infra_admin', $realkey);
         } else {
             View::setCookie('infra_admin');
         }
     } else {
         $key = View::getCookie('infra_admin');
         $admin = $key === $realkey;
         if ($break === false) {
             Nostore::on();
             View::setCookie('infra_admin');
             $admin = false;
         } elseif ($break === true && !$admin) {
             Nostore::on();
             //Если имя в конфиге указано, и переданные данные по HTTP соответствуют
             $admin = $_ADM_NAME && @$_SERVER['PHP_AUTH_USER'] == $_ADM_NAME && @$_SERVER['PHP_AUTH_PW'] == $_ADM_PASS;
             if ($admin) {
                 View::setCookie('infra_admin', $realkey);
             } else {
                 header('WWW-Authenticate: Basic realm="Protected Area"');
                 header('HTTP/1.0 401 Unauthorized');
                 echo json_encode($ans);
                 exit;
             }
         }
     }
     return $admin;
 }
コード例 #6
0
ファイル: infra.php プロジェクト: infrajs/ascroll
<?php

namespace infrajs\ascroll;

use infrajs\event\Event;
use infrajs\view\View;
use infrajs\infra\Infra;
Event::handler('onjs', function () {
    View::js('-ascroll/ascroll.js');
    View::js('-ascroll/infra.js');
});
コード例 #7
0
ファイル: search.php プロジェクト: infrajs/catalog
            }
            $link = $link . '?m=:producer.' . $val . '=1';
        } else {
            if ($md['search']) {
                $val = $md['search'];
                $link = $link . '?m=:search:' . $val;
            }
        }
    }
    if ($val) {
        $ans['title'] = $val;
    }
    unset($ans['md']);
    unset($ans['m']);
    $ans['external'] = '-catalog/seo.json';
    $ans['canonical'] = View::getPath() . $link;
    return Ans::ans($ans);
}
//Nostore::on():
if (isset($_GET['p'])) {
    $ans['page'] = (int) $_GET['p'];
    if ($ans['page'] < 1) {
        $ans['page'] = 1;
    }
} else {
    $ans['page'] = 1;
}
$args = array($md, $ans['page']);
$re = isset($_GET['re']);
if (!$re) {
    if ($ans['page'] != 1) {
コード例 #8
0
ファイル: exec.php プロジェクト: infrajs/infrajs
<?php

namespace infrajs\controller;

use infrajs\ans\Ans;
use infrajs\path\Path;
use infrajs\view\View;
use infrajs\load\Load;
use infrajs\router\Router;
if (!is_file('vendor/autoload.php')) {
    chdir('../../../../');
    require_once 'vendor/autoload.php';
    Router::init();
}
$query = Crumb::$href;
$ans = array('title' => 'Проверки контроллера');
$composer = Load::loadJSON('-infrajs/composer.json');
$require = $composer['require'];
foreach ($require as $path => $ver) {
    $p = explode('/', $path);
    $r = Path::reqif('-' . $p[1] . '/infra.php');
}
$layer = array('data' => 1, 'tpl' => array('qewr{data}'));
Crumb::change('');
$html = Controller::check($layer);
if ($html != 'qewr1') {
    return Ans::err($ans, 'Результат неожиданный ' . $html);
}
Crumb::change($query);
View::html('', true);
return Ans::ret($ans);
コード例 #9
0
ファイル: conth.php プロジェクト: infrajs/contacts
        }
    }
    if ($conf['filesize']) {
        $size = $file['size'] / (1000 * 1000);
        if ($size > $conf['filesize']) {
            return Ans::err($ans, 'Приложен слишком большой файл. Ограничение ' . $conf['filesize'] . ' Mb');
        }
    }
}
$data = $_POST;
$data['post'] = $_POST;
$data['email'] = $email;
$data['text'] = $text;
$data['name'] = $persona;
$data['schema'] = View::getSchema();
$data['host'] = View::getHost();
$data['org'] = @$_POST['org'];
$data['phone'] = @$_POST['phone'];
$data['ip'] = $_SERVER['REMOTE_ADDR'];
$data['ref'] = $_SERVER['HTTP_REFERER'];
$data['browser'] = $_SERVER['HTTP_USER_AGENT'];
$data['time'] = date("F j, Y, g:i a");
$maildir = Path::resolve('~.contacts/');
if (!is_dir($maildir)) {
    mkdir($maildir);
}
$mdata = array();
$p = explode(',', $data['email']);
$mdata['email_from'] = $p[0];
$mdata['subject'] = 'Сообщение через форму контактов ' . $_SERVER['HTTP_HOST'];
if (trim(mb_strtolower($data['name'])) == 'itlife') {
コード例 #10
0
ファイル: controller.php プロジェクト: infrajs/controller
    if (Layer::pop($layer, 'onlyclient')) {
        return;
    }
    $layer['html'] = Tpl::getHtml($layer);
}, 'tpl:div');
Event::handler('Layer.onshow', function (&$layer) {
    //tpl
    if (Layer::pop($layer, 'onlyclient')) {
        return;
    }
    if (!empty($layer['div'])) {
        $div = $layer['div'];
    } else {
        $div = null;
    }
    $r = View::html($layer['html'], $div);
    if (!$r && (!isset($layer['divcheck']) || !$layer['divcheck'])) {
        echo 'Не найден div ' . $layer['div'] . ' infra_html<br>';
    }
    unset($layer['html']);
    //нефиг в памяти весеть
}, 'tpl:div');
Run::runAddList('layers');
Layer::parsedAdd('is');
Event::handler('Layer.isshow', function (&$layer) {
    $prop = 'is';
    $proptpl = $prop . 'tpl';
    if (isset($layer[$proptpl])) {
        $p = $layer[$proptpl];
        $p = Template::parse(array($p), $layer);
        $layer[$prop] = $p;
コード例 #11
0
ファイル: sync.php プロジェクト: infrajs/session
                if ($right) {
                    $n['value'] = Sequence::set($n['value'], $right, $item['value']);
                    //Новость осталась но она включает устанавливаемые данные
                }
                return $r;
            });
            if ($r) {
                $del = new Fix('del');
                return $del;
            }
            $r = null;
            return $r;
        });
    }
}
if ($list) {
    if (!$session_id) {
        $pass = md5(print_r($list, true) . time() . rand());
        $pass = substr($pass, 0, 8);
        $sql = 'insert into `ses_sessions`(`password`) VALUES(?)';
        $stmt = $db->prepare($sql);
        $stmt->execute(array($pass));
        $session_id = $db->lastInsertId();
        View::setCookie('infra_session_id', $session_id);
        View::setCookie('infra_session_pass', md5($pass));
    }
    Session::writeNews($list, $session_id);
    //$ans['news']=array_merge($news,$list);
}
return Ans::ret($ans);
/**/
コード例 #12
0
ファイル: index.php プロジェクト: infrajs/rubrics
        }
    } elseif (isset($_GET['gallery'])) {
        $src = Rubrics::find($dir, $id);
        $info = Rubrics::info($src);
        $ans['info'] = $info;
        return Ans::ret($ans);
    } elseif (isset($_GET['load'])) {
        if (!$res) {
            //@header("Status: 404 Not Found");
            //@header("HTTP/1.0 404 Not Found");
            @header('location: ' . View::getPath() . '?' . $type . '/' . $id);
            //Просто редирект на страницу со списокм всех файлов
        } else {
            //echo View::getPath().$dir.$res['file'];
            //exit;
            @header('location: ' . View::getPath() . $dir . $res['file']);
        }
        exit;
    } else {
        return Ans::err($res, 'id что?');
    }
} elseif (isset($_GET['list'])) {
    if (isset($_GET['lim'])) {
        $lim = $_GET['lim'];
    } else {
        $lim = '0,100';
    }
    $p = explode(',', $lim);
    if (sizeof($p) != 2) {
        return Ans::err($ans, 'Is wrong paramter lim');
    }
コード例 #13
0
ファイル: infra.php プロジェクト: infrajs/activelink
<?php

namespace infrajs\activelink;

use infrajs\event\Event;
use infrajs\view\View;
Event::handler('onjs', function () {
    View::js('-activelink/activelink.js');
    View::js('-activelink/infra.js');
});
コード例 #14
0
ファイル: Session.php プロジェクト: infrajs/session
 public static function change($session_id, $pass = null)
 {
     $email = Session::getEmail();
     $session_id_old = Session::initId();
     if (!$email) {
         //Текущая сессия не авторизированная
         $email = Session::getEmail($session_id);
         if ($email) {
             //А вот новая сессия аторизированна, значит нужно объединить сессии и грохнуть старую
             $newans = Session::recivenews();
             //Нужно это всё записать в базу данных для сессии 1
             Session::writeNews($newans['news'], $session_id);
             //Теперь старую сессию нужно удалить полностью
             //Надо подчистить 2 таблицы
             if ($session_id_old) {
                 //хз бывает ли такое что его нет
                 $conf = Config::get();
                 $tables = $conf['session']['change_session_tables'];
                 //Массив с таблицами в которых нужно изменить session_id неавторизированного пользователя, при авторизации
                 $db = Db::pdo();
                 Each::forr($tables, function &() use($session_id_old, $session_id, &$db) {
                     $sql = 'UPDATE images SET session_id = ? WHERE session_id = ?;';
                     $stmt = $db->prepare($sql);
                     $stmt->execute(array($session_id, $session_id_old));
                     $r = null;
                     return $r;
                 });
                 $sql = 'DELETE from ses_records where session_id=?';
                 $stmt = $db->prepare($sql);
                 $stmt->execute(array($session_id_old));
                 $sql = 'DELETE from ses_sessions where session_id=?';
                 $stmt = $db->prepare($sql);
                 $stmt->execute(array($session_id_old));
             }
         }
     }
     global $infra_session_data;
     $infra_session_data = array();
     if (is_null($pass)) {
         $user = Session::getUser($session_id);
         $pass = md5($user['password']);
     }
     View::setCookie(Session::getName('pass'), $pass);
     View::setCookie(Session::getName('id'), $session_id);
     View::setCookie(Session::getName('time'), 1);
     Session::syncNow();
 }
コード例 #15
0
ファイル: view.php プロジェクト: infrajs/view
<?php

namespace infrajs\view;

use infrajs\ans\Ans;
if (!is_file('vendor/autoload.php')) {
    chdir('../../../../');
    require_once 'vendor/autoload.php';
}
$ans = array();
$ans['title'] = 'Проверка методов view';
View::setCookie('test', true);
$val = View::getCookie('test');
if (!$val) {
    return Ans::err($ans, 'Неудалось восстановить значение из COOKIE');
}
return Ans::ret($ans);
コード例 #16
0
ファイル: Seojson.php プロジェクト: infrajs/layer-seojson
 public static function check(&$layer)
 {
     if (!empty($layer['seojsontpl'])) {
         $layer['seojson'] = Template::parse(array($layer['seojsontpl']), $layer);
     }
     if (empty($layer['seojson'])) {
         return;
     }
     $item = self::load($layer['seojson']);
     if (!$item) {
         return;
     }
     $html = View::html();
     if (!empty($item['image_src'])) {
         self::meta($html, $item, 'link', 'image_src');
         self::meta($html, $item, 'property', 'og:image', $item['image_src']);
         self::meta($html, $item, 'name', 'twitter:image', $item['image_src']);
         //self::meta($html, $item, 'itemprop', 'image', $item['image_src']);
     }
     if (empty($item['canonical'])) {
         $query = preg_replace('/^\\//', '', $_SERVER['REQUEST_URI']);
         $item['canonical'] = View::getPath() . $query;
     }
     if (!empty($item['canonical'])) {
         self::meta($html, $item, 'link', 'canonical');
         self::meta($html, $item, 'name', 'twitter:site', $item['canonical']);
         self::meta($html, $item, 'property', 'og:url', $item['canonical']);
         //self::meta($html, $item, 'property', 'business:contact_data:website', $item['canonical']);
     }
     if (!empty($item['description'])) {
         self::meta($html, $item, 'name', 'description');
         self::meta($html, $item, 'property', 'og:description', $item['description']);
         self::meta($html, $item, 'name', 'twitter:description', $item['description']);
     }
     self::meta($html, $item, 'name', 'keywords');
     if (!empty($item['title'])) {
         self::meta($html, $item, 'title', 'title');
         self::meta($html, $item, 'property', 'og:title', $item['title']);
         self::meta($html, $item, 'name', 'twitter:title', $item['title']);
     }
     if (!empty($item['site_name'])) {
         self::meta($html, $item, 'property', 'site_name');
         self::meta($html, $item, 'itemprop', 'name', $item['site_name']);
         self::meta($html, $item, 'property', 'og:site_name', $item['site_name']);
     }
     if (empty($item['properties']['og:type'])) {
         self::meta($html, $item, 'property', 'og:type', 'website');
     }
     if (!empty($item['properties'])) {
         foreach ($item['properties'] as $k => $v) {
             self::meta($html, $item['properties'], 'property', $k, $v);
         }
     }
     if (!empty($item['names'])) {
         foreach ($item['names'] as $k => $v) {
             self::meta($html, $item['names'], 'name', $k, $v);
         }
     }
     if (!empty($item['itemprops'])) {
         foreach ($item['itemprops'] as $k => $v) {
             self::meta($html, $item['itemprops'], 'itemprop', $k, $v);
         }
     }
     View::html($html, true);
 }
コード例 #17
0
ファイル: infra.php プロジェクト: infrajs/htmlcompress
<?php

use infrajs\event\Event;
use infrajs\view\View;
use infrajs\access\Access;
use WyriHaximus\HtmlCompress;
Event::one('Controller.onshow', function () {
    if (Access::debug()) {
        return;
    }
    $html = View::html();
    $parser = HtmlCompress\Factory::construct();
    $html = $parser->compress($html);
    View::html($html, true);
});