/** * @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_remove($handler_id, array $args, array &$data) { $target = org_openpsa_contacts_person_dba::get_cached($args[0]); $mycontacts = new org_openpsa_contacts_mycontacts(); $mycontacts->remove($args[0]); return new midcom_response_relocate("person/{$target->guid}/"); }
/** * Retrieve a reference to an object, uses in-request caching * * @param mixed $src GUID of object (ids work but are discouraged) * @return mixed reference to device object or false */ static function &get($src) { static $cache = array(); if (isset($cache[$src])) { return $cache[$src]; } try { if (class_exists('org_openpsa_contacts_person_dba')) { $person = org_openpsa_contacts_person_dba::get_cached($src); } else { $person = new midcom_db_person($src); } } catch (midcom_error $e) { $widget = new self(); $cache[$src] = $widget; return $widget; } $widget = new self($person); $cache[$person->guid] = $widget; $cache[$person->id] =& $cache[$person->guid]; return $cache[$person->guid]; }
private function _process_member($member) { $adder = array(); $adder['campaign_member'] = $member; try { $adder['person'] = org_openpsa_contacts_person_dba::get_cached($member->person); } catch (midcom_error $e) { $e->log(); return false; } $qb_memberships = midcom_db_member::new_query_builder(); $qb_memberships->add_constraint('uid', '=', $member->person); $memberships = $qb_memberships->execute_unchecked(); if (!is_array($memberships) || count($memberships) == 0) { return $adder; } switch ($this->membership_mode) { case 'all': foreach ($memberships as $k2 => $membership) { $adder['organization_member'] = $membership; try { $adder['organization'] = org_openpsa_contacts_group_dba::get_cached($membership->gid); } catch (midcom_error $e) { debug_add("Error fetching org_openpsa_contacts_group_dba #{$membership->gid}, skipping", MIDCOM_LOG_WARN); return false; } return $adder; } break; default: // Fall-trough intentional // Fall-trough intentional case 'first': // Fall-trough intentional // Fall-trough intentional case 'last': foreach ($memberships as $k2 => $membership) { $adder['organization_member'] = $membership; try { $adder['organization'] = org_openpsa_contacts_group_dba::get_cached($membership->gid); } catch (midcom_error $e) { debug_add("Error fetching org_openpsa_contacts_group_dba #{$membership->gid}, skipping", MIDCOM_LOG_WARN); return false; } // Get only first or last membership if ($this->membership_mode != 'last') { break; } } return $adder; break; } }
/** * Returns a comma separated list of persons from array */ function implode_members($array) { if (!is_array($array)) { debug_add('input was not an array, aborting', MIDCOM_LOG_ERROR); return false; } $str = ''; reset($array); $cnt = count($array) - 1; $i = 0; foreach ($array as $pid => $bool) { $person = org_openpsa_contacts_person_dba::get_cached($pid); debug_add('pid: ' . $pid . ', person->id: ' . $person->id . ', person->firstname: ' . $person->firstname . ', person->lastname: ' . $person->lastname . ', person->name: ' . $person->name . ', person->rname: ' . $person->rname); $str .= $person->name; if ($i != $cnt) { $str .= ', '; } $i++; } return $str; }
<?php echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; ?> <prospects> <?php foreach ($data['prospects'] as $prospect) { try { $person = org_openpsa_contacts_person_dba::get_cached($prospect->person); } catch (midcom_error $e) { continue; } ?> <person> <guid>&(person.guid);</guid> <prospect>&(prospect.guid);</prospect> <label>&(person.name);</label> </person> <?php } ?> </prospects>
/** * Find amount (seconds) of free * time for person between start and end */ public static function find_free_times($amount, $person, $start, $end) { static $event_cache = array(); $slots = array(); if (!is_object($person)) { $person = org_openpsa_contacts_person_dba::get_cached($person); } // Get current events for person $qb = org_openpsa_calendar_event_participant_dba::new_query_builder(); $qb->begin_group('OR'); $qb->add_constraint('orgOpenpsaObtype', '=', ORG_OPENPSA_OBTYPE_EVENTPARTICIPANT); $qb->add_constraint('orgOpenpsaObtype', '=', 0); $qb->end_group(); $qb->add_constraint('uid', '=', $person->id); // All events that somehow overlap the given time. $qb->begin_group('OR'); $qb->begin_group('AND'); $qb->add_constraint('eid.start', '>=', $start); $qb->add_constraint('eid.start', '<=', $end); $qb->end_group(); $qb->begin_group('AND'); $qb->add_constraint('eid.end', '<=', $end); $qb->add_constraint('eid.end', '>=', $start); $qb->end_group(); $qb->begin_group('AND'); $qb->add_constraint('eid.start', '<=', $start); $qb->add_constraint('eid.end', '>=', $end); $qb->end_group(); $qb->end_group(); $qb->add_order('eid.start', 'ASC'); $qb->add_order('eid.end', 'ASC'); $eventmembers = $qb->execute(); if (!is_array($eventmembers)) { // QB error return $slots; } $events_by_date = array(); foreach ($eventmembers as $eventmember) { if (!array_key_exists($eventmember->eid, $event_cache)) { try { $event_cache[$eventmember->eid] = new org_openpsa_calendar_event_dba($eventmember->eid); } catch (midcom_error $e) { continue; } } $event =& $event_cache[$eventmember->eid]; $ymd = date('Ymd', $event->start); if (array_key_exists($ymd, $events_by_date)) { $events_by_date[$ymd] = array(); } $events_by_date[$ymd][] = $event; } // Make sure each date between start and end has at least a dummy event $stamp = mktime(0, 0, 1, date('m', $start), date('d', $start), date('Y', $start)); while ($stamp <= $end) { $ymd = date('Ymd', $stamp); debug_add("making sure date {$ymd} has at least one event"); $stamp = mktime(0, 0, 1, date('m', $stamp), date('d', $stamp) + 1, date('Y', $stamp)); if (array_key_exists($ymd, $events_by_date)) { continue; } debug_add('none found, adding a dummy one'); $dummy = new org_openpsa_calendar_event_dba(); $dummy->start = $stamp; $dummy->end = $stamp + 1; $events_by_date[$ymd] = array($dummy); } foreach ($events_by_date as $ymd => $events) { preg_match('/([0-9]{4})([0-9]{2})([0-9]{2})/', $ymd, $ymd_matches); // TODO: get from persons data based on events weekday // PONDER: What to do with persons that do not have this data defined ?? $workday_starts = 8; $workday_ends = 16; if (empty($workday_starts) || empty($workday_ends)) { // No work on that day continue; } $workday_starts_ts = mktime($workday_starts, 0, 0, (int) $ymd_matches[2], (int) $ymd_matches[3], (int) $ymd_matches[1]); $workday_ends_ts = mktime($workday_ends, 0, 0, (int) $ymd_matches[2], (int) $ymd_matches[3], (int) $ymd_matches[1]); $last_end_time = false; $last_event = false; foreach ($events as $event_key => $event) { if ($event->end <= $workday_starts_ts) { // We need not to consider this event, it ends before we start working unset($events[$event_key]); continue; } if ($event->start >= $workday_ends_ts) { // We need not to consider this event, it starts after we stop working unset($events[$event_key]); continue; } debug_add("checking event #{$event->id} ({$event->title})"); if ($last_end_time === false) { if ($event->start > $workday_starts_ts) { // First event of the day starts after we have started working, use work start time as last end time. $last_end_time = $workday_starts_ts; } else { // Make the first event of the day the last end time and skip rest of the checks $last_end_time = $event->end; // PHP5-TODO: Must be copy by value $last_event = $event; continue; } } $diff = $event->start - $last_end_time; if ($diff >= $amount) { // slot found $slot = array('start' => $last_end_time, 'end' => $event->start, 'previous' => $last_event, 'next' => $event); // PHP5-TODO: This must be copy-by-value $slots[] = $slot; } $last_end_time = $event->end; $last_event = $event; } // End of day slot if ($last_end_time === false) { $last_end_time = $workday_starts_ts; } if ($last_end_time < $workday_ends_ts && $workday_ends_ts - $last_end_time >= $amount) { $slot = array('start' => $last_end_time, 'end' => $workday_ends_ts, 'previous' => $last_event, 'next' => false); // PHP5-TODO: This must be copy-by-value $slots[] = $slot; } } return $slots; }
/** * Substitutes magic strings in content with values from the membership * and/or the person. */ function personalize_message($content, $message_type = -1, &$person = false, $node = false) { if (!$node) { $nap = new midcom_helper_nav(); $node = $nap->get_node($nap->get_current_node()); } if (!is_object($person)) { $person =& org_openpsa_contacts_person_dba::get_cached($this->person); } $sep_start = '<'; $sep_end = '>'; if ($message_type == org_openpsa_directmarketing_campaign_message_dba::EMAIL_HTML) { $sep_start = '<'; $sep_end = '>'; } // Unsubscribe URL $content = str_replace($sep_start . 'UNSUBSCRIBE_URL' . $sep_end, $this->get_unsubscribe_url($node, $person), $content); // Unsubscribe from all URL $content = str_replace($sep_start . 'UNSUBSCRIBE_ALL_URL' . $sep_end, "{$node[MIDCOM_NAV_FULLURL]}campaign/unsubscribe_all/{$person->guid}/", $content); // Unsubscribe from all URL $content = str_replace($sep_start . 'UNSUBSCRIBE_ALL_FUTURE_URL' . $sep_end, "{$node[MIDCOM_NAV_FULLURL]}campaign/unsubscribe_all_future/{$person->guid}/all.html", $content); // General membership GUID $content = str_replace($sep_start . 'MEMBER_GUID' . $sep_end, $this->guid, $content); // General person GUID $content = str_replace($sep_start . 'PERSON_GUID' . $sep_end, $person->guid, $content); // E-Mail $content = str_replace($sep_start . 'EMAIL' . $sep_end, $person->email, $content); // Firstname $content = str_replace($sep_start . 'FNAME' . $sep_end, $person->firstname, $content); // Lastname $content = str_replace($sep_start . 'LNAME' . $sep_end, $person->lastname, $content); // Username $content = str_replace($sep_start . 'UNAME' . $sep_end, $person->username, $content); // Password (if plaintext) if (preg_match('/^\\*\\*(.*)/', $person->password, $pwd_matches)) { $plaintext_password = $pwd_matches[1]; } else { $plaintext_password = $sep_start . 'unknown' . $sep_end; } $content = str_replace($sep_start . 'PASSWD' . $sep_end, $plaintext_password, $content); // Callback functions if (preg_match_all('/' . $sep_start . 'CALLBACK:(.*?)' . $sep_end . '/', $content, $callback_matches)) { foreach ($callback_matches[0] as $k => $search) { $callback_func =& $callback_matches[1][$k]; if (!is_callable($callback_func)) { continue; } $replace = call_user_func($callback_func, $person, $this); $content = str_replace($search, $replace, $content); } } return $content; }
/** * This function is called from the DM2 schema */ static function get_task_resources() { $resource_array = array(); $view_data =& midcom_core_context::get()->get_custom_key('request_data'); if (!array_key_exists('task', $view_data)) { return $resource_array; } $mc = org_openpsa_projects_task_resource_dba::new_collector('task', $view_data['task']->id); $mc->add_constraint('orgOpenpsaObtype', '=', ORG_OPENPSA_OBTYPE_PROJECTRESOURCE); $resources = $mc->get_values('person'); foreach ($resources as $resource) { try { $person = org_openpsa_contacts_person_dba::get_cached($resource); $resource_array[$person->id] = $person->rname; } catch (midcom_error $e) { } } return $resource_array; }
private function _get_link_data($segmentation_param) { $this->_request_data['report']['link_data'] = array(); $link_data =& $this->_request_data['report']['link_data']; $link_data['counts'] = array(); $link_data['percentages'] = array('of_links' => array(), 'of_recipients' => array()); $link_data['rules'] = array(); $link_data['tokens'] = array(); if ($segmentation_param) { $link_data['segments'] = array(); } $segment_prototype = array(); $segment_prototype['counts'] = array(); $segment_prototype['percentages'] = array('of_links' => array(), 'of_recipients' => array()); $segment_prototype['rules'] = array(); $segment_prototype['tokens'] = array(); $qb_links = org_openpsa_directmarketing_link_log_dba::new_query_builder(); $qb_links->add_constraint('message', '=', $this->_request_data['message']->id); $qb_links->add_constraint('target', 'NOT LIKE', '%unsubscribe%'); $links = $qb_links->execute_unchecked(); $link_data['total'] = count($links); foreach ($links as $link) { $segment = ''; $segment_notfound = false; if ($segmentation_param && !empty($link->person)) { try { $person = org_openpsa_contacts_person_dba::get_cached($link->person); $segment = $person->parameter('org.openpsa.directmarketing.segments', $segmentation_param); } catch (midcom_error $e) { } if (empty($segment)) { $segment = $this->_l10n->get('no segment'); $segment_notfound = true; } if (!isset($link_data['segments'][$segment])) { $link_data['segments'][$segment] = $segment_prototype; } $segment_data =& $link_data['segments'][$segment]; } else { $segment_data = $segment_prototype; } $this->_increment_totals($link_data, $link); $this->_increment_totals($segment_data, $link); $this->_calculate_percentages($link_data, $link); $this->_calculate_percentages($segment_data, $link); if (!isset($link_data['rules'][$link->target])) { $link_data['rules'][$link->target] = array('comment' => sprintf($this->_l10n->get('all persons who have clicked on link "%s" in message #%d and have not unsubscribed from campaign #%d'), $link->target, $link->message, $this->_request_data['message']->campaign), 'type' => 'AND', 'classes' => array(array('comment' => $this->_l10n->get('link and message limits'), 'type' => 'AND', 'class' => 'org_openpsa_directmarketing_link_log_dba', 'rules' => array(array('property' => 'target', 'match' => '=', 'value' => $link->target), array('property' => 'message', 'match' => '=', 'value' => $link->message))), array('comment' => $this->_l10n->get('not-unsubscribed -limits'), 'type' => 'AND', 'class' => 'org_openpsa_directmarketing_campaign_member_dba', 'rules' => array(array('property' => 'orgOpenpsaObtype', 'match' => '<>', 'value' => org_openpsa_directmarketing_campaign_member_dba::UNSUBSCRIBED), array('property' => 'campaign', 'match' => '=', 'value' => $this->_request_data['message']->campaign))))); } if (!isset($segment_data['rules'][$link->target])) { $segment_data['rules'][$link->target] = $link_data['rules'][$link->target]; if (!$segment_notfound) { $segmentrule = array('comment' => $this->_l10n->get('segment limits'), 'type' => 'AND', 'class' => 'org_openpsa_contacts_person_dba', 'rules' => array(array('property' => 'parameter.domain', 'match' => '=', 'value' => 'org.openpsa.directmarketing.segments'), array('property' => 'parameter.name', 'match' => '=', 'value' => $segmentation_param), array('property' => 'parameter.value', 'match' => '=', 'value' => $segment))); // On a second thought, we cannot query for empty parameter values... $segment_data['rules'][$link->target]['comment'] = sprintf($this->_l10n->get('all persons in market segment "%s" who have clicked on link "%s" in message #%d and have not unsubscribed from campaign #%d'), $segment, $link->target, $link->message, $this->_request_data['message']->campaign); $segment_data['rules'][$link->target]['classes'][] = $segment; } } } arsort($link_data['counts']); arsort($link_data['percentages']['of_links']); arsort($link_data['percentages']['of_recipients']); if ($segmentation_param) { ksort($link_data['segments']); foreach ($link_data['segments'] as $segment => $dummy) { $segment_data =& $link_data['segments'][$segment]; arsort($segment_data['counts']); arsort($segment_data['percentages']['of_links']); arsort($segment_data['percentages']['of_recipients']); } } }
public function get_row(midcom_core_dbaobject $document) { $prefix = midcom_core_context::get()->get_key(MIDCOM_CONTEXT_ANCHORPREFIX); $entry = array(); $entry['id'] = $document->id; $entry['index_title'] = $document->title; $entry['index_filesize'] = 0; $entry['filesize'] = ''; $entry['mimetype'] = ''; $icon = MIDCOM_STATIC_URL . '/stock-icons/mime/gnome-text-blank.png'; $alt = ''; $att = $document->load_attachment(); if ($att) { $icon = midcom_helper_misc::get_mime_icon($att->mimetype); $alt = $att->name; $stats = $att->stat(); $entry['index_filesize'] = $stats[7]; $entry['filesize'] = midcom_helper_misc::filesize_to_string($stats[7]); $entry['mimetype'] = org_openpsa_documents_document_dba::get_file_type($att->mimetype); } $title = '<a class="tab_escape" href="' . $prefix . 'document/' . $document->guid . '/"><img src="' . $icon . '"'; $title .= 'alt="' . $alt . '" style="border: 0px; height: 16px; vertical-align: middle" /> ' . $document->title . '</a>'; $entry['title'] = $title; $entry['created'] = strftime('%Y-%m-%d %X', $document->metadata->created); $entry['index_author'] = ''; $entry['author'] = ''; if ($document->author) { $author = org_openpsa_contacts_person_dba::get_cached($document->author); $entry['index_author'] = $author->rname; $author_card = org_openpsa_widgets_contact::get($author->guid); $entry['author'] = $author_card->show_inline(); } return $entry; }
if ($customer = $salesproject->get_customer()) { $label = $customer->get_label(); $row['index_customer'] = $label; if ($data['contacts_url']) { $type = 'group'; if (is_a($customer, 'org_openpsa_contacts_person_dba')) { $type = 'person'; } $row['customer'] = "<a href=\"{$data['contacts_url']}{$type}/{$customer->guid}/\">{$label}</a>"; } else { $row['customer'] = $label; } } } try { $owner = org_openpsa_contacts_person_dba::get_cached($salesproject->owner); $owner_widget = org_openpsa_widgets_contact::get($salesproject->owner); $row['index_owner'] = $owner->rname; $row['owner'] = $owner_widget->show_inline(); } catch (midcom_error $e) { $row['index_owner'] = ''; $row['owner'] = ''; } $row['index_closeest'] = ''; $row['closeest'] = ''; if ($salesproject->closeEst) { $row['index_closeest'] = $salesproject->closeEst; $row['closeest'] = strftime("%x", $salesproject->closeEst); } $row['index_value'] = $salesproject->value; $row['value'] = org_openpsa_helpers::format_number($salesproject->value);
/** * Sort the reports by task and day */ private function _get_sorted_reports($hours_mc) { $reports = array(); $hours = $hours_mc->list_keys(); $prefix = midcom_core_context::get()->get_key(MIDCOM_CONTEXT_ANCHORPREFIX); foreach ($hours as $guid => $empty) { $task_id = $hours_mc->get_subkey($guid, 'task'); try { $task = org_openpsa_projects_task_dba::get_cached($task_id); } catch (midcom_error $e) { // Task couldn't be loaded, probably because of ACL continue; } $person = $hours_mc->get_subkey($guid, 'person'); $date = $hours_mc->get_subkey($guid, 'date'); $date_identifier = date('Y-m-d', $date); $row_identifier = $task->id . '-' . $person; if (!isset($reports[$row_identifier])) { $reports[$row_identifier] = array($date_identifier => 0, 'task' => "<a href=\"{$prefix}hours/task/{$task->guid}/\">" . $task->get_label() . "</a>", 'task_index' => $task->get_label()); try { $person = org_openpsa_contacts_person_dba::get_cached($person); $reports[$row_identifier]['person'] = $person->name; } catch (midcom_error $e) { $reports[$row_identifier]['person'] = $this->_l10n->get('no person'); } } if (!isset($reports[$row_identifier][$date_identifier])) { $reports[$row_identifier][$date_identifier] = 0; } $reports[$row_identifier][$date_identifier] += $hours_mc->get_subkey($guid, 'hours'); } return array_values($reports); }
public function get_row(midcom_core_dbaobject $invoice) { $prefix = midcom_core_context::get()->get_key(MIDCOM_CONTEXT_ANCHORPREFIX); $entry = array(); $number = $invoice->get_label(); $link_html = "<a href='{$prefix}invoice/{$invoice->guid}/'>" . $number . "</a>"; if ($number == "") { $number = "n/a"; } $entry['id'] = $invoice->id; $entry['index_number'] = $number; $entry['number'] = $link_html; if (!is_a($this->_customer, 'org_openpsa_contacts_group_dba')) { try { $customer = org_openpsa_contacts_group_dba::get_cached($invoice->customer); $entry['customer'] = "<a href=\"{$this->_request_data['invoices_url']}list/customer/all/{$customer->guid}/\">" . $customer->get_label() . "</a>"; } catch (midcom_error $e) { $entry['customer'] = ''; } } if (!is_a($this->_customer, 'org_openpsa_contacts_person_dba')) { try { $contact = org_openpsa_contacts_person_dba::get_cached($invoice->customerContact); $entry['contact'] = "<a href=\"{$this->_request_data['invoices_url']}list/customer/all/{$contact->guid}/\">" . $contact->get_label() . "</a>"; } catch (midcom_error $e) { $entry['contact'] = ''; } } if (!empty($this->_request_data['deliverable'])) { $constraints = array('invoice' => $invoice->id, 'deliverable' => $this->_request_data['deliverable']->id); $item_sum = org_openpsa_invoices_invoice_item_dba::get_sum($constraints); $this->_request_data['totals']['deliverable'] += $item_sum; $entry['index_item_sum'] = $item_sum; $entry['item_sum'] = '<span title="' . $this->_l10n->get('sum including vat') . ': ' . org_openpsa_helpers::format_number($item_sum / 100 * $invoice->vat + $item_sum) . '">' . org_openpsa_helpers::format_number($item_sum) . '</span>'; } $entry['index_sum'] = $invoice->sum; $entry['sum'] = '<span title="' . $this->_l10n->get('sum including vat') . ': ' . org_openpsa_helpers::format_number($invoice->sum / 100 * $invoice->vat + $invoice->sum) . '">' . org_openpsa_helpers::format_number($invoice->sum) . '</span>'; $entry['due'] = ''; if ($invoice->due > 0) { $entry['due'] = strftime('%Y-%m-%d', $invoice->due); } $colname = 'action'; if ($this->_list_type == 'paid') { $colname = 'paid'; } $entry[$colname] = $this->_master->render_invoice_actions($invoice); return $entry; }
try { $customer = org_openpsa_contacts_group_dba::get_cached($invoice->customer); $entry['index_customer'] = $customer->official; if ($data['invoices_url']) { $entry['customer'] = "<a href=\"{$data['invoices_url']}list/customer/all/{$customer->guid}/\" title=\"{$customer->name}: {$customer->official}\">{$customer->official}</a>"; } else { $entry['customer'] = $customer->official; } } catch (midcom_error $e) { $entry['customer'] = ''; $entry['index_customer'] = ''; } $entry['index_contact'] = ''; $entry['contact'] = ''; try { $contact = org_openpsa_contacts_person_dba::get_cached($invoice->customerContact); $entry['index_contact'] = $contact->rname; $contact_card = org_openpsa_widgets_contact::get($invoice->customerContact); $entry['contact'] = $contact_card->show_inline(); } catch (midcom_error $e) { } $entry['sum'] = $invoice->sum; $entry['index_vat'] = $invoice->vat; $entry['vat'] = $invoice->vat . ' %'; $entry['vat_sum'] = $vat_sum; $entries[] = $entry; } echo '<script type="text/javascript">//<![CDATA['; echo "\nvar " . $grid_id . '_entries = ' . json_encode($entries); echo "\n//]]></script>"; ?>
private function _send_sms_member(&$smsbroker, $member, &$content, &$from, &$data_array) { if ($this->_check_member_deny($member, 'sms')) { return; } if (!isset($GLOBALS['org_openpsa_directmarketing_campaign_message_send_i'])) { $GLOBALS['org_openpsa_directmarketing_campaign_message_send_i'] = 0; } $GLOBALS['org_openpsa_directmarketing_campaign_message_send_i']++; $person =& org_openpsa_contacts_person_dba::get_cached($member->person); $person->handphone = $this->_normalize_phone($person->handphone); $content_p = $member->personalize_message($content, $this->orgOpenpsaObtype, $person); //TODO: Add sender support $status = $smsbroker->send_sms($person->handphone, $content_p, $from); if ($status) { debug_add('SMS sent to: ' . $person->handphone); if (!$this->test_mode) { $member->create_receipt($this->id, org_openpsa_directmarketing_campaign_messagereceipt_dba::SENT); } } else { $message = sprintf('FAILED to send SMS to: %s, reason: %s', $person->handphone, $smsbroker->errstr); debug_add($message, MIDCOM_LOG_WARN); if (!$this->test_mode) { $params = array(array('domain' => 'org.openpsa.directmarketing', 'name' => 'send_error_message', 'value' => $message)); $member->create_receipt($this->id, ORG_OPENPSA_MESSAGERECEIPT_FAILURE, $token, $params); } if ($this->send_output) { midcom::get('uimessages')->add(midcom::get('i18n')->get_string('org.openpsa.directmarketing', 'org.openpsa.directmarketing'), sprintf(midcom::get('i18n')->get_string('FAILED to send SMS to: %s, reason: %s', 'org.openpsa.directmarketing'), $person->handphone, $smsbroker->errstr), 'error'); } } return $status; }
private function _populate_schema_contacts_for_customer(&$customer) { $fields =& $this->_schemadb['default']->fields; // We know the customer company, present contact as a select widget $persons_array = array(); $member_mc = midcom_db_member::new_collector('gid', $customer->id); $members = $member_mc->get_values('uid'); foreach ($members as $member) { try { $person = org_openpsa_contacts_person_dba::get_cached($member); $persons_array[$person->id] = $person->rname; } catch (midcom_error $e) { } } asort($persons_array); $fields['customerContact']['widget'] = 'select'; $fields['customerContact']['type_config']['options'] = $persons_array; // And display the organization too $organization_array = array(); $organization_array[$customer->id] = $customer->official; $fields['customer']['widget'] = 'select'; $fields['customer']['type_config']['options'] = $organization_array; }
</div> <script type="text/javascript"> <?php //add static data to jqgrid if wanted $start = true; if (!array_key_exists('dynamic_load', $data) && array_key_exists('entries', $data)) { $rows = array(); foreach ($data['entries'] as $entry) { $row = array('id' => $entry->id, 'index_name' => $entry->title, 'description' => $entry->text, 'index_date' => $entry->followUp); $link_html = "<a href='" . $data['url_prefix'] . "edit/" . $entry->guid . "/'>"; $link_html .= "<span >" . $entry->title . "</span></a>"; $row['name'] = $link_html; $row['date'] = date('Y-m-d', $entry->metadata->created); try { $creator = org_openpsa_contacts_person_dba::get_cached($entry->metadata->creator); $row['creator_index'] = $creator->rname; $creator_card = org_openpsa_widgets_contact::get($entry->metadata->creator); $row['creator'] = $creator_card->show_inline(); } catch (midcom_error $e) { $row['creator_index'] = ''; $row['creator'] = ''; } if ($entry->closed) { $row['closed'] = midcom::get('i18n')->get_string('finished', 'org.openpsa.relatedto'); } else { $row['closed'] = midcom::get('i18n')->get_string('open', 'org.openpsa.relatedto'); } $rows[] = $row; } echo 'var entries = ' . json_encode($rows) . ";\n";
public function get_customer() { try { $customer = org_openpsa_contacts_group_dba::get_cached($this->customer); } catch (midcom_error $e) { try { $customer = org_openpsa_contacts_person_dba::get_cached($this->customerContact); } catch (midcom_error $e) { $customer = null; $e->log(); } } return $customer; }
<?php echo org_openpsa_helpers::render_fileinfo($invoice, 'pdf_file'); ?> <?php } // Display invoiced hours and tasks if (isset($data['sorted_reports']) && count($data['sorted_reports']['reports']) > 0) { $grid_id = 'invoice_' . $invoice->number . '_hours_grid'; $guids = array(); $rows = array(); foreach ($data['sorted_reports']['reports'] as $report) { $row = array(); $guids[] = $report->guid; try { $task = org_openpsa_projects_task_dba::get_cached($report->task); $reporter = org_openpsa_contacts_person_dba::get_cached($report->person); } catch (midcom_error $e) { continue; } $reporter_card = org_openpsa_widgets_contact::get($report->person); $approved_img_src = MIDCOM_STATIC_URL . '/stock-icons/16x16/'; if ($report->is_approved()) { $approved_text = $data['l10n']->get('approved'); $approved_img_src .= 'page-approved.png'; } else { $approved_text = $data['l10n']->get('not approved'); $approved_img_src .= 'page-notapproved.png'; } $approved_img = "<img src='{$approved_img_src}' alt='{$approved_text}' title='{$approved_text}' />"; $row['id'] = $report->id; $row['index_date'] = $report->date;