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();
     }
 }
예제 #2
0
 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);
 }
예제 #4
0
 /**
  * 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;
 }
예제 #5
0
 /**
  *
  */
 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));
 }
예제 #7
0
 /**
  * @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;
                     }
                 }
             }
         }
     }
 }
예제 #8
0
 /**
  *
  */
 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;
                     }
                 }
             }
         }
     }
 }
예제 #9
0
 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);
 }
예제 #10
0
 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);
 }
예제 #11
0
 /**
  * @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;
                     }
                 }
             }
         }
     }
 }