65 lines
1.8 KiB
PHP
65 lines
1.8 KiB
PHP
<?php
|
|
/**
|
|
* The citation object class
|
|
* @since 5.2.0
|
|
*/
|
|
class TP_Cite_Object {
|
|
|
|
// stores the association between id and citation
|
|
var $cite_object = array();
|
|
|
|
/**
|
|
* Returns the current count in the cite
|
|
* @return int
|
|
* @since 5.2.0
|
|
*/
|
|
public function get_count() {
|
|
return count($this->cite_object);
|
|
}
|
|
|
|
/**
|
|
* Adds a citation to the cite object
|
|
* @param array $cite
|
|
* @return the index of the citation in the cite object
|
|
* @since 5.2.0
|
|
*/
|
|
public function add_ref($cite) {
|
|
// Get global option
|
|
$ref_grouped = ( get_tp_option('ref_grouped') == '1' ) ? true : false;
|
|
|
|
// add the citation
|
|
if ($ref_grouped) {
|
|
// If there is no publication found
|
|
if ( !$cite ) {
|
|
return $this->get_count();
|
|
}
|
|
// did we already added this citation?
|
|
$existing_index = array_search($cite['pub_id'], array_keys($this->cite_object));
|
|
if ($existing_index === false) {
|
|
// first time we see this publication, adding it
|
|
$this->cite_object[$cite['pub_id']] = $cite;
|
|
// so this publication is the last of our list
|
|
return $this->get_count();
|
|
} else {
|
|
// we already added this publication in the past
|
|
return $existing_index + 1;
|
|
}
|
|
} else {
|
|
// add this citation
|
|
array_push($this->cite_object, $cite);
|
|
// so this publication is the last of our list
|
|
return $this->get_count();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Returns the cite object
|
|
* @return array
|
|
* @since 5.2.0
|
|
*/
|
|
public function get_ref() {
|
|
return array_values($this->cite_object);
|
|
}
|
|
}
|
|
|