<?php /* For licensing terms, see /dokeos_license.txt */ /** * Legal class * * @version 1.0 * @package dokeos.legal * */ class LegalManager { private function __construct () { //void } /** * Add a new Term and Condition * @param int language id * @param string the content * @param int term and condition type (0 or 1) * @param string explain changes * @return boolean sucess */ public function add ($language, $content, $type, $changes) { $legal_table = Database::get_main_table(TABLE_MAIN_LEGAL); $last = self::get_last_condition($language); $language = Database::escape_string($language); $content = Database::escape_string($content); $type = intval($type); $changes = Database::escape_string($changes); $time = time(); if ($last['content'] != $content) { $version = intval(Legalmanager::get_last_condition_version($language)); $version++; $sql = "INSERT INTO $legal_table SET language_id = '".Database::escape_string($language)."', content = '".$content."', changes= '".$changes."', type = '".$type."', version = '".Database::escape_string($version)."', date = '".$time."'"; $result = Database::query($sql, __FILE__, __LINE__); return true; } elseif($last['type'] != $type && $language==$last['language_id']) { //update $id = $last['legal_id']; $sql = "UPDATE $legal_table SET changes= '".$changes."', type = '".$type."', date = '".$time."' WHERE legal_id= $id "; $result = Database::query($sql, __FILE__, __LINE__); return true; } else { return false; } } public function delete ($id) { /* $legal_table = Database::get_main_table(TABLE_MAIN_LEGAL); $id = intval($id); $sql = "DELETE FROM $legal_table WHERE legal_id = '".$id."'"; */ } /** * Gets the last version of a Term and condition by language * @param int the language id * @return array all the info of a Term and condition */ public function get_last_condition_version ($language) { $legal_conditions_table = Database::get_main_table(TABLE_MAIN_LEGAL); $language= Database::escape_string($language); $sql = "SELECT version FROM $legal_conditions_table WHERE language_id = '".$language."' ORDER BY legal_id DESC LIMIT 1 "; $result = Database::query($sql, __FILE__, __LINE__); $row = Database::fetch_array($result); if (Database::num_rows($result)>0) { return $row['version']; } else { return 0; } } /** * Gets the data of a Term and condition by language * @param int the language id * @return array all the info of a Term and condition */ public function get_last_condition ($language) { $legal_conditions_table = Database::get_main_table(TABLE_MAIN_LEGAL); $language= Database::escape_string($language); $sql = "SELECT * FROM $legal_conditions_table WHERE language_id = '".$language."' ORDER BY version DESC LIMIT 1 "; $result = Database::query($sql, __FILE__, __LINE__); return Database::fetch_array($result); } /** * Gets the last version of a Term and condition by language * @param int the language id * @return boolean | int the version or false if does not exist */ public function get_last_version ($language) { $legal_conditions_table = Database::get_main_table(TABLE_MAIN_LEGAL); $language= Database::escape_string($language); $sql = "SELECT version FROM $legal_conditions_table WHERE language_id = '".$language."' ORDER BY version DESC LIMIT 1 "; $result = Database::query($sql, __FILE__, __LINE__); if (Database::num_rows($result)>0){ $version = Database::fetch_array($result); $version = explode(':',$version[0]); return $version[0]; } else { return false; } } /** * Show the last condition * @param array with type and content i.e array('type'=>'1', 'content'=>'hola'); * @return string html preview */ public function show_last_condition ($term_preview) { $preview = ''; switch ($term_preview['type']) { /*// scroll box case 0: $preview ='<fieldset> <legend>'.get_lang('TermsAndConditions').'</legend>'; $preview .= '<div class="form-item"> <label>'.get_lang('TermsAndConditions').': </label> <div class="resizable-textarea"> <span> <textarea id="" class="form-textarea resizable textarea-processed" readonly="readonly" name="" rows="10" cols="60">'; $preview .= $term_preview['content']; $preview .= '</textarea> <div class="grippie" style="margin-right: -2px;"/> </span> </div> </div> <div id="edit-legal-accept-wrapper" class="form-item"> <label class="option" for="edit-legal-accept"> <input id="edit-legal-accept" class="form-checkbox" type="checkbox" value="1" name="legal_accept"/> <strong>'.get_lang('Accept').'</strong> '.get_lang('TermsAndConditions').' </label> </div> </fieldset>'; break;*/ // html case 0: $preview = '<div class="legal-terms"> '.$term_preview['content'].' </div>'; $preview .= '<br/>'.get_lang('ByClickingRegisterYouAgreeTermsAndConditions'); break; // page link case 1: $preview ='<fieldset> <legend>'.get_lang('TermsAndConditions').'</legend>'; $preview .= '<div id="legal-accept-wrapper" class="form-item"> <label class="option" for="legal-accept"> <input id="legal-accept" type="checkbox" value="1" name="legal_accept"/> '.get_lang('IHaveReadAndAgree').' <a href="#">'.get_lang('TermsAndConditions').'</a> </label> </div> </fieldset>'; break; default: break; } return $preview; } /** * Get the terms and condition table (only for maintenance) * @param int offset * @param int number of items * @param int column * @return array */ public function get_legal_data ($from, $number_of_items, $column) { $legal_conditions_table = Database::get_main_table(TABLE_MAIN_LEGAL); $lang_table = Database::get_main_table(TABLE_MAIN_LANGUAGE); $from = intval($from); $number_of_items = intval($number_of_items); $column = intval($column); $sql = "SELECT version, original_name as language, content, changes, type, FROM_UNIXTIME(date) FROM $legal_conditions_table inner join $lang_table l on(language_id = l.id) "; $sql .= "ORDER BY language, version ASC "; $sql .= "LIMIT $from,$number_of_items "; $result = Database::query($sql, __FILE__, __LINE__); $legals = array (); $versions = array (); while ($legal = Database::fetch_array($result)) { // max 2000 chars //echo strlen($legal[1]); echo '<br>'; $versions[]=$legal[0]; $languages[]=$legal[1]; if (strlen($legal[2])>2000) $legal[2]= substr($legal[2],0,2000).' ... '; if ($legal[4]==0) $legal[4]= get_lang('HTMLText'); elseif($legal[4]==1) $legal[4]=get_lang('PageLink'); $legals[] = $legal; } return $legals; } /** * Gets the number of terms and conditions available * @return int */ public function count() { $legal_conditions_table = Database::get_main_table(TABLE_MAIN_LEGAL); $sql = "SELECT count(*) as count_result FROM $legal_conditions_table ORDER BY legal_id DESC "; $result = Database::query($sql, __FILE__, __LINE__); $url = Database::fetch_array($result,'ASSOC'); $result = $url['count_result']; return $result; } /** * Get type of terms and conditions * @param int The legal id * @param int The language id * @return int The current type of terms and conditions */ public function get_type_of_terms_and_conditions ($legal_id,$language_id) { $legal_conditions_table = Database::get_main_table(TABLE_MAIN_LEGAL); $legal_id=Database::escape_string($legal_id); $language_id=Database::escape_string($language_id); $sql='SELECT type FROM '.$legal_conditions_table.' WHERE legal_id="'.$legal_id.'" AND language_id="'.$language_id.'"'; $rs=Database::query($sql,__FILE__,__LINE__); return Database::result($rs,0,'type'); } }