protected function execute(InputInterface $input, OutputInterface $output) { $this->disableLogging(); $list = new ClassDefinition\Listing(); $list->load(); foreach ($list->getClasses() as $class) { if ($output->isVerbose()) { $output->writeln($class->getName() . " [" . $class->getId() . "] saved"); } $class->save(); } }
protected function execute(InputInterface $input, OutputInterface $output) { $this->disableLogging(); $list = new ClassDefinition\Listing(); $list->load(); if ($output->isVerbose()) { $output->writeln("---------------------"); $output->writeln("Saving all classes"); } foreach ($list->getClasses() as $class) { if ($output->isVerbose()) { $output->writeln($class->getName() . " [" . $class->getId() . "] saved"); } $class->save(); } if ($output->isVerbose()) { $output->writeln("---------------------"); $output->writeln("Saving all object bricks"); } $list = new Object\Objectbrick\Definition\Listing(); $list = $list->load(); foreach ($list as $brickDefinition) { if ($output->isVerbose()) { $output->writeln($brickDefinition->getKey() . " saved"); } $brickDefinition->save(); } if ($output->isVerbose()) { $output->writeln("---------------------"); $output->writeln("Saving all field collections"); } $list = new Object\Fieldcollection\Definition\Listing(); $list = $list->load(); foreach ($list as $fc) { if ($output->isVerbose()) { $output->writeln($fc->getKey() . " saved"); } $fc->save(); } }
public function getAction() { $letter = Newsletter\Config::getByName($this->getParam("name")); if ($emailDoc = Document::getById($letter->getDocument())) { $letter->setDocument($emailDoc->getRealFullPath()); } // get available classes $classList = new Object\ClassDefinition\Listing(); $availableClasses = array(); foreach ($classList->load() as $class) { $fieldCount = 0; foreach ($class->getFieldDefinitions() as $fd) { if ($fd instanceof Object\ClassDefinition\Data\NewsletterActive || $fd instanceof Object\ClassDefinition\Data\NewsletterConfirmed || $fd instanceof Object\ClassDefinition\Data\Email) { $fieldCount++; } } if ($fieldCount >= 3) { $availableClasses[] = array($class->getName(), $class->getName()); } } $letter->availableClasses = $availableClasses; $this->_helper->json($letter); }
/** * finds all objects which hold a reference to a specific user * * @static * @param integer $userId * @return Concrete[] */ public static function getObjectsReferencingUser($userId) { $userObjects = array(); $classesList = new ClassDefinition\Listing(); $classesList->setOrderKey("name"); $classesList->setOrder("asc"); $classes = $classesList->load(); $classesToCheck = array(); if (is_array($classes)) { foreach ($classes as $class) { $fieldDefinitions = $class->getFieldDefinitions(); $dataKeys = array(); if (is_array($fieldDefinitions)) { foreach ($fieldDefinitions as $tag) { if ($tag instanceof ClassDefinition\Data\User) { $dataKeys[] = $tag->getName(); } } } if (is_array($dataKeys) and count($dataKeys) > 0) { $classesToCheck[$class->getName()] = $dataKeys; } } } foreach ($classesToCheck as $classname => $fields) { $listName = "\\Pimcore\\Model\\Object\\" . ucfirst($classname) . "\\Listing"; $list = new $listName(); $conditionParts = array(); foreach ($fields as $field) { $conditionParts[] = $field . "='" . $userId . "'"; } $list->setCondition(implode(" AND ", $conditionParts)); $objects = $list->load(); $userObjects = array_merge($userObjects, $objects); } return $userObjects; }
/** * */ public function delete() { $fieldCollectionFolder = PIMCORE_CLASS_DIRECTORY . "/fieldcollections"; $fieldFile = $fieldCollectionFolder . "/" . $this->getKey() . ".psf"; @unlink($fieldFile); $fieldClassFolder = PIMCORE_CLASS_DIRECTORY . "/Object/Fieldcollection/Data"; $fieldClass = $fieldClassFolder . "/" . ucfirst($this->getKey()) . ".php"; @unlink($fieldClass); // update classes $classList = new Object\ClassDefinition\Listing(); $classes = $classList->load(); if (is_array($classes)) { foreach ($classes as $class) { foreach ($class->getFieldDefinitions() as $fieldDef) { if ($fieldDef instanceof Object\ClassDefinition\Data\Fieldcollections) { if (in_array($this->getKey(), $fieldDef->getAllowedTypes())) { $this->getResource()->delete($class); break; } } } } } }
/** * Returns a list of all class definitions. */ public function classesAction() { $this->checkUserPermission("classes"); $list = new Object\ClassDefinition\Listing(); $classes = $list->load(); $result = array(); foreach ($classes as $class) { $item = array("id" => $class->getId(), "name" => $class->getName()); $result[] = $item; } $this->encoder->encode(array("success" => true, "data" => $result)); }
/** * @return void */ public function delete() { $fieldCollectionFolder = PIMCORE_CLASS_DIRECTORY . "/objectbricks"; $fieldFile = $fieldCollectionFolder . "/" . $this->getKey() . ".psf"; @unlink($fieldFile); $fieldClassFolder = PIMCORE_CLASS_DIRECTORY . "/Object/Objectbrick/Data"; $fieldClass = $fieldClassFolder . "/" . ucfirst($this->getKey()) . ".php"; @unlink($fieldClass); $processedClasses = array(); if (!empty($this->classDefinitions)) { foreach ($this->classDefinitions as $cl) { unset($this->oldClassDefinitions[$cl['classname']]); if (!$processedClasses[$cl['classname']]) { $class = Object\ClassDefinition::getById($cl['classname']); $this->getDao()->delete($class); $processedClasses[$cl['classname']] = true; foreach ($class->getFieldDefinitions() as $fieldDef) { if ($fieldDef instanceof Object\ClassDefinition\Data\Objectbricks) { $allowedTypes = $fieldDef->getAllowedTypes(); $idx = array_search($this->getKey(), $allowedTypes); if ($idx !== false) { array_splice($allowedTypes, $idx, 1); } $fieldDef->setAllowedTypes($allowedTypes); } } $class->save(); } } } // update classes $classList = new Object\ClassDefinition\Listing(); $classes = $classList->load(); if (is_array($classes)) { foreach ($classes as $class) { foreach ($class->getFieldDefinitions() as $fieldDef) { if ($fieldDef instanceof Object\ClassDefinition\Data\Objectbricks) { if (in_array($this->getKey(), $fieldDef->getAllowedTypes())) { break; } } } } } }
/** * */ public function delete() { @unlink($this->getDefinitionFile()); @unlink($this->getPhpClassFile()); // update classes $classList = new Object\ClassDefinition\Listing(); $classes = $classList->load(); if (is_array($classes)) { foreach ($classes as $class) { foreach ($class->getFieldDefinitions() as $fieldDef) { if ($fieldDef instanceof Object\ClassDefinition\Data\Fieldcollections) { if (in_array($this->getKey(), $fieldDef->getAllowedTypes())) { $this->getDao()->delete($class); break; } } } } } }
public function getTreeAction() { $defaultIcon = "/pimcore/static6/img/flat-color-icons/timeline.svg"; if (!\Pimcore\Tool\Admin::isExtJS6()) { $defaultIcon = '/pimcore/static6/img/icon/database_gear.png'; } $classesList = new Object\ClassDefinition\Listing(); $classesList->setOrderKey("name"); $classesList->setOrder("asc"); $classes = $classesList->load(); // filter classes if ($this->getParam("createAllowed")) { $tmpClasses = []; foreach ($classes as $class) { if ($this->getUser()->isAllowed($class->getId(), "class")) { $tmpClasses[] = $class; } } $classes = $tmpClasses; } $getClassConfig = function ($class) use($defaultIcon) { return ["id" => $class->getId(), "text" => $class->getName(), "leaf" => true, "icon" => $class->getIcon() ? $class->getIcon() : $defaultIcon, "propertyVisibility" => $class->getPropertyVisibility(), "qtipCfg" => ["title" => "ID: " . $class->getId()]]; }; // build groups $groups = []; foreach ($classes as $class) { if ($class->getGroup()) { $type = "manual"; $groupName = $class->getGroup(); } else { $type = "auto"; preg_match("@^([A-Za-z])([^A-Z]+)@", $class->getName(), $matches); $groupName = $matches[0]; } $groupName = \Pimcore\Model\Translation\Admin::getByKeyLocalized($groupName, true, true); if (!isset($groups[$groupName])) { $groups[$groupName] = ["classes" => [], "type" => $type]; } $groups[$groupName]["classes"][] = $class; } $treeNodes = []; if (!$this->getParam('grouped')) { // list output foreach ($groups as $groupName => $groupData) { foreach ($groupData["classes"] as $class) { $node = $getClassConfig($class); if (count($groupData["classes"]) > 1 || $groupData["type"] == "manual") { $node["group"] = $groupName; } $treeNodes[] = $node; } } } else { // create json output foreach ($groups as $groupName => $groupData) { if (count($groupData["classes"]) === 1 && $groupData["type"] == "auto") { // no group, only one child $node = $getClassConfig($groupData["classes"][0]); } else { // group classes $node = ["id" => "folder_" . $groupName, "text" => $groupName, "leaf" => false, 'expandable' => true, 'allowChildren' => true, 'iconCls' => 'pimcore_icon_folder', "children" => []]; foreach ($groupData["classes"] as $class) { $node['children'][] = $getClassConfig($class); } } $treeNodes[] = $node; } } $this->_helper->json($treeNodes); }
public function getTreeAction() { $classesList = new Object\ClassDefinition\Listing(); $classesList->setOrderKey("name"); $classesList->setOrder("asc"); $classes = $classesList->load(); // filter classes $tmpClasses = array(); foreach ($classes as $class) { if ($this->getUser()->isAllowed($class->getId(), "class")) { $tmpClasses[] = $class; } } $classes = $tmpClasses; $classItems = array(); if (!$this->getParam('grouped')) { // list output foreach ($classes as $classItem) { $classItems[] = array("id" => $classItem->getId(), "text" => $classItem->getName(), "icon" => $classItem->getIcon() ? $classItem->getIcon() : '/pimcore/static/img/icon/database_gear.png', "propertyVisibility" => $classItem->getPropertyVisibility(), "qtipCfg" => array("title" => "ID: " . $classItem->getId())); } } else { // group classes $cnf['matchCount'] = 3; // min chars to group /** * @param string $str1 * @param string $str2 * * @return int */ $getEqual = function ($str1, $str2) { $count = 0; for ($c = 0; $c < strlen($str1); $c++) { if (strcasecmp($str1[$c], $str2[$c]) !== 0) { break; } $count++; } return $count; }; // create groups $classGroups = array(); $lastGroup = ''; for ($i = 0; $i < count($classes); $i++) { /* @var Object\ClassDefinition $classItem */ $currentClass = $classes[$i]; $nextClass = $classes[$i + 1]; // check last group $className = $currentClass->getName(); $count = $getEqual($lastGroup, $className); if ($count <= $cnf['matchCount'] || strlen($lastGroup) != $count) { // check new class to group with if ($nextClass === null) { // this is the last class $count = strlen($currentClass->getName()); } else { // check next class to group with $count = $getEqual($currentClass->getName(), $nextClass->getName()); if ($count <= $cnf['matchCount']) { // match is to low, use the complete name $count = strlen($currentClass->getName()); } } $group = substr($currentClass->getName(), 0, $count); } else { // use previous group $group = $lastGroup; } // add class to group $classGroups[$group][] = $currentClass; $lastGroup = $group; } // create json output $classItems = array(); foreach ($classGroups as $name => $classes) { if (isset($classes[0]) && $classes[0] instanceof Object\ClassDefinition) { // basic setup $class = array("id" => $classes[0]->getId(), "text" => $name, "leaf" => true, "children" => array()); // add childs? if (count($classes) === 1) { // no group $class['id'] = $classes[0]->getId(); $class['text'] = $classes[0]->getName(); $class['icon'] = $classes[0]->getIcon() ? $classes[0]->getIcon() : '/pimcore/static/img/icon/database_gear.png'; $class['propertyVisibility'] = $classes[0]->getPropertyVisibility(); $class['qtipCfg']['title'] = "ID: " . $classes[0]->getId(); } else { // group classes $class['id'] = "folder_" . $class['id']; $class['leaf'] = false; $class['expandable'] = true; $class['allowChildren'] = true; $class['iconCls'] = 'pimcore_icon_folder'; foreach ($classes as $classItem) { $child = array("id" => $classItem->getId(), "text" => $classItem->getName(), "leaf" => true, "icon" => $classItem->getIcon() ? $classItem->getIcon() : '/pimcore/static/img/icon/database_gear.png', "propertyVisibility" => $classItem->getPropertyVisibility(), "qtipCfg" => array("title" => "ID: " . $classItem->getId())); $class['children'][] = $child; } } } // add $classItems[] = $class; } } // send json $this->_helper->json($classItems); }
/** * @return void */ public function delete() { @unlink($this->getDefinitionFile()); @unlink($this->getPhpClassFile()); $processedClasses = []; if (!empty($this->classDefinitions)) { foreach ($this->classDefinitions as $cl) { unset($this->oldClassDefinitions[$cl['classname']]); if (!$processedClasses[$cl['classname']]) { $class = Object\ClassDefinition::getById($cl['classname']); $this->getDao()->delete($class); $processedClasses[$cl['classname']] = true; foreach ($class->getFieldDefinitions() as $fieldDef) { if ($fieldDef instanceof Object\ClassDefinition\Data\Objectbricks) { $allowedTypes = $fieldDef->getAllowedTypes(); $idx = array_search($this->getKey(), $allowedTypes); if ($idx !== false) { array_splice($allowedTypes, $idx, 1); } $fieldDef->setAllowedTypes($allowedTypes); } } $class->save(); } } } // update classes $classList = new Object\ClassDefinition\Listing(); $classes = $classList->load(); if (is_array($classes)) { foreach ($classes as $class) { foreach ($class->getFieldDefinitions() as $fieldDef) { if ($fieldDef instanceof Object\ClassDefinition\Data\Objectbricks) { if (in_array($this->getKey(), $fieldDef->getAllowedTypes())) { break; } } } } } }