示例#1
0
 private function initialise()
 {
     static $loaded = false;
     if (!$loaded || true) {
         defined('DS') || define('DS', DIRECTORY_SEPARATOR);
         require_once JPATH_SITE . '/components/com_sobipro/lib/sobi.php';
         Sobi::Initialise();
         if (SOBI_CMS == 'joomla3') {
             SPFactory::header()->initBase(true)->addJsFile(array('sobipro', 'jqnc', 'adm.sobipro', 'adm.jnmenu', 'jquery-base64'));
         } else {
             SPFactory::header()->initBase(true)->addJsFile(array('sobipro', 'jquery', 'adm.sobipro', 'adm.jnmenu', 'jquery-migrate', 'jquery-base64'))->addCSSCode('#toolbar-box { display: block }');
         }
         $loaded = true;
         SPLoader::loadClass('mlo.input');
         SPLoader::loadClass('models.datamodel');
         SPLoader::loadClass('models.dbobject');
         SPLoader::loadModel('section');
         $model = JModelLegacy::getInstance('MenusModelItem')->getItem();
         self::$mid = $model->id;
         if (isset($model->params['SobiProSettings']) && strlen($model->params['SobiProSettings'])) {
             $this->params = json_decode(base64_decode($model->params['SobiProSettings']));
         }
         $jsString = json_encode(array('component' => Sobi::Txt('SOBI_NATIVE_TASKS'), 'buttonLabel' => Sobi::Txt('SOBI_SELECT_FUNCTIONALITY')));
         SPFactory::header()->addJsCode("SpStrings = {$jsString}; ");
     }
 }
示例#2
0
 public function __construct($component)
 {
     if (!defined('SOBIPRO')) {
         define('SOBIPRO', true);
         defined('SOBI_CMS') || version_compare(JVERSION, '1.6.0', 'ge') ? define('SOBI_CMS', 'joomla16') : define('SOBI_CMS', 'joomla15');
         defined('SOBI_TASK') || define('SOBI_TASK', 'task');
         defined('SOBI_DEFLANG') || define('SOBI_DEFLANG', JFactory::getConfig()->get('config.language'));
         defined('SOBI_ACL') || define('SOBI_ACL', 'front');
         defined('SOBI_ROOT') || define('SOBI_ROOT', JPATH_ROOT);
         defined('SOBI_MEDIA') || define('SOBI_MEDIA', implode(DIRECTORY_SEPARATOR, array(JPATH_ROOT, 'media', 'sobipro')));
         defined('SOBI_MEDIA_LIVE') || define('SOBI_MEDIA_LIVE', JURI::root() . '/media/sobipro');
         defined('SOBI_PATH') || define('SOBI_PATH', SOBI_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_sobipro');
         defined('SOBI_LIVE_PATH') || define('SOBI_LIVE_PATH', 'components/com_sobipro');
         $this->addFile(SOBI_PATH . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR . 'base' . DIRECTORY_SEPARATOR . 'fs' . DIRECTORY_SEPARATOR . 'loader.php');
     }
     SPLoader::loadController('interface');
     SPLoader::loadClass('base.filter');
     SPLoader::loadClass('base.request');
     SPLoader::loadClass('base.const');
     SPLoader::loadClass('base.factory');
     SPLoader::loadClass('base.object');
     SPLoader::loadClass('base.filter');
     SPLoader::loadClass('base.request');
     SPLoader::loadClass('sobi');
     SPLoader::loadClass('base.config');
     SPLoader::loadClass('base.exception');
     SPLoader::loadClass('cms.base.lang');
     SPLoader::loadClass('mlo.input');
     parent::__construct($component);
 }
示例#3
0
 protected function loadFunction($function)
 {
     $xml = new DOMDocument();
     $xml->load(SPLoader::path("menu.{$function}", 'adm.templates', true, 'xml'));
     $xpath = new DOMXPath($xml);
     $this->loadLanguage($xpath);
     $calls = $xpath->query('/definition/config/calls/call');
     $this->menu = SPFactory::db()->select('*', '#__menu', array('id' => SPRequest::int('mid')))->loadObject();
     if (isset($this->menu->params)) {
         $this->menu->params = json_decode($this->menu->params);
         if (isset($this->menu->params->SobiProSettings)) {
             $this->menu->params->SobiProSettings = json_decode(base64_decode($this->menu->params->SobiProSettings));
         }
     }
     /** @var SPAdmView $view */
     $view = SPFactory::View('joomla-menu', true);
     $view->assign($this->menu, 'joomlaMenu');
     $section = SPRequest::int('section');
     if ($calls->length) {
         foreach ($calls as $file) {
             $method = $file->attributes->getNamedItem('method')->nodeValue;
             if ($file->attributes->getNamedItem('static') && $file->attributes->getNamedItem('static')->nodeValue == 'true') {
                 $class = SPLoader::loadClass($file->attributes->getNamedItem('file')->nodeValue);
                 $class::$method($view, $this->menu);
             } else {
                 $obj = SPFactory::Instance($file->attributes->getNamedItem('file')->nodeValue);
                 $obj->{$method}($view, $this->menu);
             }
         }
     }
     $view->assign($section, 'sectionId')->determineTemplate('menu', $function)->display();
 }
示例#4
0
文件: entry.php 项目: pelloq1/SobiPro
 protected function edit()
 {
     SPLoader::loadClass('html.tooltip');
     $this->_type = 'entry_form';
     $id = $this->get('entry.id');
     if ($id) {
         $this->addHidden($id, 'entry.id');
     }
     if (Sobi::Cfg('legacy.sigsiutree', false)) {
         /* load the SigsiuTree class */
         $tree = SPLoader::loadClass('mlo.tree');
         /* create new instance */
         $tree = new $tree(Sobi::Cfg('list.categories_ordering'));
         $link = "javascript:SP_selectCat( '{sid}' )";
         $tree->setHref($link);
         $tree->setTask('category.chooser');
         $tree->disable(Sobi::Section());
         $tree->init(Sobi::Section());
         $head = SPFactory::header();
         $params = array();
         $params['URL'] = Sobi::Url(array('task' => 'category.parents', 'out' => 'json'), true, false, true);
         $params['MAXCATS'] = Sobi::Cfg('legacy.maxCats', '5');
         $params['SEPARATOR'] = Sobi::Cfg('string.path_separator', ' > ');
         $head->addJsVarFile('edit', md5(Sobi::Section() . Sobi::Section(true) . serialize($params)), $params);
     }
     $type = $this->key('template_type', 'xslt');
     if ($type != 'php' && Sobi::Cfg('global.disable_xslt', false)) {
         $type = 'php';
     }
     if ($type == 'xslt') {
         $data = $this->entryData(false);
         $fields = $this->get('fields');
         $f = array();
         if (count($fields)) {
             foreach ($fields as $field) {
                 if ($field->enabled('form')) {
                     $pf = null;
                     $pfm = null;
                     if (!$field->get('isFree') && $field->get('fee') && !Sobi::Can('entry.payment.free')) {
                         $pf = SPLang::currency($field->get('fee'));
                         $pfm = Sobi::Txt('EN.FIELD_NOT_FREE_MSG', array('fee' => $pf, 'fieldname' => $field->get('name')));
                     }
                     $f[$field->get('nid')] = array('_complex' => 1, '_data' => array('label' => array('_complex' => 1, '_data' => $field->get('name'), '_attributes' => array('lang' => Sobi::Lang(false), 'show' => $field->__get('showEditLabel'))), 'data' => array('_complex' => 1, '_xml' => 1, '_data' => $field->field(true)), 'description' => array('_complex' => 1, '_xml' => 1, '_data' => $field->get('description')), 'fee' => $pf, 'fee_msg' => $pfm), '_attributes' => array('id' => $field->get('id'), 'type' => $field->get('type'), 'suffix' => $field->get('suffix'), 'position' => $field->get('position'), 'required' => $field->get('required'), 'css_edit' => $field->get('cssClassEdit'), 'width' => $field->get('bsWidth'), 'css_class' => strlen($field->get('cssClass')) ? $field->get('cssClass') : 'spField'));
                 }
             }
         }
         $f['save_button'] = array('_complex' => 1, '_data' => array('data' => array('_complex' => 1, '_xml' => 1, '_data' => SPHtml_Input::submit('save', Sobi::Txt('EN.SAVE_ENTRY_BT')))));
         $f['cancel_button'] = array('_complex' => 1, '_data' => array('data' => array('_complex' => 1, '_xml' => 1, '_data' => SPHtml_Input::button('cancel', Sobi::Txt('EN.CANCEL_BT'), array('onclick' => 'SPcancelEdit();')))));
         if (Sobi::Cfg('legacy.sigsiutree', false)) {
             $data['entry']['_data']['category_chooser'] = array('path' => array('_complex' => 1, '_xml' => 1, '_data' => SPHtml_Input::textarea('parent_path', $this->get('parent_path'), false, 500, 60, array('id' => 'entry.path', 'class' => 'inputbox required', 'readonly' => 'readonly'))), 'selected' => array('_complex' => 1, '_xml' => 1, '_data' => SPHtml_Input::text('entry.parent', $this->get('parents'), array('id' => 'entry.parent', 'size' => 15, 'maxlength' => 50, 'class' => 'inputbox required', 'readonly' => 'readonly', 'style' => 'text-align:center;'))));
         }
         $data['entry']['_data']['fields'] = array('_complex' => 1, '_data' => $f, '_attributes' => array('lang' => Sobi::Lang(false)));
         if (Sobi::Cfg('legacy.sigsiutree', false)) {
             $data['tree'] = array('_complex' => 1, '_xml' => 1, '_data' => SPLang::entities($tree->display(true), true));
         }
         $this->_attr = $data;
         Sobi::Trigger($this->_type, ucfirst(__FUNCTION__), array(&$this->_attr));
     }
 }
示例#5
0
 /**
  */
 public function __construct()
 {
     SPLoader::loadClass('mlo.input');
     SPFactory::header()->addJsFile('adm.tooltips');
     // @todo: legacy - has to be removed later
     SPLoader::loadClass('helpers.adm.lists');
     Sobi::Trigger('Create', $this->name(), array(&$this));
 }
示例#6
0
 /**
  * @param int $limit
  * @param int $count
  * @param int $current
  * @param string $func
  * @param array $limits
  * @deprecated
  */
 public function __construct($limit, $count, $current, $func, $box, $boxFunc, $limits = array(5, 10, 15, 25, 50))
 {
     $this->limit = $limit;
     $this->count = $count;
     $this->current = $current ? $current : 1;
     $this->limits = is_array($limits) && count($limits) ? $limits : $this->limits;
     $this->func = $func;
     $this->boxFunc = $boxFunc;
     $this->box = $box;
     SPLoader::loadClass('mlo.input');
 }
示例#7
0
 /**
  *
  */
 public function _display()
 {
     SPLoader::loadClass('html.tooltip');
     switch ($this->get('task')) {
         case 'edit':
             $this->assign($this->languages(), 'languages-list');
         case 'add':
             $this->edit();
             break;
     }
     parent::display();
 }
示例#8
0
 function getObjectInfo($id, $language = null)
 {
     $info = new JCommentsObjectInfo();
     $app = JFactory::getApplication();
     if (!$app->isAdmin()) {
         $db = JFactory::getDBO();
         $query = "SELECT o.id, o.name, o.owner, o.parent, fd.baseData" . " FROM #__sobipro_object as o" . " LEFT JOIN #__sobipro_field_data AS fd ON o.id = fd.sid" . " JOIN #__sobipro_field AS f ON fd.fid = f.fid AND f.nid = 'field_name'" . " WHERE o.id = " . $id . " AND o.oType = 'entry'";
         $db->setQuery($query);
         $row = $db->loadObject();
         if (!empty($row)) {
             $sobiCore = JPATH_SITE . '/components/com_sobipro/lib/base/fs/loader.php';
             if (is_file($sobiCore)) {
                 if (!defined('SOBIPRO')) {
                     $ver = new JVersion();
                     $ver = str_replace('.', null, $ver->RELEASE);
                     if ($ver > '15') {
                         $ver = '16';
                     }
                     define('SOBI_CMS', 'joomla' . $ver);
                     define('SOBIPRO', true);
                     define('SOBI_TASK', 'task');
                     define('SOBI_DEFLANG', JFactory::getLanguage()->getDefault());
                     define('SOBI_ACL', 'front');
                     define('SOBI_ROOT', JPATH_ROOT);
                     define('SOBI_MEDIA', implode(DS, array(JPATH_ROOT, 'media', 'sobipro')));
                     define('SOBI_MEDIA_LIVE', JURI::root() . '/media/sobipro');
                     define('SOBI_PATH', JPATH_ROOT . '/components/com_sobipro');
                     define('SOBI_LIVE_PATH', 'components/com_sobipro');
                     require_once JPATH_ROOT . '/components/com_sobipro/lib/base/fs/loader.php';
                 }
                 SPLoader::loadClass('sobi');
                 SPLoader::loadClass('base.request');
                 SPLoader::loadClass('base.object');
                 SPLoader::loadClass('base.factory');
                 SPLoader::loadClass('base.mainframe');
                 SPLoader::loadClass('base.const');
                 SPLoader::loadClass('cms.base.mainframe');
                 SPLoader::loadClass('cms.base.lang');
                 $info->title = empty($row->name) ? isset($row->baseData) ? $row->baseData : '' : $row->name;
                 $info->access = NULL;
                 $info->userid = $row->owner;
                 $info->link = Sobi::Url(array('title' => $row->name, 'pid' => $row->parent, 'sid' => $row->id));
             }
         }
     }
     return $info;
 }
示例#9
0
文件: front.php 项目: pelloq1/SobiPro
 /**
  */
 private function getSections()
 {
     $order = $this->parseOrdering();
     try {
         $sections = SPFactory::db()->select('*', 'spdb_object', array('oType' => 'section'), $order)->loadObjectList();
     } catch (SPException $x) {
         Sobi::Error($this->name(), SPLang::e('DB_REPORTS_ERR', $x->getMessage()), SPC::WARNING, 500, __LINE__, __FILE__);
     }
     if (count($sections)) {
         SPLoader::loadClass('models.datamodel');
         SPLoader::loadClass('models.dbobject');
         SPLoader::loadModel('section');
         foreach ($sections as $section) {
             if (Sobi::Can('section', 'access', 'any', $section->id)) {
                 $s = new SPSection();
                 $s->extend($section);
                 $this->_sections[] = $s;
             }
         }
     }
 }
示例#10
0
 public function execute()
 {
     SPRequest::set('task', $this->_type . '.' . $this->_task);
     if (strstr($this->_task, '.')) {
         $task = explode('.', $this->_task);
         $class = SPLoader::loadClass('opt.listing.' . $task[0], false, null, true);
     } else {
         $class = SPLoader::loadClass('opt.listing.' . $this->_task, false, null, true);
     }
     if ($class) {
         $imp = class_implements($class);
         if (is_array($imp) && in_array('SPListing', $imp)) {
             /** @noinspection PhpIncludeInspection $compatibility */
             $listing = new $class();
             if (!isset($class::$compatibility)) {
                 define('SOBI_LEGACY_LISTING', true);
                 if (strstr($this->_task, '.')) {
                     $t = explode('.', $this->_task);
                     $listing->setTask($t[0]);
                 } else {
                     $listing->setTask($this->_task);
                 }
             } else {
                 $listing->setTask($this->_task);
             }
             return $listing->execute();
         } else {
             Sobi::Error($this->name(), SPLang::e('SUCH_TASK_NOT_FOUND Wrong class definition', SPRequest::task()), SPC::NOTICE, 404, __LINE__, __FILE__);
         }
     } else {
         /* case parent didn't registered this task, it was an error */
         if (!parent::execute() && $this->name() == __CLASS__) {
             Sobi::Error($this->name(), SPLang::e('SUCH_TASK_NOT_FOUND', SPRequest::task()), SPC::NOTICE, 404, __LINE__, __FILE__);
         }
     }
 }
示例#11
0
 /**
  * @deprecated since 1.1 replaced by {@link #Initialise()}
  * @param int $sid - section id
  * @param null $root - root of Joomla!
  * @param null $lang - language
  * @return null
  */
 public static function Init($root = null, $lang = null, $sid = 0)
 {
     static $loaded = false;
     if (!$loaded) {
         if (!defined('SOBI_CMS')) {
             define('SOBI_CMS', version_compare(JVERSION, '3.0.0', 'ge') ? 'joomla3' : (version_compare(JVERSION, '1.6.0', 'ge') ? 'joomla16' : 'joomla15'));
         }
         defined('SOBIPRO') || define('SOBIPRO', true);
         defined('SOBI_TASK') || define('SOBI_TASK', 'task');
         defined('SOBI_DEFLANG') || define('SOBI_DEFLANG', $lang);
         defined('SOBI_ACL') || define('SOBI_ACL', 'front');
         defined('SOBI_ROOT') || define('SOBI_ROOT', $root);
         defined('SOBI_MEDIA') || define('SOBI_MEDIA', implode('/', array($root, 'media', 'sobipro')));
         defined('SOBI_PATH') || define('SOBI_PATH', SOBI_ROOT . '/components/com_sobipro');
         defined('SOBI_LIVE_PATH') || define('SOBI_LIVE_PATH', 'components/com_sobipro');
         require_once SOBI_PATH . '/lib/base/fs/loader.php';
         SPLoader::loadController('sobipro');
         SPLoader::loadController('interface');
         SPLoader::loadClass('base.exception');
         SPLoader::loadClass('base.const');
         SPLoader::loadClass('base.object');
         SPLoader::loadClass('base.filter');
         SPLoader::loadClass('base.request');
         SPLoader::loadClass('cms.base.lang');
         SPLoader::loadClass('models.dbobject');
         SPLoader::loadClass('base.factory');
         SPLoader::loadClass('base.config');
         SPLoader::loadClass('cms.base.fs');
         // in case it is a CLI call
         if (isset($_SERVER['REQUEST_URI'])) {
             SPFactory::config()->set('live_site', JURI::root());
         }
         $loaded = true;
     }
     if ($sid) {
         $section = null;
         if ($sid) {
             $path = array();
             $id = $sid;
             $path[] = (int) $id;
             while ($id > 0) {
                 try {
                     $id = SPFactory::db()->select('pid', 'spdb_relations', array('id' => $id))->loadResult();
                     if ($id) {
                         $path[] = (int) $id;
                     }
                 } catch (SPException $x) {
                     Sobi::Error('ExtCoreCtrl', SPLang::e('DB_REPORTS_ERR', $x->getMessage()), SPC::ERROR, 500, __LINE__, __FILE__);
                 }
             }
             $path = array_reverse($path);
             $section = SPFactory::object($path[0]);
         }
         /* set current section in the registry */
         SPFactory::registry()->set('current_section', $section->id);
         $_config =& SPFactory::config();
         /* load basic configuration settings */
         $_config->addIniFile('etc.config', true);
         $_config->addTable('spdb_config', $sid);
         /* initialise interface config setting */
         SPFactory::mainframe()->getBasicCfg();
         /* initialise config */
         $_config->init();
     }
 }
示例#12
0
 public static function validateVisibility(&$data)
 {
     SPLoader::loadClass('env.browser');
     $humanity = SPBrowser::getInstance()->get('humanity');
     $display = Sobi::Cfg('mail_protection.show');
     if (!($humanity >= $display)) {
         $data['_data'] = array();
     }
 }
示例#13
0
 /**
  * Enter description here...
  *
  */
 protected function fields()
 {
     SPLoader::loadClass('html.tabs');
     SPFactory::header()->addCssFile('tabs', true);
     $t = new SPHtml_Tabs(true, null);
     $tabs = $this->get('fields');
     if (count($tabs)) {
         $t->startPane('fields_' . $this->get('task'));
         foreach ($tabs as $tab => $keys) {
             $t->startTab(Sobi::Txt($tab), str_replace(' ', '_', $tab));
             echo '<table  class="admintable" style="width: 100%;">';
             $c = 0;
             foreach ($keys as $key => $params) {
                 $class = $c % 2;
                 $c++;
                 $params = explode('|', $params);
                 $p = array();
                 /* at first we need the label */
                 $label = Sobi::Txt(array_shift($params));
                 $label2 = null;
                 if (strstr($label, ':')) {
                     $label = explode(':', $label);
                     $label2 = $label[1];
                     $label = $label[0];
                 }
                 /* get the field type */
                 $p[0] = array_shift($params);
                 if (preg_match('/^section.*/', $key)) {
                     /* put the field name */
                     $p[1] = $key;
                     /* get the current value */
                     $p[2] = $this->get($key);
                 } elseif (!strstr($key, 'spacer')) {
                     /* put the field name */
                     $p[1] = 'spcfg_' . $key;
                     /* get the current value */
                     $p[2] = Sobi::Cfg($key, '');
                 }
                 if (strstr($key, 'spacer')) {
                     if ($key == 'spacer_pby') {
                         $this->pby();
                     } else {
                         echo "<tr class=\"row{$class}\">";
                         echo '<th colspan="2" class="spConfigTableHeader">';
                         $this->txt($label);
                         echo '</th>';
                         echo '</tr>';
                     }
                 } else {
                     if (strstr($key, '_array') && count($p[2]) && $p[2]) {
                         $p[2] = implode(',', $p[2]);
                     }
                     /* and all other parameters */
                     if (count($params)) {
                         foreach ($params as $param) {
                             $p[] = $param;
                         }
                     }
                     echo "<tr class=\"row{$class}\">";
                     echo '<td class="key" style="min-width:200px;">';
                     $this->txt($label);
                     echo '</td>';
                     echo '<td>';
                     $this->parseField($p);
                     if ($label2) {
                         $this->txt($label2);
                     }
                     echo '</td>';
                     echo '</tr>';
                 }
             }
             echo '</table>';
             $t->endTab();
         }
         $t->endPane();
     }
 }
示例#14
0
 private function delImgs()
 {
     $files = SPConfig::unserialize($this->getRaw());
     if (is_array($files) && count($files)) {
         SPLoader::loadClass('cms.base.fs');
         foreach ($files as $file) {
             if (!strlen($file)) {
                 continue;
             }
             $file = Sobi::FixPath(SOBI_ROOT . "/{$file}");
             // should never happen but who knows ....
             if ($file == SOBI_ROOT) {
                 continue;
             }
             if (SPFs::exists($file)) {
                 SPFs::delete($file);
             }
         }
     }
 }
示例#15
0
 * $HeadURL$
 */
define('SOBI_TESTS', false);
defined('_JEXEC') || exit('Restricted access');
defined('DS') || define('DS', DIRECTORY_SEPARATOR);
define('SOBI_CMS', version_compare(JVERSION, '3.0.0', 'ge') ? 'joomla3' : (version_compare(JVERSION, '1.6.0', 'ge') ? 'joomla16' : 'joomla15'));
define('SOBIPRO', true);
define('SOBI_TASK', 'task');
if (SOBI_CMS == 'joomla15') {
    define('SOBI_DEFLANG', JFactory::getConfig()->getValue('config.language'));
} else {
    define('SOBI_DEFLANG', JComponentHelper::getParams('com_languages')->get('site', 'en-GB'));
}
define('SOBI_ACL', 'front');
define('SOBI_ROOT', JPATH_ROOT);
define('SOBI_MEDIA', implode('/', array(JPATH_ROOT, 'media', 'sobipro')));
define('SOBI_MEDIA_LIVE', JURI::root() . 'media/sobipro');
define('SOBI_PATH', SOBI_ROOT . '/components/com_sobipro');
define('SOBI_LIVE_PATH', 'components/com_sobipro');
require_once SOBI_PATH . '/lib/base/fs/loader.php';
SPLoader::loadController('interface');
SPLoader::loadClass('base.filter');
SPLoader::loadClass('base.request');
// Try to catch direct file calls. Like /directory/piwik.php
if (preg_match('/\\.php$/', SPRequest::task()) || strlen(SPRequest::task()) > 50) {
    JError::raiseError(403, 'Unauthorized Access');
}
$class = SPLoader::loadController('sobipro');
$sobi = new $class(SPRequest::task());
$sobi->execute();
//SPConfig::debOut( SPRequest::task() );
示例#16
0
 * @copyright Copyright (C) 2006 - 2015 Sigsiu.NET GmbH (https://www.sigsiu.net). All rights reserved.
 * @license GNU/LGPL Version 3
 * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 3
 * as published by the Free Software Foundation, and under the additional terms according section 7 of GPL v3.
 * See http://www.gnu.org/licenses/lgpl.html and https://www.sigsiu.net/licenses.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 */
defined('SOBIPRO') || exit('Restricted access');
/**
 * @author Radek Suski
 * @version 1.0
 * @created 22-Jun-2010 13:39:51
 */
SPLoader::loadClass('services.installers.installer');
class SPRepository extends SPInstaller
{
    /**
     * @var SPSoapClient
     */
    private $_server = null;
    protected $_repoDefArr = array();
    public function __construct()
    {
    }
    public function loadDefinition($path)
    {
        $this->xmlFile = $path;
        $this->definition = new DOMDocument();
        $this->definition->load($this->xmlFile);
示例#17
0
 * @author
 * Name: Sigrid Suski & Radek Suski, Sigsiu.NET GmbH
 * Email: sobi[at]sigsiu.net
 * Url: http://www.Sigsiu.NET
 * @copyright Copyright (C) 2006 - 2015 Sigsiu.NET GmbH (http://www.sigsiu.net). All rights reserved.
 * @license GNU/GPL Version 3
 * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published by the Free Software Foundation, and under the additional terms according section 7 of GPL v3.
 * See http://www.gnu.org/licenses/gpl.html and http://sobipro.sigsiu.net/licenses.
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 * $Date: 2015-02-19 13:24:35 +0100 (Thu, 19 Feb 2015) $
 * $Revision: 4387 $
 * $Author: Radek Suski $
 * $HeadURL: file:///opt/svn/SobiPro/Component/branches/SobiPro-1.1/Site/opt/fields/adm/url.php $
 */
defined('SOBIPRO') || exit('Restricted access');
SPLoader::loadClass('opt.fields.url');
/**
 * @author Radek Suski
 * @version 1.0
 * @created 14-Sep-2009 11:37:11
 */
class SPField_UrlAdm extends SPField_Url
{
    /**
     * @var string
     */
    public $cssClass = "inputbox";
    public function onFieldEdit()
    {
        $this->allowedProtocols = is_array($this->allowedProtocols) ? implode(',', $this->allowedProtocols) : null;
    }
 * @author
 * Name: Sigrid Suski & Radek Suski, Sigsiu.NET GmbH
 * Email: sobi[at]sigsiu.net
 * Url: http://www.Sigsiu.NET
 * @copyright Copyright (C) 2006 - 2015 Sigsiu.NET GmbH (http://www.sigsiu.net). All rights reserved.
 * @license GNU/LGPL Version 3
 * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 3 as published by the Free Software Foundation, and under the additional terms according section 7 of GPL v3.
 * See http://www.gnu.org/licenses/lgpl.html and http://sobipro.sigsiu.net/licenses.
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 * $Date$
 * $Revision$
 * $Author$
 * $HeadURL$
 */
defined('SOBIPRO') || exit('Restricted access');
SPLoader::loadClass('base.fs.file');
/**
 * @author Radek Suski
 * @version 1.0
 * @created 10-Jun-2010 10:21:27
 */
class SPDirectoryIterator extends ArrayObject
{
    /**
     * @var string
     */
    private $_dir = null;
    /**
     * @param string $dir - path
     * @return SPDirectoryIterator
     */
示例#19
0
 * @author
 * Name: Sigrid Suski & Radek Suski, Sigsiu.NET GmbH
 * Email: sobi[at]sigsiu.net
 * Url: http://www.Sigsiu.NET
 * @copyright Copyright (C) 2006 - 2015 Sigsiu.NET GmbH (http://www.sigsiu.net). All rights reserved.
 * @license GNU/GPL Version 3
 * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published by the Free Software Foundation, and under the additional terms according section 7 of GPL v3.
 * See http://www.gnu.org/licenses/gpl.html and http://sobipro.sigsiu.net/licenses.
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 * $Date$
 * $Revision$
 * $Author$
 * $HeadURL$
 */
defined('SOBIPRO') || exit('Restricted access');
SPLoader::loadClass('opt.fields.image');
/**
 * @author Radek Suski
 * @version 1.0
 * @created 28-Nov-2009 20:06:47
 */
class SPField_ImageAdm extends SPField_Image
{
    public function save(&$attr)
    {
        if (($attr['resize'] || $attr['crop']) && !($attr['resizeWidth'] && $attr['resizeHeight'])) {
            throw new SPException(SPLang::e('IMG_FIELD_RESIZE_NO_SIZE'));
        }
        parent::save($attr);
    }
}
示例#20
0
 private function cloneTpl()
 {
     $dir = $this->dir(SPRequest::cmd('templateName'));
     $newName = SPRequest::word('templateNewName', 'Duplicated Template', 'post');
     $dirName = SPLang::nid($newName);
     $dirNameOrg = $dirName;
     $c = 1;
     while (SPFs::exists(SPLoader::dirPath('usr.templates.' . $dirName, 'front', false))) {
         $dirName = $dirNameOrg . '-' . $c++;
     }
     $newPath = SPLoader::dirPath('usr.templates.' . $dirName, 'front', false);
     if (!SPFs::copy($dir, $newPath)) {
         throw new SPException(SPLang::e('COULD_NOT_COPY_DIRECTORY', $dir, $newPath));
     }
     $defFile = SPLoader::path($newPath . '.template', 'absolute', true, 'xml');
     if ($defFile) {
         $fc = SPLoader::loadClass('base.fs.file');
         $def = new DOMDocument();
         $def->load($defFile);
         $xdef = new DOMXPath($def);
         $oldName = $xdef->query('/template/name')->item(0)->nodeValue;
         $oldDesc = $xdef->query('/template/description')->item(0)->nodeValue;
         $date = SPFactory::config()->date(time());
         $xdef->query('/template/name')->item(0)->nodeValue = $newName;
         $xdef->query('/template/creationDate')->item(0)->nodeValue = $date;
         $xdef->query('/template/id')->item(0)->nodeValue = $dirName;
         $newDesc = Sobi::Txt('TP.CLONE_NOTE', array('name' => $oldName, 'date' => $date));
         $xdef->query('/template/description')->item(0)->nodeValue = "{$newDesc}\n{$oldDesc}";
         $file = new $fc($defFile);
         $file->content($def->saveXML());
         $file->save();
     }
     $this->response(Sobi::Url(array('task' => 'template.info', 'template' => str_replace(SOBI_PATH . DS . 'usr' . DS . 'templates' . DS, null, $dirName))), Sobi::Txt('TP.DUPLICATED'), false, 'success');
 }
示例#21
0
 /**
  * Creates a textarea field with or without WYSIWYG editor
  *
  * @param string $name - name of the html field
  * @param string $value - selected value
  * @param bool $editor - enables WYSIWYG editor
  * @param int $width - width of the created textarea field in pixel
  * @param int $height - height of the created textarea field in pixel
  * @param array|string $params - two-dimensional array with additional html parameters. Can be also string defined, comma separated array with equal sign as key to index separator.
  * @param string | array $editorParams
  * @return string
  */
 public static function textarea($name, $value = null, $editor = false, $width = 500, $height = 350, $params = '', $editorParams = null)
 {
     if (!is_array($editorParams) && strlen($editorParams)) {
         $editorParams = SPFactory::config()->structuralData($editorParams);
     }
     self::checkArray($params);
     if (!isset($params['style'])) {
         $params['style'] = "width: {$width}px; height: {$height}px;";
     }
     Sobi::Trigger('BeforeCreateField', ucfirst(__FUNCTION__), array(&$name, &$value, &$editor, &$width, &$height, &$params));
     $value = SPLang::entities($value);
     if ($editor) {
         $e = Sobi::Cfg('html.editor', 'cms.html.editor');
         $c = SPLoader::loadClass($e);
         if ($c) {
             $e = new $c();
             $area = $e->display($name, $value, $width, $height, (bool) Sobi::Cfg('html.editor_buttons', false), $editorParams);
         }
     } else {
         $params = self::params($params);
         $area = "<textarea name=\"{$name}\" {$params}>{$value}</textarea>";
     }
     Sobi::Trigger('Field', ucfirst(__FUNCTION__), array(&$area));
     return "\n<!-- TextArea '{$name}' Output -->\n{$area}\n<!-- TextArea '{$name}' End -->\n\n";
 }
示例#22
0
/**
 * @version: $Id: inbox.php 4387 2015-02-19 12:24:35Z Radek Suski $
 * @package: SobiPro Component for Joomla!
 * @author
 * Name: Sigrid Suski & Radek Suski, Sigsiu.NET GmbH
 * Email: sobi[at]sigsiu.net
 * Url: http://www.Sigsiu.NET
 * @copyright Copyright (C) 2006 - 2015 Sigsiu.NET GmbH (http://www.sigsiu.net). All rights reserved.
 * @license GNU/GPL Version 3
 * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published by the Free Software Foundation, and under the additional terms according section 7 of GPL v3.
 * See http://www.gnu.org/licenses/gpl.html and http://sobipro.sigsiu.net/licenses.
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 * $Date: 2015-02-19 13:24:35 +0100 (Thu, 19 Feb 2015) $
 * $Revision: 4387 $
 * $Author: Radek Suski $
 * $HeadURL: file:///opt/svn/SobiPro/Component/branches/SobiPro-1.1/Site/opt/fields/adm/inbox.php $
 */
defined('SOBIPRO') || exit('Restricted access');
SPLoader::loadClass('opt.fields.inbox');
/**
 * @author Radek Suski
 * @version 1.0
 * @created 09-Sep-2009 12:52:45 PM
 */
class SPField_InboxAdm extends SPField_Inbox
{
    /**
     * @var string
     */
    public $cssClass = "inputbox";
}
示例#23
0
<?php

/**
 * @package: SobiPro Component for Joomla!
 * @author
 * Name: Sigrid Suski & Radek Suski, Sigsiu.NET GmbH
 * Email: sobi[at]sigsiu.net
 * Url: http://www.Sigsiu.NET
 * @copyright Copyright (C) 2006 - 2015 Sigsiu.NET GmbH (https://www.sigsiu.net). All rights reserved.
 * @license GNU/GPL Version 3
 * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published by the Free Software Foundation, and under the additional terms according section 7 of GPL v3.
 * See http://www.gnu.org/licenses/gpl.html and https://www.sigsiu.net/licenses.
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 */
defined('SOBIPRO') || exit('Restricted access');
SPLoader::loadClass('opt.fields.radio');
/**
 * @author Radek Suski
 * @version 1.0
 * @created 27-Nov-2009 17:10:15
 */
class SPField_ChbxGr extends SPField_Radio implements SPFieldInterface
{
    /** * @var string */
    protected $cssClass = 'spClassCheckbox';
    /** * @var string */
    protected $cssClassView = 'spClassViewCheckbox';
    /** * @var string */
    protected $cssClassEdit = 'spClassEditCheckbox';
    /** * @var string */
    protected $cssClassSearch = 'spClassSearchCheckbox';
示例#24
0
文件: com_sobipro.php 项目: 01J/topm
 protected static function loadSobi()
 {
     if (defined('SOBI_TESTS')) {
         return true;
     }
     define('SOBI_TESTS', false);
     $ver = new JVersion();
     $ver = str_replace('.', null, $ver->RELEASE);
     // added by Pierre Burri-Wittke globeall.de
     if ($ver > '15') {
         $ver = '16';
     }
     define('SOBI_CMS', 'joomla' . $ver);
     define('SOBIPRO', true);
     define('SOBI_TASK', 'task');
     define('SOBI_DEFLANG', JFactory::getLanguage()->getDefault());
     define('SOBI_ACL', 'front');
     define('SOBI_ROOT', JPATH_ROOT);
     define('SOBI_MEDIA', implode('/', array(JPATH_ROOT, 'media', 'sobipro')));
     define('SOBI_MEDIA_LIVE', JURI::root() . '/media/sobipro');
     define('SOBI_PATH', SOBI_ROOT . '/components/com_sobipro');
     if (!file_exists(SOBI_PATH . '/lib/base/fs/loader.php')) {
         return false;
     }
     require_once SOBI_PATH . '/lib/base/fs/loader.php';
     SPLoader::loadClass('sobi');
     SPLoader::loadClass('base.request');
     SPLoader::loadClass('base.object');
     SPLoader::loadClass('base.factory');
     SPLoader::loadClass('base.mainframe');
     // added by Pierre Burri-Wittke globeall.de
     SPLoader::loadClass('base.const');
     SPLoader::loadClass('cms.base.mainframe');
     SPLoader::loadClass('cms.base.lang');
     return true;
 }
示例#25
0
 /**
  * @return SPPlugins
  */
 public static function &plugins()
 {
     $r =& self::registry();
     if (!$r->__isset('plugins')) {
         SPLoader::loadClass('plugins.interface');
         $plugins =& SPPlugins::getInstance();
         $r->set('plugins', $plugins);
     } else {
         $plugins =& $r->__get('plugins');
     }
     return $plugins;
 }
示例#26
0
 * @author
 * Name: Sigrid Suski & Radek Suski, Sigsiu.NET GmbH
 * Email: sobi[at]sigsiu.net
 * Url: http://www.Sigsiu.NET
 * @copyright Copyright (C) 2006 - 2015 Sigsiu.NET GmbH (http://www.sigsiu.net). All rights reserved.
 * @license GNU/LGPL Version 3
 * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 3 as published by the Free Software Foundation, and under the additional terms according section 7 of GPL v3.
 * See http://www.gnu.org/licenses/lgpl.html and http://sobipro.sigsiu.net/licenses.
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 * $Date$
 * $Revision$
 * $Author$
 * $HeadURL$
 */
defined('SOBIPRO') || exit('Restricted access');
SPLoader::loadClass('cms.base.mail');
/**
 * @author Radek Suski
 * @version 1.0
 * @created 19-Sep-2010 13:00:06
 */
class SPMail extends SPMailInterface
{
    /**
     * @param array $recipient Recipient e-mail address
     * @param string $subject E-mail subject
     * @param string $body Message body
     * @param bool $html - HTML mail or plain text
     * @param array $replyto Reply to email address
     * @param array $cc CC e-mail address
     * @param array $bcc BCC e-mail address
示例#27
0
 /**
  * @todo Enter description here...
  *
  * @param array $ordering
  * @param string $type
  * @param string $id
  * @param string $fname
  * @return string
  */
 public static function tableHeader($ordering, $type, $id = 'sid', $fname = 'order', $def = 'position.asc')
 {
     $header = array();
     $current = SPFactory::user()->getUserState($type . '.order', $fname, $def);
     if (strstr($current, '.')) {
         $current = explode('.', $current);
         $newDirect = trim($current[1]) == 'asc' ? 'desc' : 'asc';
         $current = $current[0];
     }
     $sid = SPRequest::sid() ? SPRequest::sid() : SPRequest::int('pid');
     if (is_array($ordering) && count($ordering)) {
         foreach ($ordering as $order => $active) {
             $class = null;
             $params = array();
             if (is_array($active)) {
                 $params = $active;
                 $active = $active['type'];
             }
             switch ($active) {
                 case SP_TBL_HEAD_RAW:
                     $header[$order] = Sobi::Txt($type . '.header_' . $order);
                     break;
                 case 1:
                 case 3:
                 case 4:
                 case 5:
                 case 6:
                     $direction = 'asc';
                     $ico = null;
                     $aico = null;
                     if (isset($params['order'])) {
                         $sortBy = $params['order'];
                     } else {
                         $sortBy = $order;
                     }
                     $label = Sobi::Txt($type . '.header_' . $order);
                     $title = Sobi::Txt($type . '.header_order_by_' . $order);
                     if ($sortBy == $current) {
                         $class = "class=\"selected\"";
                         $ico = Sobi::Cfg('list_icons.sort_direction_' . ($newDirect == 'asc' ? 'desc' : 'asc'));
                         $ico = "&nbsp;<img src=\"{$ico}\"/>&nbsp;";
                         $direction = $newDirect;
                     }
                     if ($active == SP_TBL_HEAD_SORTABLE_FIELD) {
                         $label = $params['label'];
                         $title = Sobi::Txt('LIST.ORDER_BY_FIELD', array('field' => $label));
                     }
                     if ($active == SP_TBL_HEAD_STATE) {
                         SPLoader::loadClass('html.tooltip');
                         $msg = Sobi::Txt('LIST.MAKE_SELECTION');
                         $onclk = " onclick=\"if( document.adminForm.boxchecked.value == 0 ) { alert( '{$msg}' ); } else { submitbutton( '{$type}.publish' ); }\"";
                         $url = "#";
                         $ai = Sobi::Cfg('list_icons.enable');
                         $s = Sobi::Txt('LIST.ENABLE_S', array('type' => Sobi::Txt(strtoupper($type))));
                         $a = Sobi::Txt($type . '.enable_expl');
                         $aico = SPTooltip::toolTip($a, $s, $ai);
                         $aico = "&nbsp;<span class=\"headerStateIcons\"><a href=\"{$url}\"{$onclk}>{$aico}</a></span>";
                         $ui = Sobi::Cfg('list_icons.disable');
                         $s = Sobi::Txt('LIST.DISABLE_S', array('type' => Sobi::Txt(strtoupper($type))));
                         $a = Sobi::Txt($type . '.disable_expl');
                         $uico = SPTooltip::toolTip($a, $s, $ui);
                         $onclk = " onclick=\"if( document.adminForm.boxchecked.value == 0 ) { alert( '{$msg}' ); } else { submitbutton( '{$type}.hide' ); }\"";
                         $uico = "&nbsp;<span class=\"headerStateIcons\"><a href=\"{$url}\"{$onclk}>{$uico}</a></span>";
                         $aico .= $uico;
                     }
                     if ($active == SP_TBL_HEAD_APPROVAL) {
                         SPLoader::loadClass('html.tooltip');
                         $msg = Sobi::Txt('LIST.MAKE_SELECTION');
                         $onclk = " onclick=\"if( document.adminForm.boxchecked.value == 0 ) { alert( '{$msg}' ); } else { submitbutton( '{$type}.approve' ); }\"";
                         $url = "#";
                         $ai = Sobi::Cfg('list_icons.approve');
                         $s = Sobi::Txt($type . '.approve');
                         $a = Sobi::Txt($type . '.approve_expl');
                         $aico = SPTooltip::toolTip($a, $s, $ai);
                         $aico = "&nbsp;<span class=\"headerAppIcons\"><a href=\"{$url}\"{$onclk}>{$aico}</a></span>";
                         $ui = Sobi::Cfg('list_icons.disable');
                         $s = Sobi::Txt($type . '.unapprove');
                         $a = Sobi::Txt($type . '.unapprove_expl');
                         $uico = SPTooltip::toolTip($a, $s, $ui);
                         $onclk = " onclick=\"if( document.adminForm.boxchecked.value == 0 ) { alert( '{$msg}' ); } else { submitbutton( '{$type}.unapprove' ); }\"";
                         $uico = "&nbsp;<span class=\"headerAppIcons\"><a href=\"{$url}\"{$onclk}>{$uico}</a></span>";
                         $aico .= $uico;
                     }
                     if ($active == SP_TBL_HEAD_ORDER) {
                         SPLoader::loadClass('html.tooltip');
                         $url = "#";
                         $onclk = " onclick=\"SPReorder( '{$type}', {$sid} );\" ";
                         $aico = "&nbsp;<span class=\"headerStateIcons\"><a href=\"{$url}\" title=\"{$a}\">{$aico}</a></span>";
                         $ui = Sobi::Cfg('list_icons.order');
                         $s = Sobi::Txt($type . '.save_order');
                         $a = Sobi::Txt($type . '.save_order_expl');
                         $uico = SPTooltip::toolTip($a, $s, $ui);
                         $uico = "&nbsp;<span class=\"headerOrderIcon\"><a href=\"{$url}\"{$onclk}>{$uico}</a></span>";
                         $aico .= $uico;
                     }
                     $header[$order] = "<a {$class} href=\"javascript:SPOrdering( '{$sortBy}','{$direction}', '{$fname}', {$sid} );\" title=\"{$title}\">{$label}</a>&nbsp;{$ico}{$aico}";
                     break;
                 case SP_TBL_HEAD_SELECTION_BOX:
                     $name = Sobi::Txt($type . '.header_toggle');
                     $header[$order] = "<input type=\"checkbox\" name=\"toggle\" id=\"toggel_{$id}\" title=\"{$name}\" value=\"1\" onclick=\"SPCheckListElements('{$id}', this );\"/>";
                     break;
             }
         }
     }
     return $header;
 }
示例#28
0
 * @author
 * Name: Sigrid Suski & Radek Suski, Sigsiu.NET GmbH
 * Email: sobi[at]sigsiu.net
 * Url: http://www.Sigsiu.NET
 * @copyright Copyright (C) 2006 - 2015 Sigsiu.NET GmbH (http://www.sigsiu.net). All rights reserved.
 * @license GNU/GPL Version 3
 * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published by the Free Software Foundation, and under the additional terms according section 7 of GPL v3.
 * See http://www.gnu.org/licenses/gpl.html and http://sobipro.sigsiu.net/licenses.
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 * $Date$
 * $Revision$
 * $Author$
 * $HeadURL$
 */
defined('SOBIPRO') || exit('Restricted access');
SPLoader::loadClass('opt.fields.chbxgroup');
/**
 * @author Radek Suski
 * @version 1.0
 * @created 27-Nov-2009 17:10:03
 */
class SPField_ChbxGrAdm extends SPField_ChbxGr
{
    public function save(&$attr)
    {
        static $lang = null;
        static $defLang = null;
        if (!$lang) {
            $lang = Sobi::Lang();
            $defLang = Sobi::DefLang();
        }
示例#29
0
 protected function validateFields($fields)
 {
     foreach ($fields as $data) {
         if (isset($data['_data']['data']['_validate']) && count($data['_data']['data']['_validate'])) {
             $class = str_replace(array('/', '.php'), array('.', null), $data['_data']['data']['_validate']['class']);
             if ($class) {
                 $method = $data['_data']['data']['_validate']['method'];
                 $class = SPLoader::loadClass($class);
                 $class::$method($data['_data']['data']);
             }
         }
     }
 }
示例#30
0
/**
 * @package: SobiPro Component for Joomla!
 * @author
 * Name: Sigrid Suski & Radek Suski, Sigsiu.NET GmbH
 * Email: sobi[at]sigsiu.net
 * Url: http://www.Sigsiu.NET
 * @copyright Copyright (C) 2006 - 2015 Sigsiu.NET GmbH (https://www.sigsiu.net). All rights reserved.
 * @license GNU/GPL Version 3
 * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3
 * as published by the Free Software Foundation, and under the additional terms according section 7 of GPL v3.
 * See http://www.gnu.org/licenses/gpl.html and https://www.sigsiu.net/licenses.
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 */
defined('SOBIPRO') || exit('Restricted access');
SPLoader::loadClass('opt.fields.select');
/**
 * @author Radek Suski
 * @version 1.0
 * @created 26-Nov-2009 14:33:03
 */
class SPField_MultiSelect extends SPField_Select implements SPFieldInterface
{
    /**
     * @var bool
     */
    protected $multi = true;
    /**
     * @var int
     */
    protected $size = 10;