Вход Регистрация
Файл: mg-core/metodadapter.php
Строк: 271
<?php

/**
 * Файл metodadapter.php содержит набор функций, необходимых пользователям
 * для построения собственных скриптов. Все функции этого файла,
 * являются  алиасами, для аналогичных функций из класса MG.
 * Целью использования данного файла является исключение из пользовательских
 * файлов сложного для понимания синтаксиса MG::
 *
 * @author Авдеев Марк <mark-avdeev@mail.ru>
 * @package moguta.cms
 * @subpackage Files
 */

/**
 * Метод addAction Добавляет обработчик для заданного хука.
 *
 * @param  $hookName имя хука на который вешается обработчик.
 * @param  $userFunction пользовательская функци, которая сработает при объявлении хука.
 * @param  $countArg количество аргументов, которое ждет пользовательская функция.
 */
function mgAddAction($hookName$userFunction$countArg 0$priority 10) {
  
MG::addAction($hookName$userFunction$countArg$priority);
}

/**
 * Метод addAction Добавляет обработчик шорткода .
 */
function mgAddShortcode($shortcode$userFunction) {
  
MG::addShortcode($shortcode$userFunction);
}

/**
 * Добавляет обработчик для страницы плагина.
 * Назначенная в качестве обработчика пользовательская функция.
 * будет, отрисовывать страницу настроек плагина.
 *
 * @param  $plugin название папки в которой лежит плагин.
 * @param  $userFunction пользовательская функци,
 *         которая сработает при открытии страницы настроек данного плагина.
 */
function mgPageThisPlugin($plugin$userFunction) {
  
MG::addAction($plugin$userFunction);
}

/**
 * Добавляет обработчик для активации плагина,
 * пользовательская функция будет срабатывать тогда когда
 * в панели администрирования будет активирован плагин.
 *
 * >Является необязательным атрибутом плагина, при отсутствии этого
 * обработчика плагин тоже будет работать.
 *
 * Функция обрабатывающя событие
 * не должна производить вывод (echo, print, print_r, var_dump), это нарушит
 * логику работы AJAX.
 *
 * @param  $dirPlugin директория в которой хранится плагин.
 * @param  $userFunction пользовательская функци, которая сработает при объявлении хука.
 */
function mgActivateThisPlugin($dirPlugin$userFunction) {
  
MG::activateThisPlugin($dirPlugin$userFunction);
}

/**
 * Добавляет обработчик для ДЕактивации плагина,
 * пользовательская функция будет срабатывать тогда когда
 * в панели администрирования будет выключен  плагин.
 *
 * >Является необязательным атрибутом плагина, при отсутствии этого
 * обработчика плагин тоже будет работать.
 *
 * Функция обрабатывающя событие
 * не должна производить вывод (echo, print, print_r, var_dump), это нарушит
 * логику работы AJAX.
 *
 * @param  $dirPlugin директория в которой хранится плагин.
 * @param  $userFunction пользовательская функци, которая сработает при объявлении хука.
 */
function mgDeactivateThisPlugin($dirPlugin$userFunction) {
  
MG::deactivateThisPlugin($dirPlugin$userFunction);
}

/**
 * Создает hook -  крючок, для  пользовательских функций и плагинов.
 * может быть вызван несколькими спообами:
 * 1. createHook('userFunction'); - в любом месте программы выполнится пользовательская функция userFunction() из плагина;
 * 2. createHook('userFunction', $args); - в любом месте программы выполнится пользовательская функция userFunction($args) из плагина с параметрами;
 * 3. return createHook('thisFunctionInUserEnviroment', $result, $args); - хук прописывается перед.
 *  возвращением результата какой либо функции,
 *  в качестве параметров передается результат работы текущей функции,
 *  и начальные параметры которые были переданы ей.
 *
 * @param array $arr параметры, которые надо защитить.
 * @return array $arr теже параметры, но уже безопасные.
 */
function mgCreateHook($hookName) {
  
MG::createHook($hookName);
}

/**
 * Добавляет переданную строку в секцию <head> </head>
 *
 * @param string $data - строковая переменная, с данными.
 * Например:
 *   mgAddMeta('<script type="text/javascript" src="'.SITE.'/mg-plugins/category-menu/js/category-menu.js"> </script>'); - подключится для каждой страницы
 * 
 * @param mixed $pages - перечень url на которых должен быть подключен файл если $only=true
 * @param bool  $only ? если false то подключаться будет для всех кроме $pages,  если для $only=true то только для $pages
 * @param bool  $sectionMode - проверка на соответствие заданной секции
 * Подключится только для страницы http://localhost/coolmoguta/dostavka
 * mgAddMeta('<script type="text/javascript" src="'.SITE.'/mg-plugins/category-menu/js/category-menu.js"> </script>', array('http://localhost/coolmoguta/dostavka'));
 * 
 * 
 * Подключится только для всех кроме страницы http://localhost/coolmoguta/dostavka
 * mgAddMeta('<script type="text/javascript" src="'.SITE.'/mg-plugins/category-menu/js/category-menu.js"> </script>', array('http://localhost/coolmoguta/dostavka'), false  );


 * @return void.
 */
function mgAddMeta($data,$onlyController='all') {
 
  
$register MG::get('register') ? MG::get('register') : array();

  
// если заголовок нужно подключить только в определенном контролере, то записываем его в  отдельный ключ массива
  
if($onlyController!='all'){
    
$onlyController 'controllers_'.$onlyController;   
  }
  if(!empty(
$register[$onlyController])){
    if (!
in_array($data$register[$onlyController])) {
      
$register[$onlyController][] = $data;        
    }  
  }else{
    
$register[$onlyController][] = $data;     
  }

 
// viewData($register);
  
MG::set('register'$register);
  
MG::set('userMeta'MG::get('userMeta')."n".$data);
   
}

/**
 * Устанавливает значение для опции (настройки).
 * @param array $data -  может содержать значения для полей таблицы.
 * <code>
 * $data = array(
 *   option => 'идентификатор опции например: sitename'
 *   value  => 'значение опции например: moguta.ru'
 *   active => 'в будущем будет отвечать за автоподгрузку опций в кеш Y/N'
 *   name => 'Метка для опции например: Имя сайта'
 *   desc => 'Описание опции: Настройа задает имя для сайта'
 * )
 * </code>
 * @return void
 */
function setOption($data) {
  
// Если функция вызвана вот так: setOption('option', 'value');
  
if (func_num_args()==2) {
    
$arg func_get_args();
    
$data = array();
    
$data['option'] = $arg[0];
    
$data['value'] = $arg[1];
  }
  
MG::setOption($data);
}

/**
 * Возвращает значение для запрошенной опции (настройки).
 * имеет два режима:
 * 1. getOption('optionName') - вернет только значени;
 * 2. getOption('optionName' , true) - вернет всю информацию об опции в
 * виде массива.
 * <code>
 * $data = array(
 *   option => 'идентификатор опции например: sitename'
 *   value  => 'значение опции например: moguta.ru'
 *   active => 'в будущем будет отвечать за автоподгрузку опций в кеш Y/N'
 *   name => 'Метка для опции например: Имя сайта'
 *   desc => 'Описание опции: Настройа задает имя для сайта'
 * )
 * </code>
 * @return void
 */
function getOption($option$data false) {
  return 
MG::getOption($option$data);
}

/**
 * Получить меню в HTML виде.
 * @return object - объект класса Menu.
 */
function mgMenu() {
  echo 
MG::getMenu();
}

/**
 * Получить полное меню в HTML виде.
 * @return object - объект класса Menu.
 */
function mgMenuFull($type='top') {
  echo 
MG::getMenu($type);
}
/**
 * Получить параметры маленькой корзины.
 * @return object - объект класса SmalCart.
 */
function mgGetCart() {
  return 
MG::getSmalCart();
}

/**
 * Устанавливает шорткод для вывода meta данных к сгенерированной странице.
 * @param string|bool $title заголовок страницы.
 * @return void.
 */
function mgMeta() {
  echo 
'[mg-meta]';
  
mgAddShortcode('mg-meta''mgMetaInsert');
}

function 
mgMetaInsert(){   
  return  
MG::meta();
}


/**
 * Устанавливает meta данные страницы title, description, keywords.
 * @param string|bool $title заголовок страницы.
 * @return void.
 */
function mgSEO($data) {
  
MG::seoMeta($data);
}

/**
 * Задает заголовок страницы.
 * @return void
 */
function mgTitle($title) {
  
MG::titlePage($title);
}

/**
 * Выводит содержимое массива на страницу
 * @return void
 */
function viewData($data) {
  echo 
"<pre>";
  echo 
htmlspecialchars(print_r($datatrue));
  echo 
"</pre>";
}

/**
 * Склонение числительных
 * пример
 * echo 'Найдено '.mgDeclensionNum($data['searchData']['count'], array('товар', 'товара', 'товаров'))
 * @param type $number
 * @param type $titles
 * @return type
 */
function mgDeclensionNum($number$titles) {
  return 
MG::declensionNum($number$titles);
}

/**
 * Проверяет является ли страница статичной, созданной из панели администрирования
 * @return void
 */
function isStaticPage() {
 return 
MG::get('isStaticPage');  
}

/**
 * Блок стандартной маленькой корзины в HTML виде.
 * @param type $data
 * @return object - объект класса Menu.
 */
function mgSmallCartBlock($data) {
  echo 
MG::layoutManager('layout_cart'$data);
}

/**
 * Блок стандартной маленькой корзины в HTML виде.
 * @param type $data
 * @return object - объект класса Menu.
 */
function mgSearchBlock() {
  echo 
MG::layoutManager('layout_search'null);
}

/**
 * Блок с контактами в HTML виде.
 * @param type $data
 * @return object - объект класса Menu.
 */
function mgContactBlock() {
  echo 
MG::layoutManager('layout_contacts'null);
}

/**
 * Возвращает правильно сформированную картинку для продукта в HTML.
 * Со всеми параметрами, для эфекта перелета в корщину..
 * @param type $data - параметры продукта
 * @return object - объект класса Menu.
 */
function mgImageProduct($data) {
   
$product = new Models_Product();
   
$imagesData $product->imagesConctruction($data["image_url"], $data["image_title"], $data["image_alt"]);
   
$src $data["image_url"] ? SITE.'/uploads/thumbs/70_'.$data["image_url"] : SITE."/uploads/no-img.jpg";
   
   return 
'<img data-transfer="true" data-product-id="'.$data["id"].'" src="'.$src.'" alt="'.$imagesData["image_alt"].'" title="'.$imagesData["image_title"].'">';
    
}

/**
 * Возвращает правильно сформированную картинку для продукта в HTML.
 * Со всеми параметрами, для эфекта перелета в корзину..
 * @param type $data - параметры продукта
 * @return object - объект класса Menu.
 */
function mgGalleryProduct($data) {   
   echo 
MG::layoutManager('layout_images'$data);        
}

/**
 * Возвращает IMG с логотипом магазина.
 */
function mgLogo($alt='',$title=''$style='') { 
   if(!
$title&&!$alt){
     
$title MG::getSetting('shopName');
     
$alt $title;
   }
   return 
'<img src='.SITE.MG::getSetting('shopLogo').' alt="'.htmlspecialchars($alt).'" title="'.htmlspecialchars($title).'" '.$style.'>';    
}

/**
 * Выводит верстку содержащуюся в заданном layout 
 * @param  $layout - название верстки  в папке шаблона layout, без префикса 'layout_'
 */
function layout($layout,$data null) { 
  if(
in_array($layout, array('cart','auth','contacts','search'))){
    
$data MG::get('templateData');
  }
  
  if(
$layout=='topmenu'){
    echo 
Menu::getMenuFull('top');
    return 
true;
  }  
  
  if(
$layout=='leftmenu'){
    
$data MG::get('templateData');
    echo 
$data['categoryList'];
    return 
true;
  }  
  
  if(
$layout=='content'){
    
$data MG::get('templateData');
    echo 
$data['content'];
    return 
true;
  }   
  
  if(
$layout=='widget'){
    echo 
MG::getSetting('widgetCode');
    return 
true;
  }   
  
  if(
$layout=='logo'){
    echo 
'<img src="'.SITE.MG::getSetting('shopLogo').'" alt="">';
    return 
true;
  } 
    
  echo  
MG::layoutManager('layout_'.$layout$data);     
  return 
true;
}

/**
 * возвращает цену в отформатированном виде
 */
function priceFormat($number){
  return 
$number;

  
// return MG::numberFormat($number);
}
Онлайн: 2
Реклама