id = $valuemap[parenttabid]; $this->label = $valuemap[parenttab_label]; $this->sequence = $valuemap[sequence]; $this->visible = $valuemap[visible]; } /** * Get relation sequence to use * @access private */ function __getNextRelSequence() { global $adb; $result = $adb->pquery("SELECT MAX(sequence) AS max_seq FROM vtiger_parenttabrel WHERE parenttabid=?", Array($this->id)); $maxseq = $adb->query_result($result, 0, 'max_seq'); return ++$maxseq; } /** * Add module to this menu instance * @param Vtiger_Module Instance of the module */ function addModule($moduleInstance) { if($this->id) { global $adb; $relsequence = $this->__getNextRelSequence(); $adb->pquery("INSERT INTO vtiger_parenttabrel (parenttabid,tabid,sequence) VALUES(?,?,?)", Array($this->id, $moduleInstance->id, $relsequence)); self::log("Added to menu $this->label ... DONE"); } else { self::log("Menu could not be found!"); } self::syncfile(); } /** * Remove module from this menu instance. * @param Vtiger_Module Instance of the module */ function removeModule($moduleInstance) { if(empty($moduleInstance) || empty($moduleInstance)) { self::log("Module instance is not set!"); return; } if($this->id) { global $adb; $adb->pquery("DELETE FROM vtiger_parenttabrel WHERE parenttabid = ? AND tabid = ?", Array($this->id, $moduleInstance->id)); self::log("Removed $moduleInstance->name from menu $this->label ... DONE"); } else { self::log("Menu could not be found!"); } self::syncfile(); } /** * Detach module from menu * @param Vtiger_Module Instance of the module */ static function detachModule($moduleInstance) { global $adb; $adb->pquery("DELETE FROM vtiger_parenttabrel WHERE tabid=?", Array($moduleInstance->id)); self::log("Detaching from menu ... DONE"); self::syncfile(); } /** * Get instance of menu by label * @param String Menu label */ static function getInstance($value) { global $adb; $query = false; $instance = false; if(Vtiger_Utils::isNumber($value)) { $query = "SELECT * FROM vtiger_parenttab WHERE parenttabid=?"; } else { $query = "SELECT * FROM vtiger_parenttab WHERE parenttab_label=?"; } $result = $adb->pquery($query, Array($value)); if($adb->num_rows($result)) { $instance = new self(); $instance->initialize($adb->fetch_array($result)); } return $instance; } /** * Helper function to log messages * @param String Message to log * @param Boolean true appends linebreak, false to avoid it * @access private */ static function log($message, $delim=true) { Vtiger_Utils::Log($message, $delim); } /** * Synchronize the menu information to flat file * @access private */ static function syncfile() { self::log("Updating parent_tabdata file ... STARTED"); create_parenttab_data_file(); self::log("Updating parent_tabdata file ... DONE"); } } ?>