public static function add_records_to_client_history($history = array(), Sprout_Client $client, $type = '') { $records = SC_Record::get_records_by_association($client->get_id()); if (!empty($records)) { foreach ($records as $record_id) { $record = SC_Record::get_instance($record_id); if ('' !== $type && $type != $record->get_type()) { continue; } // Take care of the standard records only if ($record->get_type() !== SC_Controller::PRIVATE_NOTES_TYPE) { continue; } $r_post = $record->get_post(); $time = strtotime($r_post->post_date); $history[$time] = array('id' => $record_id, 'record_id' => $record_id, 'title' => esc_html($r_post->post_title), 'content' => wpautop($r_post->post_content), 'date' => wpautop($r_post->post_date), 'type' => sc__('Private Note'), 'type_slug' => SC_Controller::PRIVATE_NOTES_TYPE, 'edit' => true); } } return $history; }
public static function show_twitter_feed() { $client = Sprout_Client::get_instance(get_the_id()); if (!is_a($client, 'Sprout_Client')) { return; } if ('' === $client->get_twitter()) { self::_e('No twitter username assigned.'); return; } printf('<a class="twitter-timeline" href="https://twitter.com/%1$s" data-widget-id="%2$s" data-screen-name="%1$s">Tweets by %1$s</a><script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?"http":"https";if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>', $client->get_twitter(), apply_filters('sc_twitter_widget_id', '492426361349234688')); }
function sc_get_status_select($client_id = 0) { if (!$client_id) { $client_id = get_the_ID(); } $client = Sprout_Client::get_instance($client_id); $statuses = $client->get_statuses(); $all_statuses = sc_get_client_statuses(); $status_terms = get_terms(Sprout_Client::STATUS_TAXONOMY, array('hide_empty' => false)); $status_ids = !empty($statuses) ? wp_list_pluck($statuses, 'term_id') : array(); ob_start(); ?> <div id="statuses_<?php echo (int) $client_id; ?> " class="sc_statuses_update"> <span class="status_change_button" data-sa-dropdown="#add_status_<?php echo (int) $client_id; ?> "> <?php printf('<button class="sc_add_status button" title="%1$s">%1$s <span class="dashicons dashicons-arrow-down"></span></button>', esc_attr(sc__('Status'))); ?> </span> <span class="helptip client_status_help" data-sa-dropdown="#client_status_select_help_<?php echo (int) $client_id; ?> "></span> <div id="client_status_select_help_<?php echo (int) $client_id; ?> " class="sa-dropdown sa-dropdown-tip sa-dropdown-relative "> <div class="sa-dropdown-panel"> <?php sc_e('Select all statuses that currently fit this contact.'); ?> </div> </div> <div id="add_status_<?php echo (int) $client_id; ?> " class="sa-dropdown sa-dropdown-tip sa-dropdown-relative status_change_selection" data-item-id="<?php echo (int) $client_id; ?> " data-nonce="<?php echo esc_attr(wp_create_nonce(SC_Controller::NONCE)); ?> " data-vertical-offset="50"> <ul class="sa-dropdown-menu"> <?php foreach ($all_statuses as $term_id => $label) { ?> <?php $checked = !empty($statuses) && in_array($term_id, $status_ids) ? 'checked="checked"' : ''; printf('<li><label><input type="checkbox" value="%1$s" %3$s/><b>%2$s</b></label></li>', (int) $term_id, esc_html($label), esc_attr($checked)); ?> <?php } ?> <li class="sa-dropdown-divider"></li> <li><a href="<?php echo esc_url(admin_url('edit-tags.php?taxonomy=sc_client_status&post_type=sa_client')); ?> "><?php sc_e('Add/Edit Client Statuses'); ?> </a></li> </ul> </div> </div> <div id="current_statuses_<?php echo (int) $client_id; ?> " class="sc_current_statuses"> <?php foreach ($status_terms as $term) { ?> <?php $current_status = !empty($statuses) && in_array($term->term_id, $status_ids) ? 'current' : ''; $url = add_query_arg(array('post_type' => Sprout_Client::POST_TYPE, Sprout_Client::STATUS_TAXONOMY => $term->slug), admin_url('edit.php')); ?> <?php printf('<a href="%4$s" class="button button-small sc_status %2$s status_id_%3$s" title="%1$s">%1$s</a>', esc_attr($term->name), esc_attr($current_status), (int) $term->term_id, esc_url_raw($url)); ?> <?php } ?> </div> <?php $view = ob_get_clean(); return apply_filters('sc_get_status_select', $view, $client_id); }
public static function user_profile_fields($user) { $user_id = $user->ID; self::load_view('admin/user/profile_fields.php', array('user' => $user, 'phone' => self::get_users_phone($user_id), 'twitter' => self::get_users_twitter($user_id), 'linkedin' => self::get_users_linkedin($user_id), 'dob' => self::get_users_dob($user_id), 'note' => self::get_users_note($user_id), 'clients' => Sprout_Client::get_clients_by_user($user_id))); }
/** * Meta box view * Abstracted to be called via AJAX * @param int $client_id * */ public static function associated_users_meta_box_view($client_id = 0) { if (!current_user_can('edit_posts')) { self::ajax_fail('User cannot create new posts!'); } if (!$client_id && isset($_REQUEST['client_id'])) { $client_id = $_REQUEST['client_id']; } $client = Sprout_Client::get_instance($client_id); if (!is_a($client, 'Sprout_Client')) { self::ajax_fail('Client not found.'); } global $post; setup_postdata($client->get_post()); print SC_Clients_Admin_Meta_Boxes::show_people_meta_box($client->get_post()); exit; }
/** * Load the SC application * * @package Sprout_Clients * @return void */ function sprout_clients_load() { if (class_exists('Sprout_Client')) { sc_deactivate_plugin(); return; // already loaded, or a name collision } do_action('sprout_clients_preload'); ////////// // Load // ////////// /** * Master class */ require_once SC_PATH . '/Sprout_Clients.php'; // models require_once SC_PATH . '/models/_Model.php'; require_once SC_PATH . '/models/Client.php'; require_once SC_PATH . '/models/Message.php'; require_once SC_PATH . '/models/Record.php'; // controllers require_once SC_PATH . '/controllers/_Controller.php'; require_once SC_PATH . '/languages/Sprout_Clients_l10n.php'; if (!class_exists('Sprout_Invoices')) { require_once SC_PATH . '/controllers/admin/_Settings.php'; } require_once SC_PATH . '/controllers/admin/Settings.php'; // controllers -- clients require_once SC_PATH . '/controllers/clients/Clients.php'; require_once SC_PATH . '/controllers/clients/Clients_Users.php'; require_once SC_PATH . '/controllers/clients/Clients_Admin_Meta_Boxes.php'; require_once SC_PATH . '/controllers/clients/Clients_Admin_Table.php'; require_once SC_PATH . '/controllers/clients/Clients_AJAX.php'; // controllers -- history require_once SC_PATH . '/controllers/history/Client_History.php'; require_once SC_PATH . '/controllers/history/SI_History.php'; // controllers -- messages require_once SC_PATH . '/controllers/messages/Messages.php'; require_once SC_PATH . '/controllers/messages/Message_Triggers.php'; require_once SC_PATH . '/controllers/messages/Messages_Admin_Meta_Boxes.php'; require_once SC_PATH . '/controllers/messages/Messages_Admin_Settings.php'; require_once SC_PATH . '/controllers/messages/Messages_Admin_Table.php'; require_once SC_PATH . '/controllers/messages/Messages_Route.php'; require_once SC_PATH . '/controllers/messages/Messages_Shortcodes.php'; require_once SC_PATH . '/controllers/messages/Messages_Templates.php'; require_once SC_PATH . '/controllers/records/Internal_Records.php'; require_once SC_PATH . '/controllers/records/Records_Admin_Table.php'; require_once SC_PATH . '/controllers/updates/Updates.php'; // template-tags require_once SC_PATH . '/template-tags/sprout-clients.php'; require_once SC_PATH . '/template-tags/forms.php'; require_once SC_PATH . '/template-tags/ui.php'; require_once SC_PATH . '/template-tags/users.php'; require_once SC_PATH . '/template-tags/utility.php'; /** * Master Model */ SC_Post_Type::init(); /** * Client Model */ Sprout_Client::init(); /** * Messages Model */ SC_Message::init(); /** * Shared Models */ SC_Record::init(); /** * Master Controller */ SC_Controller::init(); /** * Records is shared with Sprout Invoices */ SC_Internal_Records::init(); /** * l10n */ SC_l10n::init(); /** * Settings */ if (!class_exists('Sprout_Invoices')) { SA_Settings_API::init(); } SC_Settings::init(); /** * Clients */ SC_Clients::init(); SC_Users::init(); SC_Clients_Admin_Meta_Boxes::init(); SC_Clients_Admin_Table::init(); SC_Clients_AJAX::init(); SC_Client_History::init(); SC_Invoices_History::init(); /** * Messaging */ /*/ SC_Messages::init(); SC_Messages_Meta::init(); SC_Messages_Admin_Settings::init(); SC_Messages_Route::init(); SC_Message_Shortcodes::init(); SC_Templates::init(); SC_Message_Triggers::init(); /**/ SC_Updates::init(); do_action('sprout_clients_loaded'); }
public static function add_records_to_client_history($history = array(), Sprout_Client $client, $type = '') { $records = array(); $invoices = $client->get_invoices(); if (!empty($invoices)) { foreach ($invoices as $invoice_id) { $records += SC_Record::get_records_by_association($invoice_id); } } $estimates = $client->get_estimates(); if (!empty($estimates)) { foreach ($estimates as $estimate_id) { $records += SC_Record::get_records_by_association($estimate_id); } } if (!empty($records)) { foreach ($records as $record_id) { $record = SC_Record::get_instance($record_id); if ('' !== $type && $type !== $record->get_type()) { continue; } // parent taking care of this one. if ($record->get_type() === SC_Controller::PRIVATE_NOTES_TYPE) { continue; } $r_post = $record->get_post(); $time = strtotime($r_post->post_date); $history[$time] = array('id' => $record_id, 'record_id' => $record_id, 'title' => esc_html($r_post->post_title), 'content' => wpautop($r_post->post_content), 'date' => wpautop($r_post->post_date), 'type_slug' => $record->get_type()); switch ($record->get_type()) { // Sprout Invoices case 'si_history_update': $history[$time]['type'] = sc__('Estimate Updated'); break; case 'si_history_update': $history[$time]['type'] = sc__('Estimate Viewed'); break; case 'si_notification': $history[$time]['type'] = sc__('Notification'); ob_start(); ?> <p> <p> <a href="#TB_inline?width=600&height=380&inlineId=notification_message_<?php echo (int) $r_post->ID; ?> " id="show_notification_tb_link_<?php echo (int) $r_post->ID; ?> " class="thickbox si_tooltip notification_message" title="<?php si_e('View Message'); ?> "><?php si_e('View Message'); ?> </a> </p> <div id="notification_message_<?php echo (int) $r_post->ID; ?> " class="cloak"> <?php echo wpautop($r_post->post_content); ?> </div> </p> <?php $notification_message = ob_get_clean(); $history[$time]['content'] = $notification_message; break; case 'si_invoice_created': $history[$time]['type'] = sc__('Invoice Created'); break; case 'si_history_status_update': default: $history[$time]['type'] = sc__('Status Update'); unset($history[$time]['title']); break; } } } return $history; }
/** * User column display * @param string $empty * @param string $column_name * @param int $id * @return string */ public static function user_column_display($empty = '', $column_name, $id) { switch ($column_name) { case 'contact': $client_ids = Sprout_Client::get_clients_by_user($id); if (!empty($client_ids)) { $string = ''; foreach ($client_ids as $client_id) { $string .= sprintf(self::__('<a class="doc_link" title="%s" href="%s">%s</a>'), get_the_title($client_id), get_edit_post_link($client_id), '<div class="dashicons dashicons-businessman"></div>'); } return $string; } break; default: break; } }