cleanURL = 1; //log the execution time of script CRM_Core_Error::debug_log_message( 'RespondentProcessor.php' ); //load bootstrap to call hooks require_once 'CRM/Utils/System.php'; CRM_Utils_System::loadBootStrap( ); } public function releaseRespondent( ) { require_once 'CRM/Core/PseudoConstant.php'; require_once 'CRM/Campaign/BAO/Survey.php'; $activityStatus = CRM_Core_PseudoConstant::activityStatus( 'name' ); $reserveStatusId = array_search( 'Scheduled', $activityStatus ); $surveyActivityTypes = CRM_Campaign_BAO_Survey::getSurveyActivityType( ); $surveyActivityTypesIds = array_keys( $surveyActivityTypes ); //retrieve all survey activities related to reserve action. $releasedCount = 0; if ( $reserveStatusId && !empty( $surveyActivityTypesIds ) ) { $query = ' SELECT activity.id as id, activity.activity_date_time as activity_date_time, survey.id as surveyId, survey.release_frequency as release_frequency FROM civicrm_activity activity INNER JOIN civicrm_survey survey ON ( survey.id = activity.source_record_id ) WHERE activity.is_deleted = 0 AND activity.status_id = %1 AND activity.activity_type_id IN ( ' . implode( ', ', $surveyActivityTypesIds ) . ' )'; $activity = CRM_Core_DAO::executeQuery( $query, array( 1 => array( $reserveStatusId, 'Positive' ) ) ); $releasedIds = array( ); while ( $activity->fetch( ) ) { if ( !$activity->release_frequency ) continue; $reservedSeconds = CRM_Utils_Date::unixTime( $activity->activity_date_time ); $releasedSeconds = $activity->release_frequency * 24 * 3600; $totalReservedSeconds = $reservedSeconds + $releasedSeconds; if ( $totalReservedSeconds < time( ) ) $releasedIds[$activity->id] = $activity->id; } //released respondent. if ( !empty( $releasedIds ) ) { $query = ' UPDATE civicrm_activity SET is_deleted = 1 WHERE id IN ( ' . implode( ', ', $releasedIds ) .' )'; CRM_Core_DAO::executeQuery( $query ); $releasedCount = count( $releasedIds ); } } echo "

Number of respondents released = {$releasedCount}"; } } $obj = new CRM_RespondentProcessor( ); echo "Releasing.."; $obj->releaseRespondent( ); echo "

Respondent Release Done"; ?>