Inheritance: extends Pimcore\Model\AbstractModel
Example #1
0
File: Dao.php Project: sfie/pimcore
 /**
  * Loads a list of entries for the specicifies parameters, returns an array of Search\Backend\Data
  *
  * @return array
  */
 public function load()
 {
     $entries = array();
     $data = $this->db->fetchAll("SELECT * FROM search_backend_data" . $this->getCondition() . $this->getGroupBy() . $this->getOrder() . $this->getOffsetLimit(), $this->model->getConditionVariables());
     foreach ($data as $entryData) {
         if ($entryData['maintype'] == 'document') {
             $element = Document::getById($entryData['id']);
         } else {
             if ($entryData['maintype'] == 'asset') {
                 $element = Asset::getById($entryData['id']);
             } else {
                 if ($entryData['maintype'] == 'object') {
                     $element = Object::getById($entryData['id']);
                 } else {
                     \Logger::err("unknown maintype ");
                 }
             }
         }
         if ($element) {
             $entry = new Search\Backend\Data();
             $entry->setId(new Search\Backend\Data\Id($element));
             $entry->setFullPath($entryData['fullpath']);
             $entry->setType($entryData['type']);
             $entry->setSubtype($entryData['subtype']);
             $entry->setUserOwner($entryData['userowner']);
             $entry->setUserModification($entryData['usermodification']);
             $entry->setCreationDate($entryData['creationdate']);
             $entry->setModificationDate($entryData['modificationdate']);
             $entry->setPublished($entryData['published'] === 0 ? false : true);
             $entries[] = $entry;
         }
     }
     $this->model->setEntries($entries);
     return $entries;
 }
Example #2
0
 /**
  * @param $e
  */
 public static function postUpdateElement($e)
 {
     $element = $e->getTarget();
     $searchEntry = Data::getForElement($element);
     if ($searchEntry instanceof Data and $searchEntry->getId() instanceof Data\Id) {
         $searchEntry->setDataFromElement($element);
         $searchEntry->save();
     } else {
         self::postAddElement($e);
     }
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     // clear all data
     $db = \Pimcore\Db::get();
     $db->query("TRUNCATE `search_backend_data`;");
     $elementsPerLoop = 100;
     $types = ["asset", "document", "object"];
     foreach ($types as $type) {
         $listClassName = "\\Pimcore\\Model\\" . ucfirst($type) . "\\Listing";
         $list = new $listClassName();
         if (method_exists($list, "setUnpublished")) {
             $list->setUnpublished(true);
         }
         $elementsTotal = $list->getTotalCount();
         for ($i = 0; $i < ceil($elementsTotal / $elementsPerLoop); $i++) {
             $list->setLimit($elementsPerLoop);
             $list->setOffset($i * $elementsPerLoop);
             $this->output->writeln("Processing " . $type . ": " . ($list->getOffset() + $elementsPerLoop) . "/" . $elementsTotal);
             $elements = $list->load();
             foreach ($elements as $element) {
                 try {
                     $searchEntry = Search\Backend\Data::getForElement($element);
                     if ($searchEntry instanceof Search\Backend\Data and $searchEntry->getId() instanceof Search\Backend\Data\Id) {
                         $searchEntry->setDataFromElement($element);
                     } else {
                         $searchEntry = new Search\Backend\Data($element);
                     }
                     $searchEntry->save();
                 } catch (\Exception $e) {
                     Logger::err($e);
                 }
             }
             \Pimcore::collectGarbage();
         }
     }
     $db->query("OPTIMIZE TABLE search_backend_data;");
 }
$elementsPerLoop = 100;
$types = array("asset", "document", "object");
foreach ($types as $type) {
    $listClassName = "\\Pimcore\\Model\\" . ucfirst($type) . "\\Listing";
    $list = new $listClassName();
    if (method_exists($list, "setUnpublished")) {
        $list->setUnpublished(true);
    }
    $elementsTotal = $list->getTotalCount();
    for ($i = 0; $i < ceil($elementsTotal / $elementsPerLoop); $i++) {
        $list->setLimit($elementsPerLoop);
        $list->setOffset($i * $elementsPerLoop);
        echo "Processing " . $type . ": " . ($list->getOffset() + $elementsPerLoop) . "/" . $elementsTotal . "\n";
        $elements = $list->load();
        foreach ($elements as $element) {
            try {
                $searchEntry = Search\Backend\Data::getForElement($element);
                if ($searchEntry instanceof Search\Backend\Data and $searchEntry->getId() instanceof Search\Backend\Data_Id) {
                    $searchEntry->setDataFromElement($element);
                } else {
                    $searchEntry = new Search\Backend\Data($element);
                }
                $searchEntry->save();
            } catch (Exception $e) {
                \Logger::err($e);
            }
        }
        \Pimcore::collectGarbage();
    }
}
$db->query("OPTIMIZE TABLE search_backend_data;");