function saveEdition() { try { //make sure file is writable $sConfigFileOverride = $this->getEditableComponent()->getConfigurableFileOverride(); if (!file_exists($sConfigFileOverride)) { try { AnwUtils::file_put_contents($sConfigFileOverride, ""); } catch (AnwException $e) { } } if (!is_writable($sConfigFileOverride)) { $sError = Anwi18n::g_err_need_write_file($sConfigFileOverride); throw new AnwStructuredContentEditionFormException($sError); } //update content from post $this->getRender(true); //check errors if ($this->hasErrors()) { throw new AnwInvalidContentException(); } //save $this->getContent()->writeSettingsOverride(); } catch (AnwInvalidContentException $e) { $sError = AnwComponent::g_("err_contentinvalid"); throw new AnwStructuredContentEditionFormException($sError); } catch (AnwUnexpectedException $e) { $sError = AnwComponent::g_("err_ex_unexpected_p"); $nErrorNumber = AnwDebug::reportError($e); if ($nErrorNumber) { $sError .= '<br/>' . $this->g_("err_ex_report", array("errornumber" => $nErrorNumber)); } throw new AnwStructuredContentEditionFormException($sError); } }
static function reportError($oException, $nErrorNumber = null) { if (AnwComponent::globalCfgReportFileEnabled() || AnwComponent::globalCfgReportMailEnabled()) { if (!$nErrorNumber) { $nErrorNumber = time(); } $sExceptionName = get_class($oException); $sExceptionMessage = $oException->getMessage(); self::log("=== exception " . $sExceptionName . " - logged as error #" . $nErrorNumber . " : " . $sExceptionMessage); self::endLog(); $sLoggedStr = "\n\n"; $sLoggedStr .= "********* BEGIN ERROR LOG #" . $nErrorNumber . "*********\n"; $sLoggedStr .= "Date : " . date("Y-m-d H:i:s") . "\n"; $sLoggedStr .= "Exception : " . $sExceptionName . "\n"; $sLoggedStr .= "Message : " . $sExceptionMessage . "\n"; $sLoggedStr .= "Stack trace below :\n"; $sLoggedStr .= " * File " . $oException->getFile() . ", line " . $oException->getLine() . "\n"; $asTrace = $oException->getTrace(); foreach ($asTrace as $sTrace) { $sLoggedStr .= ' * '; if (isset($sTrace['class'])) { $sLoggedStr .= $sTrace['class']; } if (isset($sTrace['type'])) { $sLoggedStr .= $sTrace['type']; } $sLoggedStr .= $sTrace['function']; //hide args for security reasons if (is_array(@$sTrace['args'])) { foreach ($sTrace['args'] as $i => $sArg) { $sTrace['args'][$i] = 'p' . ($i + 1); //$sTrace['args'][$i] = serialize($sArg); } $sLoggedStr .= '(' . implode($sTrace['args'], ", ") . ') - '; } $sLoggedStr .= 'File ' . @$sTrace['file'] . ', line ' . @$sTrace['line']; $sLoggedStr .= "\n"; } $sLoggedStr .= "Execution log below :\n\n"; $sLoggedStr .= implode("\n", self::$log) . "\n"; $sLoggedStr .= "********* END ERROR LOG #" . $nErrorNumber . " *********\n"; if (AnwComponent::globalCfgReportFileEnabled()) { try { AnwUtils::file_put_contents(ANWPATH_ERRORLOG, $sLoggedStr, LOCK_EX | FILE_APPEND); } catch (AnwException $e) { } } if (AnwComponent::globalCfgReportMailEnabled()) { $sSubject = AnwComponent::g_("err_mailreport_subject", array("errornumber" => $nErrorNumber)); $sBody = AnwComponent::g_("err_mailreport_body", array("website" => AnwComponent::globalCfgWebsiteName())); $sBody .= "\n\n" . $sLoggedStr; $asEmail = AnwComponent::globalCfgReportMailAddresses(); foreach ($asEmail as $sEmail) { AnwUtils::mail($sEmail, $sSubject, $sBody); } } return $nErrorNumber; } return false; }
static function putFileSerializedObject($sFileName, $oObject, $bSecure = true) { $sStr = ''; if ($bSecure) { $sStr .= self::FILE_SERIALIZED_OBJECT_SECURITY; } //add security check $sStr .= serialize($oObject); AnwUtils::file_put_contents($sFileName, $sStr, LOCK_EX); }