/** * @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(); }
/** * 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; }
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; }
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; }
/** * 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"); }