예제 #1
0
    /**
     * Deletes all Entries in table "item_backup" older than $days
     * 
     * @param $days number of days for which entries are allowed to stay in table
     * @return boolean success
     */
    public function deleteOlderThan($days)
    {
        $retour = false;
        $timestamp = getCurrentDateTimeMinusDaysInMySQL($days);
        $query = '
	      DELETE FROM
	         ' . $this->addDatabasePrefix($this->_db_table) . '
	      WHERE
	         backup_date < "' . $timestamp . '"';
        $result = $this->_db_connector->performQuery($query);
        if (!isset($result) || !$result) {
            include_once 'functions/error_functions.php';
            trigger_error('Problem deleting items.', E_USER_ERROR);
        } else {
            unset($result);
            $retour = true;
        }
        return $retour;
    }
예제 #2
0
 /** set lastlogin limit
  * this method sets the last login limit
  *
  * @param integer days in the past user has not logged in or empty: user has logged in
  */
 function setLastLoginLimit($value = '')
 {
     if (empty($value)) {
         $this->_lastlogin_limit = 'empty';
     } else {
         $this->_lastlogin_limit = getCurrentDateTimeMinusDaysInMySQL($value);
     }
 }
//
//    You have received a copy of the GNU General Public License
//    along with CommSy.

include_once('../migration.conf.php');
include_once('../db_link.dbi.php');
include_once('../update_functions.php');

// time management for this script
$time_start = getmicrotime();

echo ('file: delete unlinked files'."\n");
$success = true;

// only delete files where the deletion date is older than 30 days
$datetime = getCurrentDateTimeMinusDaysInMySQL(30);

// get file ids
$count = array_shift(mysql_fetch_row(select('SELECT count( * ) as count FROM files INNER JOIN `item_link_file` ON files.files_id = item_link_file.file_id WHERE item_link_file.deletion_date < "'.$datetime.'" OR files.deletion_date < "'.$datetime.'";')));
if ($count < 1) {
   echo "<br />nothing to do.";
} else {
   init_progress_bar($count);
   $sql = 'SELECT files.files_id, files.context_id, files.filename FROM files INNER JOIN `item_link_file` ON files.files_id = item_link_file.file_id WHERE item_link_file.deletion_date < "'.$datetime.'" OR files.deletion_date < "'.$datetime.'";';
   $result = select($sql);
   while ($row = mysql_fetch_assoc($result)) {
      // get portal id
      if ( $row['context_id'] != 99 ) {
         $sql2 = 'SELECT context_id FROM items WHERE item_id="'.$row['context_id'].'";';
         $result2 = select($sql2);
         $row2 = mysql_fetch_assoc($result2);
예제 #4
0
 /** select privatrooms limited by limits
  * this method returns a list (cs_list) of privatrooms within the database limited by the limits. the select statement is a bit tricky, see source code for further information
  */
 function _performQuery($mode = 'select')
 {
     if ($mode == 'count') {
         $query = 'SELECT count(' . $this->addDatabasePrefix($this->_db_table) . '.item_id) AS count';
     } elseif ($mode == 'id_array') {
         $query = 'SELECT ' . $this->addDatabasePrefix($this->_db_table) . '.item_id';
     } else {
         $query = 'SELECT ' . $this->addDatabasePrefix($this->_db_table) . '.*';
     }
     $query .= ' FROM ' . $this->addDatabasePrefix($this->_db_table);
     // user id limit
     if (isset($this->_user_id_limit)) {
         $query .= ' LEFT JOIN ' . $this->addDatabasePrefix('user') . ' ON ' . $this->addDatabasePrefix('user') . '.context_id=' . $this->addDatabasePrefix($this->_db_table) . '.item_id AND ' . $this->addDatabasePrefix('user') . '.deletion_date IS NULL';
         if (!$this->_all_room_limit) {
             $query .= ' AND ' . $this->addDatabasePrefix('user') . '.status >= "2"';
         }
     }
     if ($this->_active_limit) {
         $query .= ' INNER JOIN ' . $this->addDatabasePrefix('user') . ' ON ' . $this->addDatabasePrefix('user') . '.context_id=' . $this->addDatabasePrefix($this->_db_table) . '.item_id';
         $query .= ' AND ' . $this->addDatabasePrefix('user') . '.deletion_date IS NULL';
         $query .= ' INNER JOIN ' . $this->addDatabasePrefix('user') . ' AS user2 ON ' . $this->addDatabasePrefix('user') . '.user_id=user2.user_id';
         $query .= ' AND ' . $this->addDatabasePrefix('user') . '.auth_source=user2.auth_source';
         $query .= ' AND user2.deletion_date IS NULL';
     }
     $query .= ' WHERE 1';
     if (isset($this->_user_id_limit)) {
         $query .= ' AND ' . $this->addDatabasePrefix('user') . '.user_id="' . encode(AS_DB, $this->_user_id_limit) . '"';
     }
     if (isset($this->_auth_source_limit)) {
         $query .= ' AND ' . $this->addDatabasePrefix('user') . '.auth_source="' . encode(AS_DB, $this->_auth_source_limit) . '"';
     }
     // insert limits into the select statement
     if ($this->_delete_limit == true) {
         $query .= ' AND ' . $this->addDatabasePrefix($this->_db_table) . '.deleter_id IS NULL';
     }
     if (isset($this->_status_limit)) {
         $query .= ' AND ' . $this->addDatabasePrefix($this->_db_table) . '.status = "' . encode(AS_DB, $this->_status_limit) . '"';
     }
     if (!empty($this->_room_limit)) {
         $query .= ' AND ' . $this->addDatabasePrefix($this->_db_table) . '.context_id = "' . encode(AS_DB, $this->_room_limit) . '"';
     }
     if (isset($this->_room_type)) {
         $query .= ' AND ' . $this->addDatabasePrefix($this->_db_table) . '.type = "' . encode(AS_DB, $this->_room_type) . '"';
     }
     if (isset($this->_template_limit)) {
         $query .= ' AND ' . $this->addDatabasePrefix($this->_db_table) . '.template = "1"';
     }
     if ($this->_active_limit) {
         include_once 'functions/date_functions.php';
         $query .= ' AND user2.context_id = ' . encode(AS_DB, $this->_room_limit);
         $query .= ' and user2.lastlogin >= "' . getCurrentDateTimeMinusDaysInMySQL(100) . '"';
     }
     // archive
     // lastlogin_limit
     if (!empty($this->_lastlogin_limit)) {
         if ($this->_lastlogin_limit == 'NULL') {
             $query .= ' AND ' . $this->addDatabasePrefix($this->_db_table) . '.lastlogin IS NULL';
         } else {
             $query .= ' AND ' . $this->addDatabasePrefix($this->_db_table) . '.lastlogin = '******'date') {
             $query .= ' ORDER BY ' . $this->addDatabasePrefix($this->_db_table) . '.modification_date DESC, ' . $this->addDatabasePrefix($this->_db_table) . '.title ASC';
         } elseif ($this->_order == 'creation_date') {
             $query .= ' ORDER BY ' . $this->addDatabasePrefix($this->_db_table) . '.creation_date ASC, ' . $this->addDatabasePrefix($this->_db_table) . '.title ASC';
         } elseif ($this->_order == 'creator') {
             $query .= ' ORDER BY ' . $this->addDatabasePrefix('user') . '.lastname, ' . $this->addDatabasePrefix($this->_db_table) . '.modification_date DESC';
         } elseif ($this->_order == 'activity') {
             $query .= ' ORDER BY ' . $this->addDatabasePrefix($this->_db_table) . '.activity ASC, ' . $this->addDatabasePrefix($this->_db_table) . '.title ASC';
         } elseif ($this->_order == 'activity_rev') {
             $query .= ' ORDER BY ' . $this->addDatabasePrefix($this->_db_table) . '.activity DESC, ' . $this->addDatabasePrefix($this->_db_table) . '.title ASC';
         } else {
             $query .= ' ORDER BY ' . $this->addDatabasePrefix($this->_db_table) . '.title, ' . $this->addDatabasePrefix($this->_db_table) . '.modification_date DESC';
         }
     } else {
         $query .= ' ORDER BY ' . $this->addDatabasePrefix($this->_db_table) . '.title DESC';
     }
     if ($mode == 'select') {
         if (isset($this->_interval_limit) and isset($this->_from_limit)) {
             $query .= ' LIMIT ' . $this->_from_limit . ', ' . $this->_interval_limit;
         }
     }
     // perform query
     $result = $this->_db_connector->performQuery($query);
     if (!isset($result)) {
         include_once 'functions/error_functions.php';
         trigger_error('Problems selecting ' . $this->_db_table . ' items from query: "' . $query . '"', E_USER_ERROR);
     } else {
         return $result;
     }
 }
예제 #5
0
 public function isActiveDuringLast99Days()
 {
     include_once 'functions/date_functions.php';
     return $this->getLastLogin() >= getCurrentDateTimeMinusDaysInMySQL(99);
 }
예제 #6
0
         	}
         	unset($room_manager);
         	unset($number);
         	unset($number1);
         	unset($number2);
         }
         
   	   if ( $room_item->isActivatedDeletingUnusedRooms()
         	  and !empty($_POST['room_deleting_days_unused'])
         	) {
         	$room_manager = $environment->getZzzProjectManager();
         	include_once('functions/date_functions.php');
         	if ( !empty($_POST['room_deleting_days_unused_mail']) ) {
         		$datetime_border = getCurrentDateTimeMinusDaysInMySQL($room_item->getDaysUnusedBeforeDeletingRooms()-$room_item->getDaysSendMailBeforeDeletingRooms());
         	} else {
         		$datetime_border = getCurrentDateTimeMinusDaysInMySQL($room_item->getDaysUnusedBeforeDeletingRooms());
         	}
         	$room_manager->setLastLoginOlderLimit($datetime_border);
         	$room_manager->setContextLimit($room_item->getItemID());
         	$room_manager->setNotTemplateLimit();
         	$number1 = $room_manager->getCountAll();
         	$room_manager = $environment->getZzzCommunityManager();
         	$room_manager->setLastLoginOlderLimit($datetime_border);
         	$room_manager->setContextLimit($room_item->getItemID());
         	$room_manager->setNotTemplateLimit();
         	$number2 = $room_manager->getCountAll();
         	$number = $number1 + $number2;
         	if ( !empty($number) ) {
         		if ( !empty($number1) and $number1 == 1 ) {
	         	   $project = $translator->getMessage('COMMON_PROJECT_NUMBER_SI',$number1);
	         	} else {
예제 #7
0
 function deleteReallyOlderThan($days)
 {
     $disc_manager = $this->_environment->getDiscManager();
     $retour = true;
     $timestamp = getCurrentDateTimeMinusDaysInMySQL($days);
     $query = 'SELECT ' . $this->addDatabasePrefix($this->_db_table) . '.files_id, ' . $this->addDatabasePrefix($this->_db_table) . '.context_id, ' . $this->addDatabasePrefix($this->_db_table) . '.filename FROM ' . $this->addDatabasePrefix($this->_db_table) . ' WHERE deletion_date IS NOT NULL and deletion_date < "' . $timestamp . '";';
     $result = $this->_db_connector->performQuery($query);
     if (!isset($result)) {
         include_once 'functions/error_functions.php';
         trigger_error('Problem selecting items from query: "' . $query . '"', E_USER_ERROR);
         $retour = false;
     } else {
         $retour = $retour and parent::deleteReallyOlderThan($days);
         foreach ($result as $query_result) {
             $query2 = 'SELECT context_id as portal_id FROM ' . $this->addDatabasePrefix('room') . ' WHERE item_id="' . $query_result['context_id'] . '"';
             $result2 = $this->_db_connector->performQuery($query2);
             if (!isset($result2)) {
                 include_once 'functions/error_functions.php';
                 trigger_error('Problem selecting items from query: "' . $query . '"', E_USER_ERROR);
                 $retour = false;
             } elseif (!empty($result2[0])) {
                 $query_result2 = $result2[0];
                 if (!empty($query_result2['portal_id'])) {
                     $filename = 'cid' . $query_result['context_id'] . '_' . $query_result['files_id'] . '_' . $query_result['filename'];
                     $disc_manager->setPortalID($query_result2['portal_id']);
                     $disc_manager->setContextID($query_result['context_id']);
                     if ($disc_manager->existsFile($filename)) {
                         $retour = $retour and $disc_manager->unlinkFile($filename);
                     }
                 }
             }
         }
     }
     return $retour;
 }
예제 #8
0
 function deleteByContextArray($array)
 {
     $retour = false;
     $query = 'DELETE FROM ' . $this->addDatabasePrefix('log_archive') . ' WHERE 1';
     if (!empty($array) and count($array) > 0) {
         $id_string = implode(',', $array);
         $query .= ' AND cid NOT IN (' . encode(AS_DB, $id_string) . ')';
     }
     include_once 'functions/date_functions.php';
     $current_context = $this->_environment->getCurrentContextItem();
     //$days = 50;
     $days = $current_context->getLogDeleteInterval();
     if (empty($days)) {
         $days = 50;
     }
     $datetime = getCurrentDateTimeMinusDaysInMySQL($days);
     $query .= ' AND timestamp < "' . $datetime . '"';
     // perform query
     $result = $this->_db_connector->performQuery($query);
     if (!isset($result) or !$result) {
         include_once 'functions/error_functions.php';
         trigger_error('Problems at logs from query:<br />"' . $query . '"', E_USER_WARNING);
     } else {
         $retour = $result;
     }
     return $retour;
 }
예제 #9
0
 function deleteReallyOlderThan($days)
 {
     $retour = false;
     $timestamp = getCurrentDateTimeMinusDaysInMySQL($days);
     $id_array = array();
     $query = 'SELECT item_id, context_id FROM ' . $this->addDatabasePrefix($this->_db_table) . ' WHERE deletion_date IS NOT NULL and deletion_date < "' . $timestamp . '"';
     $result = $this->_db_connector->performQuery($query);
     if (!isset($result) or !$result) {
         #include_once('functions/error_functions.php');
         #trigger_error('Problem deleting items.',E_USER_ERROR);
     } else {
         foreach ($result as $rs) {
             $temp_array['item_id'] = $rs['item_id'];
             $temp_array['portal_id'] = $rs['context_id'];
             $id_array[] = $temp_array;
         }
     }
     foreach ($id_array as $room_array) {
         $iid = $room_array['item_id'];
         $portal_id = $room_array['portal_id'];
         // delete files
         $disc_manager = $this->_environment->getDiscManager();
         $disc_manager->removeRoomDir($portal_id, $iid);
         unset($disc_manager);
         // delete db content or archive content
         $from_backup = false;
         if ($this->_environment->isArchiveMode()) {
             $from_backup = true;
         }
         // managers need data from other tables
         $hash_manager = $this->_environment->getHashManager();
         $hash_manager->deleteFromDb($iid, $from_backup);
         unset($hash_manager);
         $link_modifier_item_manager = $this->_environment->getLinkModifierItemManager();
         $link_modifier_item_manager->deleteFromDb($iid, $from_backup);
         unset($link_modifier_item_manager);
         $link_item_file_manager = $this->_environment->getLinkItemFileManager();
         $link_item_file_manager->deleteFromDb($iid, $from_backup);
         unset($link_item_file_manager);
         $noticed_manager = $this->_environment->getNoticedManager();
         $noticed_manager->deleteFromDb($iid, $from_backup);
         unset($noticed_manager);
         $reader_manager = $this->_environment->getReaderManager();
         $reader_manager->deleteFromDb($iid, $from_backup);
         unset($reader_manager);
         // plain deletion of the rest
         $annotation_manager = $this->_environment->getAnnotationManager();
         $annotation_manager->deleteFromDb($iid, $from_backup);
         unset($annotation_manager);
         $announcement_manager = $this->_environment->getAnnouncementManager();
         $announcement_manager->deleteFromDb($iid, $from_backup);
         unset($announcement_manager);
         $dates_manager = $this->_environment->getDatesManager();
         $dates_manager->deleteFromDb($iid, $from_backup);
         unset($dates_manager);
         $discussion_manager = $this->_environment->getDiscussionManager();
         $discussion_manager->deleteFromDb($iid, $from_backup);
         unset($discussion_manager);
         $discussionarticles_manager = $this->_environment->getDiscussionarticleManager();
         $discussionarticles_manager->deleteFromDb($iid, $from_backup);
         unset($discussionarticles_manager);
         $file_manager = $this->_environment->getFileManager();
         $file_manager->deleteFromDb($iid, $from_backup);
         unset($file_manager);
         $homepage_link_manager = $this->_environment->getHomepageLinkManager();
         $homepage_link_manager->deleteFromDb($iid, $from_backup);
         unset($homepage_link_manager);
         $homepage_manager = $this->_environment->getHomepageManager();
         $homepage_manager->deleteFromDb($iid, $from_backup);
         unset($homepage_manager);
         $item_manager = $this->_environment->getItemManager();
         $item_manager->deleteFromDb($iid, $from_backup);
         unset($item_manager);
         $labels_manager = $this->_environment->getLabelManager();
         $labels_manager->deleteFromDb($iid, $from_backup);
         unset($labels_manager);
         $links_manager = $this->_environment->getLinkManager();
         $links_manager->deleteFromDb($iid, $from_backup);
         unset($links_manager);
         $link_item_manager = $this->_environment->getLinkItemManager();
         $link_item_manager->deleteFromDb($iid, $from_backup);
         unset($link_item_manager);
         $material_manager = $this->_environment->getMaterialManager();
         $material_manager->deleteFromDb($iid, $from_backup);
         unset($material_manager);
         $section_manager = $this->_environment->getSectionManager();
         $section_manager->deleteFromDb($iid, $from_backup);
         unset($section_manager);
         $step_manager = $this->_environment->getStepManager();
         $step_manager->deleteFromDb($iid, $from_backup);
         unset($step_manager);
         $tag_manager = $this->_environment->getTagManager();
         $tag_manager->deleteFromDb($iid, $from_backup);
         unset($tag_manager);
         $tag2tag_manager = $this->_environment->getTag2TagManager();
         $tag2tag_manager->deleteFromDb($iid, $from_backup);
         unset($tag2tag_manager);
         $task_manager = $this->_environment->getTaskManager();
         $task_manager->deleteFromDb($iid, $from_backup);
         unset($task_manager);
         $todo_manager = $this->_environment->getTodoManager();
         $todo_manager->deleteFromDb($iid, $from_backup);
         unset($todo_manager);
         $user_manager = $this->_environment->getUserManager();
         $user_manager->deleteFromDb($iid, $from_backup);
         unset($user_manager);
         $room_manager = $this->_environment->getRoomManager();
         $room_manager->deleteFromDb($iid, $from_backup);
         unset($room_manager);
     }
     return $retour;
 }
예제 #10
0
 public function _cronInactiveUserDelete()
 {
     $time_start = getmicrotime();
     $cron_array = array();
     $cron_array['title'] = 'Temporary login as expired';
     $cron_array['description'] = 'check if a temporary login is expired';
     $success = false;
     $translator = $this->_environment->getTranslationObject();
     $server_item = $this->_environment->getServerItem();
     require_once 'classes/cs_mail.php';
     $user_manager = $this->_environment->getUserManager();
     //$current_portal = $this->_environment->getCurrentContextItem();
     $portal_list = $this->getPortalList();
     if ($portal_list->isNotEmpty()) {
         $portal_item = $portal_list->getFirst();
         while ($portal_item) {
             if ($portal_item->getInactivityLockDays() != 0 or $portal_item->getInactivitySendMailBeforeLockDays() != 0 or $portal_item->getInactivityDeleteDays() != 0 or $portal_item->getInactivitySendMailBeforeDeleteDays() != 0) {
                 // get inactivity configuration
                 $inactivitySendMailDeleteDays = $portal_item->getInactivitySendMailBeforeDeleteDays();
                 $inactivityDeleteDays = $portal_item->getInactivityDeleteDays();
                 $inactivitySendMailLockDays = $portal_item->getInactivitySendMailBeforeLockDays();
                 $inactivityLockDays = $portal_item->getInactivityLockDays();
                 // get configuration date
                 $configDate = $portal_item->getInactivityConfigDate();
                 // calc date to find user which last login is later as the calculated date
                 if (isset($inactivitySendMailLockDays) and !empty($inactivitySendMailLockDays)) {
                     // inactivity lock notification is set
                     $date_lastlogin_do = getCurrentDateTimeMinusDaysInMySQL($inactivitySendMailLockDays);
                 } else {
                     // inactivity lock notification is not set
                     $date_lastlogin_do = getCurrentDateTimeMinusDaysInMySQL($inactivitySendMailDeleteDays);
                 }
                 // get array of users
                 $user_array = $user_manager->getUserLastLoginLaterAs($date_lastlogin_do, $portal_item->getItemID(), 0);
                 if (!empty($user_array)) {
                     foreach ($user_array as $user) {
                         // set user mail for log
                         $to = $user->getEmail();
                         // calc days from lastlogin till now
                         $start_date = new DateTime(getCurrentDateTimeInMySQL());
                         $since_start = $start_date->diff(new DateTime($user->getLastLogin()));
                         $days = $since_start->days;
                         if ($days == 0) {
                             $days = 1;
                         }
                         $auth_source_manager = $this->_environment->getAuthSourceManager();
                         $auth_source_item = $auth_source_manager->getItem($user->getAuthSource());
                         $sourceType = $auth_source_item->getSourceType();
                         // calculate the days till lock
                         $lockSendMailDate = $user->getLockSendMailDate();
                         $daysTillLock = 0;
                         if (!empty($lockSendMailDate)) {
                             $start_date_lock = new DateTime($user->getLockSendMailDate());
                             $since_start_lock = $start_date_lock->diff(new DateTime(getCurrentDateTimeInMySQL()));
                             $daysTillLock = $since_start_lock->days;
                             if ($daysTillLock == 0) {
                                 $daysTillLock = 1;
                             }
                         }
                         // if lock is not set
                         if (empty($inactivityLockDays)) {
                             $daysTillLock = $days;
                         }
                         // check if config date should be used
                         if (empty($inactivityLockDays) and $inactivityDeleteDays < $days or !empty($inactivityLockDays) and $inactivityLockDays < $days) {
                             // calc days
                             $start_date = new DateTime(getCurrentDateTimeInMySQL());
                             $since_start = $start_date->diff(new DateTime($configDate));
                             $days = $since_start->days;
                         }
                         // DEBUG OUTPUT
                         // pr('Diff: '.$days);
                         // pr($user->getLastLogin());
                         // pr('SendMailBeforeDelete: '.$inactivitySendMailDeleteDays);
                         // pr('InactivityDeleteDays: '.$inactivityDeleteDays);
                         // pr('SendMailBeforeLock: '.$inactivitySendMailLockDays);
                         // pr('InactivityLockDays: '.$inactivityLockDays);
                         // pr('USERNAME: '******'DaysTillLock:' . $daysTillLock);
                         // pr('Days:' . $days);
                         // pr(($portal_item->getInactivityLockDays() - $days). '<=' . ($portal_item->getInactivitySendMailBeforeLockDays()-1));
                         // pr('-------------');
                         // DEBUG OUTPUT
                         $userid = $user->getFullname();
                         // delete user
                         if ($daysTillLock >= $portal_item->getInactivityDeleteDays() and $user->getMailSendBeforeDelete() and !empty($inactivityDeleteDays)) {
                             // mail locked send or locked configuration is not set
                             if ($user->getMailSendLocked() or empty($inactivitySendMailLockDays) and empty($inactivityLockDays)) {
                                 $auth_source_manager = $this->_environment->getAuthSourceManager();
                                 $auth_source_item = $auth_source_manager->getItem($user->getAuthSource());
                                 // delete user and every room which the user is member only
                                 $user->deleteAllEntriesOfUserByInactivity();
                                 // delete content
                                 // $portalUser_item = $user->getRelatedCommSyUserItem();
                                 $authentication = $this->_environment->getAuthenticationObject();
                                 $authentication->delete($user->getItemID());
                                 // $authentication = $this->_environment->getAuthenticationObject();
                                 // $authentication->delete($user->getItemID()); // delete authentication
                                 // $user->delete();
                                 // $user->save();
                                 ##########################
                                 # delete mail
                                 ##########################
                                 $mail = $this->sendMailForUserInactivity("deleted", $user, $portal_item, $days);
                                 if ($mail->send()) {
                                     $user->setMailSendBeforeDelete();
                                     $user->save();
                                     $cron_array['success'] = true;
                                     $cron_array['success_text'] = 'send delete mail to ' . $to;
                                 } else {
                                     $cron_array['success'] = false;
                                     $cron_array['success_text'] = 'failed send mail to ' . $to;
                                 }
                             }
                         }
                         // 1 Tag vor dem löschen noch eine Email verschicken
                         if ($daysTillLock >= $portal_item->getInactivityDeleteDays() - 1 and ($user->getMailSendLocked() or empty($inactivitySendMailLockDays) and empty($inactivityLockDays)) and !empty($inactivityDeleteDays)) {
                             if (!$user->getMailSendBeforeDelete()) {
                                 // send mail next day delete
                                 $mail = $this->sendMailForUserInactivity("deleteNext", $user, $portal_item, $days);
                                 if ($mail->send()) {
                                     $user->setMailSendBeforeDelete();
                                     $user->save();
                                     $cron_array['success'] = true;
                                     $cron_array['success_text'] = 'send mail to ' . $to;
                                 } else {
                                     $cron_array['success'] = false;
                                     $cron_array['success_text'] = 'failed send mail to ' . $to;
                                 }
                             }
                         }
                         if ($daysTillLock >= $portal_item->getInactivitySendMailBeforeDeleteDays() and ($user->getMailSendLocked() or empty($inactivitySendMailLockDays) and empty($inactivityLockDays)) and !empty($inactivitySendMailDeleteDays)) {
                             // send mail delete in the next y days
                             if (!$user->getMailSendBeforeDelete()) {
                                 if ($portal_item->getInactivityDeleteDays() - $daysTillLock <= $portal_item->getInactivitySendMailBeforeDeleteDays()) {
                                     if (!$user->getMailSendNextDelete()) {
                                         $mail = $this->sendMailForUserInactivity("deleteNotify", $user, $portal_item, $daysTillLock);
                                         if ($mail->send()) {
                                             $user->setMailSendNextDelete();
                                             $user->save();
                                             // $user->setInactivityMailSendBeforeDelete();
                                             // $user->save();
                                             $cron_array['success'] = true;
                                             $cron_array['success_text'] = 'send mail to ' . $to;
                                         } else {
                                             $cron_array['success'] = false;
                                             $cron_array['success_text'] = 'failed send mail to ' . $to;
                                         }
                                         // step over
                                         continue;
                                     }
                                 }
                             }
                         }
                         // step over
                         // if ($daysTillLock > 0) {
                         //     continue;
                         // }
                         // lock now
                         if ($days >= $portal_item->getInactivityLockDays() - 1 and !empty($inactivityLockDays)) {
                             if ($user->getMailSendBeforeLock() and !$user->getMailSendLocked()) {
                                 // lock user and set lock date till deletion date
                                 $user->setLock($portal_item->getInactivityDeleteDays() + 365);
                                 // days till delete
                                 $user->reject();
                                 $user->save();
                                 // lock user if not locked already
                                 $mail = $this->sendMailForUserInactivity("locked", $user, $portal_item, $days);
                                 if ($mail->send()) {
                                     $user->setMailSendLocked();
                                     $user->setLockSendMailDate();
                                     $user->save();
                                     $cron_array['success'] = true;
                                     $cron_array['success_text'] = 'send mail to ' . $to;
                                 } else {
                                     $cron_array['success'] = false;
                                     $cron_array['success_text'] = 'failed send mail to ' . $to;
                                 }
                             } else {
                                 if (!$user->getMailSendBeforeLock()) {
                                     // send mail to user that the user will be locked in one day
                                     if ($portal_item->getInactivityLockDays() - $days <= $portal_item->getInactivitySendMailBeforeLockDays() - 1) {
                                         $mail = $this->sendMailForUserInactivity("lockNext", $user, $portal_item, $days);
                                         if ($mail->send()) {
                                             $user->setMailSendBeforeLock();
                                             $user->save();
                                             $cron_array['success'] = true;
                                             $cron_array['success_text'] = 'send mail to ' . $to;
                                         } else {
                                             $cron_array['success'] = false;
                                             $cron_array['success_text'] = 'failed send mail to ' . $to;
                                         }
                                     }
                                     // step over
                                     continue;
                                 }
                             }
                         }
                         // lock in x days
                         if ($days >= $portal_item->getInactivitySendMailBeforeLockDays() and !empty($inactivitySendMailLockDays)) {
                             // send mail lock in x days
                             if (!$user->getMailSendBeforeLock() && !$user->getMailSendNextLock()) {
                                 // ?????
                                 // } else {
                                 if ($portal_item->getInactivityLockDays() - $days <= $portal_item->getInactivitySendMailBeforeLockDays()) {
                                     $mail = $this->sendMailForUserInactivity("lockNotify", $user, $portal_item, $days);
                                     if ($mail->send()) {
                                         $user->setMailSendNextLock();
                                         $user->save();
                                         #$user->setMailSendBeforeLock();
                                         #$user->save();
                                         $cron_array['success'] = true;
                                         $cron_array['success_text'] = 'send mail to ' . $to;
                                     } else {
                                         $cron_array['success'] = false;
                                         $cron_array['success_text'] = 'failed send mail to ' . $to;
                                     }
                                     // step over
                                     continue;
                                 }
                             }
                         }
                     }
                 }
             }
             $portal_item = $portal_list->getNext();
         }
     }
     if ($success) {
         $cron_array['success'] = true;
         $cron_array['success_text'] = 'mails send';
     } else {
         $cron_array['success'] = true;
         $cron_array['success_text'] = 'nothing to do';
     }
     $time_end = getmicrotime();
     $time = round($time_end - $time_start, 0);
     $cron_array['time'] = $time;
     unset($user_manager);
     return $cron_array;
 }
예제 #11
0
                    $mail_before_delete = $_POST['email_before_delete'];

                    $user_manager = $environment->getUserManager();
                    if (isset($lock_days) and !empty($lock_days)) {
                        if (isset($mail_before_lock) and !empty($mail_before_lock)) {
                            $date_lastlogin_do = getCurrentDateTimeMinusDaysInMySQL(($lock_days + $mail_before_lock));
                        } else {
                            $date_lastlogin_do = getCurrentDateTimeMinusDaysInMySQL($lock_days);
                        }

                    }
                    if (isset($delete_days) and !empty($delete_days)) {
                        if (isset($mail_before_delete) and !empty($mail_before_delete)) {
                            $date_lastlogin_do = getCurrentDateTimeMinusDaysInMySQL($delete_days + $mail_before_delete);
                        } else {
                            $date_lastlogin_do = getCurrentDateTimeMinusDaysInMySQL($delete_days);
                        }
                    }
                    if (isset($date_lastlogin_do)) {
                        $user_array = $user_manager->getUserLastLoginLaterAs($date_lastlogin_do, $current_context->getItemID());
                    }
          
                    if (!empty($user_array)) {
                        $count_delete = 0;
                        $count_lock = 0;
                        foreach ($user_array as $user) {
                            $start_date = new DateTime(getCurrentDateTimeInMySQL());
                            $since_start = $start_date->diff(new DateTime($user->getLastLogin()));
                            $days = $since_start->days;
                            if ($days == 0) {
                                $days = 1;
예제 #12
0
 private function _cronDeleteUnusedRoomsSendMailBefore()
 {
     $cron_array = array();
     $cron_array['title'] = 'send mail before delete unused rooms';
     $cron_array['description'] = 'if rooms are unused for ' . ($this->getDaysUnusedBeforeDeletingRooms() - $this->getDaysSendMailBeforeDeletingRooms()) . ' days this cron sends a notifications about deleting the room in ' . $this->getDaysSendMailBeforeDeletingRooms() . ' days';
     $cron_array['success'] = false;
     $cron_array['success_text'] = 'cron failed';
     $days_mail_send_before = $this->getDaysSendMailBeforeDeletingRooms();
     if (!empty($days_mail_send_before)) {
         // unused project rooms
         // group rooms will be archived with project room
         $count_project = 0;
         $room_manager = $this->_environment->getProjectManager();
         include_once 'functions/date_functions.php';
         $datetime_border = getCurrentDateTimeMinusDaysInMySQL($this->getDaysUnusedBeforeDeletingRooms() - $this->getDaysSendMailBeforeDeletingRooms());
         $room_manager->setLastLoginOlderLimit($datetime_border);
         $room_manager->setContextLimit($this->getItemID());
         #$room_manager->setNotTemplateLimit();
         $room_manager->select();
         $room_list = $room_manager->get();
         $count_project_all = 0;
         if (!empty($room_list) and $room_list->isNotEmpty()) {
             $count_project_all = $room_list->getCount();
             $datetime_border_send_mail = getCurrentDateTimeMinusDaysInMySQL($this->getDaysSendMailBeforeDeletingRooms());
             $datetime_border_send_mail2 = getCurrentDateTimeMinusDaysInMySQL($this->getDaysSendMailBeforeDeletingRooms() + 21);
             $room_item = $room_list->getFirst();
             while ($room_item) {
                 $send_mail = true;
                 $send_mail_datetime = $room_item->getDeleteMailSendDateTime();
                 if (!empty($send_mail_datetime) and !($send_mail_datetime < $datetime_border_send_mail2)) {
                     $send_mail = false;
                 }
                 if ($send_mail) {
                     // send mail
                     $success = $room_item->sendMailDeleteInfoToModeration();
                     // save room
                     include_once 'functions/date_functions.php';
                     $room_item->setDeleteMailSendDateTime(getCurrentDateTimeInMySQL());
                     $room_item->saveWithoutChangingModificationInformation();
                     $count_project++;
                 }
                 unset($room_item);
                 $room_item = $room_list->getNext();
             }
         }
         unset($room_list);
         unset($room_manager);
         // unused community rooms
         $count_community = 0;
         $room_manager = $this->_environment->getCommunityManager();
         include_once 'functions/date_functions.php';
         $datetime_border = getCurrentDateTimeMinusDaysInMySQL($this->getDaysUnusedBeforeDeletingRooms() - $this->getDaysSendMailBeforeDeletingRooms());
         $room_manager->setLastLoginOlderLimit($datetime_border);
         $room_manager->setContextLimit($this->getItemID());
         #$room_manager->setNotTemplateLimit();
         $room_manager->select();
         $room_list = $room_manager->get();
         $count_community_all = 0;
         if (!empty($room_list) and $room_list->isNotEmpty()) {
             $count_community_all = $room_list->getCount();
             $datetime_border_send_mail = getCurrentDateTimeMinusDaysInMySQL($this->getDaysSendMailBeforeDeletingRooms());
             $datetime_border_send_mail2 = getCurrentDateTimeMinusDaysInMySQL($this->getDaysSendMailBeforeDeletingRooms() + 21);
             $room_item = $room_list->getFirst();
             while ($room_item) {
                 $send_mail = true;
                 $send_mail_datetime = $room_item->getDeleteMailSendDateTime();
                 if (!empty($send_mail_datetime) and !($send_mail_datetime < $datetime_border_send_mail2)) {
                     $send_mail = false;
                 }
                 if ($send_mail) {
                     // send mail
                     $success = $room_item->sendMailDeleteInfoToModeration();
                     // save room
                     include_once 'functions/date_functions.php';
                     $room_item->setDeleteMailSendDateTime(getCurrentDateTimeInMySQL());
                     $room_item->saveWithoutChangingModificationInformation();
                     $count_community++;
                 }
                 unset($room_item);
                 $room_item = $room_list->getNext();
             }
         }
         unset($room_list);
         unset($room_manager);
     }
     $cron_array['success'] = true;
     $cron_array['success_text'] = 'send delete info project rooms: ' . $count_project . ' (possible: ' . $count_project_all . ') - send delete info community rooms: ' . $count_community . ' (possible: ' . $count_community_all . ')';
     return $cron_array;
 }
예제 #13
0
 public function setActiveLimit()
 {
     include_once 'functions/date_functions.php';
     $this->setLastLoginNewerLimit(getCurrentDateTimeMinusDaysInMySQL(100));
 }
예제 #14
0
 function deleteReallyOlderThan($days)
 {
     $retour = false;
     $timestamp = getCurrentDateTimeMinusDaysInMySQL($days);
     $query = 'DELETE FROM ' . $this->addDatabasePrefix($this->_db_table) . ' WHERE deletion_date IS NOT NULL and deletion_date < "' . $timestamp . '" AND type != "' . CS_DISCARTICLE_TYPE . '" AND type != "' . CS_USER_TYPE . '";';
     // user und discarticle werden noch gebraucht
     $result = $this->_db_connector->performQuery($query);
     if (!isset($result) or !$result) {
         include_once 'functions/error_functions.php';
         trigger_error('Problem deleting items.', E_USER_ERROR);
     } else {
         unset($result);
         $retour = true;
     }
     return $retour;
 }