本文整理汇总了PHP中Object_Abstract::setGetInheritedValues方法的典型用法代码示例。如果您正苦于以下问题:PHP Object_Abstract::setGetInheritedValues方法的具体用法?PHP Object_Abstract::setGetInheritedValues怎么用?PHP Object_Abstract::setGetInheritedValues使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Object_Abstract
的用法示例。
在下文中一共展示了Object_Abstract::setGetInheritedValues方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: init
public function init()
{
parent::init();
// set language
try {
$locale = Zend_Registry::get("Zend_Locale");
$this->setLanguage($locale->getLanguage());
} catch (Exception $e) {
if ($this->_getParam("language")) {
$this->setLanguage($this->_getParam("language"));
} else {
$config = Pimcore_Config::getSystemConfig();
$this->setLanguage($config->general->language);
}
}
try {
Zend_Registry::get("pimcore_admin_initialized");
$this->setUser(Zend_Registry::get("pimcore_admin_user"));
} catch (Exception $e) {
// general definitions
Document::setHideUnpublished(false);
Object_Abstract::setHideUnpublished(false);
Object_Abstract::setGetInheritedValues(false);
Pimcore::setAdminMode();
// init translations
self::initTranslations($this);
// init zend action helpers
Zend_Controller_Action_HelperBroker::addPrefix('Pimcore_Controller_Action_Helper');
// authenticate user, first try to authenticate with session information
$user = Pimcore_Tool_Authentication::authenticateSession();
if ($user instanceof User) {
$this->setUser($user);
if ($this->getUser()->getLanguage()) {
$this->setLanguage($this->getUser()->getLanguage());
}
} else {
// try to authenticate with digest, but this is only allowed for WebDAV
if ($this->_getParam("module") == "admin" && $this->_getParam("controller") == "asset" && $this->_getParam("action") == "webdav") {
$user = Pimcore_Tool_Authentication::authenticateDigest();
if ($user instanceof User) {
$this->setUser($user);
return;
}
}
}
// send a auth header for the client (is covered by the ajax object in javascript)
if (!$this->getUser() instanceof User) {
$this->getResponse()->setHeader("X-Pimcore-Auth", "required");
}
// redirect to the login-page if the user isn't authenticated
if (!$this->getUser() instanceof User && !($this->_getParam("module") == "admin" && $this->_getParam("controller") == "login")) {
$this->_redirect("/admin/login");
$this->getResponse()->sendResponse();
exit;
}
Zend_Registry::set("pimcore_admin_user", $this->getUser());
Zend_Registry::set("pimcore_admin_initialized", true);
}
}
示例2: __construct
public function __construct($element)
{
parent::__construct($element);
if ($element instanceof Object_Product) {
$backup = Object_Abstract::doGetInheritedValues($element);
Object_Abstract::setGetInheritedValues(true);
if ($element->getParent() instanceof Object_Product) {
$this->elementIcon = '/pimcore/static/img/icon/tag_green.png';
$this->elementIconClass = null;
} else {
$this->elementIcon = '/pimcore/static/img/icon/tag_blue.png';
$this->elementIconClass = null;
}
Object_Abstract::setGetInheritedValues($backup);
}
}
示例3: endpointAction
public function endpointAction()
{
// disable wsdl cache
if (PIMCORE_DEVMODE) {
ini_set("soap.wsdl_cache_enabled", "0");
}
// create classmappings
$classMap = Webservice_Tool::createClassMappings();
// p_r($classMap); die();
// create wsdl
// @TODO create a cache here
$strategy = new Zend_Soap_Wsdl_Strategy_Composite(array("object[]" => "Zend_Soap_Wsdl_Strategy_AnyType"), "Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex");
$autodiscover = new Zend_Soap_AutoDiscover($strategy);
$autodiscover->setClass('Webservice_Service');
$wsdl = $autodiscover->toXml();
//TODO: do we really want to normalize class names since we had to introduce request and response objects anyway?
$wsdl = str_replace("Webservice_Data_", "", $wsdl);
// normalize classnames
$wsdlFile = PIMCORE_SYSTEM_TEMP_DIRECTORY . "/wsdl.xml";
file_put_contents($wsdlFile, $wsdl);
chmod($wsdlFile, 0766);
// let's go
if (isset($_GET["wsdl"])) {
header("Content-Type: text/xml; charset=utf8");
echo $wsdl;
} else {
Pimcore::setAdminMode();
Document::setHideUnpublished(false);
Object_Abstract::setHideUnpublished(false);
Object_Abstract::setGetInheritedValues(false);
try {
$server = new Zend_Soap_Server($wsdlFile, array("cache_wsdl" => false, "soap_version" => SOAP_1_2, "classmap" => $classMap));
$server->registerFaultException("Exception");
$server->setClass("Webservice_Service");
$server->handle();
} catch (Exception $e) {
Logger::log("Soap request failed");
Logger::log($e);
throw $e;
}
}
exit;
}
示例4: init
public function init()
{
parent::init();
// enable layout only if its a normal request
if ($this->getRequest()->isXmlHttpRequest() === false) {
$this->enableLayout();
$this->setLayout('back-office');
}
// sprache setzen
$language = $this->getUser() ? $this->getUser()->getLanguage() : 'en';
Zend_Registry::set("Zend_Locale", new Zend_Locale($language));
$this->language = $language;
$this->view->language = $language;
$this->initTranslation();
// enable inherited values
Object_Abstract::setGetInheritedValues(true);
Object_Localizedfield::setGetFallbackValues(true);
// init
$this->orderManager = OnlineShop_Framework_Factory::getInstance()->getOrderManager();
}
示例5: init
public function init()
{
parent::init();
// set language
if (Zend_Registry::isRegistered("Zend_Locale")) {
$locale = Zend_Registry::get("Zend_Locale");
$this->setLanguage($locale->getLanguage());
} else {
if ($this->_getParam("language")) {
$this->setLanguage($this->_getParam("language"));
} else {
$config = Pimcore_Config::getSystemConfig();
$this->setLanguage($config->general->language);
// try to set browser-language (validation if installed is in $this->setLanguage() )
$this->setLanguage(new Zend_Locale());
}
}
if (self::$adminInitialized) {
// this will be executed on every call to this init() method
try {
$this->setUser(Zend_Registry::get("pimcore_admin_user"));
} catch (Exception $e) {
Logger::emerg("adminInitialized was set to true although there was no user set in the registry -> to be save the process was killed");
exit;
}
} else {
// the following code is only called once, even when there are some subcalls (eg. with $this->action, ... )
$this->disableBrowserCache();
// general definitions
Document::setHideUnpublished(false);
Object_Abstract::setHideUnpublished(false);
Object_Abstract::setGetInheritedValues(false);
Pimcore::setAdminMode();
// init translations
self::initTranslations($this);
// init zend action helpers
Zend_Controller_Action_HelperBroker::addPrefix('Pimcore_Controller_Action_Helper');
// this is to make it possible to use the session id as a part of the route (ZF default route) used for pixlr.com editors, etc.
if ($this->_getParam("pimcore_admin_sid")) {
$_REQUEST["pimcore_admin_sid"] = $this->_getParam("pimcore_admin_sid");
}
// authenticate user, first try to authenticate with session information
$user = Pimcore_Tool_Authentication::authenticateSession();
if ($user instanceof User) {
$this->setUser($user);
if ($this->getUser()->getLanguage()) {
$this->setLanguage($this->getUser()->getLanguage());
}
} else {
// try to authenticate with digest, but this is only allowed for WebDAV
if ($this->_getParam("module") == "admin" && $this->_getParam("controller") == "asset" && $this->_getParam("action") == "webdav") {
$user = Pimcore_Tool_Authentication::authenticateDigest();
if ($user instanceof User) {
$this->setUser($user);
self::$adminInitialized = true;
return;
}
}
}
// redirect to the login-page if the user isn't authenticated
if (!$this->getUser() instanceof User && !($this->_getParam("module") == "admin" && $this->_getParam("controller") == "login")) {
// put a detailed message into the debug.log
Logger::warn("Prevented access to " . $_SERVER["REQUEST_URI"] . " because there is no user in the session!");
Logger::warn(array("server" => $_SERVER, "get" => $_GET, "post" => $_POST, "session" => $_SESSION, "cookie" => $_COOKIE));
// send a auth header for the client (is covered by the ajax object in javascript)
$this->getResponse()->setHeader("X-Pimcore-Auth", "required");
// redirect to login page
$this->_redirect("/admin/login");
// exit the execution -> just to be sure
exit;
}
// we're now authenticated so we can remove the default error handler so that we get just the normal PHP errors
if ($this->_getParam("controller") != "login") {
$front = Zend_Controller_Front::getInstance();
$front->unregisterPlugin("Pimcore_Controller_Plugin_ErrorHandler");
$front->throwExceptions(true);
@ini_set("display_errors", "On");
@ini_set("display_startup_errors", "On");
}
Zend_Registry::set("pimcore_admin_user", $this->getUser());
self::$adminInitialized = true;
}
}
示例6: init
public function init()
{
parent::init();
// log exceptions if handled by error_handler
$this->checkForErrors();
// general definitions
Pimcore::unsetAdminMode();
Document::setHideUnpublished(true);
Object_Abstract::setHideUnpublished(true);
Object_Abstract::setGetInheritedValues(true);
// contains the logged in user if necessary
$user = null;
// assign variables
$this->view->controller = $this;
// init website config
$config = Pimcore_Config::getWebsiteConfig();
$this->config = $config;
$this->view->config = $config;
if (!$this->_getParam("document")) {
Zend_Registry::set("pimcore_editmode", false);
$this->editmode = false;
$this->view->editmode = false;
// no document available, continue, ...
return;
} else {
$this->setDocument($this->_getParam("document"));
}
if ($this->_getParam("pimcore_editmode") || $this->_getParam("pimcore_version") || $this->_getParam("pimcore_preview") || $this->_getParam("pimcore_admin") || $this->_getParam("pimcore_object_preview")) {
$specialAdminRequest = true;
$this->disableBrowserCache();
// start admin session & get logged in user
$user = Pimcore_Tool_Authentication::authenticateSession();
}
if (!$this->document->isPublished()) {
if ($specialAdminRequest) {
if (!$user) {
throw new Exception("access denied for " . $this->document->getFullPath());
}
} else {
throw new Exception("access denied for " . $this->document->getFullPath());
}
}
// register global locale if the document has the system property "language"
if ($this->document->getProperty("language")) {
$locale = new Zend_Locale($this->document->getProperty("language"));
Zend_Registry::set('Zend_Locale', $locale);
$this->getResponse()->setHeader("Content-Language", strtolower(str_replace("_", "-", (string) $locale)), true);
}
// for editmode
if ($user) {
if ($this->_getParam("pimcore_editmode") and !Zend_Registry::isRegistered("pimcore_editmode")) {
Zend_Registry::set("pimcore_editmode", true);
// check if there is the document in the session
$docKey = "document_" . $this->getDocument()->getId();
$docSession = new Zend_Session_Namespace("pimcore_documents");
if ($docSession->{$docKey}) {
// if there is a document in the session use it
$this->setDocument($docSession->{$docKey});
} else {
// set the latest available version for editmode if there is no doc in the session
$latestVersion = $this->getDocument()->getLatestVersion();
if ($latestVersion) {
$latestDoc = $latestVersion->loadData();
if ($latestDoc instanceof Document_PageSnippet) {
$this->setDocument($latestDoc);
}
}
}
// register editmode plugin
$front = Zend_Controller_Front::getInstance();
$front->registerPlugin(new Pimcore_Controller_Plugin_Frontend_Editmode($this), 1000);
} else {
Zend_Registry::set("pimcore_editmode", false);
}
} else {
Zend_Registry::set("pimcore_editmode", false);
}
// for preview
if ($user) {
// document preview
if ($this->_getParam("pimcore_preview")) {
// get document from session
$docKey = "document_" . $this->_getParam("document")->getId();
$docSession = new Zend_Session_Namespace("pimcore_documents");
if ($docSession->{$docKey}) {
$this->setDocument($docSession->{$docKey});
}
}
// object preview
if ($this->_getParam("pimcore_object_preview")) {
$key = "object_" . $this->_getParam("pimcore_object_preview");
$session = new Zend_Session_Namespace("pimcore_objects");
if ($session->{$key}) {
$object = $session->{$key};
// add the object to the registry so every call to Object_Abstract::getById() will return this object instead of the real one
Zend_Registry::set("object_" . $object->getId(), $object);
}
}
}
// for version preview
//.........这里部分代码省略.........
示例7: getcwd
* Pimcore
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://www.pimcore.org/license
*
* @copyright Copyright (c) 2009-2010 elements.at New Media Solutions GmbH (http://www.elements.at)
* @license http://www.pimcore.org/license New BSD License
*/
$workingDirectory = getcwd();
chdir(__DIR__);
include_once "../config/startup.php";
chdir($workingDirectory);
Pimcore::initAutoloader();
Pimcore::initConfiguration();
Pimcore::setupFramework();
Pimcore::initLogger();
Pimcore::initModules();
Pimcore::initPlugins();
//Activate Inheritance for cli-scripts
Pimcore::unsetAdminMode();
Document::setHideUnpublished(true);
Object_Abstract::setHideUnpublished(true);
Object_Abstract::setGetInheritedValues(true);
// Error reporting is enabled in CLI
@ini_set("display_errors", "On");
@ini_set("display_startup_errors", "On");
error_reporting(E_ALL ^ E_NOTICE);
示例8: update
/**
* @return void
*/
protected function update()
{
$fieldDefintions = $this->getO_class()->getFieldDefinitions();
foreach ($fieldDefintions as $fd) {
$getter = "get" . ucfirst($fd->getName());
$setter = "set" . ucfirst($fd->getName());
if (method_exists($this, $getter)) {
//To make sure, inherited values are not set again
$inheritedValues = Object_Abstract::doGetInheritedValues();
Object_Abstract::setGetInheritedValues(false);
$value = $this->{$getter}();
if (is_array($value) and ($fd instanceof Object_Class_Data_Multihref or $fd instanceof Object_Class_Data_Objects)) {
//don't save relations twice
$this->{$setter}(array_unique($value));
}
Object_Abstract::setGetInheritedValues($inheritedValues);
$value = $this->{$getter}();
$omitMandatoryCheck = $this->getOmitMandatoryCheck();
/*$timeSinceCreation = (time()-$this->getCreationDate());
if($timeSinceCreation <= 5){
// legacy hack: in previous version there was no check for mandatory fields,
// and everybody uses the save method for new object creation - so now let's evict the mandatory check
// if the object was created within the last 5 seconds
$omitMandatoryCheck=true;
Logger::debug("executing mandatory fields check for object [ ".$this->getId()." ]");
}
*/
//check throws Exception
try {
$fd->checkValidity($value, $omitMandatoryCheck);
} catch (Exception $e) {
if ($this->getO_class()->getAllowInherit()) {
//try again with parent data when inheritance in activated
try {
$getInheritedValues = Object_Abstract::doGetInheritedValues();
Object_Abstract::setGetInheritedValues(true);
$value = $this->{$getter}();
$fd->checkValidity($value, $omitMandatoryCheck);
Object_Abstract::setGetInheritedValues($getInheritedValues);
} catch (Exception $e) {
throw new Exception($e->getMessage() . " fieldname=" . $fd->getName());
}
} else {
throw new Exception($e->getMessage() . " fieldname=" . $fd->getName());
}
}
}
}
parent::update();
$this->getResource()->update();
$this->saveScheduledTasks();
$this->saveVersion(false, false);
$this->saveChilds();
Pimcore_API_Plugin_Broker::getInstance()->postUpdateObject($this);
}
示例9: setDataFromElement
/**
* @param Element_Interface $element
* @return void
*/
public function setDataFromElement($element)
{
$this->data = null;
$this->id = new Search_Backend_Data_Id($element);
$this->fullPath = $element->getFullPath();
$this->creationDate = $element->getCreationDate();
$this->modificationDate = $element->getModificationDate();
$this->userModification = $element->getUserModification();
$this->userOwner = $element->getUserOwner();
$this->type = $element->getType();
if ($element instanceof Object_Concrete) {
$this->subtype = $element->getO_className();
} else {
$this->subtype = $this->type;
}
$properties = $element->getProperties();
if (is_array($properties)) {
foreach ($properties as $nextProperty) {
if ($nextProperty->getType() == 'text') {
$this->properties .= $nextProperty->getData() . " ";
}
}
}
if ($element instanceof Document) {
if ($element instanceof Document_Folder) {
$this->data = $element->getKey();
$this->published = true;
} else {
if ($element instanceof Document_Link) {
$this->published = $element->isPublished();
$this->data = $element->getName() . " " . $element->getTitle() . " " . $element->getHref();
} else {
if ($element instanceof Document_PageSnippet) {
$this->published = $element->isPublished();
$elements = $element->getElements();
if (is_array($elements)) {
foreach ($elements as $tag) {
if ($tag instanceof Document_Tag_Interface) {
ob_start();
$this->data .= strip_tags($tag->frontend()) . " ";
$this->data .= ob_get_clean();
}
}
}
if ($element instanceof Document_Page) {
$this->published = $element->isPublished();
$this->data .= " " . $element->getName() . " " . $element->getTitle() . " " . $element->getDescription() . " " . $element->getKeywords();
}
}
}
}
} else {
if ($element instanceof Asset) {
$this->data = $element->getFilename();
$this->published = true;
} else {
if ($element instanceof Object_Abstract) {
if ($element instanceof Object_Concrete) {
$getInheritedValues = Object_Abstract::doGetInheritedValues();
Object_Abstract::setGetInheritedValues(true);
$this->published = $element->isPublished();
foreach ($element->getClass()->getFieldDefinitions() as $key => $value) {
// Object_Class_Data_Fieldcollections is special because it doesn't support the csv export
if ($value instanceof Object_Class_Data_Fieldcollections) {
$getter = "get" . $value->getName();
$this->fieldcollectionData .= Pimcore_Tool_Serialize::serialize($value->getDataForEditmode($element->{$getter}(), $element)) . " ";
} else {
if ($value instanceof Object_Class_Data_Localizedfields) {
$getter = "get" . $value->getName();
$this->localizedData .= Pimcore_Tool_Serialize::serialize($value->getDataForEditmode($element->{$getter}(), $element)) . " ";
} else {
$this->data .= $value->getForCsvExport($element) . " ";
}
}
}
Object_Abstract::setGetInheritedValues($getInheritedValues);
} else {
if ($element instanceof Object_Folder) {
$this->data = $element->getKey();
$this->published = true;
}
}
} else {
Logger::crit("Search_Backend_Data received an unknown element!");
}
}
}
}
示例10: save
/**
* @param Object_Concrete $object
* @return void
*/
public function save(Object_Concrete $object)
{
// HACK: set the pimcore admin mode to false to get the inherited values from parent if this source one is empty
$inheritedValues = Object_Abstract::doGetInheritedValues();
$storetable = $this->model->getDefinition()->getTableName($object->getClass(), false);
$querytable = $this->model->getDefinition()->getTableName($object->getClass(), true);
$this->inheritanceHelper = new Object_Concrete_Resource_InheritanceHelper($object->getClassId(), "o_id", $storetable, $querytable);
$this->createDataRows($object);
Object_Abstract::setGetInheritedValues(false);
$fd = $this->model->getDefinition()->getFieldDefinitions();
$data = array();
$data["o_id"] = $object->getId();
$data["fieldname"] = $this->model->getFieldname();
// remove all relations
try {
$this->db->delete("object_relations_" . $object->getClassId(), "src_id = " . $object->getId() . " AND ownertype = 'objectbrick' AND ownername = '" . $this->model->getFieldname() . "'");
} catch (Exception $e) {
Logger::warning("Error during removing old relations: " . $e);
}
foreach ($fd as $key => $value) {
$getter = "get" . ucfirst($value->getName());
if (method_exists($fd, "save")) {
// for fieldtypes which have their own save algorithm eg. objects, multihref, ...
$value->save($this->model);
} else {
if ($value->getColumnType()) {
if (is_array($value->getColumnType())) {
$insertDataArray = $value->getDataForResource($this->model->{$getter}(), $object);
$data = array_merge($data, $insertDataArray);
} else {
$insertData = $value->getDataForResource($this->model->{$getter}(), $object);
$data[$key] = $insertData;
}
} else {
if (method_exists($value, "save")) {
// for fieldtypes which have their own save algorithm eg. fieldcollections
$value->save($this->model);
}
}
}
}
$this->db->update($storetable, $data, $this->db->quoteInto("o_id = ?", $object->getId()));
// get data for query table
// $tableName = $this->model->getDefinition()->getTableName($object->getClass(), true);
// this is special because we have to call each getter to get the inherited values from a possible parent object
Object_Abstract::setGetInheritedValues(true);
$objectVars = get_object_vars($this->model);
$data = array();
$data["o_id"] = $object->getId();
$data["fieldname"] = $this->model->getFieldname();
$this->inheritanceHelper->resetFieldsToCheck();
$oldData = $this->db->fetchRow("SELECT * FROM " . $querytable . " WHERE o_id = ?", $object->getId());
foreach ($objectVars as $key => $value) {
$fd = $this->model->getDefinition()->getFieldDefinition($key);
if ($fd) {
if ($fd->getQueryColumnType()) {
//exclude untouchables if value is not an array - this means data has not been loaded
if (!is_array($this->model->{$key})) {
$method = "get" . $key;
$insertData = $fd->getDataForQueryResource($this->model->{$method}(), $object);
if (is_array($insertData)) {
$data = array_merge($data, $insertData);
} else {
$data[$key] = $insertData;
}
//get changed fields for inheritance
if ($fd->isRelationType()) {
if (is_array($insertData)) {
$doInsert = false;
foreach ($insertData as $insertDataKey => $insertDataValue) {
if ($oldData[$insertDataKey] != $insertDataValue) {
$doInsert = true;
}
}
if ($doInsert) {
$this->inheritanceHelper->addRelationToCheck($key, array_keys($insertData));
}
} else {
if ($oldData[$key] != $insertData) {
$this->inheritanceHelper->addRelationToCheck($key);
}
}
} else {
if (is_array($insertData)) {
foreach ($insertData as $insertDataKey => $insertDataValue) {
if ($oldData[$insertDataKey] != $insertDataValue) {
$this->inheritanceHelper->addFieldToCheck($insertDataKey);
}
}
} else {
if ($oldData[$key] != $insertData) {
$this->inheritanceHelper->addFieldToCheck($key);
}
}
}
} else {
//.........这里部分代码省略.........
示例11: save
/**
* @param Object_Concrete $object
* @return void
*/
public function save($object)
{
$getters = $this->getBrickGetters();
foreach ($getters as $getter) {
$brick = $this->{$getter}();
if ($brick instanceof Object_Objectbrick_Data_Abstract) {
if ($brick->getDoDelete()) {
$brick->delete($object);
$setter = "s" . substr($getter, 1);
$this->{$setter}(null);
//check if parent object has brick, and if so, create an empty brick to enable inheritance
$parentBrick = null;
$inheritanceModeBackup = Object_Abstract::getGetInheritedValues();
Object_Abstract::setGetInheritedValues(true);
if (Object_Abstract::doGetInheritedValues($object)) {
$container = $object->getValueFromParent($this->fieldname);
if (!empty($container)) {
$parentBrick = $container->{$getter}();
}
}
Object_Abstract::setGetInheritedValues($inheritanceModeBackup);
if (!empty($parentBrick)) {
$brickType = "Object_Objectbrick_Data_" . ucfirst($parentBrick->getType());
$brick = new $brickType($object);
$brick->setFieldname($this->getFieldname());
$brick->save($object);
$this->{$setter}($brick);
}
} else {
$brick->setFieldname($this->getFieldname());
$brick->save($object);
}
} else {
if ($brick == null) {
$parentBrick = null;
$inheritanceModeBackup = Object_Abstract::getGetInheritedValues();
Object_Abstract::setGetInheritedValues(true);
if (Object_Abstract::doGetInheritedValues($object)) {
$container = $object->getValueFromParent($this->fieldname);
if (!empty($container)) {
$parentBrick = $container->{$getter}();
}
}
Object_Abstract::setGetInheritedValues($inheritanceModeBackup);
if (!empty($parentBrick)) {
$brickType = "Object_Objectbrick_Data_" . ucfirst($parentBrick->getType());
$brick = new $brickType($object);
$brick->setFieldname($this->getFieldname());
$brick->save($object);
}
}
}
}
}
示例12: init
public function init()
{
parent::init();
// log exceptions if handled by error_handler
$this->checkForErrors();
// general definitions
Pimcore::unsetAdminMode();
Document::setHideUnpublished(true);
Object_Abstract::setHideUnpublished(true);
Object_Abstract::setGetInheritedValues(true);
$adminSession = null;
// assign variables
$this->view->controller = $this;
// init website config
$config = Pimcore_Config::getWebsiteConfig();
$this->config = $config;
$this->view->config = $config;
if (!$this->_getParam("document")) {
Zend_Registry::set("pimcore_editmode", false);
$this->editmode = false;
$this->view->editmode = false;
// no document available, continue, ...
return;
} else {
$this->setDocument($this->_getParam("document"));
}
if ($this->_getParam("pimcore_editmode") || $this->_getParam("pimcore_version") || $this->_getParam("pimcore_preview") || $this->_getParam("pimcore_admin") || $this->_getParam("pimcore_object_preview")) {
$specialAdminRequest = true;
Pimcore_Tool_Authentication::initSession();
// start admin session
$adminSession = new Zend_Session_Namespace("pimcore_admin");
}
if (!$this->document->isPublished()) {
if ($specialAdminRequest) {
if (!$adminSession->user instanceof User) {
throw new Exception("access denied for " . $this->document->getFullPath());
}
} else {
throw new Exception("access denied for " . $this->document->getFullPath());
}
}
// register global locale if the document has the system property "language"
if ($this->document->getProperty("language")) {
$locale = new Zend_Locale($this->document->getProperty("language"));
Zend_Registry::set('Zend_Locale', $locale);
}
// for editmode
if ($adminSession && $adminSession->user instanceof User) {
if ($this->_getParam("pimcore_editmode") and !Zend_Registry::isRegistered("pimcore_editmode")) {
Zend_Registry::set("pimcore_editmode", true);
// check if there is the document in the session
$docKey = "document_" . $this->getDocument()->getId();
$docSession = new Zend_Session_Namespace("pimcore_documents");
if ($docSession->{$docKey}) {
// if there is a document in the session use it
$this->setDocument($docSession->{$docKey});
} else {
// set the latest available version for editmode if there is no doc in the session
$latestVersion = $this->getDocument()->getLatestVersion();
if ($latestVersion) {
$latestDoc = $latestVersion->loadData();
if ($latestDoc instanceof Document_PageSnippet) {
$this->setDocument($latestDoc);
}
}
}
// register editmode plugin
$front = Zend_Controller_Front::getInstance();
$front->registerPlugin(new Pimcore_Controller_Plugin_Frontend_Editmode($this), 1000);
} else {
Zend_Registry::set("pimcore_editmode", false);
}
} else {
Zend_Registry::set("pimcore_editmode", false);
}
// for preview
if ($adminSession && $adminSession->user instanceof User) {
// document preview
if ($this->_getParam("pimcore_preview")) {
// get document from session
$docKey = "document_" . $this->_getParam("document")->getId();
$docSession = new Zend_Session_Namespace("pimcore_documents");
if ($docSession->{$docKey}) {
$this->setDocument($docSession->{$docKey});
}
}
// object preview
if ($this->_getParam("pimcore_object_preview")) {
$key = "object_" . $this->_getParam("pimcore_object_preview");
$session = new Zend_Session_Namespace("pimcore_objects");
if ($session->{$key}) {
$object = $session->{$key};
// add the object to the registry so every call to Object_Abstract::getById() will return this object instead of the real one
Zend_Registry::set("object_" . $object->getId(), $object);
}
}
}
// for version preview
if ($this->_getParam("pimcore_version")) {
if ($adminSession && $adminSession->user instanceof User) {
//.........这里部分代码省略.........
示例13: update
/**
* Save changes to database, it's an good idea to use save() instead
*
* @return void
*/
public function update()
{
// check if the rows must be inserted or updated in the query and store table
if ($this->model->getId()) {
try {
$this->insertOrUpdate = $this->db->fetchRow("SELECT\r\n object_store_" . $this->model->getO_classId() . ".oo_id as store, object_query_" . $this->model->getO_classId() . ".oo_id as query, object.o_id as object\r\n FROM\r\n (SELECT o_id FROM objects WHERE o_id = " . $this->model->getId() . ") as object LEFT JOIN\r\n object_store_" . $this->model->getO_classId() . " ON object.o_id = object_store_" . $this->model->getO_classId() . ".oo_id LEFT JOIN\r\n object_query_" . $this->model->getO_classId() . " ON object.o_id = object_query_" . $this->model->getO_classId() . ".oo_id;");
} catch (Exception $e) {
$this->insertOrUpdate = null;
}
}
if (empty($this->insertOrUpdate)) {
$this->insertOrUpdate = array("query" => null, "store" => null, "object" => null);
}
parent::update();
//$this->createDataRows();
// get fields which shouldn't be updated
$fd = $this->model->geto_class()->getFieldDefinitions();
$untouchable = array();
foreach ($fd as $key => $value) {
if (method_exists($value, "getLazyLoading") && $value->getLazyLoading()) {
if (!in_array($key, $this->model->getLazyLoadedFields())) {
//this is a relation subject to lazy loading - it has not been loaded
$untouchable[] = $key;
}
}
}
// empty relation table except the untouchable fields (eg. lazy loading fields)
if (count($untouchable) > 0) {
$untouchables = "'" . implode("','", $untouchable) . "'";
$this->db->delete("object_relations_" . $this->model->getO_classId(), $this->db->quoteInto("src_id = ? AND fieldname not in (" . $untouchables . ") AND ownertype = 'object'", $this->model->getO_id()));
} else {
$this->db->delete("object_relations_" . $this->model->getO_classId(), $this->db->quoteInto("src_id = ? AND ownertype = 'object'", $this->model->getO_id()));
}
$inheritedValues = Object_Abstract::doGetInheritedValues();
Object_Abstract::setGetInheritedValues(false);
$data = array();
$data["oo_id"] = $this->model->getO_id();
foreach ($fd as $key => $value) {
$getter = "get" . ucfirst($key);
if (method_exists($value, "save")) {
// for fieldtypes which have their own save algorithm eg. fieldcollections, objects, multihref, ...
$value->save($this->model);
} else {
if ($value->getColumnType()) {
// pimcore saves the values with getDataForResource
if (is_array($value->getColumnType())) {
$insertDataArray = $value->getDataForResource($this->model->{$getter}(), $this->model);
if (is_array($insertDataArray)) {
$data = array_merge($data, $insertDataArray);
}
} else {
$insertData = $value->getDataForResource($this->model->{$getter}(), $this->model);
$data[$key] = $insertData;
}
}
}
}
if ($this->insertOrUpdate["store"]) {
$this->db->update("object_store_" . $this->model->getO_classId(), $data, $this->db->quoteInto("oo_id = ?", $this->model->getO_id()));
} else {
$this->db->insert("object_store_" . $this->model->getO_classId(), $data);
}
// get data for query table
// this is special because we have to call each getter to get the inherited values from a possible parent object
Object_Abstract::setGetInheritedValues(true);
$object = get_object_vars($this->model);
$data = array();
$this->inheritanceHelper->resetFieldsToCheck();
$oldData = $this->db->fetchRow("SELECT * FROM object_query_" . $this->model->getO_classId() . " WHERE oo_id = ?", $this->model->getId());
foreach ($object as $key => $value) {
$fd = $this->model->geto_class()->getFieldDefinition($key);
if ($fd) {
if ($fd->getQueryColumnType()) {
//exclude untouchables if value is not an array - this means data has not been loaded
if (!(in_array($key, $untouchable) and !is_array($this->model->{$key}))) {
$method = "get" . $key;
$insertData = $fd->getDataForQueryResource($this->model->{$method}(), $this->model);
if (is_array($insertData)) {
$data = array_merge($data, $insertData);
} else {
$data[$key] = $insertData;
}
//get changed fields for inheritance
if ($fd->isRelationType()) {
if (is_array($insertData)) {
$doInsert = false;
foreach ($insertData as $insertDataKey => $insertDataValue) {
if ($oldData[$insertDataKey] != $insertDataValue) {
$doInsert = true;
}
}
if ($doInsert) {
$this->inheritanceHelper->addRelationToCheck($key, array_keys($insertData));
}
} else {
//.........这里部分代码省略.........
示例14: setDataFromElement
/**
* @param Element_Interface $element
* @return void
*/
public function setDataFromElement($element)
{
$this->data = null;
$this->id = new Search_Backend_Data_Id($element);
$this->fullPath = $element->getFullPath();
$this->creationDate = $element->getCreationDate();
$this->modificationDate = $element->getModificationDate();
$this->userModification = $element->getUserModification();
$this->userOwner = $element->getUserOwner();
$this->type = $element->getType();
if ($element instanceof Object_Concrete) {
$this->subtype = $element->getO_className();
} else {
$this->subtype = $this->type;
}
$this->properties = "";
$properties = $element->getProperties();
if (is_array($properties)) {
foreach ($properties as $nextProperty) {
if ($nextProperty->getType() == 'text') {
$this->properties .= $nextProperty->getData() . " ";
}
}
}
$this->data = "";
if ($element instanceof Document) {
if ($element instanceof Document_Folder) {
$this->data = $element->getKey();
$this->published = true;
} else {
if ($element instanceof Document_Link) {
$this->published = $element->isPublished();
$this->data = $element->getName() . " " . $element->getTitle() . " " . $element->getHref();
} else {
if ($element instanceof Document_PageSnippet) {
$this->published = $element->isPublished();
$elements = $element->getElements();
if (is_array($elements) && !empty($elements)) {
foreach ($elements as $tag) {
if ($tag instanceof Document_Tag_Interface) {
ob_start();
$this->data .= strip_tags($tag->frontend()) . " ";
$this->data .= ob_get_clean();
}
}
}
if ($element instanceof Document_Page) {
$this->published = $element->isPublished();
$this->data .= " " . $element->getName() . " " . $element->getTitle() . " " . $element->getDescription() . " " . $element->getKeywords();
}
}
}
}
} else {
if ($element instanceof Asset) {
$this->data = $element->getFilename();
$this->published = true;
} else {
if ($element instanceof Object_Abstract) {
if ($element instanceof Object_Concrete) {
$getInheritedValues = Object_Abstract::doGetInheritedValues();
Object_Abstract::setGetInheritedValues(true);
$this->published = $element->isPublished();
foreach ($element->getClass()->getFieldDefinitions() as $key => $value) {
// Object_Class_Data_Fieldcollections, Object_Class_Data_Localizedfields and Object_Class_Data_Objectbricks is special because it doesn't support the csv export
if ($value instanceof Object_Class_Data_Fieldcollections) {
$getter = "get" . $value->getName();
$fcData = $element->{$getter}();
if ($fcData instanceof Object_Fieldcollection) {
foreach ($fcData as $item) {
if (!$item instanceof Object_Fieldcollection_Data_Abstract) {
continue;
}
try {
$collectionDef = Object_Fieldcollection_Definition::getByKey($item->getType());
} catch (Exception $e) {
continue;
}
foreach ($collectionDef->getFieldDefinitions() as $fd) {
$this->data .= $fd->getForCsvExport($item) . " ";
}
}
}
//$this->data .= Pimcore_Tool_Serialize::serialize($value->getDataForEditmode($element->$getter(), $element))." ";
} else {
if ($value instanceof Object_Class_Data_Localizedfields) {
// only for text-values at the moment, because the CSV doesn't work for localized fields (getter-problem)
$getter = "get" . $value->getName();
$lfData = $element->{$getter}();
if ($lfData instanceof Object_Localizedfield) {
foreach ($lfData->getItems() as $language => $values) {
foreach ($values as $lData) {
if (is_string($lData)) {
$this->data .= $lData . " ";
}
}
//.........这里部分代码省略.........