/** * @param User $userToSendTo * @param MessageLogger $messageLogger */ public function run(User $userToSendTo, $messageLogger) { MonitorJob::makeJobStuckNotification(array('Process Outbound Email Job', 'Process Inbound Email Job')); $messageLogger->addInfoMessage('Sending a job is stuck message'); JobsManagerUtil::makeMonitorStuckJobNotification(); $messageLogger->addInfoMessage('Sending monitor job stuck message'); //Clear out notifications for super user $searchAttributeData = array(); $searchAttributeData['clauses'] = array(1 => array('attributeName' => 'owner', 'relatedAttributeName' => 'id', 'operatorType' => 'equals', 'value' => Yii::app()->user->userModel->id)); $searchAttributeData['structure'] = '1'; $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter('Notification'); $where = RedBeanModelDataProvider::makeWhere('Notification', $searchAttributeData, $joinTablesAdapter); $models = Notification::getSubset($joinTablesAdapter, null, null, $where, null); foreach ($models as $model) { $model->delete(); } }
function json() { if (isset($this->return_data)) { return json_encode($this->return_data); } else { echo MessageLogger::asJSON(); } }
function _log($message, $field, $replaces) { if (is_array($replaces)) { foreach ($replaces as $key => $val) { $message = str_replace("%__{$key}__%", $val, $message); } } MessageLogger::log(str_replace("%__FIELD__%", $field, $message), "{$field}_issue"); }
<a name="signup"></a> <?php Debugger::log(MessageLogger::getMessages()); if (MessageLogger::getMessages()) { foreach (MessageLogger::getMessages() as $type => $messages) { foreach ($messages as $message) { ?> <div class="<?php echo $type; ?> "><?php echo $message; ?> </div> <?php } } }
/** * Update models in read subscription table based on modelId and userId(userId is used implicitly in getSubsetIds) * @param string $modelClassName * @param User $user * @param bool $onlyOwnedModels * @param int $updateStartTimestamp * @param MessageLogger $messageLogger * @param array $arrayOfModelIdsToUpdate * permission subscription table just for account ids that exist in account temp build table */ public static function updateReadSubscriptionTableByModelClassNameAndUser($modelClassName, User $user, $updateStartTimestamp, $onlyOwnedModels = false, MessageLogger $messageLogger, $arrayOfModelIdsToUpdate = array()) { assert('$modelClassName === null || is_string($modelClassName) && $modelClassName != ""'); assert('is_int($updateStartTimestamp)'); $metadata = array(); $startTime = microtime(true); $lastReadPermissionUpdateTimestamp = static::getLastReadPermissionUpdateTimestamp(); $dateTime = DateTimeUtil::convertTimestampToDbFormatDateTime($lastReadPermissionUpdateTimestamp); $updateDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime($updateStartTimestamp); if ($modelClassName == 'Account' && !empty($arrayOfModelIdsToUpdate)) { $metadata['clauses'][1] = array('attributeName' => 'id', 'operatorType' => 'oneOf', 'value' => $arrayOfModelIdsToUpdate); $metadata['structure'] = "1"; } else { $metadata['clauses'][1] = array('attributeName' => 'createdDateTime', 'operatorType' => 'lessThanOrEqualTo', 'value' => $updateDateTime); $metadata['structure'] = "1"; if ($onlyOwnedModels) { $metadata['clauses'][2] = array('attributeName' => 'owner', 'operatorType' => 'equals', 'value' => $user->id); $metadata['structure'] .= " AND 2"; } } $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter($modelClassName); $where = RedBeanModelDataProvider::makeWhere($modelClassName, $metadata, $joinTablesAdapter); $userModelIds = $modelClassName::getSubsetIds($joinTablesAdapter, null, null, $where); $endTime = microtime(true); $executionTimeMs = $endTime - $startTime; $messageLogger->addDebugMessage(Zurmo::t('ZurmoModule', 'SQL time {modelClassName}: {miliSeconds}', array('{modelClassName}' => $modelClassName, '{miliSeconds}' => $executionTimeMs))); // Get models from subscription table $tableName = static::getSubscriptionTableName($modelClassName); $sql = "SELECT modelid FROM {$tableName} WHERE userid = " . $user->id . " AND subscriptiontype = " . static::TYPE_ADD; if ($modelClassName == 'Account' && !empty($arrayOfModelIdsToUpdate)) { $accountIds = static::getAccountIdsArrayFromBuildTable(); if (!empty($accountIds)) { $list = "'" . implode(", ", $accountIds) . "'"; $sql .= " AND modelid in ({$list})"; } } $permissionTableRows = ZurmoRedBean::getAll($sql); $permissionTableIds = array(); if (is_array($permissionTableRows) && !empty($permissionTableRows)) { foreach ($permissionTableRows as $permissionTableRow) { $permissionTableIds[] = $permissionTableRow['modelid']; } } $modelIdsToAdd = array_diff($userModelIds, $permissionTableIds); $modelIdsToDelete = array_diff($permissionTableIds, $userModelIds); if (is_array($modelIdsToAdd) && !empty($modelIdsToAdd)) { foreach ($modelIdsToAdd as $modelId) { $sql = "DELETE FROM {$tableName} WHERE\n userid = '" . $user->id . "'\n AND modelid = '{$modelId}'\n AND subscriptiontype='" . self::TYPE_DELETE . "'"; ZurmoRedBean::exec($sql); $sql = "SELECT * FROM {$tableName} WHERE\n userid = '" . $user->id . "'\n AND modelid = '{$modelId}'\n AND subscriptiontype='" . self::TYPE_ADD . "'"; $results = ZurmoRedBean::getAll($sql); if (!is_array($results) || empty($results)) { $sql = "INSERT INTO {$tableName} VALUES\n (null, '" . $user->id . "', '{$modelId}', '{$updateDateTime}', '" . self::TYPE_ADD . "')"; ZurmoRedBean::exec($sql); } } } if (is_array($modelIdsToDelete) && !empty($modelIdsToDelete)) { foreach ($modelIdsToDelete as $modelId) { $sql = "DELETE FROM {$tableName} WHERE\n userid = '" . $user->id . "'\n AND modelid = '{$modelId}'\n AND subscriptiontype='" . self::TYPE_ADD . "'"; ZurmoRedBean::exec($sql); $sql = "SELECT * FROM {$tableName} WHERE\n userid = '" . $user->id . "'\n AND modelid = '{$modelId}'\n AND subscriptiontype='" . self::TYPE_DELETE . "'"; $results = ZurmoRedBean::getAll($sql); if (!is_array($results) || empty($results)) { $sql = "INSERT INTO {$tableName} VALUES\n (null, '" . $user->id . "', '{$modelId}', '{$updateDateTime}', '" . self::TYPE_DELETE . "')"; ZurmoRedBean::exec($sql); } } } }
public function actionSendDemoEmailNotifications() { if (!Group::isUserASuperAdministrator(Yii::app()->user->userModel)) { throw new NotSupportedException(); } $template = "{message}<br/>"; $messageStreamer = new MessageStreamer($template); $messageStreamer->setExtraRenderBytes(0); $messageLogger = new MessageLogger($messageStreamer); if (Yii::app()->user->userModel->primaryEmail->emailAddress == null) { $messageLogger->addErrorMessage('Cannot send test emails because the current user does not have an email address'); Yii::app()->end(0, false); } $messageLogger->addInfoMessage('Using type:' . Yii::app()->emailHelper->outboundType); $messageLogger->addInfoMessage('Using host:' . Yii::app()->emailHelper->outboundHost); $messageLogger->addInfoMessage('Using port:' . Yii::app()->emailHelper->outboundPort); $messageLogger->addInfoMessage('Using username:'******'Using password: Yes'); } else { $messageLogger->addInfoMessage('Using password: No'); } $modules = Module::getModuleObjects(); foreach ($modules as $module) { $notificationClassNames = $module::getAllClassNamesByPathFolder('data'); foreach ($notificationClassNames as $notificationClassName) { if (!strpos($notificationClassName, 'DemoEmailNotifications') === false) { $demoNotification = new $notificationClassName(); $demoNotification->run(Yii::app()->user->userModel, $messageLogger); } } } Yii::app()->emailHelper->sendQueued(); }
/** * Given a 'type' of job, run the job. This is for non-monitor jobs only. * @param $type * @param MessageLogger $messageLogger * @param $isJobInProgress * @throws FailedToSaveModelException */ public static function runNonMonitorJob($type, MessageLogger $messageLogger, &$isJobInProgress) { assert('is_string($type) && $type != "Monitor"'); assert('is_bool($isJobInProgress)'); try { JobInProcess::getByType($type); $messageLogger->addInfoMessage("Existing job detected"); $isJobInProgress = true; } catch (NotFoundException $e) { $jobInProcess = new JobInProcess(); $jobInProcess->type = $type; $jobInProcess->save(); $startDateTime = $jobInProcess->createdDateTime; $jobClassName = $type . 'Job'; $job = new $jobClassName(); $job->setMessageLogger($messageLogger); $ranSuccessfully = $job->run(); $errorMessage = $job->getErrorMessage(); $jobInProcess->delete(); $jobLog = new JobLog(); $jobLog->type = $type; $jobLog->startDateTime = $startDateTime; $jobLog->endDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); if ($ranSuccessfully) { $messageLogger->addInfoMessage("Job completed successfully"); $jobLog->status = JobLog::STATUS_COMPLETE_WITHOUT_ERROR; } else { $messageLogger->addInfoMessage("Job completed with errors"); $jobLog->status = JobLog::STATUS_COMPLETE_WITH_ERROR; $jobLog->message = $errorMessage; } $jobLog->isProcessed = false; if (!$jobLog->save()) { throw new FailedToSaveModelException(); } $stuckJob = StuckJob::getByType($type); $stuckJob->quantity = 0; if (!$stuckJob->save()) { throw new FailedToSaveModelException(); } } }
/** * Delete sample model from application state persister and from database * @param string $modelClassName * @param inf $modelId * @param MessageLogger $messageLogger * @return boolean */ protected static function deleteSampleModelFromStatePersisterAndDatabase($modelClassName, $modelId, $messageLogger) { $statePersister = Yii::app()->getStatePersister(); $state = $statePersister->load(); $result = true; if (isset($state[self::AUTO_BUILD_SAMPLE_MODELS_KEY])) { $sampleModels = $state[self::AUTO_BUILD_SAMPLE_MODELS_KEY]; if (!empty($sampleModels)) { foreach ($sampleModels as $key => $sampleModel) { if ($sampleModel['modelClassName'] == $modelClassName && $sampleModel['modelId'] == $modelId) { try { $model = $sampleModel['modelClassName']::getById($modelId); if ($model) { if ($model->delete()) { unset($state[self::AUTO_BUILD_SAMPLE_MODELS_KEY][$key]); $messageLogger->addInfoMessage("Sample model {$sampleModel['modelClassName']}-> {$modelId} deleted."); } else { $messageLogger->addErrorMessage("Couldn't delete sample model {$sampleModel['modelClassName']}-> {$modelId} deleted."); $result = false; } } } catch (NotFoundException $e) { // Do nothing, model is already deleted } } } } } $statePersister->save($state); return $result; }
final function logUserMessage($message, $type = "msg") { MessageLogger::log($message, $type); }
/** * @depends testRunInstallation */ public function testRunAutoBuildFromUpdateSchemaCommand() { $this->runInstallation(true); $super = User::getByUsername('super'); $super->primaryEmail->emailAddress = '*****@*****.**'; $this->assertTrue($super->save()); $this->assertEquals(0, EmailMessage::getCount()); $this->assertEquals(1, Notification::getCount()); $messageLogger = new MessageLogger(); $messageLogger->addInfoMessage(Zurmo::t('InstallModule', 'Starting schema update process.')); $result = InstallUtil::runAutoBuildFromUpdateSchemaCommand($messageLogger); $messageLogger->addInfoMessage(Zurmo::t('InstallModule', 'Schema update complete.')); $this->assertTrue($result); //No email notification is sent since allowSendingEmail is false $this->assertEquals(0, EmailMessage::getCount()); $this->assertEquals(2, Notification::getCount()); }
function getFailureMessages() { return MessageLogger::getMessages(get_class($this) . "_failure"); }
/** * @depends testRunInstallation */ public function testRunAutoBuildFromUpdateSchemaCommand() { $this->runInstallation(true); $messageLogger = new MessageLogger(); $messageLogger->addInfoMessage(Zurmo::t('InstallModule', 'Starting schema update process.')); $result = InstallUtil::runAutoBuildFromUpdateSchemaCommand($messageLogger); $messageLogger->addInfoMessage(Zurmo::t('InstallModule', 'Schema update complete.')); $this->assertTrue($result); }
public static function query($sql, $time, $database = 'Unknown') { if (isset(self::$profiler)) { if (!self::is_ajax()) { $time *= 1000; self::$queries[] = array('sql' => str_replace(array('/*', '*/'), array('<span style="color:#aaa;font-style:italic;float:right">', '</span>'), $sql), 'time' => $time, 'database' => $database); } elseif (class_exists('MessageLogger')) { MessageLogger::logInternal(str_replace(array('/*', '*/'), array('<span style="color:#aaa;font-style:italic;float:right">', '</span>'), $sql), 'query'); } } //else //error_log($sql); }