コード例 #1
0
ファイル: index.php プロジェクト: nemein/openpsa
 /**
  * @param mixed $handler_id The ID of the handler.
  * @param Array $args The argument list.
  * @param Array &$data The local request data.
  */
 public function _handler_index($handler_id, array $args, array &$data)
 {
     $this->_request_data['campaigns'] = array();
     $qb = org_openpsa_directmarketing_campaign_dba::new_query_builder();
     $qb->add_constraint('archived', '=', 0);
     $this->_request_data['campaigns'] = $qb->execute();
 }
コード例 #2
0
ファイル: updatemembers.php プロジェクト: nemein/openpsa
 /**
  * Loads all (not-archived) smart campaigns and schedules a separate background update for each
  */
 public function _on_execute()
 {
     debug_add('_on_execute called');
     $qb = org_openpsa_directmarketing_campaign_dba::new_query_builder();
     $qb->add_constraint('archived', '=', 0);
     $qb->add_constraint('orgOpenpsaObtype', '=', org_openpsa_directmarketing_campaign_dba::TYPE_SMART);
     midcom::get('auth')->request_sudo('org.openpsa.directmarketing');
     $ret = $qb->execute();
     midcom::get('auth')->drop_sudo();
     if ($ret === false || !is_array($ret)) {
         //TODO: display some error ?
         return false;
     }
     if (empty($ret)) {
         return;
     }
     $i = 1;
     foreach ($ret as $campaign) {
         $next_time = time() + $i++ * 60;
         debug_add("Scheduling member update for campaign #{$campaign->id} ({$campaign->title}) to happen on " . date('Y-m-d H:i:s', $next_time));
         $stat = $campaign->schedule_update_smart_campaign_members($next_time);
         if (!$stat) {
             //TODO: Display some error ?
         }
     }
     debug_add('Done');
     return;
 }
コード例 #3
0
ファイル: navigation.php プロジェクト: nemein/openpsa
 function get_leaves()
 {
     $leaves = array();
     $qb = org_openpsa_directmarketing_campaign_dba::new_query_builder();
     $qb->add_constraint('archived', '=', 0);
     $campaigns = $qb->execute();
     if (empty($campaigns)) {
         return $leaves;
     }
     foreach ($campaigns as $campaign) {
         $leaves[$campaign->id] = array(MIDCOM_NAV_URL => "campaign/{$campaign->guid}/", MIDCOM_NAV_NAME => $campaign->title, MIDCOM_NAV_GUID => $campaign->guid, MIDCOM_NAV_OBJECT => $campaign);
     }
     return $leaves;
 }
コード例 #4
0
ファイル: navigation.php プロジェクト: nemein/openpsa
 function get_leaves()
 {
     $leaves = array();
     $qb = org_openpsa_directmarketing_campaign_dba::new_query_builder();
     $qb->add_constraint('node', '=', $this->_topic->id);
     $qb->add_constraint('archived', '=', 0);
     $qb->add_order('metadata.created', $this->_config->get('navi_order'));
     $campaigns = $qb->execute();
     if (empty($campaigns)) {
         return $leaves;
     }
     foreach ($campaigns as $campaign) {
         $leaves["campaign_{$campaign->id}"] = array(MIDCOM_NAV_URL => "campaign/{$campaign->guid}/", MIDCOM_NAV_NAME => $campaign->title, MIDCOM_NAV_GUID => $campaign->guid, MIDCOM_NAV_OBJECT => $campaign);
     }
     return $leaves;
 }
コード例 #5
0
ファイル: subscriber.php プロジェクト: nemein/openpsa
 /**
  * Show the list of existing campaigns
  *
  * @param String $handler_id    Name of the request handler
  * @param array &$data          Public request data, passed by reference
  */
 public function _show_list($handler_id, array &$data)
 {
     $qb_all = org_openpsa_directmarketing_campaign_dba::new_query_builder();
     $campaigns = array();
     midcom_show_style("show-campaign-list-header");
     $this->_request_data['campaigns_all'] = array();
     if (array_key_exists('person', $this->_request_data) && $this->_request_data['person']) {
         debug_add("Listing campaigns person '{$this->_request_data['person']->guid}' is member of");
         $qb = org_openpsa_directmarketing_campaign_member_dba::new_query_builder();
         $qb->add_constraint('person', '=', $this->_request_data['person']->id);
         $qb->add_constraint('orgOpenpsaObtype', '<>', org_openpsa_directmarketing_campaign_member_dba::TESTER);
         $memberships = $qb->execute();
         $campaign_membership_map = array();
         if ($memberships) {
             foreach ($memberships as $membership) {
                 try {
                     $campaigns[$membership->campaign] = new org_openpsa_directmarketing_campaign_dba($membership->campaign);
                     $campaign_membership_map[$membership->campaign] = $membership;
                 } catch (midcom_error $e) {
                     debug_add('Failed to load campaign ' . $membership->campaign . ', reason: ' . $e->getMessage());
                 }
             }
         }
         // List active campaigns for the "add to campaign" selector
         $qb_all->add_constraint('archived', '=', 0);
         $qb_all->add_order('metadata.created', $this->_config->get('campaign_list_order'));
         $campaigns_all = $qb_all->execute();
         if ($campaigns_all) {
             foreach ($campaigns_all as $campaign) {
                 if (!array_key_exists($campaign->id, $campaigns) && $campaign->can_do('midgard:create')) {
                     $this->_request_data['campaigns_all'][] = $campaign;
                 }
             }
         }
     } else {
         debug_add("Listing campaigns visible to current user");
         $qb = org_openpsa_directmarketing_campaign_dba::new_query_builder();
         if ($this->_topic->component = 'org.openpsa.directmarketing') {
             $qb->add_constraint('node', '=', $this->_topic->id);
         }
         $qb->add_constraint('archived', '=', 0);
         $qb->add_order('metadata.created', $this->_config->get('campaign_list_order'));
         $campaigns = $qb->execute();
     }
     if (is_array($campaigns) && count($campaigns) > 0) {
         foreach ($campaigns as $campaign) {
             $this->_request_data['campaign'] = new org_openpsa_directmarketing_campaign_dba($campaign->guid);
             if (isset($campaign_membership_map) && array_key_exists($campaign->id, $campaign_membership_map)) {
                 $this->_request_data['membership'] = $campaign_membership_map[$campaign->id];
             }
             // TODO: Get count of members and messages here
             midcom_show_style('show-campaign-list-item');
         }
     }
     midcom_show_style("show-campaign-list-footer");
 }