Esempio n. 1
0
 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;
 }
Esempio n. 2
0
 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;
     }
 }
Esempio n. 3
0
 /**
  * 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 "";
     }
 }
Esempio n. 4
0
 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;
 }
Esempio n. 5
0
 /**
  * @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;
 }