/** * Save an entry * * @return string HTML */ private function _save() { // Check for request forgeries Request::checkToken(); //verify were authorized if ($this->authorized != 'manager') { $this->setError(Lang::txt('PLG_GROUPS_ANNOUNCEMENTS_ONLY_MANAGERS_CAN_CREATE')); return $this->_list(); } // Incoming $fields = Request::getVar('fields', array(), 'post', 'none', 2); $fields = array_map('trim', $fields); // email announcement $email = isset($fields['email']) && $fields['email'] == 1 ? true : false; //mark as not sent if we want to email again if ($email === true) { $fields['sent'] = 0; } // are we creating the announcement? if (!isset($fields['id']) || $fields['id'] == 0) { $fields['scope'] = 'group'; $fields['scope_id'] = $this->group->get('gidNumber'); $fields['created'] = Date::toSql(); $fields['created_by'] = User::get('id'); } //do we want to mark sticky? $fields['sticky'] = isset($fields['sticky']) && $fields['sticky'] == 1 ? 1 : 0; //do we want to mark as high priority $fields['priority'] = isset($fields['priority']) && $fields['priority'] == 1 ? 1 : 0; //format publish up if (isset($fields['publish_up']) && $fields['publish_up'] != '' && $fields['publish_up'] != '0000-00-00 00:00:00') { $fields['publish_up'] = Date::of(str_replace('@', '', $fields['publish_up']), Config::get('offset'))->toSql(); } //format publish down if (isset($fields['publish_down']) && $fields['publish_down'] != '' && $fields['publish_down'] != '0000-00-00 00:00:00') { $fields['publish_down'] = Date::of(str_replace('@', '', $fields['publish_down']), Config::get('offset'))->toSql(); } if ($fields['publish_up'] > $fields['publish_down']) { $this->setError(Lang::txt('PLG_GROUPS_ANNOUNCEMENTS_INVALID_PUBLISH_DATES')); return $this->_edit($fields); } //announcement model $announcement = new \Hubzero\Item\Announcement($this->database); //attempt to save if (!$announcement->save($fields)) { $this->setError($announcement->getError()); return $this->_edit($fields); } // does user want to email and should we email yet? if ($email === true && $announcement->announcementPublishedForDate()) { // email announcement $announcement->emailAnnouncement(); //set that we sent it and resave $announcement->sent = 1; $announcement->save($announcement); } //success! App::redirect(Route::url('index.php?option=' . $this->option . '&cn=' . $this->group->get('cn') . '&active=announcements'), Lang::txt('PLG_GROUPS_ANNOUNCEMENTS_SUCCESSFULLY_CREATED'), 'success'); return; }
/** * Send scheduled group announcements * * @param object $job \Components\Cron\Models\Job * @return boolean */ public function sendGroupAnnouncements(\Components\Cron\Models\Job $job) { $database = App::get('db'); // get hubzero announcement object $hubzeroAnnouncement = new \Hubzero\Item\Announcement($database); // get all announcements that are not yet sent but want to be mailed $announcements = $hubzeroAnnouncement->find(array('email' => 1, 'sent' => 0)); // loop through each announcement foreach ($announcements as $announcement) { // load the announcement object $hubzeroAnnouncement->load($announcement->id); // check to see if we can send if ($hubzeroAnnouncement->announcementPublishedForDate()) { // email announcement $hubzeroAnnouncement->emailAnnouncement(); // mark as sent $hubzeroAnnouncement->sent = 1; $hubzeroAnnouncement->save($hubzeroAnnouncement); } } return true; }