public function getConfig() { if (empty($this->config)) { $configPath = OnlineShop_Plugin::getConfig(true)->onlineshop_config_file; $config = new Zend_Config_Xml(PIMCORE_DOCUMENT_ROOT . $configPath, null, true); $this->config = $config; } return $this->config; }
public function settingsAction() { if ($this->getRequest()->isPost()) { OnlineShop_Plugin::setConfig($this->_getParam("onlineshop_config_file")); $this->view->onlineshop_config_file = OnlineShop_Plugin::getConfig()->onlineshop_config_file; } else { $this->view->onlineshop_config_file = OnlineShop_Plugin::getConfig()->onlineshop_config_file; } }
/** * returns order by statement for simularity calculations based on given fields and object ids * * @param $fields * @param $objectId */ public function buildSimularityOrderBy($fields, $objectId) { try { $fieldString = ""; $maxFieldString = ""; foreach ($fields as $f) { if (!empty($fieldString)) { $fieldString .= ","; $maxFieldString .= ","; } $fieldString .= $this->db->quoteIdentifier($f->getField()); $maxFieldString .= "MAX(" . $this->db->quoteIdentifier($f->getField()) . ") as " . $this->db->quoteIdentifier($f->getField()); } $query = "SELECT " . $fieldString . " FROM " . $this->model->getCurrentTenantConfig()->getTablename() . " a WHERE a.o_id = ?;"; OnlineShop_Plugin::getSQLLogger()->log("Query: " . $query, Zend_Log::INFO); $objectValues = $this->db->fetchRow($query, $objectId); OnlineShop_Plugin::getSQLLogger()->log("Query done.", Zend_Log::INFO); $query = "SELECT " . $maxFieldString . " FROM " . $this->model->getCurrentTenantConfig()->getTablename() . " a"; OnlineShop_Plugin::getSQLLogger()->log("Query: " . $query, Zend_Log::INFO); $maxObjectValues = $this->db->fetchRow($query); OnlineShop_Plugin::getSQLLogger()->log("Query done.", Zend_Log::INFO); if (!empty($objectValues)) { $subStatement = array(); foreach ($fields as $f) { $subStatement[] = "(" . $this->db->quoteIdentifier($f->getField()) . "/" . $maxObjectValues[$f->getField()] . " - " . $objectValues[$f->getField()] / $maxObjectValues[$f->getField()] . ") * " . $f->getWeight(); } $statement = "ABS(" . implode(" + ", $subStatement) . ")"; OnlineShop_Plugin::getSQLLogger()->log("Similarity Statement: " . $statement, Zend_Log::INFO); return $statement; } else { throw new Exception("Field array for given object id is empty"); } } catch (Exception $e) { OnlineShop_Plugin::getSQLLogger()->err($e); return ""; } }
protected function buildUserspecificConditions($excludedFieldname = null) { $condition = ""; foreach ($this->relationConditions as $fieldname => $condArray) { if ($fieldname !== $excludedFieldname) { foreach ($condArray as $cond) { if ($condition) { $condition .= " AND "; } $condition .= "a.o_id IN (SELECT DISTINCT src FROM " . $this->getCurrentTenantConfig()->getRelationTablename() . " WHERE " . $cond . ")"; } } } foreach ($this->conditions as $fieldname => $condArray) { if ($fieldname !== $excludedFieldname) { foreach ($condArray as $cond) { if ($condition) { $condition .= " AND "; } $condition .= "(" . $cond . ")"; } } } OnlineShop_Plugin::getSQLLogger()->log("User specific Condition Part: " . $condition, Zend_Log::INFO); return $condition; }
/** * @return Zend_Log */ public static function getSQLLogger() { if (!self::$sqlLogger) { // check for big logfile, empty it if it's bigger than about 200M $logfilename = PIMCORE_WEBSITE_PATH . '/var/log/online-shop-sql.log'; if (filesize($logfilename) > 200000000) { file_put_contents($logfilename, ""); } $prioMapping = array("debug" => Zend_Log::DEBUG, "info" => Zend_Log::INFO, "notice" => Zend_Log::NOTICE, "warning" => Zend_Log::WARN, "error" => Zend_Log::ERR, "critical" => Zend_Log::CRIT, "alert" => Zend_Log::ALERT, "emergency" => Zend_Log::EMERG); $prios = array(); $conf = \Pimcore\Config::getSystemConfig(); if ($conf && $conf->general->debugloglevel) { $prioMapping = array_reverse($prioMapping); foreach ($prioMapping as $level => $state) { $prios[] = $prioMapping[$level]; if ($level == $conf->general->debugloglevel) { break; } } } else { // log everything if config isn't loaded (eg. at the installer) foreach ($prioMapping as $p) { $prios[] = $p; } } $logger = new Zend_Log(); $logger->addWriter(new Zend_Log_Writer_Stream($logfilename)); foreach ($prioMapping as $key => $mapping) { if (!array_key_exists($mapping, $prios)) { $logger->addFilter(new Zend_Log_Filter_Priority($mapping, "!=")); } } self::$sqlLogger = $logger; } return self::$sqlLogger; }