/** * Puts a JavaScript Variable used in Kwf_js/Statistics.js * * @return string */ public function getIncludeCode() { $value = Kwf_Statistics::getDefaultOptValue($this->getData()); $optInShowBox = $this->getData()->getBaseProperty('statistics.optInShowBox'); $html = ''; if ($value == 'out' || $value == 'in' && $optInShowBox) { $components = Kwf_Component_Data_Root::getInstance()->getComponentsByClass('Kwc_Statistics_Opt_Component', array('subroot' => $this->getData())); $url = isset($components[0]) ? $components[0]->url : null; $html = $this->_getOptBoxInnerHtml($url); if (!$html) { $exception = new Kwf_Exception('To disable optbox please change config.'); $exception->logOrThrow(); } $html = '<div class="' . self::getRootElementClass($this) . '"><div class="inner">' . $html . '<div></div>'; $html = str_replace("'", "\\'", $html); } $ret = '<script type="text/javascript">'; //TODO commonjs /* $ret .= "if (typeof Kwf == 'undefined') Kwf = {};"; $ret .= "if (typeof Kwf.Statistics == 'undefined') Kwf.Statistics = {};"; $ret .= "Kwf.Statistics.defaultOptValue = '$value';"; $ret .= "Kwf.Statistics.optBoxHtml = '$html';"; */ $ret .= $this->_getJavascriptIncludeCode(); $ret .= '</script>'; return $ret; }
public function parse($html) { // replace entities $html = preg_replace('/&([a-z0-9#]{2,5});/i', '+$1;', $html); //before sending to xml parser make sure we have valid xml by tidying it up $html = Kwf_Util_Tidy::repairHtml($html); $this->_stack = array(); $this->_ret = ''; $this->_parser = xml_parser_create(); xml_set_object($this->_parser, $this); xml_set_element_handler($this->_parser, 'startElement', 'endElement'); xml_set_character_data_handler($this->_parser, 'characterData'); xml_set_default_handler($this->_parser, 'characterData'); $result = xml_parse($this->_parser, '<body>' . $html . '</body>', true); if (!$result) { // wenn man ein nicht geschlossenes <br> rein gibt, schreit er hier, // macht aber normal weiter. wenns zu oft vorkommt, evtl. exception // entfernen und ignorieren, oder was andres überlegen :-) $errorCode = xml_get_error_code($this->_parser); $ex = new Kwf_Exception("HtmlExport UrlParser XML Error {$errorCode}: " . xml_error_string($errorCode) . "in line " . xml_get_current_line_number($this->_parser) . " parsed html: " . $html); $ex->logOrThrow(); } // re-replace entities $this->_ret = preg_replace('/\\+([a-z0-9#]{2,5});/i', '&$1;', $this->_ret); return $this->_ret; }
protected function _beforeSave() { parent::_beforeSave(); //add_component_id darf leer sein, passiert wenn eine bestellung im backend angelegt wird if (!$this->add_component_class) { $e = new Kwf_Exception("add_component_class is required"); $e->logOrThrow(); } }
public function getChildData($parentData, $select = array()) { if (is_array($select)) { $select = new Kwf_Component_Select($select); } if (!$parentData && !$select->hasPart(Kwf_Component_Select::WHERE_CHILD_OF) && !$select->hasPart(Kwf_Component_Select::WHERE_ID)) { $e = new Kwf_Exception("Looking up components generated by List is slow, and must be avoided."); $e->logOrThrow(); } return parent::getChildData($parentData, $select); }
public static function getOpt() { $ret = null; if (isset($_COOKIE[self::$_cookieName])) { $ret = $_COOKIE[self::$_cookieName]; if ($ret != self::OPT_IN && $ret != self::OPT_OUT) { $exception = new Kwf_Exception('stored Cookie must be ' . self::OPT_IN . ' or ' . self::OPT_OUT); $exception->logOrThrow(); } } return $ret; }
public static function getUserOptValue() { if (!isset($_COOKIE[self::$_cookieName])) { return null; } else { $ret = $_COOKIE[self::$_cookieName]; if ($ret != self::OPT_IN && $ret != self::OPT_OUT) { $exception = new Kwf_Exception('stored Cookie must be ' . self::OPT_IN . ' or ' . self::OPT_OUT); $exception->logOrThrow(); return null; } return $ret; } }
public function handle($method = null, $arguments = null, $extraParams = null) { try { if (is_null($method) && isset($_REQUEST['method']) && !is_null($_REQUEST['method'])) { $method = $_REQUEST['method']; } if (is_null($arguments) && isset($_REQUEST['arguments']) && !is_null($_REQUEST['arguments'])) { $arguments = unserialize($_REQUEST['arguments']); } if (is_null($extraParams) && isset($_REQUEST['extraParams']) && !is_null($_REQUEST['extraParams'])) { $extraParams = unserialize($_REQUEST['extraParams']); } if (is_null($arguments)) { $arguments = array(); } // throw some exceptions if (!$this->_handler) { throw new Kwf_Srpc_Exception("A handler has to be set when using 'Kwc_Srpc_Server'"); } if (is_null($method)) { throw new Kwf_Srpc_Exception("'method' must be set as first argument, or exists as key in " . '$_REQUEST'); } if (!is_null($method) && !is_string($method)) { throw new Kwf_Srpc_Exception("'method' is expected to be a string"); } if (!is_null($arguments) && !is_array($arguments)) { throw new Kwf_Srpc_Exception("'arguments' is expected to be an array"); } $handler = $this->getHandler(); if ($extraParams) { $handler->setExtraParams($extraParams); } $result = call_user_func_array(array($handler, $method), $arguments); $result = serialize($result); if (strpos($result, 'Kwf_') !== false) { $ex = new Kwf_Exception("a class name with 'Kwf_' must not be sent through srpc server"); $ex->logOrThrow(); } } catch (Exception $e) { $result = "An exception has been caught occured in Srpc_Server:\n\n" . "Message: " . $e->getMessage() . "\n" . "File: " . $e->getFile() . ':' . $e->getLine() . "\n" . "Trace: \n---=== Trace start ===---\n" . $e->getTraceAsString() . "\n---=== Trace end ===---\n"; } if (!$this->_returnResponse) { echo $result; return; } else { return $result; } }
public function jsonErrorAction() { $errors = $this->getRequest()->getParam('error_handler'); $exception = $errors->exception; if ($exception instanceof Kwf_Exception_Abstract) { $this->getResponse()->setRawHeader($exception->getHeader()); } else { $this->getResponse()->setRawHeader('HTTP/1.1 500 Internal Server Error'); } if ($exception instanceof Kwf_Exception_Client) { $this->view->error = $exception->getMessage(); } else { if (!$exception instanceof Kwf_Exception_Abstract) { $exception = new Kwf_Exception_Other($exception); } $this->view->error = $exception->getMessage(); if (!$this->view->error) { $this->view->error = 'An error occurred'; } if (Kwf_Exception::isDebug()) { $this->view->exception = explode("\n", $exception->getException()->__toString()); } } $exception->log(); }
public function queryEnd($queryId) { if ($queryId == $this->_count) { if ($this->_lastQuery->hasEnded()) { throw new Zend_Db_Profiler_Exception("Query with profiler handle '{$queryId}' has already ended."); } $this->_lastQuery->end(); $time = $this->_lastQuery->getElapsedSecs(); if ($time > $this->_timeout) { $e = new Kwf_Exception('Query timed out with ' . $time . 's. \'' . $this->_lastQuery->getQuery() . '\''); $e->logOrThrow(); } } else { throw new Kwf_Exception('Query not found'); } }
public function getRowBySiblingRow(Kwf_Model_Row_Interface $siblingRow) { $data = $siblingRow->{$this->_fieldName}; if (is_string($data)) { if (substr($data, 0, 13) == 'kwfSerialized') { //früher wurde es mal so gespeichert $data = substr($data, 13); } if (substr($data, 0, 2) == 'a:') { //früher wurde es mal so gespeichert, das 35000 update script sollte es konvertieren //erwischt aber manchmal nicht alles try { $data = unserialize($data); } catch (Exception $e) { $e = new Kwf_Exception($e->getMessage() . " {$data}"); $e->logOrThrow(); $data = false; } } else { // json_decode gibt auch keinen fehler aus, wenn man ihm einen // falschen string (zB serialized) übergibt. bei nicht-json-daten // kommt immer null raus. Da bringt das try-catch eher wenig, // weil null nunmal keine Exception ist. // Lösung: Wir schmeissen die exception händisch im falle von // NULL. Eventuelles PROBLEM dabei ist jedoch, // wenn man: $data = json_decode(json_encode(NULL)) // macht, weil dann korrekterweise NULL rauskommen würde. // deshalb wird dieser fall separat ohne dem json_decode behandelt if ($data == 'null' || $data == '') { $data = null; } else { $decodedData = json_decode($data); if (is_null($decodedData)) { // json_encode hat nicht funktioniert, siehe mörder-kommentar paar zeilen vorher $e = new Kwf_Exception("json_decode failed. Input data was: '{$data}'"); $e->logOrThrow(); } $data = $decodedData; } } } if (!$data) { $data = $this->getDefault(); } $data = (array) $data; return new $this->_rowClass(array('model' => $this, 'siblingRow' => $siblingRow, 'data' => $data)); }
public function log() { if (Kwf_Exception::isDebug()) { return false; } $body = $this->_getLogBody(); return Kwf_Exception_Logger_Abstract::getInstance()->log($this, 'error', $body); }
public function render($ignoreCli = false) { if (!Kwf_Registry::get('config')->setupFinished) { echo "<h1>" . Kwf_Config::getValue('application.name') . "</h1>\n"; echo "<a href=\"" . Kwf_Setup::getBaseUrl() . "/kwf/maintenance/setup\">[start setup]</a>\n"; exit; } parent::render($ignoreCli); }
public function log() { if (Kwf_Exception::isDebug()) { return false; } $body = ''; $body .= $this->_format('REQUEST_URI', isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '(none)'); $body .= $this->_format('HTTP_REFERER', isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '(none)'); $body .= $this->_format('Time', date('H:i:s')); $body .= $this->_format('_GET', print_r($_GET, true)); $body .= $this->_format('_POST', print_r($_POST, true)); Kwf_Exception_Logger_Abstract::getInstance()->log($this, 'accessdenied', $body); }
public function log() { if (Kwf_Exception::isDebug()) { return false; } $requestUri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '(none)'; $ignore = array('/favicon.ico', '/robots.txt'); if (in_array($requestUri, $ignore)) { return false; } if (substr($requestUri, 0, 7) == '/files/' || substr($requestUri, 0, 12) == '/monitoring/') { //TODO: don't hardcode here return false; } $body = ''; $body .= $this->_format('REQUEST_URI', isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '(none)'); $body .= $this->_format('HTTP_REFERER', isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '(none)'); $body .= $this->_format('Time', date('H:i:s')); Kwf_Exception_Logger_Abstract::getInstance()->log($this, 'notfound', $body); }
public function __call($method, $args) { $log = date('Y-m-d H:i:s') . " (start) {$this->_serverUrl} {$method} " . Kwf_Setup::getRequestPath() . "\n"; file_put_contents('log/srpc-call', $log, FILE_APPEND); $start = microtime(true); $b = Kwf_Benchmark::start('srpc call', $this->_serverUrl . ' ' . $method); $params = array('method' => $method, 'arguments' => array(), 'extraParams' => array()); if (is_array($args) && count($args)) { $params['arguments'] = $args; } if ($this->_extraParams) { $params['extraParams'] = $this->_extraParams; } $params['arguments'] = serialize($params['arguments']); $params['extraParams'] = serialize($params['extraParams']); if (strpos($params['arguments'], 'Kwf_') !== false || strpos($params['extraParams'], 'Kwf_') !== false) { $ex = new Kwf_Exception("a class name with 'Kwf_' must not be sent through srpc client"); $ex->logOrThrow(); } $response = $this->_performRequest($params); $log = date('Y-m-d H:i:s') . ' ' . round(microtime(true) - $start, 2) . "s {$this->_serverUrl} {$method} " . Kwf_Setup::getRequestPath() . "\n"; file_put_contents('log/srpc-call', $log, FILE_APPEND); if ($b) { $b->stop(); } try { $result = unserialize($response); } catch (Exception $e) { throw new Kwf_Exception('Srpc Server Response is not serialized: ' . $response); } if ($result === false) { throw new Kwf_Exception('Srpc Server Response is not serialized: ' . $response); } // result könnte eine Exception sein, wenn ja wird sie weitergeschmissen if ($result instanceof Kwf_Exception_Serializable) { throw $result->getException(); } else { if ($result instanceof Exception) { throw $result; } } return $result; }
private function _checkSingleComponent($components) { if (count($components) > 1) { $ids = array(); foreach ($components as $c) { $ids[] = $c->componentId; } $e = new Kwf_Exception('getComponentByXxx must not get more than one component but got these: ' . implode(', ', $ids)); $e->logOrThrow(); } }
public function render($ignoreCli = false) { try { $exception = $this->getException(); $msg = $exception->__toString(); if ($exception instanceof Zend_Db_Adapter_Exception) { try { foreach (Kwf_Registry::get('config')->database as $db) { $msg = str_replace($db->password, 'xxxxxx', $msg); } } catch (Exception $e) { } } if (!$ignoreCli && PHP_SAPI == 'cli') { $this->log(); file_put_contents('php://stderr', $msg . "\n"); exit(1); } class_exists('Kwf_Trl'); //eventually trigger autoloader $view = Kwf_Debug::getView(); $view->exception = $msg; $view->message = $exception->getMessage(); $view->requestUri = isset($_SERVER['REQUEST_URI']) ? htmlspecialchars($_SERVER['REQUEST_URI']) : ''; $view->debug = Kwf_Exception::isDebug() || !Kwf_Registry::get('config')->setupFinished; try { if (Kwf_Registry::get('userModel') && Kwf_Registry::get('userModel')->getAuthedUserRole() == 'admin') { $view->debug = true; } } catch (Exception $e) { } if (Kwf_Component_Data_Root::getComponentClass()) { $data = null; if (isset($_SERVER['HTTP_HOST'])) { //try to get the page of current domain to get correct language $acceptLanguage = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : null; try { $data = Kwf_Component_Data_Root::getInstance()->getPageByUrl('http://' . $_SERVER['HTTP_HOST'] . '/', $acceptLanguage); } catch (Exception $e) { } } if (!$data) { $data = Kwf_Component_Data_Root::getInstance(); } $view->data = $data; //can be used for trl } else { //no components used, use Kwf_Trl object that also has trl() methods //HACK, but will work if only trl is used in template $view->data = Kwf_Trl::getInstance(); } $header = $this->getHeader(); $template = $this->getTemplate(); $template = strtolower(Zend_Filter::filterStatic($template, 'Word_CamelCaseToDash') . '.tpl'); $this->log(); if (!headers_sent()) { header($header); header('Content-Type: text/html; charset=utf-8'); } echo $view->render($template); } catch (Exception $e) { echo '<pre>'; echo $this->getException()->__toString(); echo "\n\n\nError happened while handling exception:"; echo $e->__toString(); echo '</pre>'; } }
private function _getBufferLogFileName() { if (!isset($this->_bufferLogFileName)) { if (Kwf_Config::getValue('debug.dbBuffer')) { foreach (glob('cache/model/db-buffer-*') as $i) { $time = (int) substr($i, 15); if (time() - $time > 15) { $bufferSize = file_get_contents($i); $e = new Kwf_Exception("Not written import buffer with size '{$bufferSize}' found (age: " . (time() - $time) . "): '{$i}'"); $e->logOrThrow(); } } $this->_bufferLogFileName = 'cache/model/db-buffer-' . time() . '-' . uniqid(); } else { $this->_bufferLogFileName = false; } } return $this->_bufferLogFileName; }
private function _parse($html) { $html = preg_replace('/&([a-z0-9#]{2,5});/i', '+$1;', $html); $html = str_replace('\\n', ' ', $html); $this->_parser = xml_parser_create(); xml_set_object($this->_parser, $this); xml_set_element_handler($this->_parser, '_startElement', '_endElement'); xml_set_character_data_handler($this->_parser, '_characterData'); xml_set_default_handler($this->_parser, '_characterData'); $html = preg_replace('#<kwc(.*?)>#', '{kwc$1}', $html); $this->_ret = ''; $result = xml_parse($this->_parser, "<BODY>" . $html . "</BODY>", true); if (!$result) { // wenn man ein nicht geschlossenes <br> rein gibt, schreit er hier, // macht aber normal weiter. wenns zu oft vorkommt, evtl. exception // entfernen und ignorieren, oder was andres überlegen :-) $errorCode = xml_get_error_code($this->_parser); $ex = new Kwf_Exception("Mail HtmlParser XML Error {$errorCode}: " . xml_error_string($errorCode)); $ex->logOrThrow(); } //replace spaces in links (otherwise there would be a linebreak inside the link after wordwrap) $this->_ret = preg_replace_callback('/{kwc[^}]+}/', create_function('$data', 'return str_replace(" ", "*kwfSpace*", $data[0]);'), $this->_ret); //make a linebreak after 72 chars $this->_ret = wordwrap($this->_ret, 75, "\n", false); //reconstruct spaces inside links $this->_ret = preg_replace_callback('/{kwc[^}]+}/', create_function('$data', 'return str_replace("*kwfSpace*", " ", $data[0]);'), $this->_ret); $this->_ret = preg_replace('#{kwc(.*?)}#', '<kwc$1>', $this->_ret); return $this->_ret; }
public function __construct($message = 'This functionality is not yet implemented') { parent::__construct($message); }
public function getTemplateVars() { $ex = new Kwf_Exception(get_class($this) . ' must only be used as a page type.'); $ex->logOrThrow(); return parent::getTemplateVars(); }
public function startAction() { $this->_helper->viewRenderer->setNoRender(true); $model = Kwf_Model_Abstract::getInstance('Kwc_Newsletter_Model'); $procs = array(); while (true) { $select = $model->select()->where(new Kwf_Model_Select_Expr_Or(array(new Kwf_Model_Select_Expr_Equal('status', 'start'), new Kwf_Model_Select_Expr_And(array(new Kwf_Model_Select_Expr_Equal('status', 'startLater'), new Kwf_Model_Select_Expr_LowerEqual('start_date', new Kwf_DateTime(time())))), new Kwf_Model_Select_Expr_Equal('status', 'sending')))); $rows = $model->getRows($select); $activeCountRows = count($rows); foreach ($rows as $newsletterRow) { if ($newsletterRow->status != 'sending') { $newsletterRow->resume_date = date('Y-m-d H:i:s'); $newsletterRow->status = 'sending'; $newsletterRow->save(); } if (!isset($procs[$newsletterRow->id])) { $procs[$newsletterRow->id] = array(); } //remove stopped processes (might stop because of memory limit or simply crash for some reason) foreach ($procs[$newsletterRow->id] as $k => $p) { if (!$p->isRunning()) { if ($this->_getParam('debug')) { echo "process " . $p->getPid() . " stopped...\n"; } unset($procs[$newsletterRow->id][$k]); } } $s = new Kwf_Model_Select(); $s->whereEquals('newsletter_id', $newsletterRow->id); $s->whereNull('send_process_pid'); if (!$newsletterRow->getModel()->getDependentModel('Queue')->countRows($s)) { $newsletterRow->status = 'finished'; $newsletterRow->save(); if ($this->_getParam('debug')) { echo "Newsletter finished.\n"; } //give send processes time to finish sleep(5); //delete "hanging" queue entries $s = new Kwf_Model_Select(); $s->whereEquals('newsletter_id', $newsletterRow->id); foreach ($newsletterRow->getModel()->getDependentModel('Queue')->getRows($s) as $queueRow) { $newsletterRow->getModel()->getDependentModel('QueueLog')->createRow(array('newsletter_id' => $queueRow->newsletter_id, 'recipient_model' => $queueRow->recipient_model, 'recipient_id' => $queueRow->recipient_id, 'status' => 'failed', 'send_date' => date('Y-m-d H:i:s')))->save(); $msg = "Newsletter finished but queue entry with pid {$queueRow->send_process_pid} still exists: {$queueRow->recipient_id} {$queueRow->searchtext}"; $e = new Kwf_Exception($msg); $e->logOrThrow(); echo $msg . "\n"; $queueRow->delete(); } continue; } if ($this->_getParam('debug')) { echo count($procs[$newsletterRow->id]) . " running processes\n"; } $numOfProcesses = 1; if ($newsletterRow->mails_per_minute == 'unlimited') { $numOfProcesses = $this->_getParam('maxProcesses'); if (!$numOfProcesses) { $numOfProcesses = 3; } } while (count($procs[$newsletterRow->id]) < $numOfProcesses) { $cmd = "php bootstrap.php newsletter send --newsletterId={$newsletterRow->id}"; if ($this->_getParam('debug')) { $cmd .= " --debug"; } if ($this->_getParam('benchmark')) { $cmd .= " --benchmark"; } if ($this->_getParam('verbose')) { $cmd .= " --verbose"; } $descriptorspec = array(1 => STDOUT, 2 => STDERR); $p = new Kwf_Util_Proc($cmd, $descriptorspec); $procs[$newsletterRow->id][] = $p; if ($this->_getParam('debug')) { echo "\n*** started new process with PID " . $p->getPid() . "\n"; echo $cmd . "\n"; } sleep(3); //don't start all processes at the same time } if ($this->_getParam('debug')) { echo "Newletter {$newsletterRow->id}: currently sending with " . round($newsletterRow->getCurrentSpeed()) . " mails/min\n"; } } Kwf_Model_Abstract::clearAllRows(); if ($this->_getParam('debug')) { echo "sleep 10 secs.\n"; } sleep(10); } }
public static function process($logModel = 'Kwf_Util_Wirecard_LogModel', $secret = null) { Zend_Registry::get('config')->debug->error->log = true; //log immer aktivieren, da dieser request von wirecard gemacht wird ignore_user_abort(true); if (!$secret) { $secret = Kwf_Registry::get('config')->wirecard->secret; } $paymentState = isset($_POST["paymentState"]) ? $_POST["paymentState"] : ""; if (strcmp($paymentState, "CANCEL") == 0) { /// the transaction was cancelled. $message = "Transaktion wurde abgebrochen."; } else { if (strcmp($paymentState, "FAILURE") == 0) { // there was something wrong with the initiation or an fatal error during the transaction processing occured $message = $_POST["message"]; $e = new Kwf_Exception('Wirecard Transaction Failed: ' . $message); $e->log(); $message = "Fehler bei der Initiierung: " . $message; } else { if (strcmp($paymentState, "SUCCESS") == 0) { $responseFingerprintOrder = $_POST["responseFingerprintOrder"]; $responseFingerprint = $_POST["responseFingerprint"]; $str4responseFingerprint = ""; $mandatoryFingerPrintFields = 0; $secretUsed = 0; $order = explode(",", $responseFingerprintOrder); for ($i = 0; $i < count($order); $i++) { $key = $order[$i]; // check if there are enough fields in den responsefingerprint if (strcmp($key, "paymentState") == 0 && strlen($_POST[$order[$i]]) > 0) { $mandatoryFingerPrintFields++; } if (strcmp($key, "orderNumber") == 0 && strlen($_POST[$order[$i]]) > 0) { $mandatoryFingerPrintFields++; } if (strcmp($key, "paymentType") == 0 && strlen($_POST[$order[$i]]) > 0) { $mandatoryFingerPrintFields++; } if (strcmp($key, "secret") == 0) { $str4responseFingerprint .= $secret; $secretUsed = 1; } else { $str4responseFingerprint .= $_POST[$order[$i]]; } } // recalc the fingerprint $responseFingerprintCalc = md5($str4responseFingerprint); if (strcmp($responseFingerprintCalc, $responseFingerprint) == 0 && $mandatoryFingerPrintFields == 3 && $secretUsed == 1) { // everything is ok. store the successfull payment somewhere // please store at least the paymentType and the orderNumber additional to the orderinformation, // otherwise you will never find the transaction again. $m = Kwf_Model_Abstract::getInstance($logModel); $row = $m->createRow(); foreach ($order as $i) { if ($i != 'secret') { $row->{$i} = $_POST[$i]; } } $row->custom = $_POST['custom']; $row->save(); // e.g. something like // checkBasketIntegrety($amount, $currency, $basketId); // storeAndCloseBasket($paymentType, $orderNumber, $basketId); $message = "Vielen Dank für Ihre Bestellung."; } else { // there is something strange. maybe an unauthorized call of this page or a wrong secret $e = new Kwf_Exception('Wirecard Transaction Failed: Can\'t verify'); $e->log(); } } else { // unauthorized call of this page $e = new Kwf_Exception('Wirecard Transaction Failed: Invalid Payment Status: ' . $paymentState); $e->log(); } } } echo 'Pfeift'; exit; }
public static function generateCode() { $preloadIncludePaths = array(); $namespaces = (require VENDOR_PATH . '/composer/autoload_namespaces.php'); $ret = array(); foreach ($namespaces as $ns => $dirs) { $preloadIncludePaths = array_merge($preloadIncludePaths, $dirs); } $ret = "<?php\n"; $ret .= "\$cwd = getcwd();\n"; $preloadClasses = array('Kwf_Benchmark', 'Kwf_Loader', 'Kwf_Debug'); $ret .= "if (!class_exists('Kwf_Loader', false)) {\n"; $ret .= self::_generatePreloadClassesCode($preloadClasses, $preloadIncludePaths); $ret .= "}\n"; $ret .= "Kwf_Benchmark::\$startTime = microtime(true);\n"; $ret .= "\n"; //override the default cache (/tmp) dir used by Zend_Cache_Backend to have the cache per web $ret .= "\$_SERVER['TMP'] = 'cache/zend';\n"; //only replace configured value to avoid spoofing //required eg. behind load balancers if (Kwf_Config::getValueArray('server.replaceVars.remoteAddr')) { $a = Kwf_Config::getValueArray('server.replaceVars.remoteAddr'); if (substr($a['if'], -2) == '.*') { $comparison = "substr(\$_SERVER['REMOTE_ADDR'], 0, " . (strlen($a['if']) - 1) . ") == '" . substr($a['if'], 0, -1) . "'"; } else { $comparison = "\$_SERVER['REMOTE_ADDR'] == '{$a['if']}'"; } $ret .= "\nif (isset(\$_SERVER['REMOTE_ADDR']) && {$comparison} && isset(\$_SERVER['{$a['replace']}'])) {\n"; $ret .= " \$_SERVER['REMOTE_ADDR'] = \$_SERVER['{$a['replace']}'];\n"; if (isset($a['removeTrailing'])) { $ret .= " if (substr(\$_SERVER['REMOTE_ADDR'], -" . strlen($a['removeTrailing']) . ") == '" . $a['removeTrailing'] . "') {\n"; $ret .= " \$_SERVER['REMOTE_ADDR'] = substr(\$_SERVER['REMOTE_ADDR'], 0, -" . strlen($a['removeTrailing']) . ");\n"; $ret .= " }\n"; } if (isset($a['removePattern'])) { $ret .= " \$_SERVER['REMOTE_ADDR'] = preg_replace('/" . $a['removePattern'] . "/', '', \$_SERVER['REMOTE_ADDR']);\n"; } $ret .= "}\n"; } //try different values, if one spoofs this this is no security issue $ret .= "if (isset(\$_SERVER['HTTP_SSL_SESSION_ID'])) \$_SERVER['HTTPS'] = 'on';\n"; $ret .= "if (isset(\$_SERVER['HTTP_SESSION_ID_TAG'])) \$_SERVER['HTTPS'] = 'on';\n"; $ret .= "if (isset(\$_SERVER['HTTP_X_FORWARDED_PROTO']) && \$_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {\n"; $ret .= " \$_SERVER['HTTPS'] = 'on';\n"; $ret .= "}\n"; if (VENDOR_PATH == '../vendor') { $kwfPath = '..'; } else { $kwfPath = VENDOR_PATH . '/koala-framework/koala-framework'; } $ret .= "if (!defined('KWF_PATH')) define('KWF_PATH', '{$kwfPath}');\n"; $ret .= "if (!defined('VENDOR_PATH')) define('VENDOR_PATH', 'vendor');\n"; $ip = array(); foreach (include VENDOR_PATH . '/composer/include_paths.php' as $p) { if (VENDOR_PATH == '../vendor') { $cwd = getcwd(); $cwd = substr($cwd, 0, strrpos($cwd, '/')); self::_verifyPathInParentPath($p, $cwd); $p = '../' . substr($p, strlen($cwd) + 1); } else { self::_verifyPathInParentPath($p, getcwd()); $p = substr($p, strlen(getcwd()) + 1); } $ip[] = "'.\$cwd.'/" . $p; } $ip[] = '.'; foreach (Kwf_Config::getValueArray('includepath') as $t => $p) { if ($p) { $ip[] = $p; } } $ip = array_unique($ip); $ret .= "Kwf_Loader::setIncludePath('" . implode(PATH_SEPARATOR, $ip) . "');\n"; $ret .= "\n"; $ret .= "\n"; if (Kwf_Exception::isDebug()) { $ret .= "error_reporting(E_ALL | E_STRICT | E_DEPRECATED);\n"; $ret .= "set_error_handler(array('Kwf_Debug', 'handleError'), E_ALL | E_STRICT | E_DEPRECATED);\n"; } else { $ret .= "error_reporting(E_ALL & ~E_STRICT);\n"; $ret .= "set_error_handler(array('Kwf_Debug', 'handleError'), E_ALL & ~E_STRICT);\n"; } $ret .= "set_exception_handler(array('Kwf_Debug', 'handleException'));\n"; $ret .= "\n"; $ret .= "\$requestUri = isset(\$_SERVER['REQUEST_URI']) ? \$_SERVER['REQUEST_URI'] : null;\n"; if (Kwf_Setup::getBaseUrl()) { $ret .= "if (\$requestUri !== null) {\n"; $ret .= " if (substr(\$requestUri, 0, " . strlen(Kwf_Setup::getBaseUrl()) . ") != '" . Kwf_Setup::getBaseUrl() . "') {\n"; $ret .= " echo 'Invalid baseUrl, expected \\'" . Kwf_Setup::getBaseUrl() . "\\'';\n"; $ret .= " exit;\n"; $ret .= " }\n"; $ret .= " \$requestUri = substr(\$requestUri, " . strlen(Kwf_Setup::getBaseUrl()) . ");\n"; $ret .= "}\n"; } $ret .= "\n"; if (Kwf_Config::getValue('debug.benchmark') || Kwf_Config::getValue('debug.benchmarklog')) { //vor registerAutoload aufrufen damit wir dort benchmarken können $ret .= "Kwf_Benchmark::enable();\n"; } else { $ret .= "if (isset(\$_REQUEST['KWF_BENCHMARK'])) {\n"; foreach (Kwf_Config::getValueArray('debug.benchmarkActivatorIp') as $activatorIp) { $ret .= " if (\$_SERVER['REMOTE_ADDR'] == '{$activatorIp}') Kwf_Benchmark::enable();\n"; } $ret .= "}\n"; } $ret .= "Kwf_Loader::registerAutoload();\n"; $ret .= "\n"; $configSection = call_user_func(array(Kwf_Setup::$configClass, 'getDefaultConfigSection')); $ret .= "Kwf_Setup::\$configSection = '" . $configSection . "';\n"; $ret .= "//here to be as fast as possible (and have no session)\n"; $ret .= "if (\$requestUri == '/kwf/json-progress-status'\n"; $ret .= ") {\n"; $ret .= " Kwf_Util_ProgressBar_DispatchStatus::dispatch();\n"; $ret .= "}\n"; $ret .= "\n"; $ret .= "//here to have less dependencies\n"; $ret .= "if (\$requestUri == '/kwf/check-config'\n"; $ret .= ") {\n"; $ret .= " Kwf_Util_Check_Config::dispatch();\n"; $ret .= "}\n"; $ret .= "if (PHP_SAPI == 'cli' && isset(\$_SERVER['argv'][1]) && \$_SERVER['argv'][1] == 'check-config') {\n"; $ret .= " Kwf_Util_Check_Config::dispatch();\n"; $ret .= "}\n"; $ret .= "\$ml = ini_get('memory_limit');\n"; $ret .= "if (strtoupper(substr(\$ml, -1)) == 'M') {\n"; $ret .= " if ((int)substr(\$ml, 0, -1) < 128) {\n"; $ret .= " ini_set('memory_limit', '128M');\n"; $ret .= " }\n"; $ret .= "}\n"; if (Kwf_Config::getValue('debug.error.log')) { $ret .= "ini_set('display_errors', false);\n"; } if (function_exists('mb_internal_encoding')) { $ret .= "mb_internal_encoding('UTF-8');\n"; } $ret .= "ini_set('default_charset', 'UTF-8');\n"; $ret .= "umask(000); //nicht 002 weil wwwrun und kwcms in unterschiedlichen gruppen\n"; //this is *NOT* recommended but still works somehow $ret .= "if (get_magic_quotes_gpc()) Kwf_Util_UndoMagicQuotes::undoMagicQuotes();\n"; if (Kwf_Config::getValue('debug.firephp') || Kwf_Config::getValue('debug.querylog')) { $ret .= "if (PHP_SAPI != 'cli') {\n"; if (Kwf_Config::getValue('debug.firephp')) { $ret .= " require_once '" . Kwf_Config::getValue('externLibraryPath.firephp') . "/FirePHPCore/FirePHP.class.php';\n"; $ret .= " FirePHP::init();\n"; $ret .= " ob_start();\n"; } $ret .= "}\n"; } $ret .= "register_shutdown_function(array('Kwf_Setup', 'shutDown'));\n"; $ret .= "if (!class_exists('Kwf_Config', false)) {\n"; $preloadClasses = array('Kwf_Config', 'Kwf_Cache_Simple', 'Kwf_Cache_SimpleStatic'); $ret .= self::_generatePreloadClassesCode($preloadClasses, $preloadIncludePaths); $ret .= " if (substr(\$requestUri, 0, 8) != '/assets/') {\n"; $preloadClasses = array(); $preloadClasses[] = 'Zend_Registry'; $preloadClasses[] = 'Kwf_Registry'; $preloadClasses[] = 'Kwf_Trl'; $preloadClasses[] = 'Kwf_Util_SessionHandler'; $preloadClasses[] = 'Zend_Session'; $preloadClasses[] = 'Kwf_Benchmark_Counter'; $preloadClasses[] = 'Kwf_Benchmark_Counter_Apc'; if (Kwf_Component_Data_Root::getComponentClass()) { //only load component related classes if it is a component web $preloadClasses[] = 'Kwf_Component_Data'; $preloadClasses[] = 'Kwf_Component_Data_Root'; $preloadClasses[] = 'Kwf_Component_Settings'; $preloadClasses[] = 'Kwf_Component_Renderer_Abstract'; $preloadClasses[] = 'Kwf_Component_Renderer'; $preloadClasses[] = 'Kwf_Component_Cache'; $preloadClasses[] = 'Kwf_Component_Cache_Mysql'; $preloadClasses[] = 'Kwf_Component_Cache_Memory'; $preloadClasses[] = 'Kwf_Component_Abstract_ContentSender_Abstract'; $preloadClasses[] = 'Kwf_Component_Abstract_ContentSender_Default'; } $ret .= self::_generatePreloadClassesCode($preloadClasses, $preloadIncludePaths); $ret .= " } else {\n"; $preloadClasses = array(); $preloadClasses[] = 'Kwf_Assets_Loader'; $preloadClasses[] = 'Kwf_Media_Output'; $ret .= self::_generatePreloadClassesCode($preloadClasses, $preloadIncludePaths); $ret .= " }\n"; $ret .= "}\n"; Kwf_Cache_Simple::$backend = null; //unset to re-calculate $ret .= "Kwf_Cache_Simple::\$backend = '" . Kwf_Cache_Simple::getBackend() . "';\n"; $cacheUniquePrefix = Kwf_Config::getValue('cachePrefix'); //can be '' when only a single web runs in memcache instance if ($cacheUniquePrefix === null) { $cacheUniquePrefix = getcwd() . '-' . Kwf_Setup::getConfigSection() . '-'; } $ret .= "Kwf_Cache_Simple::\$uniquePrefix = '" . $cacheUniquePrefix . "';\n"; if (Kwf_Config::getValue('cacheSimpleNamespace')) { $ret .= "Kwf_Cache_Simple::\$namespace = '" . Kwf_Config::getValue('cacheSimpleNamespace') . "';\n"; } unset($cacheUniquePrefix); if (Kwf_Config::getValue('server.memcache.host')) { $host = Kwf_Config::getValue('server.memcache.host'); $ret .= "Kwf_Cache_Simple::\$memcacheHost = '" . $host . "';\n"; $ret .= "Kwf_Cache_Simple::\$memcachePort = '" . Kwf_Config::getValue('server.memcache.port') . "';\n"; } if (Kwf_Config::getValue('server.redis.host')) { $host = Kwf_Config::getValue('server.redis.host'); $ret .= "Kwf_Cache_Simple::\$redisHost = '" . $host . "';\n"; $ret .= "Kwf_Cache_Simple::\$redisPort = '" . Kwf_Config::getValue('server.redis.port') . "';\n"; } $ret .= "if (substr(\$requestUri, 0, 8) == '/assets/') {\n"; $ret .= " \$url = \$requestUri;\n"; $ret .= " if (strpos(\$url, '?') !== false) {\n"; $ret .= " \$url = substr(\$url, 0, strpos(\$url, '?'));\n"; $ret .= " }\n"; $dispatcherClass = Kwf_Config::getValue('assets.dispatcherClass'); if (!$dispatcherClass) { $dispatcherClass = 'Kwf_Assets_Dispatcher'; } $ret .= " \$dispatcher = new " . $dispatcherClass . "();\n"; $ret .= " \$dispatcher->dispatch(\$url);\n"; $ret .= " Kwf_Assets_Loader::load(\$url);\n"; $ret .= "}\n"; if (Kwf_Config::getValue('debug.benchmarkCounter')) { //vor registerAutoload aufrufen damit wir dort benchmarken können $ret .= "Kwf_Benchmark::enableLog();\n"; } $ret .= "Zend_Registry::setClassName('Kwf_Registry');\n"; $ret .= "\$host = isset(\$_SERVER['HTTP_HOST']) ? \$_SERVER['HTTP_HOST'] : null;\n"; $ret .= "session_name('SESSION_" . Kwf_Config::getValue('application.id') . "');\n"; //up here to have less dependencies or broken redirect $ret .= "\n"; $ret .= "if (substr(\$requestUri, 0, 14) == '/kwf/util/apc/'\n"; $ret .= ") {\n"; $ret .= " Kwf_Util_Apc::dispatchUtils();\n"; $ret .= "}\n"; $ret .= "\n"; $ret .= "if (\$requestUri == '/kwf/check') {\n"; $ret .= " Kwf_Util_Check::dispatch();\n"; $ret .= "}\n"; $ret .= "\n"; $ret .= "session_set_cookie_params(\n"; $ret .= " 0,"; //lifetime $ret .= " '" . Kwf_Setup::getBaseUrl() . "/',"; //path $ret .= " null,"; //domain $ret .= " isset(\$_SERVER['HTTPS']),"; //secure $ret .= " true"; //httponly $ret .= ");\n"; $ret .= "\n"; //store session data in memcache if avaliable if (Kwf_Config::getValue('server.redis.host')) { $ret .= "\nif (PHP_SAPI != 'cli') {\n"; $ret .= " ini_set('session.save_handler', 'redis');\n"; $ret .= " ini_set('session.save_path', 'tcp://" . Kwf_Config::getValue('server.redis.host') . ":" . Kwf_Config::getValue('server.redis.port') . "?prefix=" . substr(md5(Kwf_Cache_Simple::getUniquePrefix()), 0, 10) . "');\n"; $ret .= "}\n"; } else { if (Kwf_Config::getValue('server.memcache.host') && Kwf_Setup::hasDb()) { $ret .= "\nif (PHP_SAPI != 'cli') Kwf_Util_SessionHandler::init();\n"; } } $ret .= "\n\$preLogin = false;\n"; // Falls redirectToDomain eingeschalten ist, umleiten if (Kwf_Config::getValue('server.redirectToDomain')) { $ret .= "if (\$host && substr(\$requestUri, 0, 8) != '/assets/') {\n"; $ret .= " \$redirect = false;\n"; if ($domains = Kwf_Config::getValueArray('kwc.domains')) { $ret .= " \$domainMatches = false;\n"; foreach ($domains as $domain) { $ret .= " if ('{$domain['domain']}' == \$host) \$domainMatches = true;\n"; if (isset($domain['preliminaryDomain'])) { $ret .= " if ('{$domain['preliminaryDomain']}' == \$host) {\n"; $ret .= " \$domainMatches = true;\n"; if (isset($domain['preliminaryDomainPreLogin'])) { //preliminaryDomainPreLogin set for this domain if ($domain['preliminaryDomainPreLogin']) { $ret .= " \$preLogin = true;\n"; } } else { if (Kwf_Config::getValue('server.preliminaryDomainPreLogin')) { //as default use global $ret .= " \$preLogin = true;\n"; } } $ret .= " }\n"; } } $ret .= " if (!\$domainMatches) {\n"; foreach ($domains as $domain) { if (isset($domain['pattern'])) { $ret .= "\n"; $ret .= " //pattern\n"; $ret .= " if (!\$domainMatches && preg_match('/{$domain['pattern']}/', \$host)) {\n"; $ret .= " \$domainMatches = true;\n"; if (isset($domain['noRedirectPattern'])) { $ret .= "\n"; $ret .= " //noRedirectPattern\n"; $ret .= " if (!preg_match('/{$domain['noRedirectPattern']}/', \$host)) {\n"; $ret .= " \$redirect = '{$domain['domain']}';\n"; $ret .= " }\n"; } else { $ret .= " \$redirect = '{$domain['domain']}';\n"; } $ret .= " }\n"; } } $ret .= " }\n"; $ret .= " if (!\$domainMatches) {\n"; $ret .= " \$redirect = '" . Kwf_Config::getValue('server.domain') . "';\n"; $ret .= " }\n"; } else { if (Kwf_Config::getValue('server.domain')) { $ret .= " if (\$host == '" . Kwf_Config::getValue('server.domain') . "') {\n"; $ret .= " //noop\n"; if (Kwf_Config::getValue('server.preliminaryDomain')) { $ret .= " } else if (\$host == '" . Kwf_Config::getValue('server.preliminaryDomain') . "') {\n"; if (Kwf_Config::getValue('server.preliminaryDomainPreLogin')) { $ret .= " \$preLogin = true;\n"; } } $ret .= " } else {\n"; if (Kwf_Config::getValue('server.noRedirectPattern')) { $ret .= " if (!preg_match('/" . Kwf_Config::getValue('server.noRedirectPattern') . "/', \$host)) {\n"; $ret .= " \$redirect = '" . Kwf_Config::getValue('server.domain') . "';\n"; $ret .= " }\n"; } else { $ret .= " \$redirect = '" . Kwf_Config::getValue('server.domain') . "';\n"; } $ret .= " }\n"; } } $ret .= " if (\$redirect) {\n"; $ret .= " \$target = Kwf_Model_Abstract::getInstance('Kwf_Util_Model_Redirects')\n"; $ret .= " ->findRedirectUrl('domainPath', \$host.\$_SERVER['REQUEST_URI']);\n"; $ret .= " if (!\$target) {\n"; $ret .= " \$target = Kwf_Model_Abstract::getInstance('Kwf_Util_Model_Redirects')\n"; $ret .= " ->findRedirectUrl('domain', \$host);\n"; $ret .= " }\n"; $ret .= " if (\$target) {\n"; $ret .= " header('Location: '.\$target, true, 301);\n"; $ret .= " } else {\n"; $ret .= " //redirect to main domain (server.domain)\n"; $ret .= " header('Location: http://'.\$redirect.\$_SERVER['REQUEST_URI'], true, 301);\n"; $ret .= " }\n"; $ret .= " exit;\n"; $ret .= " }\n"; $ret .= "}\n"; } if (Kwf_Config::getValue('server.https') !== 'unknown') { $redirectHttpsCode = " if (\$_SERVER['REQUEST_METHOD'] != 'GET') {\n"; $redirectHttpsCode .= " header('HTTP/1.1 400 Bad Request');\n"; $redirectHttpsCode .= " echo 'Invalid protocol, https required';\n"; $redirectHttpsCode .= " exit;\n"; $redirectHttpsCode .= " }\n"; $redirectHttpsCode .= " \$redirect = 'https://'.\$_SERVER['HTTP_HOST'].\$_SERVER['REQUEST_URI'];\n"; $redirectHttpsCode .= " header('Location: '.\$redirect, true, 301);\n"; $redirectHttpsCode .= " Kwf_Benchmark::shutDown();\n"; $redirectHttpsCode .= " exit;\n"; $redirectHttpCode = str_replace('https', 'http', $redirectHttpsCode); $ret .= "if (PHP_SAPI != 'cli' && isset(\$_SERVER['HTTP_HOST']) && substr(\$requestUri, 0, 7) != '/media/') {\n"; if (!Kwf_Config::getValue('server.https')) { $ret .= "if (isset(\$_SERVER['HTTPS'])) {\n"; $ret .= " {$redirectHttpCode}"; $ret .= "}\n"; } else { if ($domains = Kwf_Config::getValueArray('server.httpsDomains')) { $ret .= "\$domains = array("; foreach ($domains as $d) { if (substr($d, 0, 2) != '*.') { $ret .= "'" . $d . "'=>true, "; } } $ret .= ");\n"; $ret .= "\$supportsHttps = isset(\$domains[\$_SERVER['HTTP_HOST']]);\n"; foreach ($domains as $d) { if (substr($d, 0, 2) == '*.') { $ret .= " if (!\$supportsHttps && '" . substr($d, 1) . "' == substr(\$_SERVER['HTTP_HOST'], strpos(\$_SERVER['HTTP_HOST'], '.'))) {\n"; $ret .= " \$supportsHttps = true;\n"; $ret .= " }\n"; } } $ret .= "if (\$supportsHttps != isset(\$_SERVER['HTTPS'])) {\n"; $ret .= " if (\$supportsHttps) {\n"; $ret .= " {$redirectHttpsCode}"; $ret .= " } else {\n"; $ret .= " {$redirectHttpCode}"; $ret .= " }\n"; $ret .= "}\n"; } else { $ret .= "if (!isset(\$_SERVER['HTTPS'])) {\n"; $ret .= "{$redirectHttpsCode}"; $ret .= "}\n"; } } $ret .= "}\n"; } if (Kwf_Config::getValue('preLogin')) { $ret .= "if (PHP_SAPI != 'cli' && Kwf_Setup::getRequestPath()!==false) {\n"; $ret .= " \$preLogin = true;\n"; $ret .= "}\n"; } $ret .= "if (\$preLogin) {\n"; $ret .= " \$ignore = false;\n"; foreach (Kwf_Config::getValueArray('preLoginIgnore') as $i) { $ret .= " if (substr(\$_SERVER['REDIRECT_URL'], 0, " . strlen($i) . ") == '{$i}') \$ignore = true;\n"; } foreach (Kwf_Config::getValueArray('preLoginIgnoreIp') as $i) { if (substr($i, -1) == '*') { $i = substr($i, 0, -1); $ret .= " if (substr(\$_SERVER['REMOTE_ADDR'], 0, " . strlen($i) . ") == '{$i}') \$ignore = true;\n"; } else { if (substr($i, 0, 1) == '*') { $i = substr($i, 1); $ret .= " if (substr(\$_SERVER['REMOTE_ADDR'], -" . strlen($i) . ") == '{$i}') \$ignore = true;\n"; } else { $ret .= " if (\$_SERVER['REMOTE_ADDR'] == '{$i}') \$ignore = true;\n"; } } } $ret .= " if (!\$ignore) {\n"; $ret .= " Kwf_Setup::checkPreLogin('" . Kwf_Config::getValue('preLoginUser') . "', '" . Kwf_Config::getValue('preLoginPassword') . "');\n"; $ret .= " }\n"; $ret .= "}\n"; if ($parameters = Kwf_Config::getValueArray('parameterToCookie')) { foreach ($parameters as $parameter) { $ret .= "if (isset(\$_GET['" . $parameter . "'])) setcookie('" . $parameter . "', \$_GET['" . $parameter . "'], 0, '/');\n"; } } if ($tl = Kwf_Config::getValue('debug.timeLimit')) { $ret .= "set_time_limit({$tl});\n"; } $ret .= "if (isset(\$_GET['kwcPreview'])) {\n"; $ret .= " \$role = Kwf_Registry::get('userModel')->getAuthedUserRole();\n"; $ret .= " if (!Kwf_Registry::get('acl')->isAllowed(\$role, 'kwf_component_preview', 'view')) {\n"; $ret .= " header('Location: /admin/component/preview/redirect/?url='.urlencode(\$_SERVER['REQUEST_URI']));\n"; $ret .= " exit;\n"; $ret .= " }\n"; $ret .= " Kwf_Component_Data_Root::setShowInvisible(true);\n"; $ret .= "}\n"; return $ret; }
public function getItemIds($count = null, $offset = null) { $select = $this->_getSelect(); if (!$select) { return array(); } if ($count) { if ($select->hasPart(Kwf_Model_Select::LIMIT_COUNT)) { $ex = new Kwf_Exception("Can't use getItemIds with limit in select when \$count paramter is given. You probably should disable paging for {$this->getData()->componentClass}."); $ex->logOrThrow(); } $select->limit($count, $offset); } $itemDirectory = $this->getData()->parent->getComponent()->getItemDirectory(); if (is_string($itemDirectory)) { $c = Kwc_Abstract::getComponentClassByParentClass($itemDirectory); $generator = Kwf_Component_Generator_Abstract::getInstance($c, 'detail'); $items = $generator->getChildIds(null, $select); } else { $items = $itemDirectory->getChildIds($select); } return $items; }
/** * Returns variables that can be used in Component.tpl * @param e.g. for accessing recipient in Mail_Renderer * @return array */ public function getTemplateVars(Kwf_Component_Renderer_Abstract $renderer) { $ret = array(); $ret['placeholder'] = $this->_getPlaceholder(); $ret['rootElementClass'] = self::getRootElementClass($this); $ret['bemClass'] = $this->_getBemClass(''); $ret['data'] = $this->getData(); $ret['row'] = $this->_getRow(); $supportedContexts = Kwf_Component_Layout_Abstract::getInstance($this->getData()->componentClass)->getSupportedContexts(); if ($supportedContexts) { $contexts = Kwf_Component_Layout_Abstract::getInstance($this->getData()->componentClass)->getContexts($this->getData()); if (is_null($contexts)) { $e = new Kwf_Exception("Didn't get layout contexts for " . $this->getData()->componentId); $e->logOrThrow(); } foreach ($contexts as $ctx) { if (!in_array($ctx, $supportedContexts)) { $e = new Kwf_Exception("Master Layout Context " . json_encode($ctx) . " is not supported by " . $this->getData()->componentClass . " for '" . $this->getData()->componentId . "'"); $e->logOrThrow(); } } } return $ret; }
public function render($ignoreCli = false) { parent::render($ignoreCli); }
public static function executeJobs($jobFrequency, $debug) { foreach (self::getAllMaintenanceJobs() as $job) { if ($job->getFrequency() == $jobFrequency) { if ($debug) { echo "executing " . get_class($job) . "\n"; } $maxTime = $job->getMaxTime(); $t = microtime(true); if ($jobFrequency == Kwf_Util_Maintenance_Job_Abstract::FREQUENCY_DAILY || $jobFrequency == Kwf_Util_Maintenance_Job_Abstract::FREQUENCY_HOURLY) { $cmd = "php bootstrap.php maintenance-jobs run-job --job=" . escapeshellarg(get_class($job)); if ($debug) { $cmd .= " --debug"; } $descriptorspec = array(); $pipes = array(); $process = proc_open($cmd, $descriptorspec, $pipes); if (!is_resource($process)) { $e = new Kwf_Exception("Couldn't start maintenance job " . get_class($job)); $e->logOrThrow(); continue; } $retVar = null; while (true) { $status = proc_get_status($process); if (!$status['running']) { $retVar = $status['exitcode']; break; } if (microtime(true) - $t > $maxTime * 2) { //when jobs runs maxTime twice kill it file_put_contents('php://stderr', "\nWARNING: Killing maintenance-jobs process (running > maxTime*2)...\n"); proc_terminate($process); break; } sleep(1); } proc_close($process); if ($retVar) { $e = new Kwf_Exception("Maintenance job " . get_class($job) . " failed with exit code {$retVar}"); $e->logOrThrow(); } } else { try { $job->execute($debug); } catch (Exception $e) { file_put_contents('php://stderr', $e->toString() . "\n"); if (!$e instanceof Kwf_Exception_Abstract) { $e = new Kwf_Exception_Other($e); } $e->logOrThrow(); } } $t = microtime(true) - $t; if ($debug) { echo "executed " . get_class($job) . " in " . round($t, 3) . "s\n"; } if ($t > $maxTime) { $msg = "Maintenance job " . get_class($job) . " took " . round($t, 3) . "s to execute which is above the limit of {$maxTime}."; file_put_contents('php://stderr', $msg . "\n"); $e = new Kwf_Exception($msg); $e->logOrThrow(); } if ($debug) { echo "\n"; } } } }
public function __construct($message = "Conflict") { parent::__construct($message, 409); }
protected function _renderJson($exception, $msg) { $data = array('error' => array('code' => $exception->code, 'errorId' => $exception->getLogId(), 'message' => 'An Error occured. Please try again later')); if (Kwf_Exception::isDebug()) { $data = array('error' => array('code' => $exception->code, 'errorId' => $exception->getLogId(), 'message' => $exception->message, 'exception' => array(array('message' => $exception->message, 'class' => get_class($exception), 'trace' => $exception->getTrace())))); } return json_encode($data); }