18 use \DAOResultFactory;
22 use \PKP\Services\interfaces\EntityPropertyInterface;
23 use \PKP\Services\interfaces\EntityReadInterface;
24 use \PKP\Services\interfaces\EntityWriteInterface;
27 import(
'lib.pkp.classes.db.DBResultRange');
34 public function get($announcementId) {
57 if (isset($args[
'count'])) {
58 import(
'lib.pkp.classes.db.DBResultRange');
59 $range = new \DBResultRange($args[
'count'],
null, isset($args[
'offset']) ? $args[
'offset'] : 0);
63 if (isset($args[
'count'])) unset($args[
'count']);
64 if (isset($args[
'offset'])) unset($args[
'offset']);
67 $result = $announcementDao->retrieveRange($announcementQO->toSql(), $announcementQO->getBindings(), $range);
70 return $queryResults->toIterator();
77 public function getMax($args =
null) {
79 if (isset($args[
'count'])) unset($args[
'count']);
80 if (isset($args[
'offset'])) unset($args[
'offset']);
92 $args = array_merge($defaultArgs, $args);
95 if (!empty($args[
'contextIds'])) {
96 $announcementQB->filterByContextIds($args[
'contextIds']);
98 if (!empty($args[
'searchPhrase'])) {
99 $announcementQB->searchPhrase($args[
'searchPhrase']);
101 if (!empty($args[
'typeIds'])) {
102 $announcementQB->filterByTypeIds($args[
'typeIds']);
107 return $announcementQB;
114 $request = $args[
'request'];
115 $announcementContext = $args[
'announcementContext'];
116 $dispatcher = $request->getDispatcher();
120 foreach ($props as $prop) {
123 $values[$prop] = $dispatcher->url(
126 $announcementContext->getData(
'urlPath'),
127 'announcements/' . $announcement->getId()
131 $values[$prop] = $announcement->getData($prop);
138 \HookRegistry::call(
'Announcement::getProperties', [&$values, $announcement, $props, $args]);
166 public function validate($action, $props, $allowedLocales, $primaryLocale) {
168 LOCALE_COMPONENT_PKP_MANAGER,
169 LOCALE_COMPONENT_APP_MANAGER
173 import(
'lib.pkp.classes.validation.ValidatorFactory');
178 'dateExpire.date_format' => __(
'stats.dateRange.invalidDate'),
195 if ($validator->fails()) {
196 $errors = $schemaService->formatValidationErrors($validator->errors(), $schemaService->get(
SCHEMA_ANNOUNCEMENT), $allowedLocales);
199 \HookRegistry::call(
'Announcement::validate', array(&$errors, $action, $props, $allowedLocales, $primaryLocale));
207 public function add($announcement, $request) {
209 DAORegistry::getDao(
'AnnouncementDAO')->insertObject($announcement);
212 return $announcement;
218 public function edit($announcement, $params, $request) {
221 $newAnnouncement->_data = array_merge($announcement->_data, $params);
223 \HookRegistry::call(
'Announcement::edit', array($newAnnouncement, $announcement, $params, $request));
226 $newAnnouncement = $this->
get($newAnnouncement->getId());
228 return $newAnnouncement;
234 public function delete($announcement) {
236 DAORegistry::getDao(
'AnnouncementDAO')->deleteObject($announcement);