/** * Simple initialisation method * */ public function init() { if (self::$cs) { Sobi::Error('config', SPLang::e('CRITICAL_SECTION_VIOLATED'), SPC::ERROR, 500, __LINE__, __CLASS__); } /* define critical section to avoid infinite loops */ self::$cs = true; $nameField = self::key('entry.name_field'); if ($nameField) { $fc = SPLoader::loadModel('field'); $field = new $fc(); $field->init($nameField); $this->set('name_field_nid', $field->get('nid'), 'entry'); $this->set('name_field_id', $field->get('fid'), 'entry'); } if (defined('SOBIPRO_ADM')) { if (self::key('language.adm_domain')) { SPLang::registerDomain(self::key('language.adm_domain')); } } else { if (self::key('language.domain')) { SPLang::registerDomain(self::key('language.domain')); } } /* set allowed request attributes and tags */ SPRequest::setTagsAllowed($this->key('html.allowed_tags_array')); SPRequest::setAttributesAllowed($this->key('html.allowed_attributes_array')); $this->_store['general']['root'] = SOBI_ROOT; $this->_store['general']['path'] = SOBI_PATH; $this->_store['general']['cms'] = SOBI_CMS; $this->_store['general']['live_path'] = SOBI_LIVE_PATH; /* leave critical section */ self::$cs = false; }
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}; "); } }
/** */ 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; } } } }
* 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: 2015-02-26 12:57:09 +0100 (Thu, 26 Feb 2015) $ * $Revision: 4391 $ * $Author: Radek Suski $ * $HeadURL: file:///opt/svn/SobiPro/Component/branches/SobiPro-1.1/Site/lib/models/entry.php $ */ defined('SOBIPRO') || exit('Restricted access'); SPLoader::loadModel('datamodel'); SPLoader::loadModel('dbobject'); /** * @author Radek Suski * @version 1.0 * @created 10-Jan-2009 5:14:27 PM */ class SPEntry extends SPDBObject implements SPDataModel { /** * @var array */ private static $types = array('description' => 'html', 'icon' => 'string', 'showIcon' => 'int', 'introtext' => 'string', 'showIntrotext' => 'int', 'parseDesc' => 'int', 'position' => 'int'); /** * @var */ protected $oType = 'entry';
/** * @return SPSection */ public static function ¤tSection() { SPLoader::loadModel('section'); return SPSection::getInstance(); }
protected function &createMenu($task = null) { if (!$task) { $task = 'config.' . $this->_task; } /* load the menu definition */ if (Sobi::Section()) { /* create menu */ $menu =& SPFactory::Instance('views.adm.menu', $task, Sobi::Section()); $cfg = SPLoader::loadIniFile('etc.adm.section_menu'); /* create new SigsiuTree */ $tree = SPFactory::Instance('mlo.tree'); /* set link */ $tree->setHref(Sobi::Url(array('sid' => '{sid}'))); $tree->setId('menuTree'); /* set the task to expand the tree */ $tree->setTask('category.expand'); $tree->init(Sobi::Section()); /* add the tree into the menu */ $menu->addCustom('AMN.ENT_CAT', $tree->getTree()); $seClass = SPLoader::loadModel('section'); $cSec = new $seClass(); $cSec->init(Sobi::Section()); } else { $cfg = SPLoader::loadIniFile('etc.adm.config_menu'); /* create menu */ $menu =& SPFactory::Instance('views.adm.menu', $task); } Sobi::Trigger('Create', 'AdmMenu', array(&$cfg)); if (count($cfg)) { foreach ($cfg as $section => $keys) { $menu->addSection($section, $keys); } } if (!Sobi::Section()) { $menu->addCustom('GB.CFG.GLOBAL_TEMPLATES', $this->listTemplates()); } Sobi::Trigger('AfterCreate', 'AdmMenu', array(&$menu)); return $menu; }
/** * @param stdClass $obj * @param string $ctrlClass * @param string $objType * @param string $task * @return SPControl */ private function &extendObj($obj, $objType, $ctrlClass, $task = null) { if ($objType == $obj->oType) { if ($ctrlClass) { /* create controller */ $ctrl = new $ctrlClass(); /* set model */ /** @noinspection PhpUndefinedMethodInspection */ $ctrl->setModel(SPLoader::loadModel($objType)); /* extend model of basic data */ $ctrl->extend($obj); /* set task */ if (strlen($task)) { $ctrl->setTask($task); } } else { Sobi::Error('CoreCtrl', SPLang::e('SUCH_TASK_NOT_FOUND', SPRequest::task()), SPC::NOTICE, 404, __LINE__, __FILE__); } } return $ctrl; }
* @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$ */ /** * @author Radek Suski * @version 1.0 * @created 09-Mar-2009 12:00:45 PM */ defined('SOBIPRO') || exit('Restricted access'); SPLoader::loadModel('field'); final class SPAdmField extends SPField { /** * @var array */ private $_translatable = array('name', 'description'); public function save($attr) { /* @var SPdb $db */ $db = SPFactory::db(); $base = $attr; $this->loadType(); /* clean input */ if (isset($attr['name'])) { $base['name'] = $db->escape($attr['name']);
/** */ private function editForm() { $sid = SPRequest::int('pid'); $sid = $sid ? $sid : SPRequest::sid(); $view = SPFactory::View('entry', true); $this->checkTranslation(); /* if adding new */ if (!$this->_model) { $this->setModel(SPLoader::loadModel('entry')); } $this->_model->formatDatesToEdit(); $id = $this->_model->get('id'); if (!$id) { $this->_model->set('state', 1); $this->_model->set('approved', 1); } else { $view->assign($view->languages(), 'languages-list'); } $this->_model->loadFields(Sobi::Reg('current_section'), true); $this->_model->formatDatesToEdit(); if ($this->_model->isCheckedOut()) { SPFactory::message()->error(Sobi::Txt('EN.IS_CHECKED_OUT', $this->_model->get('name')), false); } else { /* check out the model */ $this->_model->checkOut(); } /* get fields for this section */ /* @var SPEntry $this ->_model */ $fields = $this->_model->get('fields'); if (!count($fields)) { throw new SPException(SPLang::e('CANNOT_GET_FIELDS_IN_SECTION', Sobi::Reg('current_section'))); } $revisionChange = false; $rev = SPRequest::cmd('revision'); $revisionsDelta = array(); if ($rev) { $revision = SPFactory::message()->getRevision(SPRequest::cmd('revision')); if (isset($revision['changes']) && count($revision['changes'])) { SPFactory::message()->warning(Sobi::Txt('HISTORY_REVISION_WARNING', $revision['changedAt']), false); foreach ($fields as $i => $field) { if ($field->get('enabled') && $field->enabled('form')) { if (isset($revision['changes']['fields'][$field->get('nid')])) { $revisionData = $revision['changes']['fields'][$field->get('nid')]; } else { $revisionData = null; } $currentData = $field->getRaw(); if (is_array($revisionData) && !is_array($currentData)) { try { $currentData = SPConfig::unserialize($currentData); } catch (SPException $x) { } } if ($revisionData || $currentData) { if (md5(serialize($currentData)) != md5(serialize($revisionData))) { $field->revisionChanged()->setRawData($revisionData); } } $fields[$i] = $field; } } unset($revision['changes']['fields']); foreach ($revision['changes'] as $attr => $value) { if ($value != $this->_model->get($attr)) { $revisionsDelta[$attr] = $value; $this->_model->setRevData($attr, $value); } } $revisionChange = true; } else { SPFactory::message()->error(Sobi::Txt('HISTORY_REVISION_NOT_FOUND'), false)->setSystemMessage(); } } $f = array(); foreach ($fields as $field) { if ($field->get('enabled') && $field->enabled('form')) { $f[] = $field; } } /* create the validation script to check if required fields are filled in and the filters, if any, match */ $this->createValidationScript($fields); $view->assign($this->_model, 'entry'); /* get the categories */ $cats = $this->_model->getCategories(true); if (count($cats)) { $tCats = array(); foreach ($cats as $cid) { /* ROTFL ... damn I like arrays ;-) */ $tCats2 = SPFactory::config()->getParentPath($cid, true); if (is_array($tCats2) && count($tCats2)) { $tCats[] = implode(Sobi::Cfg('string.path_separator'), $tCats2); } } if (count($tCats)) { $view->assign(implode("\n", $tCats), 'parent_path'); } $view->assign(implode(", ", $cats), 'parents'); } elseif ($this->_model->get('valid')) { $parent = $sid == Sobi::Reg('current_section') ? 0 : $sid; if ($parent) { $view->assign(implode(Sobi::Cfg('string.path_separator', ' > '), SPFactory::config()->getParentPath($parent, true)), 'parent_path'); } $view->assign($parent, 'parents'); } else { $n = null; $view->assign($n, 'parents'); $view->assign($n, 'parent_path'); } $history = array(); $messages = SPFactory::message()->getHistory($id); if (count($messages)) { foreach ($messages as $message) { $message['change'] = Sobi::Txt('HISTORY_CHANGE_TYPE_' . str_replace('-', '_', strtoupper($message['change']))); $message['site'] = Sobi::Txt('HISTORY_CHANGE_AREA_' . strtoupper($message['site'])); if (strlen($message['reason'])) { $message['status'] = 1; } else { $message['status'] = 0; } $history[] = $message; } } $versioningAdminBehaviour = Sobi::Cfg('entry.versioningAdminBehaviour', 1); if ($versioningAdminBehaviour || !Sobi::Cfg('entry.versioning', true)) { SPFactory::header()->addJsCode(' SobiPro.jQuery( document ).ready( function () { SobiPro.jQuery( "[rel=\'entry.saveWithRevision\']" ).parent().css( "display", "none" ); } ); '); } $view->assign($this->_task, 'task')->assign($f, 'fields')->assign($id, 'id')->assign($history, 'history')->assign($revisionChange, 'revision-change')->assign($revisionsDelta, 'revision')->assign($versioningAdminBehaviour, 'history-behaviour')->assign(SPFactory::CmsHelper()->userSelect('entry.owner', $this->_model->get('owner') ? $this->_model->get('owner') : ($this->_model->get('id') ? 0 : Sobi::My('id')), true), 'owner')->assign(Sobi::Reg('current_section'), 'sid')->determineTemplate('entry', 'edit')->addHidden($rev, 'revision')->addHidden($sid, 'pid'); $view->display(); }
/** * Show category chooser * */ protected function chooser($menu = false) { $out = SPRequest::cmd('out', null); $exp = SPRequest::int('expand', 0); $multi = SPRequest::int('multiple', 0); $tpl = SPRequest::word('treetpl', null); /* load the SigsiuTree class */ $tree = SPLoader::loadClass('mlo.tree'); $ordering = defined('SOBI_ADM_PATH') ? Sobi::GetUserState('categories.order', 'corder', 'position.asc') : Sobi::Cfg('list.categories_ordering'); /* create new instance */ $tree = new $tree($ordering); /* set link */ if ($menu) { $tree->setId('menuTree'); if (defined('SOBIPRO_ADM')) { $link = Sobi::Url(array('sid' => '{sid}'), false, false, true); } else { $link = Sobi::Url(array('sid' => '{sid}')); } } else { $link = "javascript:SP_selectCat( '{sid}' )"; } $tree->setHref($link); /* set the task to expand the tree */ $tree->setTask('category.chooser'); /* disable the category which is currently edited - category cannot be within it self */ if (!$multi) { if (SPRequest::sid() != Sobi::Section()) { $tree->disable(SPRequest::sid()); } $tree->setPid(SPRequest::sid()); } else { $tree->disable(Sobi::Reg('current_section')); } /* case we extending existing tree */ if ($out == 'xml' && $exp) { $pid = SPRequest::int('pid', 0); $pid = $pid ? $pid : SPRequest::sid(); $tree->setPid($pid); $tree->disable($pid); $tree->extend($exp); } else { /* init the tree for the current section */ $tree->init(Sobi::Reg('current_section')); /* load model */ if (!$this->_model) { $this->setModel(SPLoader::loadModel('category')); } /* create new view */ $class = SPLoader::loadView('category'); $view = new $class(); /* assign the task and the tree */ $view->assign($this->_task, 'task'); $view->assign($tree, 'tree'); $view->assign($this->_model, 'category'); /* select template to show */ if ($tpl) { $view->setTemplate('category.' . $tpl); } elseif ($multi) { $view->setTemplate('category.mchooser'); } else { $view->setTemplate('category.chooser'); } Sobi::Trigger('Category', 'ChooserView', array(&$view)); $view->chooser(); } }
public function fetchElement($name) { static $sid = 0; $selected = 0; $db = SPFactory::db(); if (!$sid) { $sid = 0; if ($this->cid) { $link = $this->getLink(); if (strstr($link, 'sid')) { $query = array(); parse_str($link, $query); $sid = $query['sid']; if (isset($query['sptpl'])) { $this->tpl = $query['sptpl']; } } if ($sid) { $section = SPFactory::object($sid); if ($section->oType == 'section') { $selected = $section->id; $this->section = $selected; } else { $path = array(); $id = $sid; while ($id > 0) { try { $db->select('pid', 'spdb_relations', array('id' => $id)); $id = $db->loadResult(); if ($id) { $path[] = (int) $id; } } catch (SPException $x) { } } $path = array_reverse($path); $selected = $path[0]; $this->section = $selected; } } else { // just to not repeating $sid = -1; } } } $this->sid = $sid; $this->determineObjectType($sid); switch ($name) { case 'sid': $params = array('id' => 'sid', 'class' => 'input-mini', 'style' => 'text-align: center; margin-top: 10px; margin-left: 10px;', 'readonly' => 'readonly'); return '<div class="SobiPro" id="jform_request_sid">' . SPHtml_Input::text('type', $this->oTypeName, array('id' => 'otype', 'class' => 'input-medium', 'style' => 'text-align: center; margin-top: 10px;', 'readonly' => 'readonly')) . SPHtml_Input::text('urlparams[sid]', $sid, $params) . '</div>'; break; case 'cid': return $this->getCat(); break; case 'eid': return $this->getEntry(); break; case 'did': case 'date': return $this->getCalendar(); break; case 'tpl': case 'sptpl': return $this->getTemplates(); break; } $sections = array(); $sout = array(); try { $sections = $db->select('*', 'spdb_object', array('oType' => 'section'), 'id')->loadObjectList(); } catch (SPException $x) { Sobi::Error($this->name(), $x->getMessage(), SPC::ERROR, 500, __LINE__, __FILE__); } if (count($sections)) { SPLoader::loadClass('models.datamodel'); SPLoader::loadClass('models.dbobject'); SPLoader::loadModel('section'); $sout[] = Sobi::Txt('SOBI_SELECT_SECTION'); foreach ($sections as $section) { if (Sobi::Can('section', 'access', 'valid', $section->id)) { $s = new SPSection(); $s->extend($section); $sout[$s->get('id')] = $s->get('name'); } } } $params = array('id' => 'spsection', 'class' => 'required'); $field = SPHtml_Input::select('sid', $sout, $selected, false, $params); return "<div class=\"SobiPro\" style=\"margin-top: 2px;\">{$field}</div>"; }
/** */ private function editForm() { if ($this->_task != 'add') { $sid = SPRequest::sid(); $sid = $sid ? $sid : SPRequest::int('pid'); } else { $this->authorise($this->_task, 'own'); $this->_model = null; $sid = SPRequest::int('pid'); // $section = SPFactory::Section( Sobi::Section() ); } if ($this->_model && $this->_model->isCheckedOut()) { Sobi::Redirect(Sobi::Url(array('sid' => SPRequest::sid())), Sobi::Txt('EN.IS_CHECKED_OUT', $this->_model->get('name')), SPC::ERROR_MSG, true); } /* determine template package */ $tplPackage = Sobi::Cfg('section.template', SPC::DEFAULT_TEMPLATE); /* load template config */ $this->template(); $this->tplCfg($tplPackage); /* check if we have stored last edit in cache */ $this->getCache(SPRequest::string('editentry', null, false, 'cookie'), 'editcache'); $section = SPFactory::Model('section'); $section->init(Sobi::Section()); SPFactory::cache()->setJoomlaCaching(false); if ($this->_model) { /* handle meta data */ SPFactory::header()->objMeta($this->_model); /* add pathway */ SPFactory::mainframe()->addObjToPathway($this->_model); } else { /* handle meta data */ SPFactory::header()->objMeta($section); if ($this->_task == 'add') { SPFactory::header()->addKeyword($section->get('efMetaKeys'))->addDescription($section->get('efMetaDesc')); } SPFactory::mainframe()->addToPathway(Sobi::Txt('EN.ADD_PATH_TITLE'), Sobi::Url('current')); SPFactory::mainframe()->setTitle(Sobi::Txt('EN.ADD_TITLE', array('section' => $section->get('name')))); /* add pathway */ SPFactory::mainframe()->addObjToPathway($section); $this->setModel(SPLoader::loadModel('entry')); } $this->_model->formatDatesToEdit(); $id = $this->_model->get('id'); if (!$id) { $this->_model->set('state', 1); } if ($this->_task != 'add' && !$this->authorise($this->_task, $this->_model->get('owner') == Sobi::My('id') ? 'own' : '*')) { throw new SPException(SPLang::e('YOU_ARE_NOT_AUTH_TO_EDIT_THIS_ENTRY')); } $this->_model->loadFields(Sobi::Reg('current_section')); /* get fields for this section */ $fields = $this->_model->get('fields'); if (!count($fields)) { throw new SPException(SPLang::e('CANNOT_GET_FIELDS_IN_SECTION', Sobi::Reg('current_section'))); } /* create the validation script to check if required fields are filled in and the filters, if any, match */ $this->createValidationScript($fields); /* check out the model */ $this->_model->checkOut(); $class = SPLoader::loadView('entry'); $view = new $class($this->template); $view->assign($this->_model, 'entry'); $cache = Sobi::Reg('editcache'); /* get the categories */ if (isset($cache) && isset($cache['entry_parent'])) { $cats = explode(',', $cache['entry_parent']); } else { $cats = $this->_model->getCategories(true); } if (count($cats)) { $tCats = array(); foreach ($cats as $cid) { $tCats2 = SPFactory::config()->getParentPath((int) $cid, true); if (is_array($tCats2) && count($tCats2)) { $tCats[] = implode(Sobi::Cfg('string.path_separator', ' > '), $tCats2); } } if (count($tCats)) { $view->assign(implode("\n", $tCats), 'parent_path'); } $view->assign(implode(", ", $cats), 'parents'); } else { $parent = $sid == Sobi::Reg('current_section') ? 0 : $sid; if ($parent) { $view->assign(implode(Sobi::Cfg('string.path_separator', ' > '), SPFactory::config()->getParentPath($parent, true)), 'parent_path'); } $view->assign($parent, 'parents'); } $view->assign($this->_task, 'task'); $view->assign($fields, 'fields'); $view->assign($id, 'id'); $view->assign($id, 'sid'); $view->assign(SPFactory::user()->getCurrent(), 'visitor'); $view->setConfig($this->_tCfg, $this->template); $view->setTemplate($tplPackage . '.' . $this->templateType . '.' . ($this->template == 'add' ? 'edit' : $this->template)); $view->addHidden($sid ? $sid : SPRequest::sid(), 'pid'); $view->addHidden($id, 'sid'); $view->addHidden(SPRequest::int('pid') && SPRequest::int('pid') != $id ? SPRequest::int('pid') : Sobi::Section(), 'pid'); $view->addHidden('entry.submit', SOBI_TASK); Sobi::Trigger($this->name(), __FUNCTION__, array(&$view)); $view->display(); }
/** * @param int $sid * @return SPSection */ private function getSection($sid) { SPLoader::loadModel('section'); $section = new SPSection(); $section->init($sid); return $section; }
protected function loadFields() { $fields = null; $fmod = SPLoader::loadModel('field'); /* get fields */ try { $this->_db->select('*', 'spdb_field', array('section' => Sobi::Section(), 'inSearch' => 1, 'enabled' => 1), 'position'); $fields = $this->_db->loadObjectList(); } catch (SPException $x) { Sobi::Error($this->name(), SPLang::e('CANNOT_GET_FIELDS_DB_ERR', $x->getMessage()), SPC::ERROR, 500, __LINE__, __FILE__); } if (count($fields)) { foreach ($fields as $i => $f) { /* @var SPField $field */ $field = new $fmod(); $field->extend($f); if (count($this->_request) && isset($this->_request[$field->get('nid')])) { $field->setSelected($this->_request[$field->get('nid')]); } $fields[$i] = $field; } } Sobi::Trigger('LoadFields', 'Search', array(&$fields)); return $fields; }
/** * Route task */ public function execute() { /* parent class executes the plugins */ $r = false; $task = $this->_task; if (strstr($this->_task, '.')) { $task = explode('.', $this->_task); $this->_fieldType = $task[1]; $task = $task[0]; } switch ($task) { case 'list': $r = true; $this->listFields(); break; case 'add': case 'edit': $r = true; $this->edit(); break; case 'cancel': $r = true; $this->checkIn(); $this->response(Sobi::Back()); break; case 'addNew': $r = true; Sobi::Redirect(Sobi::Url(array('task' => 'field.edit', 'fid' => $this->saveNew(), 'sid' => SPRequest::sid()))); break; case 'apply': case 'save': $r = true; $this->save(); break; case 'clone': $r = true; $this->save(true); break; case 'delete': $r = true; SPFactory::cache()->cleanSection(); $this->response(Sobi::Url(array('task' => 'field.list', 'pid' => Sobi::Section())), $this->delete(), true); break; case 'reorder': $r = true; $this->reorder(); break; case 'revisions': $r = true; $this->revisions(); break; case 'up': case 'down': $r = true; $this->singleReorder($this->_task == 'up'); break; case 'hide': case 'publish': case 'setRequired': case 'setNotRequired': case 'setEditable': case 'setNotEditable': case 'setFee': case 'setFree': case 'toggle': $r = true; $this->authorise($this->_task); SPFactory::cache()->cleanSection(); $this->response(Sobi::Back(), $this->changeState($task), true); break; default: /* case plugin didn't registered this task, it was an error */ if (!Sobi::Trigger('Execute', $this->name(), array(&$this))) { $fid = SPRequest::int('fid'); $method = $this->_task; if ($fid) { SPLoader::loadModel('field', true); $fdata = $this->loadField($fid); $field = new SPAdmField(); $field->extend($fdata); try { $field->{$method}(); } catch (SPException $x) { Sobi::Error($this->name(), SPLang::e('SUCH_TASK_NOT_FOUND', SPRequest::task()), SPC::NOTICE, 404, __LINE__, __FILE__); } } elseif (!parent::execute()) { Sobi::Error($this->name(), SPLang::e('SUCH_TASK_NOT_FOUND', SPRequest::task()), SPC::NOTICE, 404, __LINE__, __FILE__); } } break; } return $r; }
/** */ private function editForm() { /* if adding new */ if (!$this->_model || $this->_task == 'add') { $this->setModel(SPLoader::loadModel('category')); } $this->checkTranslation(); $this->_model->formatDatesToEdit(); $id = $this->_model->get('id'); if (!$id) { $this->_model->set('state', 1); $this->_model->set('parent', SPRequest::sid()); } if ($this->_model->isCheckedOut()) { SPFactory::message()->error(Sobi::Txt('CAT.IS_CHECKED_OUT'), false); } else { $this->_model->checkOut(); } $view = SPFactory::View('category', true); $view->assign($this->_model, 'category')->assign($this->_task, 'task')->assign(SPFactory::CmsHelper()->userSelect('category.owner', $this->_model->get('owner') ? $this->_model->get('owner') : ($this->_model->get('id') ? 0 : Sobi::My('id')), true), 'owner')->assign($id, 'cid')->addHidden(Sobi::Section(), 'pid'); Sobi::Trigger('Category', 'EditView', array(&$view)); $view->display(); }
protected function customCols() { /* get fields for header */ $fields = array(); try { $fieldsData = SPFactory::db()->select('*', 'spdb_field', array('!admList' => 0, 'section' => Sobi::Reg('current_section')), 'admList')->loadObjectList(); } catch (SPException $x) { Sobi::Error($this->name(), SPLang::e('DB_REPORTS_ERR', $x->getMessage()), SPC::WARNING, 0, __LINE__, __FILE__); } if (count($fieldsData)) { $fModel = SPLoader::loadModel('field', true); foreach ($fieldsData as $field) { $fit = new $fModel(); /* @var SPField $fit */ $fit->extend($field); $fields[] = $fit; } } return $fields; }
* @package: SobiPro Library * @author * Name: Sigrid Suski & Radek Suski, Sigsiu.NET GmbH * Email: sobi[at]sigsiu.net * Url: https://www.Sigsiu.NET * @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'); SPLoader::loadModel('entry'); /** * @author Radek Suski * @version 1.0 * @created 10-Jan-2009 5:14:27 PM */ class SPEntryAdm extends SPEntry implements SPDataModel { /** * @var bool */ private $_loaded = false; private function nameField() { /* get the field id of the field contains the entry name */ if ($this->section == Sobi::Section() || !$this->section) {
/** * @param int $sid * @param bool $redirect * @return void */ protected function checkIn($sid, $redirect = true) { if ($sid) { $this->setModel(SPLoader::loadModel($this->_type)); $this->_model->load($sid); $this->_model->checkIn(); } if ($redirect) { Sobi::Redirect(Sobi::GetUserState('back_url', Sobi::Url())); } }