Overview

Packages

  • Admin
  • Archive
  • Common
  • DB
  • Express
  • Form
  • Layout
  • Mailer
  • None
  • OpenHomeoDB
  • PDF
    • MC
  • Process
  • Rep
  • RevRep
  • SaveReps
  • Search
  • Session
  • SymRem
  • TreeView
  • UserDB

Classes

  • SymRem
  • Overview
  • Package
  • Class
  • Tree
  1:     <?php
  2: 
  3: /**
  4:  * symrem_class.php
  5:  *
  6:  * PHP version 8
  7:  *
  8:  * LICENSE: This program is free software: you can redistribute it and/or modify
  9:  * it under the terms of the GNU Affero General Public License as
 10:  * published by the Free Software Foundation, either version 3 of the
 11:  * License, or (at your option) any later version.
 12:  * This program is distributed in the hope that it will be useful,
 13:  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 14:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 15:  * GNU Affero General Public License for more details.
 16:  * You should have received a copy of the GNU Affero General Public License
 17:  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 18:  *
 19:  * @category  Homeopathy
 20:  * @package   SymRem
 21:  * @author    Henri Schumacher <henri.hulski@gazeta.pl>
 22:  * @copyright 2007-2014 Henri Schumacher
 23:  * @license   http://www.gnu.org/licenses/agpl.html GNU Affero General Public License v3
 24:  * @version   1.0
 25:  * @link      https://research.openhomeo.info/download/OpenHomeopath_1.0.2.tar.gz
 26:  */
 27: 
 28: /**
 29:  * The SymRem Class is responsible for retrieving and presenting the remedies for a given symptom for the symptominfo (symptominfo.php)
 30:  *
 31:  * @category  Homeopathy
 32:  * @package   SymRem
 33:  * @author    Henri Schumacher <henri.hulski@gazeta.pl>
 34:  * @copyright 2007-2014 Henri Schumacher
 35:  * @license   http://www.gnu.org/licenses/agpl.html GNU Affero General Public License v3
 36:  */
 37: class SymRem {
 38: 
 39:     /**
 40:      * Remedies array
 41:      * @var array
 42:      * @access private
 43:      */
 44:     private $rems_ar = array();
 45:     
 46:     
 47:     /**
 48:      * Number of found remedies
 49:      * @var integer
 50:      * @access public
 51:      */
 52:     public $rem_count;
 53:     
 54:     
 55:     /**
 56:      * Symptom ID
 57:      * @var integer
 58:      * @access public
 59:      */
 60:     public $sym_id;
 61:     
 62:     
 63:     /**
 64:      * From which grade on remedies should be retrieved (1|2|3)
 65:      * @var integer
 66:      * @access private
 67:      */
 68:     private $grade;
 69:     
 70:     
 71:     /**
 72:      * How the remedies should be sorted (grade|remname|shortname)
 73:      * @var string
 74:      * @access private
 75:      */
 76:     private $sort;
 77:     
 78:     
 79:     /**
 80:      * Symptom-remedy-relations table
 81:      * @var string
 82:      * @access private
 83:      */
 84:     private $sym_rem_tbl;
 85:     
 86:     
 87:     /**
 88:      * Class constructor
 89:      *
 90:      * @return SymRem
 91:      * @access public
 92:      */
 93:     function __construct() {
 94:         global $db;
 95:         $this->sym_id = (empty($_REQUEST['sym'])) ? 0 : $_REQUEST['sym'];
 96:         $this->sort = (isset($_REQUEST['sort'])) ? $_REQUEST['sort'] : 'grade';
 97:         $this->grade = (isset($_REQUEST['grade'])) ? $_REQUEST['grade'] : 1;
 98:         $this->sym_rem_tbl = $db->get_custom_table("sym_rem");
 99:         $this->set_sym_rems();
100:     }
101:     
102:     /**
103:      * set_sym_rems retrieves the details of remedies related to the given symptom ($this->sym_id) and stores them in an array ($this->rems_ar)
104:      *
105:      * @return void
106:      * @access private
107:      */
108:     private function set_sym_rems() {
109:         global $db;
110:         $query = "SELECT remedies.rem_id, remedies.rem_short, remedies.rem_name, {$this->sym_rem_tbl}.grade, {$this->sym_rem_tbl}.src_id FROM remedies, {$this->sym_rem_tbl} WHERE {$this->sym_rem_tbl}.sym_id = {$this->sym_id} AND {$this->sym_rem_tbl}.rem_id = remedies.rem_id ";
111:         if ($this->grade > 1) {
112:             $query .= "AND  {$this->sym_rem_tbl}.grade >= {$this->grade} ";
113:         }
114:         switch ($this->sort) {
115:             case 'grade':
116:                 $query .= "ORDER BY {$this->sym_rem_tbl}.grade DESC, remedies.rem_name ASC";
117:                 break;
118:             case 'remname':
119:                 $query .= "ORDER BY remedies.rem_name";
120:                 break;
121:             case 'shortname':
122:                 $query .= "ORDER BY remedies.rem_short";
123:                 break;
124:         }
125:         $db->send_query($query);
126:         $this->rem_count = $db->db_num_rows();
127:         if ($this->rem_count > 0)   {
128:             while (list($rem_id, $rem_short, $rem_name, $grade, $src_id) = $db->db_fetch_row()) {
129:                 if (empty($this->rems_ar[$rem_id])) {
130:                     $this->rems_ar[$rem_id] = array('shortname' => $rem_short, 'remname' => $rem_name, 'max_grade' => $grade, 'source' => array($src_id => $grade));
131:                 } elseif (empty($this->rems_ar[$rem_id]['source'][$src_id])) {
132:                     $this->rems_ar[$rem_id]['source'][$src_id] = $grade;
133:                     if ($grade > $this->rems_ar[$rem_id]['max_grade']) {
134:                         $this->rems_ar[$rem_id]['max_grade'] = $grade;
135:                     }
136:                 }
137:             }
138:         }
139:         $db->free_result();
140:     }
141:     
142:     /**
143:      * get_grade_select returns a radio selection form for the max. desired grade (1|2|3)
144:      *
145:      * @param string $name The name of the radio selection form element.
146:      * @return string
147:      * @access public
148:      */
149:     function get_grade_select($name = 'remgrade') {
150:         $grade_ar= array(1=>_("all"), 2=>"&ge;2", 3=>"&ge;3");
151:         $grade_radio = "";
152:         foreach ($grade_ar as $key => $value) {
153:             $grade_radio .= "<span class='nobr'><input type='radio' class='button' name='$name' id='$name$key' value='$key'";
154:             if($this->grade == $key){
155:                 $grade_radio .= " checked='checked'";
156:             }
157:             $grade_radio .= " onchange= \"getSymRems('remgrade')\"> <label for='$name$key'><span class='grade_$key'>$value</span></label>&nbsp;</span>";
158:         }
159:         return $grade_radio;
160:     }
161:     
162:     /**
163:      * get_sort_select returns a html selection form for the desired sorting
164:      *
165:      * @return string
166:      * @access public
167:      */
168:     function get_sort_select() {
169:         $sort_ar= array('grade'=>_("Grade"), 'remname'=>_("Remedy name"), 'shortname'=>_(" Abbreviation"));
170:         $sort_select = "<select class='drop-down' id='sort' size='1' onchange= \"getSymRems('remgrade')\">\n";
171:         foreach ($sort_ar as $key => $value) {
172:             $sort_select .= "  <option value='$key'";
173:             
174:             if($this->sort == $key){
175:                 $sort_select .= " selected='selected'";
176:             }
177:             $sort_select .= ">$value</option>\n";
178:         }
179:         $sort_select .= "</select>\n";
180:         return $sort_select;
181:     }
182:     
183:     /**
184:      * get_rems_list returns a sorted html list of remedies related to the given symptom ($this->sym_id)
185:      *
186:      * @return string
187:      * @access public
188:      */
189:     function get_rems_list() {
190:         $rems_list = "";
191:         foreach ($this->rems_ar as $rem_id => $rem_ar) {
192:             $sources_ar = array();
193:             foreach ($rem_ar['source'] as $source => $grade) {
194:                 if ($grade != $rem_ar['max_grade']) {
195:                     $source .= "($grade" . _("-gr.") . ")";
196:                 }
197:                 $sources_ar[] = $source;
198:             }
199:             $title = $rem_ar['max_grade'] . _("-gr.") . ": " . implode("/", $sources_ar);
200:             $text = $rem_ar['remname'] . " (" . $rem_ar['shortname'] . ")";
201:             $tag = "div";
202:             $class = "";
203:             if ($this->sort == 'shortname') {
204:                 $title = $rem_ar['remname'] . " (" . $rem_ar['max_grade'] . _("-gr.") . "): " . implode("/", $sources_ar);
205:                 $text = $rem_ar['shortname'];
206:                 end($this->rems_ar);
207:                 if ($rem_id !== key($this->rems_ar)) {
208:                     $text .= ",<span style='white-space:normal;'> </span>";
209:                 }
210:                 $tag = "span";
211:                 $class = " class='nobr'";
212:             }
213:             if (isset($_REQUEST['tab'])) {
214:                 $materia_url = "javascript:tabOpen(\"materia.php?rem=\", $rem_id, \"GET\", 2)";
215:             } else {
216:                 $materia_url = "materia.php?rem=$rem_id";
217:             }
218:             $rems_list .= "<$tag$class><a href='$materia_url' title='" . _("Materia Medica") . "'>&nbsp;<img src='skins/original/img/materia.png' alt='Materia Medica' width='12' height='12'>&nbsp;</a><a href=\"javascript:popup_url('details.php?sym={$this->sym_id}&amp;rem=$rem_id&amp;sym_rem_tbl={$this->sym_rem_tbl}',540,380)\" title='$title' class='grade_" . $rem_ar['max_grade'] . "'>$text</a></$tag>";
219:         }
220:         return $rems_list;
221:     }
222: }
223: 
OpenHomeopath PHP code documentation API documentation generated by ApiGen 2.8.0