/** @since version 0.7.1.0 */ function _connections_list($atts, $content = null) { global $wpdb, $connections, $current_user; $form = new cnFormObjects(); $convert = new cnFormatting(); $format =& $convert; $template = new stdClass(); $atts = shortcode_atts(array('id' => NULL, 'category' => NULL, 'exclude_category' => NULL, 'category_name' => NULL, 'wp_current_category' => 'false', 'allow_public_override' => 'false', 'private_override' => 'false', 'show_alphaindex' => 'false', 'repeat_alphaindex' => 'false', 'show_alphahead' => 'false', 'list_type' => NULL, 'limit' => NULL, 'offset' => NULL, 'order_by' => NULL, 'group_name' => NULL, 'last_name' => NULL, 'title' => NULL, 'organization' => NULL, 'department' => NULL, 'city' => NULL, 'state' => NULL, 'zip_code' => NULL, 'country' => NULL, 'template' => NULL, 'template_name' => NULL), $atts); /* * Convert some of the $atts values in the array to boolean. */ $convert->toBoolean(&$atts['allow_public_override']); $convert->toBoolean(&$atts['private_override']); $convert->toBoolean(&$atts['show_alphaindex']); $convert->toBoolean(&$atts['repeat_alphaindex']); $convert->toBoolean(&$atts['show_alphahead']); $convert->toBoolean(&$atts['wp_current_category']); $permittedListTypes = array('individual', 'organization', 'family', 'connection_group'); // Convert the supplied entry types $atts['list_type'] to an array. if (!empty($atts['list_type'])) { // Trim the space characters if present. $atts['list_type'] = str_replace(' ', '', $atts['list_type']); // Convert to array. $atts['list_type'] = explode(',', $atts['list_type']); } // Set the template type to the first in the entry type from the supplied if multiple list types are provided. if (!empty($atts['list_type']) && (bool) array_intersect((array) $atts['list_type'], $permittedListTypes)) { $templateType = $atts['list_type'][0]; } /* * As of version 0.7.0.5 the $atts['template_name'] is deprecated. */ if (isset($atts['template_name'])) { // First check to see if the template is in the custom template folder. if (is_dir(CN_CUSTOM_TEMPLATE_PATH) && is_readable(CN_CUSTOM_TEMPLATE_PATH)) { if (file_exists(CN_CUSTOM_TEMPLATE_PATH . '/' . $atts['template_name'] . '.php')) { $template->file = CN_CUSTOM_TEMPLATE_PATH . '/' . $atts['template_name'] . '.php'; } } // If the template is not in the custom template folder, check for it in the default template folder. if (!isset($template->file)) { if (file_exists(CN_BASE_PATH . '/templates/' . $atts['template_name'] . '.php')) { $template->file = CN_BASE_PATH . '/templates/' . $atts['template_name'] . '.php'; } } } else { $template = new cnTemplate(); // Change the list type to family from connection_group to maintain compatibility with versions .0.7.0.4 and earlier. if ($atts['list_type'] === 'connection_group') { $atts['list_type'] = 'family'; } /* * $atts['template'] can be either a string or an object. It is a string when set * with the shortcode attribute. If it is a string, the template will be loaded * via the cnTemplate class. * * If the attribute is not set, it will be the object returned from the * cnOptions::getActiveTemplate() method which stores the default template * per list style. */ if (isset($atts['template']) && !is_object($atts['template'])) { $template->load($atts['template']); $template->includeFunctions(); } else { if (empty($templateType)) { $templateType = 'all'; } // If no list type was specified, set the default ALL template. $template->init($connections->options->getActiveTemplate($templateType)); $template->includeFunctions(); } } // If no template is found, return an error message. if (!isset($template->file)) { return '<p style="color:red; font-weight:bold; text-align:center;">ERROR: Template "' . $atts['template_name'] . $atts['template'] . '" not found.</p>'; } $atts = apply_filters('cn_list_atts', $atts); $results = $connections->retrieve->entries($atts); //print_r($connections->lastQuery); if (!empty($results)) { $results = apply_filters('cn_list_results', $results); } // Prints the template's CSS file. if (method_exists($template, 'printCSS')) { $out .= $template->printCSS(); } // Prints the javascript tag in the footer if $template->js path is set if (method_exists($template, 'printJS')) { $template->printJS(); } $out = apply_filters('cn_list_before', $out, $results); // If there are no results no need to proceed and output message. if (empty($results)) { $noResultMessage = 'No results'; $noResultMessage = apply_filters('cn_no_result_message', $noResultMessage); return $out . '<p class="cn-no-results">' . $noResultMessage . '</p>'; } $out .= '<a name="connections-list-head" style="float: left;"></a>' . "\n"; /* * The alpha index is only displayed if set set to true and not set to repeat using the shortcode attributes. * If a alpha index is set to repeat, that is handled down separately. */ if ($atts['show_alphaindex'] && !$atts['repeat_alphaindex']) { $index = "<div class='cn-alphaindex' style='text-align:right;font-size:larger;font-weight:bold'>" . $form->buildAlphaIndex() . "</div>"; $out .= apply_filters('cn_list_index', $index, $results); } $out .= '<div class="connections-list">' . "\n"; foreach ((array) $results as $row) { //$entry = new cnOutput($row); $entry = new cnvCard($row); //$vCard = new cnvCard($row); $vCard =& $entry; if (isset($continue)) { unset($continue); } if (isset($cities)) { unset($cities); } if (isset($states)) { unset($states); } if (isset($zipcodes)) { unset($zipcodes); } if (isset($countries)) { unset($countries); } if (isset($setAnchor)) { unset($setAnchor); } /* * Check to make sure there is data stored in the address array. * Cycle thru each address, building separate arrays for city, state, zip and country. */ if ($entry->getAddresses()) { foreach ($entry->getAddresses() as $address) { if ($address->city != NULL) { $cities[] = $address->city; } if ($address->state != NULL) { $states[] = $address->state; } if ($address->zipcode != NULL) { $zipcodes[] = $address->zipcode; } if ($address->country != NULL) { $countries[] = $address->country; } } } /* * Filter out the entries that are wanted based on the * filter attributes that may have been used in the shortcode. * * NOTE: The '@' operator is used to suppress PHP generated errors. This is done * because not every entry will have addresses to populate the arrays created above. * * NOTE: Since the entry class returns all fields escaped, the shortcode filter * attribute needs to be escaped as well so the comparason between the two functions * as expected. */ $atts['group_name'] = esc_attr($atts['group_name']); $atts['last_name'] = esc_attr($atts['last_name']); $atts['title'] = esc_attr($atts['title']); $atts['organization'] = esc_attr($atts['organization']); $atts['department'] = esc_attr($atts['department']); if ($entry->getFamilyName() != $atts['group_name'] && $atts['group_name'] != null) { $continue = true; } if ($entry->getLastName() != $atts['last_name'] && $atts['last_name'] != null) { $continue = true; } if ($entry->getTitle() != $atts['title'] && $atts['title'] != null) { $continue = true; } if ($entry->getOrganization() != $atts['organization'] && $atts['organization'] != null) { $continue = true; } if ($entry->getDepartment() != $atts['department'] && $atts['department'] != null) { $continue = true; } if (@(!in_array($atts['city'], $cities)) && $atts['city'] != null) { $continue = true; } if (@(!in_array($atts['state'], $states)) && $atts['state'] != null) { $continue = true; } if (@(!in_array($atts['zip_code'], $zipcodes)) && $atts['zip_code'] != null) { $continue = true; } if (@(!in_array($atts['country'], $countries)) && $atts['country'] != null) { $continue = true; } /* * If any of the above filters returned true, the script will continue to the next entry. */ if ($continue == true) { continue; } /* * Checks the first letter of the last name to see if it is the next * letter in the alpha array and sets the anchor. * * If the alpha index is set to repeat it will append to the anchor. * * If the alpha head set to true it will append the alpha head to the anchor. */ $currentLetter = strtoupper(mb_substr($entry->getSortColumn(), 0, 1)); if ($currentLetter != $previousLetter && $atts['id'] == null) { if ($atts['show_alphaindex']) { $setAnchor = '<a class="cn-index-head" name="' . $currentLetter . '"></a>'; } if ($atts['show_alphaindex'] && $atts['repeat_alphaindex']) { $setAnchor .= "<div class='cn-alphaindex' style='text-align:right;font-size:larger;font-weight:bold'>" . $form->buildAlphaIndex() . "</div>"; } if ($atts['show_alphahead']) { $setAnchor .= '<h4 class="cn-alphahead">' . $currentLetter . '</h4>'; } $previousLetter = $currentLetter; } else { $setAnchor = null; } /* * The anchor and/or the alpha head is displayed if set to true using the shortcode attributes. */ if ($atts['show_alphaindex'] || $atts['show_alphahead']) { $out .= $setAnchor; } $alternate == '' ? $alternate = '-alternate' : ($alternate = ''); $out .= '<div class="cn-list-row' . $alternate . ' vcard ' . $template->slug . ' ' . $entry->getCategoryClass(TRUE) . '">' . "\n"; $out = apply_filters('cn_entry_before', $out, $entry); ob_start(); include $template->file; $out .= ob_get_contents(); ob_end_clean(); $out = apply_filters('cn_entry_after', $out, $entry); $out .= '</div>' . "\n"; } $out .= '<div class="clear"></div>' . "\n"; $out .= '</div>' . "\n"; $out = apply_filters('cn_list_after', $out, $results); return $out; }
function connectionsShowViewPage() { global $wpdb, $connections; if (isset($_GET['action'])) { $action = $_GET['action']; } else { $action = NULL; } ?> <div class="wrap"> <div class="icon32" id="icon-connections"><br/></div> <h2>Connections</h2> <?php $connections->displayMessages(); switch ($action) { case 'add_new': /* * Check whether current user can add an entry. */ if (current_user_can('connections_add_entry')) { add_meta_box('metabox-name', 'Name', array(&$form, 'metaboxName'), $connections->pageHook->manage, 'normal', 'high'); $form = new cnFormObjects(); $entry = new cnEntry(); echo '<div id="poststuff" class="metabox-holder has-right-sidebar">'; echo '<h2><a name="new"></a>Add Entry</h2>'; $attr = array('action' => 'admin.php?page=connections&action=add', 'method' => 'post', 'enctype' => 'multipart/form-data'); $form->open($attr); $form->tokenField('add_entry'); wp_nonce_field('howto-metaboxes-general'); wp_nonce_field('closedpostboxes', 'closedpostboxesnonce', false); wp_nonce_field('meta-box-order', 'meta-box-order-nonce', false); echo '<input type="hidden" name="action" value="save_howto_metaboxes_general" />'; echo '<div id="side-info-column" class="inner-sidebar">'; do_meta_boxes($connections->pageHook->manage, 'side', $entry); echo '</div>'; echo '<div id="post-body" class="has-sidebar">'; echo '<div id="post-body-content" class="has-sidebar-content">'; do_meta_boxes($connections->pageHook->manage, 'normal', $entry); echo '</div>'; echo '</div>'; $form->close(); echo '</div>'; ?> <script type="text/javascript"> //<![CDATA[ jQuery(document).ready( function($) { // close postboxes that should be closed $('.if-js-closed').removeClass('if-js-closed').addClass('closed'); // postboxes setup postboxes.add_postbox_toggles('<?php echo $connections->pageHook->manage; ?> '); }); //]]> </script> <?php unset($entry); } else { $connections->setErrorMessage('capability_add'); } break; case 'copy': /* * Check whether current user can add an entry. */ if (current_user_can('connections_add_entry')) { $id = esc_attr($_GET['id']); check_admin_referer('entry_copy_' . $id); add_meta_box('metabox-name', 'Name', array(&$form, 'metaboxName'), $connections->pageHook->manage, 'normal', 'high'); $form = new cnFormObjects(); $entry = new cnEntry($connections->retrieve->entry($id)); echo '<div id="poststuff" class="metabox-holder has-right-sidebar">'; echo '<h2><a name="new"></a>Add Entry</h2>'; $attr = array('action' => 'admin.php?page=connections&action=add&id=' . $id, 'method' => 'post', 'enctype' => 'multipart/form-data'); $form->open($attr); $form->tokenField('add_entry'); wp_nonce_field('howto-metaboxes-general'); wp_nonce_field('closedpostboxes', 'closedpostboxesnonce', false); wp_nonce_field('meta-box-order', 'meta-box-order-nonce', false); echo '<input type="hidden" name="action" value="save_howto_metaboxes_general" />'; echo '<div id="side-info-column" class="inner-sidebar">'; do_meta_boxes($connections->pageHook->manage, 'side', $entry); echo '</div>'; echo '<div id="post-body" class="has-sidebar">'; echo '<div id="post-body-content" class="has-sidebar-content">'; do_meta_boxes($connections->pageHook->manage, 'normal', $entry); echo '</div>'; echo '</div>'; $form->close(); echo '</div>'; ?> <script type="text/javascript"> //<![CDATA[ jQuery(document).ready( function($) { // close postboxes that should be closed $('.if-js-closed').removeClass('if-js-closed').addClass('closed'); // postboxes setup postboxes.add_postbox_toggles('<?php echo $connections->pageHook->manage; ?> '); }); //]]> </script> <?php unset($entry); } else { $connections->setErrorMessage('capability_add'); } break; case 'edit': /* * Check whether the current user can edit entries. */ if (current_user_can('connections_edit_entry')) { $id = esc_attr($_GET['id']); check_admin_referer('entry_edit_' . $id); add_meta_box('metabox-name', 'Name', array(&$form, 'metaboxName'), $connections->pageHook->manage, 'normal', 'high'); $form = new cnFormObjects(); $entry = new cnEntry($connections->retrieve->entry($id)); echo '<div id="poststuff" class="metabox-holder has-right-sidebar">'; echo '<h2><a name="new"></a>Edit Entry</h2>'; $attr = array('action' => 'admin.php?page=connections&action=update&id=' . $id, 'method' => 'post', 'enctype' => 'multipart/form-data'); $form->open($attr); $form->tokenField('update_entry'); wp_nonce_field('howto-metaboxes-general'); wp_nonce_field('closedpostboxes', 'closedpostboxesnonce', false); wp_nonce_field('meta-box-order', 'meta-box-order-nonce', false); echo '<input type="hidden" name="action" value="save_howto_metaboxes_general" />'; echo '<div id="side-info-column" class="inner-sidebar">'; do_meta_boxes($connections->pageHook->manage, 'side', $entry); echo '</div>'; echo '<div id="post-body" class="has-sidebar">'; echo '<div id="post-body-content" class="has-sidebar-content">'; do_meta_boxes($connections->pageHook->manage, 'normal', $entry); echo '</div>'; echo '</div>'; $form->close(); echo '</div>'; ?> <script type="text/javascript"> //<![CDATA[ jQuery(document).ready( function($) { // close postboxes that should be closed $('.if-js-closed').removeClass('if-js-closed').addClass('closed'); // postboxes setup postboxes.add_postbox_toggles('<?php echo $connections->pageHook->manage; ?> '); }); //]]> </script> <?php unset($entry); } else { $connections->setErrorMessage('capability_edit'); } break; default: $form = new cnFormObjects(); $categoryObjects = new cnCategoryObjects(); /* * Check whether user can view the entry list */ if (current_user_can('connections_view_entry_list')) { ?> <?php $retrieveAttr['list_type'] = $connections->currentUser->getFilterEntryType(); $retrieveAttr['category'] = $connections->currentUser->getFilterCategory(); $retrieveAttr['visibility'] = $connections->currentUser->getFilterVisibility(); $results = $connections->retrieve->entries($retrieveAttr); //print_r($connections->lastQuery); ?> <form action="admin.php?page=connections&action=do" method="post"> <?php $form->tokenField('bulk_action'); ?> <div class="tablenav"> <div class="alignleft actions"> <?php echo '<select class="postform" id="category" name="category">'; echo '<option value="-1">Show All Categories</option>'; echo $categoryObjects->buildCategoryRow('option', $connections->retrieve->categories(), $level, $connections->currentUser->getFilterCategory()); echo '</select>'; echo $form->buildSelect('entry_type', array('all' => 'Show All Enties', 'individual' => 'Show Individuals', 'organization' => 'Show Organizations', 'family' => 'Show Families'), $connections->currentUser->getFilterEntryType()); ?> <?php /* * Builds the visibilty select list base on current user capabilities. */ if (current_user_can('connections_view_public') || $connections->options->getAllowPublic()) { $visibilitySelect['public'] = 'Show Public'; } if (current_user_can('connections_view_private')) { $visibilitySelect['private'] = 'Show Private'; } if (current_user_can('connections_view_unlisted')) { $visibilitySelect['unlisted'] = 'Show Unlisted'; } if (isset($visibilitySelect)) { /* * Add the 'Show All' option and echo the list. */ $showAll['all'] = 'Show All'; $visibilitySelect = $showAll + $visibilitySelect; echo $form->buildSelect('visibility_type', $visibilitySelect, $connections->currentUser->getFilterVisibility()); } ?> <input id="doaction" class="button-secondary action" type="submit" name="filter" value="Filter" /> <input type="hidden" name="formId" value="do_action" /> <input type="hidden" name="token" value="<?php echo $form->token("do_action"); ?> " /> </div> </div> <div class="clear"></div> <div class="tablenav"> <?php if (current_user_can('connections_edit_entry') || current_user_can('connections_delete_entry')) { echo '<div class="alignleft actions">'; echo '<select name="action">'; echo '<option value="" SELECTED>Bulk Actions</option>'; $bulkActions = array(); if (current_user_can('connections_edit_entry')) { $bulkActions['public'] = 'Set Public'; $bulkActions['private'] = 'Set Private'; $bulkActions['unlisted'] = 'Set Unlisted'; } if (current_user_can('connections_delete_entry')) { $bulkActions['delete'] = 'Delete'; } $bulkActions = apply_filters('cn_view_bulk_actions', $bulkActions); foreach ($bulkActions as $action => $string) { echo '<option value="', $action, '">', $string, '</option>'; } echo '</select>'; echo '<input id="doaction" class="button-secondary action" type="submit" name="doaction" value="Apply" />'; echo '</div>'; } ?> <div class="tablenav-pages"> <?php echo '<span class="displaying-num">Displaying ', $connections->resultCount, ' of ', $connections->recordCount, ' records.</span>'; /* * Dynamically builds the alpha index based on the available entries. */ $previousLetter = NULL; $setAnchor = NULL; foreach ($results as $row) { $entry = new cnEntry($row); $currentLetter = strtoupper(mb_substr($entry->getSortColumn(), 0, 1)); if ($currentLetter != $previousLetter) { $setAnchor .= '<a href="#' . $currentLetter . '">' . $currentLetter . '</a> '; $previousLetter = $currentLetter; } } echo $setAnchor; ?> </div> </div> <div class="clear"></div> <table cellspacing="0" class="widefat connections"> <thead> <tr> <th class="manage-column column-cb check-column" id="cb" scope="col"><input type="checkbox"/></th> <th class="col" style="width:10%;"></th> <th scope="col" colspan="2" style="width:40%;">Name</th> <th scope="col" style="width:30%;">Categories</th> <th scope="col" style="width:20%;">Last Modified</th> </tr> </thead> <tfoot> <tr> <th class="manage-column column-cb check-column" scope="col"><input type="checkbox"/></th> <th class="col" style="width:10%;"></th> <th scope="col" colspan="2" style="width:40%;">Name</th> <th scope="col" style="width:30%;">Categories</th> <th scope="col" style="width:20%;">Last Modified</th> </tr> </tfoot> <tbody> <?php foreach ($results as $row) { /** * @TODO: Use the Output class to show entry details. */ $entry = new cnvCard($row); $vCard =& $entry; $currentLetter = strtoupper(mb_substr($entry->getSortColumn(), 0, 1)); if ($currentLetter != $previousLetter) { $setAnchor = "<a name='{$currentLetter}'></a>"; $previousLetter = $currentLetter; } else { $setAnchor = null; } /* * Genreate the edit, copy and delete URLs with nonce tokens. */ $editTokenURL = $form->tokenURL('admin.php?page=connections&action=edit&id=' . $entry->getId(), 'entry_edit_' . $entry->getId()); $copyTokenURL = $form->tokenURL('admin.php?page=connections&action=copy&id=' . $entry->getId(), 'entry_copy_' . $entry->getId()); $deleteTokenURL = $form->tokenURL('admin.php?page=connections&action=delete&id=' . $entry->getId(), 'entry_delete_' . $entry->getId()); echo "<tr id='row-" . $entry->getId() . "' class='parent-row'>"; echo "<th class='check-column' scope='row'><input type='checkbox' value='" . $entry->getId() . "' name='entry[]'/></th> \n"; echo '<td>'; echo $entry->getThumbnailImage(array('place_holder' => TRUE)); echo '</td>'; echo '<td colspan="2">'; if ($setAnchor) { echo $setAnchor; } echo '<div style="float:right"><a href="#wphead" title="Return to top."><img src="' . WP_PLUGIN_URL . '/connections/images/uparrow.gif" /></a></div>'; if (current_user_can('connections_edit_entry')) { echo '<a class="row-title" title="Edit ' . $entry->getFullFirstLastName() . '" href="' . $editTokenURL . '"> ' . $entry->getFullLastFirstName() . '</a><br />'; } else { echo '<strong>' . $entry->getFullLastFirstName() . '</strong>'; } echo '<div class="row-actions">'; echo '<a class="detailsbutton" id="row-' . $entry->getId() . '">Show Details</a> | '; echo $vCard->download(array('anchorText' => 'vCard')) . ' | '; if (current_user_can('connections_edit_entry')) { echo '<a class="editbutton" href="' . $editTokenURL . '" title="Edit ' . $entry->getFullFirstLastName() . '">Edit</a> | '; } if (current_user_can('connections_add_entry')) { echo '<a class="copybutton" href="' . $copyTokenURL . '" title="Copy ' . $entry->getFullFirstLastName() . '">Copy</a> | '; } if (current_user_can('connections_delete_entry')) { echo '<a class="submitdelete" onclick="return confirm(\'You are about to delete this entry. \\\'Cancel\\\' to stop, \\\'OK\\\' to delete\');" href="' . $deleteTokenURL . '" title="Delete ' . $entry->getFullFirstLastName() . '">Delete</a>'; } echo '</div>'; echo "</td> \n"; echo "<td > \n"; $categories = $entry->getCategory(); if (!empty($categories)) { $i = 0; foreach ($categories as $category) { /* * Genreate the category link token URL. */ $categoryFilterURL = $form->tokenURL('admin.php?page=connections&action=filter&category_id=' . $category->term_id, 'filter'); echo '<a href="' . $categoryFilterURL . '">' . $category->name . '</a>'; $i++; if (count($categories) > $i) { echo ', '; } } unset($i); } echo "</td> \n"; echo '<td >'; echo '<strong>On:</strong> ' . $entry->getFormattedTimeStamp('m/d/Y g:ia') . '<br />'; echo '<strong>By:</strong> ' . $entry->getEditedBy() . '<br />'; echo '<strong>Visibility:</strong> ' . $entry->displayVisibiltyType(); echo "</td> \n"; echo "</tr> \n"; echo "<tr class='child-row-" . $entry->getId() . " entrydetails' id='contact-" . $entry->getId() . "-detail' style='display:none;'>"; echo "<td colspan='2' > </td> \n"; //echo "<td > </td> \n"; echo "<td colspan='2'>"; /* * Check if the entry has relations. Count the relations and then cycle thru each relation. * Before the out check that the related entry still exists. If it does and the current user * has edit capabilites the edit link will be displayed. If the user does not have edit capabilities * the only the relation will be shown. After all relations have been output insert a <br> * for spacing [@TODO: NOTE: this should be done with styles]. */ if ($entry->getFamilyMembers()) { $count = count($entry->getFamilyMembers()); $i = 0; foreach ($entry->getFamilyMembers() as $key => $value) { $relation = new cnEntry(); $relation->set($key); $editRelationTokenURL = $form->tokenURL('admin.php?page=connections&action=edit&id=' . $relation->getId(), 'entry_edit_' . $relation->getId()); if ($relation->getId()) { if (current_user_can('connections_edit_entry')) { echo '<strong>' . $connections->options->getFamilyRelation($value) . ':</strong> ' . '<a href="' . $editRelationTokenURL . '" title="Edit ' . $relation->getFullFirstLastName() . '">' . $relation->getFullFirstLastName() . '</a><br />' . "\n"; } else { echo '<strong>' . $connections->options->getFamilyRelation($value) . ':</strong> ' . $relation->getFullFirstLastName() . '<br />' . "\n"; } } if ($count - 1 == $i) { echo '<br />'; } // Insert a break after all connections are listed. $i++; unset($relation); } unset($i); unset($count); } if ($entry->getContactFirstName() || $entry->getContactLastName()) { echo '<strong>Contact:</strong> ' . $entry->getContactFirstName() . ' ' . $entry->getContactLastName() . '<br />'; } if ($entry->getTitle()) { echo '<strong>Title:</strong> ' . $entry->getTitle() . '<br />'; } if ($entry->getOrganization() && $entry->getEntryType() !== 'organization') { echo '<strong>Organization:</strong> ' . $entry->getOrganization() . '<br />'; } if ($entry->getDepartment()) { echo '<strong>Department:</strong> ' . $entry->getDepartment() . '<br />'; } if ($entry->getAddresses()) { foreach ($entry->getAddresses() as $address) { echo "<div style='margin-bottom: 10px;'>"; if ($address->name != NULL || $address->type) { echo "<strong>" . $address->name . "</strong><br />"; } //The OR is for compatiblity for 0.2.24 and under if ($address->line_one != NULL) { echo $address->line_one . "<br />"; } if ($address->line_two != NULL) { echo $address->line_two . "<br />"; } if ($address->city != NULL) { echo $address->city . " "; } if ($address->state != NULL) { echo $address->state . " "; } if ($address->zipcode != NULL) { echo $address->zipcode . "<br />"; } if ($address->country != NULL) { echo $address->country; } echo "</div>"; } } echo "</td> \n"; echo "<td>"; if ($entry->getEmailAddresses()) { foreach ($entry->getEmailAddresses() as $emailRow) { if ($emailRow->address != null) { echo "<strong>" . $emailRow->name . ":</strong><br /><a href='mailto:" . $emailRow->address . "'>" . $emailRow->address . "</a><br /><br />"; } } } if ($entry->getIm()) { foreach ($entry->getIm() as $imRow) { if ($imRow->id != "") { echo "<strong>" . $imRow->name . ":</strong><br />" . $imRow->id . "<br /><br />"; } } } if ($entry->getSocialMedia()) { foreach ($entry->getSocialMedia() as $socialNetwork) { if ($socialNetwork->id != "") { echo "<strong>" . $socialNetwork->name . ":</strong><br /><a target='_blank' href='" . $socialNetwork->url . "'>" . $socialNetwork->url . "</a><br /><br />"; } } } if ($entry->getWebsites()) { foreach ($entry->getWebsites() as $website) { if ($website->url != "") { echo "<strong>Website:</strong><br /><a target='_blank' href='" . $website->url . "'>" . $website->url . "</a><br /><br />"; } } } if ($entry->getPhoneNumbers()) { foreach ($entry->getPhoneNumbers() as $phone) { if ($phone->number != "") { echo "<strong>" . $phone->name . "</strong>: " . $phone->number . "<br />"; } } } echo "</td> \n"; echo "<td>"; if ($entry->getBirthday()) { echo "<strong>Birthday:</strong><br />" . $entry->getBirthday() . "<br /><br />"; } if ($entry->getAnniversary()) { echo "<strong>Anniversary:</strong><br />" . $entry->getAnniversary(); } echo "</td> \n"; echo "</tr> \n"; echo "<tr class='child-row-" . $entry->getId() . " entrynotes' id='contact-" . $entry->getId() . "-detail-notes' style='display:none;'>"; echo "<td colspan='2'> </td> \n"; //echo "<td > </td> \n"; echo "<td colspan='3'>"; if ($entry->getBio()) { echo "<strong>Bio:</strong> " . $entry->getBio() . "<br />"; } else { echo " "; } if ($entry->getNotes()) { echo "<strong>Notes:</strong> " . $entry->getNotes(); } else { echo " "; } echo "</td> \n"; echo '<td> <strong>Entry ID:</strong> ' . $entry->getId() . '<br />' . ' <strong>Date Added:</strong> ' . $entry->getDateAdded('m/d/Y g:ia') . '<br /> <strong>Added By:</strong> ' . $entry->getAddedBy() . '<br />'; if (!$entry->getImageLinked()) { echo "<br /><strong>Image Linked:</strong> No"; } else { echo "<br /><strong>Image Linked:</strong> Yes"; } if ($entry->getImageLinked() && $entry->getImageDisplay()) { echo "<br /><strong>Display:</strong> Yes"; } else { echo "<br /><strong>Display:</strong> No"; } echo "</td> \n"; echo "</tr> \n"; } ?> </tbody> </table> </form> <p style="font-size:smaller; text-align:center">This is version <?php echo $connections->options->getVersion(), '-', $connections->options->getDBVersion(); ?> of Connections.</p> <form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="text-align:center"> <input type="hidden" name="cmd" value="_s-xclick"> <input type="hidden" name="hosted_button_id" value="5070255"> <input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> <img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"> </form> <script type="text/javascript"> /* <![CDATA[ */ (function($){ $(document).ready(function(){ $('#doaction, #doaction2').click(function(){ if ( $('select[name^="action"]').val() == 'delete' ) { var m = 'You are about to delete the selected entry(ies).\n \'Cancel\' to stop, \'OK\' to delete.'; return showNotice.warn(m); } }); }); })(jQuery); /* ]]> */ </script> <?php } else { $connections->setErrorMessage('capability_view_entry_list'); } break; } ?> </div> <?php }
function connectionsShowViewPage($action = NULL) { // Grab an instance of the Connections object. $instance = Connections_Directory(); $queryVars = array(); echo '<div class="wrap">'; switch ($action) { case 'add_entry': echo '<h2>Connections : ', __('Add Entry', 'connections'), '</h2>'; /* * Check whether current user can add an entry. */ if (current_user_can('connections_add_entry') || current_user_can('connections_add_entry_moderated')) { $form = new cnFormObjects(); $entry = new cnOutput(); $attr = array('id' => 'cn-form', 'method' => 'post', 'enctype' => 'multipart/form-data'); $form->open($attr); $field = array('id' => 'metabox-name', 'title' => __('Name', 'connections'), 'context' => 'normal', 'priority' => 'high', 'callback' => array('cnEntryMetabox', 'name')); cnMetabox_Render::add($instance->pageHook->add, $field); echo '<div id="poststuff">'; echo '<div id="post-body" class="metabox-holder columns-' . (1 == get_current_screen()->get_columns() ? '1' : '2') . '">'; wp_nonce_field('cn-manage-metaboxes'); wp_nonce_field('closedpostboxes', 'closedpostboxesnonce', FALSE); wp_nonce_field('meta-box-order', 'meta-box-order-nonce', FALSE); $form->tokenField('add_entry', FALSE, '_cn_wpnonce', FALSE); do_action('cn_admin_form_add_entry_before', $entry, $form); echo '<div id="postbox-container-1" class="postbox-container">'; echo '<div id="side-sortables" class="meta-box-sortables ui-sortable">'; do_meta_boxes($instance->pageHook->add, 'side', $entry); echo '</div> <!-- #side-sortables -->'; echo '</div> <!-- #postbox-container-1 -->'; echo '<div id="postbox-container-2" class="postbox-container">'; echo '<div id="normal-sortables" class="meta-box-sortables ui-sortable">'; do_meta_boxes($instance->pageHook->add, 'normal', $entry); echo '</div> <!-- #normal-sortables -->'; echo '</div> <!-- #postbox-container-2 -->'; do_action('cn_admin_form_add_entry_after', $entry, $form); echo '</div> <!-- #post-body -->'; echo '<br class="clear">'; echo '</div> <!-- #poststuff -->'; $form->close(); unset($entry); } else { cnMessage::render('error', __('You are not authorized to add entries. Please contact the admin if you received this message in error.', 'connections')); } break; case 'copy_entry': echo '<div class="wrap">'; echo '<h2>Connections : ', __('Copy Entry', 'connections'), '</h2>'; /* * Check whether current user can add an entry. */ if (current_user_can('connections_add_entry') || current_user_can('connections_add_entry_moderated')) { $id = esc_attr($_GET['id']); check_admin_referer('entry_copy_' . $id); $form = new cnFormObjects(); $entry = new cnOutput($instance->retrieve->entry($id)); $attr = array('id' => 'cn-form', 'method' => 'post', 'enctype' => 'multipart/form-data'); $form->open($attr); $field = array('id' => 'metabox-name', 'title' => __('Name', 'connections'), 'context' => 'normal', 'priority' => 'high', 'callback' => array('cnEntryMetabox', 'name')); cnMetabox_Render::add($instance->pageHook->manage, $field); echo '<div id="poststuff">'; echo '<div id="post-body" class="metabox-holder columns-' . (1 == get_current_screen()->get_columns() ? '1' : '2') . '">'; wp_nonce_field('cn-manage-metaboxes'); wp_nonce_field('closedpostboxes', 'closedpostboxesnonce', FALSE); wp_nonce_field('meta-box-order', 'meta-box-order-nonce', FALSE); $form->tokenField('add_entry', FALSE, '_cn_wpnonce', FALSE); do_action('cn_admin_form_copy_entry_before', $entry, $form); echo '<div id="postbox-container-1" class="postbox-container">'; echo '<div id="side-sortables" class="meta-box-sortables ui-sortable">'; do_meta_boxes($instance->pageHook->manage, 'side', $entry); echo '</div> <!-- #side-sortables -->'; echo '</div> <!-- #postbox-container-1 -->'; echo '<div id="postbox-container-2" class="postbox-container">'; echo '<div id="normal-sortables" class="meta-box-sortables ui-sortable">'; do_meta_boxes($instance->pageHook->manage, 'normal', $entry); echo '</div> <!-- #normal-sortables -->'; echo '</div> <!-- #postbox-container-2 -->'; do_action('cn_admin_form_copy_entry_after', $entry, $form); echo '</div> <!-- #post-body -->'; echo '<br class="clear">'; echo '</div> <!-- #poststuff -->'; $form->close(); unset($entry); } else { cnMessage::render('error', __('You are not authorized to add entries. Please contact the admin if you received this message in error.', 'connections')); } break; case 'edit_entry': echo '<h2>Connections : ', __('Edit Entry', 'connections'), '</h2>'; /* * Check whether the current user can edit entries. */ if (current_user_can('connections_edit_entry') || current_user_can('connections_edit_entry_moderated')) { $id = esc_attr($_GET['id']); check_admin_referer('entry_edit_' . $id); $form = new cnFormObjects(); $entry = new cnOutput($instance->retrieve->entry($id)); $attr = array('id' => 'cn-form', 'action' => 'admin.php?connections_process=true&process=manage&action=update&id=' . $id, 'method' => 'post', 'enctype' => 'multipart/form-data'); $form->open($attr); $field = array('id' => 'metabox-name', 'title' => __('Name', 'connections'), 'context' => 'normal', 'priority' => 'high', 'callback' => array('cnEntryMetabox', 'name')); cnMetabox_Render::add($instance->pageHook->manage, $field); echo '<div id="poststuff">'; echo '<div id="post-body" class="metabox-holder columns-' . (1 == get_current_screen()->get_columns() ? '1' : '2') . '">'; wp_nonce_field('cn-manage-metaboxes'); wp_nonce_field('closedpostboxes', 'closedpostboxesnonce', FALSE); wp_nonce_field('meta-box-order', 'meta-box-order-nonce', FALSE); $form->tokenField('update_entry', FALSE, '_cn_wpnonce', FALSE); do_action('cn_admin_form_edit_entry_before', $entry, $form); echo '<div id="postbox-container-1" class="postbox-container">'; echo '<div id="side-sortables" class="meta-box-sortables ui-sortable">'; do_meta_boxes($instance->pageHook->manage, 'side', $entry); echo '</div> <!-- #side-sortables -->'; echo '</div> <!-- #postbox-container-1 -->'; echo '<div id="postbox-container-2" class="postbox-container">'; echo '<div id="normal-sortables" class="meta-box-sortables ui-sortable">'; do_meta_boxes($instance->pageHook->manage, 'normal', $entry); echo '</div> <!-- #normal-sortables -->'; echo '</div> <!-- #postbox-container-2 -->'; do_action('cn_admin_form_edit_entry_after', $entry, $form); echo '</div> <!-- #post-body -->'; echo '<br class="clear">'; echo '</div> <!-- #poststuff -->'; $form->close(); unset($entry); } else { cnMessage::render('error', __('You are not authorized to edit entries. Please contact the admin if you received this message in error.', 'connections')); } break; default: $form = new cnFormObjects(); $page = $instance->currentUser->getFilterPage('manage'); $offset = ($page->current - 1) * $page->limit; echo '<div class="wrap">'; echo get_screen_icon('connections'); echo '<h2>Connections : ', __('Manage', 'connections'), ' <a class="button add-new-h2" href="admin.php?page=connections_add">', __('Add New', 'connections'), '</a></h2>'; /* * Check whether user can view the entry list */ if (current_user_can('connections_manage')) { $retrieveAttr['list_type'] = $instance->currentUser->getFilterEntryType(); $retrieveAttr['category'] = $instance->currentUser->getFilterCategory(); $retrieveAttr['char'] = isset($_GET['cn-char']) && 0 < strlen($_GET['cn-char']) ? $_GET['cn-char'] : ''; $retrieveAttr['visibility'] = $instance->currentUser->getFilterVisibility(); $retrieveAttr['status'] = $instance->currentUser->getFilterStatus(); $retrieveAttr['limit'] = $page->limit; $retrieveAttr['offset'] = $offset; if (isset($_GET['s']) && !empty($_GET['s'])) { $retrieveAttr['search_terms'] = $_GET['s']; } $results = $instance->retrieve->entries($retrieveAttr); // print_r($instance->lastQuery); ?> <?php if (current_user_can('connections_edit_entry')) { ?> <ul class="subsubsub"> <?php $statuses = array('all' => __('All', 'connections'), 'approved' => __('Approved', 'connections'), 'pending' => __('Moderate', 'connections')); foreach ($statuses as $key => $status) { $subsubsub[] = sprintf('<li><a%1$shref="%2$s">%3$s</a> <span class="count">(%4$d)</span></li>', $instance->currentUser->getFilterStatus() == $key ? ' class="current" ' : ' ', esc_url($form->tokenURL(add_query_arg(array('page' => 'connections_manage', 'cn-action' => 'filter', 'status' => $key)), 'filter')), $status, cnRetrieve::recordCount(array('status' => $key))); } echo implode(' | ', $subsubsub); ?> </ul> <?php } ?> <form method="post"> <p class="search-box"> <label class="screen-reader-text" for="post-search-input"><?php _e('Search Entries', 'connections'); ?> :</label> <input type="search" id="entry-search-input" name="s" value="<?php if (isset($_GET['s']) && !empty($_GET['s'])) { echo $_GET['s']; } ?> " /> <input type="submit" name="" id="search-submit" class="button" value="<?php _e('Search Entries', 'connections'); ?> " /> </p> <?php $form->tokenField('cn_manage_actions'); ?> <input type="hidden" name="cn-action" value="manage_actions"/> <div class="tablenav"> <div class="alignleft actions"> <?php cnTemplatePart::walker('term-select', array('name' => 'category', 'show_option_all' => __('Show All Categories', 'connections'), 'hide_empty' => FALSE, 'hierarchical' => TRUE, 'show_count' => FALSE, 'orderby' => 'name', 'selected' => $instance->currentUser->getFilterCategory())); echo $form->buildSelect('entry_type', array('all' => __('Show All Entries', 'connections'), 'individual' => __('Show Individuals', 'connections'), 'organization' => __('Show Organizations', 'connections'), 'family' => __('Show Families', 'connections')), $instance->currentUser->getFilterEntryType()); /* * Builds the visibilty select list base on current user capabilities. */ if (current_user_can('connections_view_public') || $instance->options->getAllowPublic()) { $visibilitySelect['public'] = __('Show Public', 'connections'); } if (current_user_can('connections_view_private')) { $visibilitySelect['private'] = __('Show Private', 'connections'); } if (current_user_can('connections_view_unlisted')) { $visibilitySelect['unlisted'] = __('Show Unlisted', 'connections'); } if (isset($visibilitySelect)) { /* * Add the 'Show All' option and echo the list. */ $showAll['all'] = __('Show All', 'connections'); $visibilitySelect = $showAll + $visibilitySelect; echo $form->buildSelect('visibility_type', $visibilitySelect, $instance->currentUser->getFilterVisibility()); } ?> <input class="button-secondary action" type="submit" name="filter" value="Filter"/> </div> <div class="tablenav-pages"> <?php echo '<span class="displaying-num">' . sprintf(__('Displaying %1$d of %2$d entries.', 'connections'), $instance->resultCount, $instance->resultCountNoLimit) . '</span>'; /* * // START --> Pagination * * Grab the pagination data again incase a filter reset the values * or the user input an invalid number which the retrieve query would have reset. */ $page = $instance->currentUser->getFilterPage('manage'); $pageCount = ceil($instance->resultCountNoLimit / $page->limit); if ($pageCount > 1) { $pageDisabled = array(); $pageFilterURL = array(); $pageValue = array(); $currentPageURL = add_query_arg(array('page' => FALSE, 'cn-action' => 'filter')); $pageValue['first_page'] = 1; $pageValue['previous_page'] = $page->current - 1 >= 1 ? $page->current - 1 : 1; $pageValue['next_page'] = $page->current + 1 <= $pageCount ? $page->current + 1 : $pageCount; $pageValue['last_page'] = $pageCount; $page->current > 1 ? $pageDisabled['first_page'] = '' : ($pageDisabled['first_page'] = ' disabled'); $page->current - 1 >= 1 ? $pageDisabled['previous_page'] = '' : ($pageDisabled['previous_page'] = ' disabled'); $page->current + 1 <= $pageCount ? $pageDisabled['next_page'] = '' : ($pageDisabled['next_page'] = ' disabled'); $page->current < $pageCount ? $pageDisabled['last_page'] = '' : ($pageDisabled['last_page'] = ' disabled'); /* * Genreate the page link token URL. */ $pageFilterURL['first_page'] = esc_url($form->tokenURL(add_query_arg(array('pg' => $pageValue['first_page']), $currentPageURL), 'filter')); $pageFilterURL['previous_page'] = esc_url($form->tokenURL(add_query_arg(array('pg' => $pageValue['previous_page']), $currentPageURL), 'filter')); $pageFilterURL['next_page'] = esc_url($form->tokenURL(add_query_arg(array('pg' => $pageValue['next_page']), $currentPageURL), 'filter')); $pageFilterURL['last_page'] = esc_url($form->tokenURL(add_query_arg(array('pg' => $pageValue['last_page']), $currentPageURL), 'filter')); echo '<span class="page-navigation" id="page-input">'; echo '<a href="' . $pageFilterURL['first_page'] . '" title="' . __('Go to the first page.', 'connections') . '" class="first-page', $pageDisabled['first_page'], '">«</a> '; echo '<a href="' . $pageFilterURL['previous_page'] . '" title="' . __('Go to the previous page.', 'connections') . '" class="prev-page', $pageDisabled['previous_page'], '">‹</a> '; echo '<span class="paging-input"><input type="text" size="2" value="' . $page->current . '" name="pg" title="' . __('Current page', 'connections') . '" class="current-page"> ' . __('of', 'connections') . ' <span class="total-pages">' . $pageCount . '</span></span> '; echo '<a href="' . $pageFilterURL['next_page'] . '" title="' . __('Go to the next page.', 'connections') . '" class="next-page', $pageDisabled['next_page'], '">›</a> '; echo '<a href="' . $pageFilterURL['last_page'] . '" title="' . __('Go to the last page.', 'connections') . '" class="last-page', $pageDisabled['last_page'], '">»</a>'; echo '</span>'; } /* * // END --> Pagination */ ?> </div> </div> <div class="clear"></div> <div class="tablenav"> <?php if (current_user_can('connections_edit_entry') || current_user_can('connections_delete_entry')) { echo '<div class="alignleft actions">'; echo '<select name="action">'; echo '<option value="" SELECTED>', __('Bulk Actions', 'connections'), '</option>'; $bulkActions = array(); if (current_user_can('connections_edit_entry') || current_user_can('connections_edit_entry_moderated')) { $bulkActions['unapprove'] = __('Unapprove', 'connections'); $bulkActions['approve'] = __('Approve', 'connections'); $bulkActions['public'] = __('Set Public', 'connections'); $bulkActions['private'] = __('Set Private', 'connections'); $bulkActions['unlisted'] = __('Set Unlisted', 'connections'); } if (current_user_can('connections_delete_entry')) { $bulkActions['delete'] = __('Delete', 'connections'); } $bulkActions = apply_filters('cn_manage_bulk_actions', $bulkActions); foreach ($bulkActions as $action => $string) { echo '<option value="', $action, '">', $string, '</option>'; } echo '</select>'; echo '<input class="button-secondary action" type="submit" name="bulk_action" value="', __('Apply', 'connections'), '" />'; echo '</div>'; } ?> <div class="tablenav-pages"> <?php /* * Display the character filter control. */ echo '<span class="displaying-num">', __('Filter by character:', 'connections'), '</span>'; cnTemplatePart::index(array('status' => $instance->currentUser->getFilterStatus(), 'tag' => 'span')); cnTemplatePart::currentCharacter(); ?> </div> </div> <div class="clear"></div> <table cellspacing="0" class="widefat connections"> <thead> <tr> <th class="manage-column column-cb check-column" id="cb" scope="col"><input type="checkbox"/></th> <th class="col" style="width:10%;"></th> <th scope="col" colspan="2" style="width:40%;"><?php _e('Name', 'connections'); ?> </th> <th scope="col" style="width:30%;"><?php _e('Categories', 'connections'); ?> </th> <th scope="col" style="width:20%;"><?php _e('Last Modified', 'connections'); ?> </th> </tr> </thead> <tfoot> <tr> <th class="manage-column column-cb check-column" scope="col"><input type="checkbox"/></th> <th class="col" style="width:10%;"></th> <th scope="col" colspan="2" style="width:40%;"><?php _e('Name', 'connections'); ?> </th> <th scope="col" style="width:30%;"><?php _e('Categories', 'connections'); ?> </th> <th scope="col" style="width:20%;"><?php _e('Last Modified', 'connections'); ?> </th> </tr> </tfoot> <tbody> <?php $previousLetter = ''; foreach ($results as $row) { /** * * * @TODO: Use the Output class to show entry details. */ $entry = new cnvCard($row); $vCard =& $entry; $currentLetter = strtoupper(mb_substr($entry->getSortColumn(), 0, 1)); if ($currentLetter != $previousLetter) { $setAnchor = "<a name='{$currentLetter}'></a>"; $previousLetter = $currentLetter; } else { $setAnchor = null; } /* * Generate the edit, copy and delete URLs with nonce tokens. */ $editTokenURL = esc_url($form->tokenURL('admin.php?page=connections_manage&cn-action=edit_entry&id=' . $entry->getId(), 'entry_edit_' . $entry->getId())); $copyTokenURL = esc_url($form->tokenURL('admin.php?page=connections_manage&cn-action=copy_entry&id=' . $entry->getId(), 'entry_copy_' . $entry->getId())); $deleteTokenURL = esc_url($form->tokenURL('admin.php?cn-action=delete_entry&id=' . $entry->getId(), 'entry_delete_' . $entry->getId())); $approvedTokenURL = esc_url($form->tokenURL('admin.php?cn-action=set_status&status=approved&id=' . $entry->getId(), 'entry_status_' . $entry->getId())); $unapproveTokenURL = esc_url($form->tokenURL('admin.php?cn-action=set_status&status=pending&id=' . $entry->getId(), 'entry_status_' . $entry->getId())); switch ($entry->getStatus()) { case 'pending': $statusClass = ' unapproved'; break; case 'approved': $statusClass = ' approved'; break; default: $statusClass = ''; break; } echo '<tr id="row-', $entry->getId(), '" class="parent-row' . $statusClass . '">'; echo "<th class='check-column' scope='row'><input type='checkbox' value='" . $entry->getId() . "' name='id[]'/></th> \n"; echo '<td>'; $entry->getImage(array('image' => 'photo', 'height' => 54, 'width' => 80, 'zc' => 2, 'fallback' => array('type' => 'block', 'string' => __('No Photo Available', 'connections')))); echo '</td>'; echo '<td colspan="2">'; if ($setAnchor) { echo $setAnchor; } echo '<div style="float:right"><a href="#wphead" title="Return to top."><img src="' . CN_URL . 'assets/images/uparrow.gif" /></a></div>'; if (current_user_can('connections_edit_entry') || current_user_can('connections_edit_entry_moderated')) { echo '<a class="row-title" title="Edit ' . $entry->getName(array('format' => '%last%, %first%')) . '" href="' . $editTokenURL . '"> ' . $entry->getName(array('format' => '%last%, %first%')) . '</a><br />'; } else { echo '<strong>' . $entry->getName(array('format' => '%last%, %first%')) . '</strong>'; } echo '<div class="row-actions">'; $rowActions = array(); $rowEditActions = array(); $rowActions[] = '<a class="detailsbutton" id="row-' . $entry->getId() . '" title="' . __('Click to show details.', 'connections') . '" >' . __('Show Details', 'connections') . '</a>'; $rowActions[] = $vCard->download(array('anchorText' => __('vCard', 'connections'), 'return' => TRUE)); $rowActions[] = cnURL::permalink(array('slug' => $entry->getSlug(), 'title' => sprintf(__('View %s', 'connections'), $entry->getName(array('format' => '%first% %last%'))), 'text' => __('View', 'connections'), 'return' => TRUE)); if ($entry->getStatus() == 'approved' && current_user_can('connections_edit_entry')) { $rowEditActions[] = '<a class="action unapprove" href="' . $unapproveTokenURL . '" title="' . __('Unapprove', 'connections') . ' ' . $entry->getFullFirstLastName() . '">' . __('Unapprove', 'connections') . '</a>'; } if ($entry->getStatus() == 'pending' && current_user_can('connections_edit_entry')) { $rowEditActions[] = '<a class="action approve" href="' . $approvedTokenURL . '" title="' . __('Approve', 'connections') . ' ' . $entry->getFullFirstLastName() . '">' . __('Approve', 'connections') . '</a>'; } if (current_user_can('connections_edit_entry') || current_user_can('connections_edit_entry_moderated')) { $rowEditActions[] = '<a class="editbutton" href="' . $editTokenURL . '" title="' . __('Edit', 'connections') . ' ' . $entry->getFullFirstLastName() . '">' . __('Edit', 'connections') . '</a>'; } if (current_user_can('connections_add_entry') || current_user_can('connections_add_entry_moderated')) { $rowEditActions[] = '<a class="copybutton" href="' . $copyTokenURL . '" title="' . __('Copy', 'connections') . ' ' . $entry->getFullFirstLastName() . '">' . __('Copy', 'connections') . '</a>'; } if (current_user_can('connections_delete_entry')) { $rowEditActions[] = '<a class="submitdelete" onclick="return confirm(\'You are about to delete this entry. \\\'Cancel\\\' to stop, \\\'OK\\\' to delete\');" href="' . $deleteTokenURL . '" title="' . __('Delete', 'connections') . ' ' . $entry->getFullFirstLastName() . '">' . __('Delete', 'connections') . '</a>'; } if (!empty($rowEditActions)) { echo implode(' | ', $rowEditActions), '<br/>'; } if (!empty($rowActions)) { echo implode(' | ', $rowActions); } echo '</div>'; echo "</td> \n"; echo "<td > \n"; $categories = $entry->getCategory(); if (!empty($categories)) { $i = 0; foreach ($categories as $category) { /* * Genreate the category link token URL. */ $categoryFilterURL = $form->tokenURL('admin.php?cn-action=filter&category=' . $category->term_id, 'filter'); echo '<a href="' . $categoryFilterURL . '">' . $category->name . '</a>'; $i++; if (count($categories) > $i) { echo ', '; } } unset($i); } echo "</td> \n"; echo '<td >'; echo '<strong>' . __('On', 'connections') . ':</strong> ' . $entry->getFormattedTimeStamp('m/d/Y g:ia') . '<br />'; echo '<strong>' . __('By', 'connections') . ':</strong> ' . $entry->getEditedBy() . '<br />'; echo '<strong>' . __('Visibility', 'connections') . ':</strong> ' . $entry->displayVisibilityType() . '<br />'; $user = $entry->getUser() ? get_userdata($entry->getUser()) : FALSE; /** * NOTE: WP 3.5 introduced get_edit_user_link() * REF: http://codex.wordpress.org/Function_Reference/get_edit_user_link * * @TODO Use get_edit_user_link() to simplify this code when WP hits >= 3.9. */ if ($user) { if (get_current_user_id() == $user->ID) { $editUserLink = get_edit_profile_url($user->ID); } else { $editUserLink = add_query_arg('user_id', $user->ID, self_admin_url('user-edit.php')); } echo '<strong>' . __('Linked to:', 'connections') . '</strong> ' . '<a href="' . esc_url($editUserLink) . '">' . esc_attr($user->display_name) . '</a>'; } echo "</td> \n"; echo "</tr> \n"; echo "<tr class='child-row-" . $entry->getId() . " cn-entry-details' id='contact-" . $entry->getId() . "-detail' style='display:none;'>"; echo '<td colspan="2"> </td>', "\n"; //echo "<td > </td> \n"; echo '<td colspan="2">'; /* * Check if the entry has relations. Count the relations and then cycle thru each relation. * Before the out check that the related entry still exists. If it does and the current user * has edit capabilites the edit link will be displayed. If the user does not have edit capabilities * the only the relation will be shown. After all relations have been output insert a <br> * for spacing [@TODO: NOTE: this should be done with styles]. */ if ($entry->getFamilyMembers()) { $count = count($entry->getFamilyMembers()); $i = 0; foreach ($entry->getFamilyMembers() as $key => $value) { $relation = new cnEntry(); $relation->set($key); $editRelationTokenURL = $form->tokenURL('admin.php?page=connections&action=edit&id=' . $relation->getId(), 'entry_edit_' . $relation->getId()); if ($relation->getId()) { if (current_user_can('connections_edit_entry')) { echo '<strong>' . $instance->options->getFamilyRelation($value) . ':</strong> ' . '<a href="' . $editRelationTokenURL . '" title="' . __('Edit', 'connections') . ' ' . $relation->getFullFirstLastName() . '">' . $relation->getFullFirstLastName() . '</a><br />' . "\n"; } else { echo '<strong>' . $instance->options->getFamilyRelation($value) . ':</strong> ' . $relation->getFullFirstLastName() . '<br />' . "\n"; } } if ($count - 1 == $i) { echo '<br />'; } // Insert a break after all connections are listed. $i++; unset($relation); } unset($i); unset($count); } if ($entry->getContactFirstName() || $entry->getContactLastName()) { echo '<strong>' . __('Contact', 'connections') . ':</strong> ' . $entry->getContactFirstName() . ' ' . $entry->getContactLastName() . '<br />'; } if ($entry->getTitle()) { echo '<strong>' . __('Title', 'connections') . ':</strong> ' . $entry->getTitle() . '<br />'; } if ($entry->getOrganization() && $entry->getEntryType() !== 'organization') { echo '<strong>' . __('Organization', 'connections') . ':</strong> ' . $entry->getOrganization() . '<br />'; } if ($entry->getDepartment()) { echo '<strong>' . __('Department', 'connections') . ':</strong> ' . $entry->getDepartment() . '<br />'; } $addresses = $entry->getAddresses(); //print_r($addresses); if (!empty($addresses)) { foreach ($addresses as $address) { $outCache = array(); echo '<div style="margin: 10px 0;">'; $address->preferred ? $preferred = '*' : ($preferred = ''); if (!empty($address->name)) { echo '<span style="display: block"><strong>', $address->name, $preferred, '</strong></span>'; } if (!empty($address->line_1)) { echo '<span style="display: block">', $address->line_1, '</span>'; } if (!empty($address->line_2)) { echo '<span style="display: block">', $address->line_2, '</span>'; } if (!empty($address->line_3)) { echo '<span style="display: block">', $address->line_3, '</span>'; } if (!empty($address->city)) { $outCache[] = '<span>' . $address->city . '</span>'; } if (!empty($address->state)) { $outCache[] = '<span>' . $address->state . '</span>'; } if (!empty($address->zipcode)) { $outCache[] = '<span>' . $address->zipcode . '</span>'; } if (!empty($outCache)) { echo '<span style="display: block">', implode(' ', $outCache), '</span>'; } if (!empty($address->country)) { echo '<span style="display: block">', $address->country, '</span>'; } if (!empty($address->latitude) && !empty($address->longitude)) { echo '<span style="display: block">', '<strong>', __('Latitude', 'connections'), ':</strong>', ' ', $address->latitude, ' ', '<strong>', __('Longitude', 'connections'), ':</strong>', ' ', $address->longitude, '</span>'; } echo '</div>'; } unset($outCache); } echo '</td>', "\n"; echo '<td>'; $phoneNumbers = $entry->getPhoneNumbers(); if (!empty($phoneNumbers)) { echo '<div class="phone-numbers">'; foreach ($phoneNumbers as $phone) { $phone->preferred ? $preferred = '*' : ($preferred = ''); echo '<span class="phone"><strong>', $phone->name, '</strong>: ', $phone->number, $preferred, '</span>'; } echo '</div>'; } $emailAddresses = $entry->getEmailAddresses(); if (!empty($emailAddresses)) { echo '<div class="email-addresses">'; foreach ($emailAddresses as $email) { $email->preferred ? $preferred = '*' : ($preferred = ''); echo '<span class="email"><strong>', $email->name, ':</strong> <a href="mailto:', $email->address, '">', $email->address, '</a>', $preferred, '</span>'; } echo '</div>'; } $imIDs = $entry->getIm(); if (!empty($imIDs)) { echo '<div class="im-ids">'; foreach ($imIDs as $im) { $im->preferred ? $preferred = '*' : ($preferred = ''); echo '<span class="im"><strong>', $im->name, ':</strong> ', $im->id, $preferred, '</span>'; } echo '</div>'; } $socialNetworks = $entry->getSocialMedia(); if (!empty($socialNetworks)) { echo '<div class="social-networks">'; foreach ($entry->getSocialMedia() as $network) { $network->preferred ? $preferred = '*' : ($preferred = ''); echo '<span class="social-network"><strong>', $network->name, ':</strong> <a target="_blank" href="', $network->url, '">', $network->url . '</a>', $preferred, '</span>'; } echo '</div>'; } $links = $entry->getLinks(); if (!empty($links)) { echo '<div class="links">'; foreach ($links as $link) { $link->preferred ? $preferred = '*' : ($preferred = ''); echo '<span class="link"><strong>', $link->name, ':</strong> <a target="_blank" href="', $link->url, '">', $link->url, '</a>', $preferred, '</span>'; } echo '</div>'; } echo "</td> \n"; echo "<td>"; $entry->getDateBlock(); echo "</td> \n"; echo "</tr> \n"; echo "<tr class='child-row-" . $entry->getId() . " entrynotes' id='contact-" . $entry->getId() . "-detail-notes' style='display:none;'>"; echo "<td colspan='2'> </td> \n"; //echo "<td > </td> \n"; echo "<td colspan='3'>"; echo $entry->getBio() ? '<strong>' . __('Bio', 'connections') . ':</strong> ' . $entry->getBio() . '<br />' : ' '; echo $entry->getNotes() ? '<strong>' . __('Notes', 'connections') . ':</strong> ' . $entry->getNotes() : ' '; echo "</td> \n"; echo '<td> <span style="display: block;"><strong>' . __('Entry ID', 'connections') . ':</strong> ' . $entry->getId() . '</span>' . ' <span style="display: block;"><strong>' . __('Entry Slug', 'connections') . ':</strong> ' . $entry->getSlug() . '</span>' . ' <span style="display: block;"><strong>' . __('Date Added', 'connections') . ':</strong> ' . $entry->getDateAdded('m/d/Y g:ia') . '</span> <span style="display: block;"><strong>' . __('Added By', 'connections') . ':</strong> ' . $entry->getAddedBy() . '</span>'; echo '<span style="display: block;"><strong>' . __('Image Linked', 'connections') . ':</strong> ' . (!$entry->getImageLinked() ? __('No', 'connections') : __('Yes', 'connections')) . '</span>'; echo '<span style="display: block;"><strong>' . __('Display', 'connections') . ':</strong> ' . ($entry->getImageLinked() && $entry->getImageDisplay() ? __('Yes', 'connections') : __('No', 'connections')) . '</span>'; echo "</td> \n"; echo "</tr> \n"; } ?> </tbody> </table> </form> <script type="text/javascript"> /* <![CDATA[ */ (function($){ $(document).ready(function(){ $('#doaction, #doaction2').click(function(){ if ( $('select[name^="action"]').val() == 'delete' ) { var m = 'You are about to delete the selected entry(ies).\n \'Cancel\' to stop, \'OK\' to delete.'; return showNotice.warn(m); } }); }); })(jQuery); /* ]]> */ </script> <?php } else { cnMessage::set('error', 'capability_view_entry_list'); } break; } echo '</div> <!-- .wrap -->'; }