public function run()
 {
     global $lng, $ilDB;
     $status = ilCronJobResult::STATUS_NO_ACTION;
     $status_details = null;
     $setting = new ilSetting("cron");
     $last_run = $setting->get(get_class($this));
     // #10284 - we already did send today, do nothing
     if ($last_run == date("Y-m-d")) {
         // #14005
         $status_details = "Did already run today.";
     } else {
         // gather objects and participants with notification setting
         $objects = array();
         $set = $ilDB->query("SELECT usr_id,keyword FROM usr_pref" . " WHERE " . $ilDB->like("keyword", "text", "grpcrs_ntf_%") . " AND value = " . $ilDB->quote("1", "text"));
         while ($row = $ilDB->fetchAssoc($set)) {
             $ref_id = substr($row["keyword"], 11);
             $type = ilObject::_lookupType($ref_id, true);
             if ($type) {
                 $objects[$type][$ref_id][] = $row["usr_id"];
             }
         }
         $counter = 0;
         if (sizeof($objects)) {
             $old_lng = $lng;
             include_once "Services/News/classes/class.ilNewsItem.php";
             foreach ($objects as $type => $ref_ids) {
                 // type is not needed for now
                 foreach ($ref_ids as $ref_id => $user_ids) {
                     // gather news per object
                     $news_item = new ilNewsItem();
                     if ($news_item->checkNewsExistsForGroupCourse($ref_id)) {
                         foreach ($user_ids as $user_id) {
                             // gather news for user
                             $user_news = $news_item->getNewsForRefId($ref_id, false, false, 1, false, false, false, false, $user_id);
                             if ($user_news) {
                                 $this->sendMail($user_id, $ref_id, $user_news);
                                 $counter++;
                             }
                         }
                     }
                 }
             }
             $lng = $old_lng;
         }
         // save last run
         $setting->set(get_class($this), date("Y-m-d"));
         if ($counter) {
             $status = ilCronJobResult::STATUS_OK;
         }
     }
     $result = new ilCronJobResult();
     $result->setStatus($status);
     if ($status_details) {
         $result->setMessage($status_details);
     }
     return $result;
 }
 public function sendNotifications()
 {
     global $ilDB, $lng;
     $setting = new ilSetting("cron");
     $last_run = $setting->get(get_class($this));
     // #10284 - we already did send today, do nothing
     if ($last_run == date("Y-m-d")) {
         return;
     }
     // gather objects and participants with notification setting
     $objects = array();
     $set = $ilDB->query("SELECT usr_id,keyword FROM usr_pref" . " WHERE " . $ilDB->like("keyword", "text", "grpcrs_ntf_%") . " AND value = " . $ilDB->quote("1", "text"));
     while ($row = $ilDB->fetchAssoc($set)) {
         $ref_id = substr($row["keyword"], 11);
         $type = ilObject::_lookupType($ref_id, true);
         if ($type) {
             $objects[$type][$ref_id][] = $row["usr_id"];
         }
     }
     if (sizeof($objects)) {
         $old_lng = $lng;
         include_once "Services/News/classes/class.ilNewsItem.php";
         foreach ($objects as $type => $ref_ids) {
             // type is not needed for now
             foreach ($ref_ids as $ref_id => $user_ids) {
                 // gather news per object
                 $news_item = new ilNewsItem();
                 if ($news_item->checkNewsExistsForGroupCourse($ref_id)) {
                     foreach ($user_ids as $user_id) {
                         // gather news for user
                         $user_news = $news_item->getNewsForRefId($ref_id, false, false, 1, false, false, false, false, $user_id);
                         if ($user_news) {
                             $this->sendMail($user_id, $ref_id, $user_news);
                         }
                     }
                 }
             }
         }
         $lng = $old_lng;
     }
     // save last run
     $setting->set(get_class($this), date("Y-m-d"));
     return true;
 }