upgrade
This commit is contained in:
122
main/inc/lib/search/IndexableChunk.class.php
Normal file
122
main/inc/lib/search/IndexableChunk.class.php
Normal file
@@ -0,0 +1,122 @@
|
||||
<?php
|
||||
/* For licensing terms, see /license.txt */
|
||||
|
||||
/**
|
||||
* @package chamilo.include.search
|
||||
*/
|
||||
|
||||
// some constants to avoid serialize string keys on serialized data array
|
||||
define('SE_COURSE_ID', 0);
|
||||
define('SE_TOOL_ID', 1);
|
||||
define('SE_DATA', 2);
|
||||
define('SE_USER', 3);
|
||||
|
||||
// in some cases we need top differenciate xapian documents of the same tool
|
||||
define('SE_DOCTYPE_EXERCISE_EXERCISE', 0);
|
||||
define('SE_DOCTYPE_EXERCISE_QUESTION', 1);
|
||||
|
||||
// xapian prefixes
|
||||
define('XAPIAN_PREFIX_COURSEID', 'C');
|
||||
define('XAPIAN_PREFIX_TOOLID', 'O');
|
||||
|
||||
/**
|
||||
* Class.
|
||||
*
|
||||
* @package chamilo.include.search
|
||||
*/
|
||||
abstract class _IndexableChunk
|
||||
{
|
||||
/* struct (array)
|
||||
* {
|
||||
* string title; <- nombre de archivo/elemento
|
||||
* string content; <- texto a indexar
|
||||
* string ids; <- los flags a guardar "cidReq:lp_id:path"
|
||||
* }
|
||||
*/
|
||||
|
||||
public $data;
|
||||
|
||||
/**
|
||||
* array (
|
||||
* 'SE_COURSE_ID' => string <- course id from course table on main db
|
||||
* 'SE_TOOL_ID' => string <- tool id from mainapi lib constants
|
||||
* 'SE_DATA' => mixed <- extra information, depends on SE_TOOL_ID
|
||||
* 'SE_USER' => id <- user id from user table in main db
|
||||
* ).
|
||||
*/
|
||||
public $xapian_data;
|
||||
|
||||
/**
|
||||
* array(
|
||||
* name => string
|
||||
* flag => char
|
||||
* ).
|
||||
*/
|
||||
public $terms;
|
||||
|
||||
/**
|
||||
* Class constructor. Just generates an empty 'data' array attribute.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->data = [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Class desctructor. Unsets attributes.
|
||||
*/
|
||||
public function __destruct()
|
||||
{
|
||||
unset($this->data);
|
||||
unset($this->terms);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a value to the indexed item.
|
||||
*
|
||||
* @param string Key
|
||||
* @param string Value
|
||||
*/
|
||||
public function addValue($key, $value)
|
||||
{
|
||||
$this->data[$key] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a term (like xapian definition).
|
||||
*
|
||||
* @param string Term
|
||||
* @param string Flag (one character)
|
||||
*/
|
||||
public function addTerm($term, $flag)
|
||||
{
|
||||
global $charset;
|
||||
if (strlen($flag) == 1) {
|
||||
$this->terms[] = ['name' => api_convert_encoding(stripslashes($term), 'UTF-8', $charset), 'flag' => $flag];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Extension of the _IndexableChunk class to make IndexableChunk extensible.
|
||||
*
|
||||
* @package chamilo.include.search
|
||||
*/
|
||||
class IndexableChunk extends _IndexableChunk
|
||||
{
|
||||
/**
|
||||
* Let add course id term.
|
||||
*/
|
||||
public function addCourseId($course_id)
|
||||
{
|
||||
$this->addTerm($course_id, XAPIAN_PREFIX_COURSEID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Let add tool id term.
|
||||
*/
|
||||
public function addToolId($tool_id)
|
||||
{
|
||||
$this->addTerm($tool_id, XAPIAN_PREFIX_TOOLID);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user