示例#1
0
 /**
  * Removes an item from the current learnpath
  * @param	integer	Elem ID (0 if first)
  * @param	integer	Whether to remove the resource/data from the system or leave it (default: 'keep', others 'remove')
  * @return	integer	Number of elements moved
  * @todo implement resource removal
  */
 function delete_item($id, $remove = 'keep')
 {
     if ($this->debug > 0) {
         error_log('New LP - In learnpath::delete_item()', 0);
     }
     //TODO - implement the resource removal
     if (empty($id) || $id != strval(intval($id))) {
         return false;
     }
     //first select item to get previous, next, and display order
     $lp_item = Database::get_course_table(TABLE_LP_ITEM);
     $sql_sel = "SELECT * FROM {$lp_item} WHERE id = {$id}";
     $res_sel = Database::query($sql_sel, __FILE__, __LINE__);
     if (Database::num_rows($res_sel) < 1) {
         return false;
     }
     $row = Database::fetch_array($res_sel);
     $previous = $row['previous_item_id'];
     $next = $row['next_item_id'];
     $display = $row['display_order'];
     $parent = $row['parent_item_id'];
     $lp = $row['lp_id'];
     //delete children items
     $num = $this->delete_children_items($id);
     if ($this->debug > 2) {
         error_log('New LP - learnpath::delete_item() - deleted ' . $num . ' children of element ' . $id, 0);
     }
     //now delete the item
     $sql_del = "DELETE FROM {$lp_item} WHERE id = {$id}";
     if ($this->debug > 2) {
         error_log('New LP - Deleting item: ' . $sql_del, 0);
     }
     $res_del = Database::query($sql_del, __FILE__, __LINE__);
     //now update surrounding items
     $sql_upd = "UPDATE {$lp_item} SET next_item_id = {$next} WHERE id = {$previous}";
     $res_upd = Database::query($sql_upd, __FILE__, __LINE__);
     $sql_upd = "UPDATE {$lp_item} SET previous_item_id = {$previous} WHERE id = {$next}";
     $res_upd = Database::query($sql_upd, __FILE__, __LINE__);
     //now update all following items with new display order
     $sql_all = "UPDATE {$lp_item} SET display_order = display_order-1 WHERE lp_id = {$lp} AND parent_item_id = {$parent} AND display_order > {$display}";
     $res_all = Database::query($sql_all, __FILE__, __LINE__);
     // remove from search engine if enabled
     if (api_get_setting('search_enabled') == 'true' && extension_loaded('xapian')) {
         $tbl_se_ref = Database::get_main_table(TABLE_MAIN_SEARCH_ENGINE_REF);
         $sql = 'SELECT * FROM %s WHERE course_code=\'%s\' AND tool_id=\'%s\' AND ref_id_high_level=%s AND ref_id_second_level=%d LIMIT 1';
         $sql = sprintf($sql, $tbl_se_ref, $this->cc, TOOL_LEARNPATH, $lp, $id);
         $res = Database::query($sql, __FILE__, __LINE__);
         if (Database::num_rows($res) > 0) {
             $row2 = Database::fetch_array($res);
             require_once api_get_path(LIBRARY_PATH) . 'search/DokeosIndexer.class.php';
             $di = new DokeosIndexer();
             $di->remove_document((int) $row2['search_did']);
         }
         $sql = 'DELETE FROM %s WHERE course_code=\'%s\' AND tool_id=\'%s\' AND ref_id_high_level=%s AND ref_id_second_level=%d LIMIT 1';
         $sql = sprintf($sql, $tbl_se_ref, $this->cc, TOOL_LEARNPATH, $lp, $id);
         Database::query($sql, __FILE__, __LINE__);
     }
 }
示例#2
0
 /**
  * Deletes all traces of this item in the database
  * @return	boolean	true. Doesn't check for errors yet.
  */
 function delete()
 {
     if ($this->debug > 0) {
         error_log('New LP - In learnpath_item::delete() for item ' . $this->db_id, 0);
     }
     $lp_item_view = Database::get_course_table(TABLE_LP_ITEM_VIEW);
     $lp_item = Database::get_course_table(TABLE_LP_ITEM);
     $sql_del_view = "DELETE FROM {$lp_item_view} WHERE item_id = " . $this->db_id;
     //error_log('New LP - Deleting from lp_item_view: '.$sql_del_view,0);
     $res_del_view = Database::query($sql_del_view);
     $sql_sel = "SELECT * FROM {$lp_item} WHERE id = " . $this->db_id;
     $res_sel = Database::query($sql_sel, __FILE__, __LINE__);
     if (Database::num_rows($res_sel) < 1) {
         return false;
     }
     $row = Database::fetch_array($res_sel);
     $sql_del_item = "DELETE FROM {$lp_item} WHERE id = " . $this->db_id;
     //error_log('New LP - Deleting from lp_item: '.$sql_del_view,0);
     $res_del_item = Database::query($sql_del_item);
     if (api_get_setting('search_enabled') == 'true' && extension_loaded('xapian')) {
         if (!is_null($this->search_did)) {
             require_once api_get_path(LIBRARY_PATH) . 'search/DokeosIndexer.class.php';
             $di = new DokeosIndexer();
             $di->remove_document($this->search_did);
         }
     }
     return true;
 }