public function getVariantsAction() { // get list of variants if ($this->_getParam("xaction") == "update") { $data = Zend_Json::decode($this->_getParam("data")); // save $object = Object_Abstract::getById($data["id"]); $objectData = array(); foreach ($data as $key => $value) { $parts = explode("~", $key); if (count($parts) > 1) { $brickType = $parts[0]; $brickKey = $parts[1]; $brickField = Object_Service::getFieldForBrickType($object->getClass(), $brickType); $fieldGetter = "get" . ucfirst($brickField); $brickGetter = "get" . ucfirst($brickType); $valueSetter = "set" . ucfirst($brickKey); $brick = $object->{$fieldGetter}()->{$brickGetter}(); if (empty($brick)) { $classname = "Object_Objectbrick_Data_" . ucfirst($brickType); $brickSetter = "set" . ucfirst($brickType); $brick = new $classname($object); $object->{$fieldGetter}()->{$brickSetter}($brick); } $brick->{$valueSetter}($value); } else { $objectData[$key] = $value; } } $object->setValues($objectData); try { $object->save(); $this->_helper->json(array("data" => Object_Service::gridObjectData($object, $this->_getParam("fields")), "success" => true)); } catch (Exception $e) { $this->_helper->json(array("success" => false, "message" => $e->getMessage())); } } else { $parentObject = Object_Concrete::getById($this->_getParam("objectId")); if (empty($parentObject)) { throw new Exception("No Object found with id " . $this->_getParam("objectId")); } $class = $parentObject->getO_class(); $className = $parentObject->getO_class()->getName(); $start = 0; $limit = 15; $orderKey = "o_id"; $order = "ASC"; $fields = array(); $bricks = array(); if ($this->_getParam("fields")) { $fields = $this->_getParam("fields"); foreach ($fields as $f) { $parts = explode("~", $f); if (count($parts) > 1) { $bricks[$parts[0]] = $parts[0]; } } } if ($this->_getParam("limit")) { $limit = $this->_getParam("limit"); } if ($this->_getParam("start")) { $start = $this->_getParam("start"); } if ($this->_getParam("sort")) { if ($this->_getParam("sort") == "fullpath") { $orderKey = array("o_path", "o_key"); } else { if ($this->_getParam("sort") == "id") { $orderKey = "o_id"; } else { if ($this->_getParam("sort") == "published") { $orderKey = "o_published"; } else { if ($this->_getParam("sort") == "modificationDate") { $orderKey = "o_modificationDate"; } else { if ($this->_getParam("sort") == "creationDate") { $orderKey = "o_creationDate"; } else { $orderKey = $this->_getParam("sort"); } } } } } } if ($this->_getParam("dir")) { $order = $this->_getParam("dir"); } $listClass = "Object_" . ucfirst($className) . "_List"; $conditionFilters = "o_parentId = " . $parentObject->getId(); // create filter condition if ($this->_getParam("filter")) { $conditionFilters .= Object_Service::getFilterCondition($this->_getParam("filter"), $class); } if ($this->_getParam("condition")) { $conditionFilters .= " AND (" . $this->_getParam("condition") . ")"; } $list = new $listClass(); if (!empty($bricks)) { foreach ($bricks as $b) { $list->addObjectbrick($b); } } $list->setCondition($conditionFilters); $list->setLimit($limit); $list->setOffset($start); $list->setOrder($order); $list->setOrderKey($orderKey); $list->setIgnoreLocale(true); $list->setObjectTypes(array(Object_Abstract::OBJECT_TYPE_VARIANT)); $list->load(); $objects = array(); foreach ($list->getObjects() as $object) { $o = Object_Service::gridObjectData($object, $fields); $objects[] = $o; } $this->_helper->json(array("data" => $objects, "success" => true, "total" => $list->getTotalCount())); } }
public function gridProxyAction() { if ($this->_getParam("language")) { $this->setLanguage($this->_getParam("language")); } if ($this->_getParam("data")) { if ($this->_getParam("xaction") == "update") { $data = Zend_Json::decode($this->_getParam("data")); // save $object = Object_Abstract::getById($data["id"]); $objectData = array(); foreach ($data as $key => $value) { $parts = explode("~", $key); if (count($parts) > 1) { $brickType = $parts[0]; $brickKey = $parts[1]; $brickField = Object_Service::getFieldForBrickType($object->getClass(), $brickType); $fieldGetter = "get" . ucfirst($brickField); $brickGetter = "get" . ucfirst($brickType); $valueSetter = "set" . ucfirst($brickKey); $brick = $object->{$fieldGetter}()->{$brickGetter}(); if (empty($brick)) { $classname = "Object_Objectbrick_Data_" . ucfirst($brickType); $brickSetter = "set" . ucfirst($brickType); $brick = new $classname($object); $object->{$fieldGetter}()->{$brickSetter}($brick); } $brick->{$valueSetter}($value); } else { $objectData[$key] = $value; } } $object->setValues($objectData); try { $object->save(); $this->_helper->json(array("data" => Object_Service::gridObjectData($object, $this->_getParam("fields")), "success" => true)); } catch (Exception $e) { $this->_helper->json(array("success" => false, "message" => $e->getMessage())); } } } else { // get list of objects $folder = Object_Abstract::getById($this->_getParam("folderId")); $class = Object_Class::getById($this->_getParam("classId")); $className = $class->getName(); $colMappings = array("filename" => "o_key", "fullpath" => array("o_path", "o_key"), "id" => "o_id", "published" => "o_published", "modificationDate" => "o_modificationDate", "creationDate" => "o_creationDate"); $start = 0; $limit = 20; $orderKey = "o_id"; $order = "ASC"; $fields = array(); $bricks = array(); if ($this->_getParam("fields")) { $fields = $this->_getParam("fields"); foreach ($fields as $f) { $parts = explode("~", $f); if (count($parts) > 1) { $bricks[$parts[0]] = $parts[0]; } } } if ($this->_getParam("limit")) { $limit = $this->_getParam("limit"); } if ($this->_getParam("start")) { $start = $this->_getParam("start"); } if ($this->_getParam("sort")) { if (array_key_exists($this->_getParam("sort"), $colMappings)) { $orderKey = $colMappings[$this->_getParam("sort")]; } else { $orderKey = $this->_getParam("sort"); } } if ($this->_getParam("dir")) { $order = $this->_getParam("dir"); } $listClass = "Object_" . ucfirst($className) . "_List"; // create filter condition if ($this->_getParam("filter")) { $conditionFilters = Object_Service::getFilterCondition($this->_getParam("filter"), $class); } if ($this->_getParam("condition")) { $conditionFilters = " AND (" . $this->_getParam("condition") . ")"; } $list = new $listClass(); if (!empty($bricks)) { foreach ($bricks as $b) { $list->addObjectbrick($b); } } if ($this->_getParam("only_direct_children") == "true") { $pathCondition = "o_parentId = " . $folder->getId(); } else { $pathCondition = "(o_path = '" . $folder->getFullPath() . "' OR o_path LIKE '" . str_replace("//", "/", $folder->getFullPath() . "/") . "%')"; } $list->setCondition($pathCondition . $conditionFilters); $list->setLimit($limit); $list->setOffset($start); $list->setOrder($order); $list->setOrderKey($orderKey); $list->setIgnoreLocale(true); $list->load(); $objects = array(); foreach ($list->getObjects() as $object) { $o = Object_Service::gridObjectData($object, $fields); $objects[] = $o; } $this->_helper->json(array("data" => $objects, "success" => true, "total" => $list->getTotalCount())); } }
public function batchAction() { $success = true; try { $object = Object_Abstract::getById($this->_getParam("job")); if ($object) { $className = $object->getO_className(); $class = Object_Class::getByName($className); $value = $this->_getParam("value"); if ($this->_getParam("valueType") == "object") { $value = Zend_Json::decode($value); } $name = $this->_getParam("name"); $parts = explode("~", $name); // check for bricks if (count($parts) > 1) { $brickType = $parts[0]; $brickKey = $parts[1]; $brickField = Object_Service::getFieldForBrickType($object->getClass(), $brickType); $fieldGetter = "get" . ucfirst($brickField); $brickGetter = "get" . ucfirst($brickType); $valueSetter = "set" . ucfirst($brickKey); $brick = $object->{$fieldGetter}()->{$brickGetter}(); if (empty($brick)) { $classname = "Object_Objectbrick_Data_" . ucfirst($brickType); $brickSetter = "set" . ucfirst($brickType); $brick = new $classname($object); $object->{$fieldGetter}()->{$brickSetter}($brick); } $brickClass = Object_Objectbrick_Definition::getByKey($brickType); $field = $brickClass->getFieldDefinition($brickKey); $brick->{$valueSetter}($field->getDataFromEditmode($value, $object)); } else { // everything else $field = $class->getFieldDefinition($name); if ($field) { $object->setValue($name, $field->getDataFromEditmode($value, $object)); } else { // seems to be a system field, this is actually only possible for the "published" field yet if ($name == "published") { if ($value == "false" || empty($value)) { $object->setPublished(false); } else { $object->setPublished(true); } } } } try { // don't check for mandatory fields here $object->setOmitMandatoryCheck(true); $object->save(); $success = true; } catch (Exception $e) { $this->_helper->json(array("success" => false, "message" => $e->getMessage())); } } else { Logger::debug("ObjectController::batchAction => There is no object left to update."); $this->_helper->json(array("success" => false, "message" => "ObjectController::batchAction => There is no object left to update.")); } } catch (Exception $e) { Logger::err($e); $this->_helper->json(array("success" => false, "message" => $e->getMessage())); } $this->_helper->json(array("success" => $success)); }