123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- <?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);
- }
- }
|