示例#1
0
 public static function checkInvitations($time_before = 1440, $user_id = null)
 {
     if (!self::$invite_alert_requested) {
         if (!$user_id) {
             $user = JFactory::getUser();
             $user_id = $user->id;
         }
         if ($user_id) {
             $db = JFactory::getDBO();
             $date = RaidPlannerHelper::getDate();
             /* get user vacation first */
             $user = JUser::getInstance($user_id);
             $vac = $user->getParam('vacation', '');
             // Joomla ACL
             $query = "SELECT r.raid_id,r.location,r.start_time FROM #__raidplanner_raid AS r" . " LEFT JOIN #__user_usergroup_map AS p ON p.group_id = r.invited_group_id" . " LEFT JOIN (#__raidplanner_signups AS s,#__raidplanner_character AS c) ON (s.raid_id = r.raid_id AND c.character_id = s.character_id AND c.profile_id = p.user_id)" . " WHERE r.invited_group_id>0" . " AND s.raid_id IS NULL" . " AND p.user_id = " . intval($user_id) . " AND DATE_SUB(r.start_time,interval r.freeze_time minute) > '" . self::date2Sql($date) . "'" . " AND DATE_SUB(r.start_time,interval (r.freeze_time + " . intval($time_before) . ") minute) < '" . self::date2Sql($date) . "'";
             if ($vac != '') {
                 /* exclude vacation dates */
                 $vacs = explode("\n", $vac);
                 if (!empty($vacs)) {
                     foreach ($vacs as $vac) {
                         $vac_period = explode(" ", $vac);
                         $vac_period[0] = preg_replace('/[^0-9-]/i', '', $vac_period[0]);
                         $vac_period[1] = preg_replace('/[^0-9-]/i', '', $vac_period[1]);
                         $query .= "\nAND NOT (r.start_time>='" . $vac_period[0] . "' AND r.start_time<='" . $vac_period[1] . "')";
                     }
                 }
             }
             $db->setQuery($query);
             self::$invite_alert_requested = true;
             return $db->loadObjectList();
         }
     }
     return null;
 }