Page Menu
Home
In-Portal Phabricator
Search
Configure Global Search
Log In
Files
F1109113
in-portal
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Aug 25, 11:13 AM
Size
18 KB
Mime Type
text/x-diff
Expires
Wed, Aug 27, 11:13 AM (7 h, 53 m)
Engine
blob
Format
Raw Data
Handle
716012
Attached To
rINP In-Portal
in-portal
View Options
Index: branches/unlabeled/unlabeled-1.7.2/core/kernel/db/db_connection.php
===================================================================
--- branches/unlabeled/unlabeled-1.7.2/core/kernel/db/db_connection.php (nonexistent)
+++ branches/unlabeled/unlabeled-1.7.2/core/kernel/db/db_connection.php (revision 4255)
@@ -0,0 +1,572 @@
+<?php
+
+ /**
+ * Multi database connection class
+ *
+ */
+ class kDBConnection {
+
+ /**
+ * Current database type
+ *
+ * @var string
+ * @access private
+ */
+ var $dbType = 'mysql';
+ /**
+ * Created connection handle
+ *
+ * @var resource
+ * @access private
+ */
+ var $connectionID = null;
+ /**
+ * Handle of currenty processed recordset
+ *
+ * @var resource
+ * @access private
+ */
+ var $queryID = null;
+ /**
+ * DB type specific function mappings
+ *
+ * @var Array
+ * @access private
+ */
+ var $metaFunctions = Array();
+
+ /**
+ * Function to handle sql errors
+ *
+ * @var string
+ * @access private
+ */
+ var $errorHandler = '';
+
+ /**
+ * Error code
+ *
+ * @var int
+ * @access private
+ */
+ var $errorCode = 0;
+ /**
+ * Error message
+ *
+ * @var string
+ * @access private
+ */
+ var $errorMessage = '';
+
+ /**
+ * Defines if database connection
+ * operations should generate debug
+ * information
+ *
+ * @var bool
+ */
+ var $debugMode=false;
+
+ /**
+ * Initializes connection class with
+ * db type to used in future
+ *
+ * @param string $dbType
+ * @return DBConnection
+ * @access public
+ */
+ function kDBConnection($dbType, $errorHandler = '')
+ {
+ $this->dbType = $dbType;
+ $this->initMetaFunctions();
+ if(!$errorHandler)
+ {
+ $this->errorHandler = Array(&$this,'handleError');
+ }
+ else
+ {
+ $this->errorHandler=$errorHandler;
+ }
+ }
+
+ /**
+ * Set's custom error
+ *
+ * @param int $code
+ * @param string $msg
+ * @access public
+ */
+ function setError($code,$msg)
+ {
+ $this->errorCode=$code;
+ $this->errorMessage=$msg;
+ }
+
+ /**
+ * Checks if previous query execution
+ * raised an error.
+ *
+ * @return bool
+ * @access public
+ */
+ function hasError()
+ {
+ return !($this->errorCode == 0);
+ }
+
+ /**
+ * Caches function specific to requested
+ * db type
+ *
+ * @access private
+ */
+ function initMetaFunctions()
+ {
+ $ret = Array();
+ switch($this->dbType)
+ {
+ case 'mysql':
+ $ret = Array(); // only define functions, that name differs from "dbType_<meta_name>"
+
+ break;
+
+
+ }
+ $this->metaFunctions = $ret;
+ }
+
+ /**
+ * Get's function for specific db type
+ * based on it's meta name
+ *
+ * @param string $name
+ * @return string
+ * @access private
+ */
+ function getMetaFunction($name)
+ {
+ if( !isset($this->metaFunctions[$name]) )
+ {
+ if(function_exists($this->dbType.'_'.$name)) return $this->dbType.'_'.$name;
+ }
+ else
+ {
+ return $this->dbType.$name;
+ }
+ return false;
+ }
+
+
+ /**
+ * Try to connect to database server
+ * using specified parameters and set
+ * database to $db if connection made
+ *
+ * @param string $host
+ * @param string $user
+ * @param string $pass
+ * @param string $db
+ * @access public
+ */
+ function Connect($host,$user,$pass,$db,$force_new=false)
+ {
+ $func = $this->getMetaFunction('connect');
+ $this->connectionID = $func($host,$user,$pass,$force_new) or die('Can\'t connect to db');
+ if($this->connectionID)
+ {
+ $this->setDB($db);
+ $this->showError();
+ }
+ }
+
+ function ReConnect($host,$user,$pass,$db)
+ {
+ $func = $this->getMetaFunction('close');
+ $func($this->connectionID);
+ $this->Connect($host,$user,$pass,$db);
+ }
+
+ /**
+ * Shows error message from previous operation
+ * if it failed
+ *
+ * @access private
+ */
+ function showError($sql='')
+ {
+ $this->setError(0,''); // reset error
+ if($this->connectionID)
+ {
+ $func = $this->getMetaFunction('errno'); $this->errorCode = $func($this->connectionID);
+ if($this->hasError())
+ {
+ $func = $this->getMetaFunction('error'); $this->errorMessage = $func($this->connectionID);
+ if(is_array($this->errorHandler))
+ {
+ $func = $this->errorHandler[1];
+ $ret = $this->errorHandler[0]->$func($this->errorCode,$this->errorMessage,$sql);
+ }
+ else
+ {
+ $func = $this->errorHandler;
+ $ret = $func($this->errorCode,$this->errorMessage,$sql);
+ }
+ if(!$ret) exit;
+ }
+ }
+ }
+
+ /**
+ * Default error handler for sql errors
+ *
+ * @param int $code
+ * @param string $msg
+ * @param string $sql
+ * @return bool
+ * @access private
+ */
+ function handleError($code,$msg,$sql)
+ {
+ echo '<b>Processing SQL</b>: '.$sql.'<br>';
+ echo '<b>Error ('.$code.'):</b> '.$msg.'<br>';
+ return false;
+ }
+
+ /**
+ * Set's database name for connection
+ * to $new_name
+ *
+ * @param string $new_name
+ * @return bool
+ * @access public
+ */
+ function setDB($new_name)
+ {
+ if(!$this->connectionID) return false;
+ $func = $this->getMetaFunction('select_db');
+ return $func($new_name);
+ }
+
+ /**
+ * Returns first field of first line
+ * of recordset if query ok or false
+ * otherwise
+ *
+ * @param string $sql
+ * @return string
+ * @access public
+ */
+ function GetOne($sql)
+ {
+ $row = $this->GetRow($sql);
+ if(!$row) return false;
+
+ return array_shift($row);
+ }
+
+ /**
+ * Returns first row of recordset
+ * if query ok, false otherwise
+ *
+ * @param stirng $sql
+ * @return Array
+ * @access public
+ */
+ function GetRow($sql)
+ {
+ $sql .= ' '.$this->getLimitClause(0,1);
+ $ret = $this->Query($sql);
+ if(!$ret) return false;
+
+ return array_shift($ret);
+ }
+
+ /**
+ * Returns 1st column of recordset as
+ * one-dimensional array or false otherwise
+ * Optional parameter $key_field can be used
+ * to set field name to be used as resulting
+ * array key
+ *
+ * @param string $sql
+ * @param string $key_field
+ * @return Array
+ * @access public
+ */
+ function GetCol($sql, $key_field = null)
+ {
+ $rows = $this->Query($sql);
+ if(!$rows) return $rows;
+
+ $i = 0; $row_count = count($rows);
+ $ret = Array();
+ if(isset($key_field))
+ {
+ while ($i < $row_count)
+ {
+ $ret[$rows[$i][$key_field]] = array_shift($rows[$i]);
+ $i++;
+ }
+ }
+ else
+ {
+ while ($i < $row_count)
+ {
+ $ret[] = array_shift($rows[$i]);
+ $i++;
+ }
+ }
+ return $ret;
+ }
+
+ /**
+ * Queries db with $sql query supplied
+ * and returns rows selected if any, false
+ * otherwise. Optional parameter $key_field
+ * allows to set one of the query fields
+ * value as key in string array.
+ *
+ * @param string $sql
+ * @param string $key_field
+ * @return Array
+ */
+ function Query($sql,$key_field = null)
+ {
+ if($this->debugMode) return $this->debugQuery($sql,$key_field);
+ $query_func = $this->getMetaFunction('query');
+ $this->queryID = $query_func($sql,$this->connectionID);
+ if( is_resource($this->queryID) )
+ {
+ $ret = Array();
+ $fetch_func = $this->getMetaFunction('fetch_assoc');
+ if( isset($key_field) )
+ {
+ while( ($row = $fetch_func($this->queryID)) )
+ {
+ $ret[$row[$key_field]] = $row;
+ }
+ }
+ else
+ {
+ while( ($row = $fetch_func($this->queryID)) )
+ {
+ $ret[] = $row;
+ }
+ }
+ $this->Destroy();
+ return $ret;
+ }
+ $this->showError($sql);
+ return false;
+ }
+
+ function ChangeQuery($sql)
+ {
+ $this->Query($sql);
+ return $this->errorCode==0 ? true : false;
+ }
+
+ function debugQuery($sql, $key_field = null)
+ {
+ global $debugger;
+ $query_func = $this->getMetaFunction('query');
+
+ // set 1st checkpoint: begin
+ $isSkipTable=true;
+ $profileSQLs=defined('DBG_SQL_PROFILE')&&DBG_SQL_PROFILE;
+ if($profileSQLs)
+ {
+ $isSkipTable=isSkipTable($sql);
+ if(!$isSkipTable)
+ {
+ $queryID=$debugger->generateID();
+ $debugger->profileStart('sql_'.$queryID, $debugger->formatSQL($sql) );
+ }
+ }
+ // set 1st checkpoint: end
+
+ $this->queryID = $query_func($sql,$this->connectionID);
+
+ // set 2nd checkpoint: begin
+ if(!$isSkipTable) {
+ $debugger->profileFinish('sql_'.$queryID);
+ $debugger->profilerAddTotal('sql', 'sql_'.$queryID);
+ }
+ // set 2nd checkpoint: end
+
+ if( is_resource($this->queryID) )
+ {
+ $ret = Array();
+ $fetch_func = $this->getMetaFunction('fetch_assoc');
+ if( isset($key_field) )
+ {
+ while( ($row = $fetch_func($this->queryID)) )
+ {
+ $ret[$row[$key_field]] = $row;
+ }
+ }
+ else
+ {
+ while( ($row = $fetch_func($this->queryID)) )
+ {
+ $ret[] = $row;
+ }
+ }
+ $this->Destroy();
+ return $ret;
+ }
+ $this->showError($sql);
+ return false;
+ }
+
+ /**
+ * Free memory used to hold recordset handle
+ *
+ * @access private
+ */
+ function Destroy()
+ {
+ if($this->queryID)
+ {
+ $free_func = $this->getMetaFunction('free_result');
+ $free_func($this->queryID);
+ $this->queryID = null;
+ }
+ }
+
+ /**
+ * Returns auto increment field value from
+ * insert like operation if any, zero otherwise
+ *
+ * @return int
+ * @access public
+ */
+ function getInsertID()
+ {
+ $func = $this->getMetaFunction('insert_id');
+ return $func($this->connectionID);
+ }
+
+ /**
+ * Returns row count affected by last query
+ *
+ * @return int
+ * @access public
+ */
+ function getAffectedRows()
+ {
+ $func = $this->getMetaFunction('affected_rows');
+ return $func($this->connectionID);
+ }
+
+ /**
+ * Returns LIMIT sql clause part for specific db
+ *
+ * @param int $offset
+ * @param int $rows
+ * @return string
+ * @access private
+ */
+ function getLimitClause($offset, $rows)
+ {
+ if(!($rows > 0)) return '';
+
+ switch ($this->dbType) {
+
+ default:
+ return 'LIMIT '.$offset.','.$rows;
+ break;
+ }
+ }
+
+ /**
+ * Correctly quotes a string so that all strings are escaped. We prefix and append
+ * to the string single-quotes.
+ * An example is $db->qstr("Don't bother",magic_quotes_runtime());
+ *
+ * @param s the string to quote
+ * @param [magic_quotes] if $s is GET/POST var, set to get_magic_quotes_gpc().
+ * This undoes the stupidity of magic quotes for GPC.
+ *
+ * @return quoted string to be sent back to database
+ */
+ function qstr($s,$magic_quotes=false)
+ {
+ $replaceQuote = "\\'";
+ if (!$magic_quotes)
+ {
+ if ($replaceQuote[0] == '\\')
+ {
+ // only since php 4.0.5
+ $s = str_replace(array('\\',"\0"),array('\\\\',"\\\0"),$s);
+ //$s = str_replace("\0","\\\0", str_replace('\\','\\\\',$s));
+ }
+ return "'".str_replace("'",$replaceQuote,$s)."'";
+ }
+
+ // undo magic quotes for "
+ $s = str_replace('\\"','"',$s);
+
+ if($replaceQuote == "\\'") // ' already quoted, no need to change anything
+ {
+ return "'$s'";
+ }
+ else // change \' to '' for sybase/mssql
+ {
+ $s = str_replace('\\\\','\\',$s);
+ return "'".str_replace("\\'",$replaceQuote,$s)."'";
+ }
+ }
+
+ /**
+ * Returns last error code occured
+ *
+ * @return int
+ */
+ function getErrorCode()
+ {
+ return $this->errorCode;
+ }
+
+ /**
+ * Returns last error message
+ *
+ * @return string
+ * @access public
+ */
+ function getErrorMsg()
+ {
+ return $this->errorMessage;
+ }
+
+ function doInsert($fields_hash, $table, $type = 'INSERT')
+ {
+ $fields_sql = '';
+ $values_sql = '';
+ foreach ($fields_hash as $field_name => $field_value) {
+ $fields_sql .= '`'.$field_name.'`,';
+ $values_sql .= $this->qstr($field_value).',';
+ }
+
+ $fields_sql = preg_replace('/(.*),$/', '\\1', $fields_sql);
+ $values_sql = preg_replace('/(.*),$/', '\\1', $values_sql);
+ $sql = strtoupper($type).' INTO `'.$table.'` ('.$fields_sql.') VALUES ('.$values_sql.')';
+
+ return $this->ChangeQuery($sql);
+ }
+
+ function doUpdate($fields_hash, $table, $key_clause)
+ {
+ $fields_sql = '';
+ foreach ($fields_hash as $field_name => $field_value) {
+ $fields_sql .= '`'.$field_name.'` = '.$this->qstr($field_value).',';
+ }
+
+ $fields_sql = preg_replace('/(.*),$/', '\\1', $fields_sql);
+
+ $sql = 'UPDATE `'.$table.'` SET '.$fields_sql.' WHERE '.$key_clause;
+
+ return $this->ChangeQuery($sql);
+ }
+ }
+?>
\ No newline at end of file
Property changes on: branches/unlabeled/unlabeled-1.7.2/core/kernel/db/db_connection.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.7
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/unlabeled/unlabeled-1.7.2/admin/email/sendmail.php
===================================================================
--- branches/unlabeled/unlabeled-1.7.2/admin/email/sendmail.php (nonexistent)
+++ branches/unlabeled/unlabeled-1.7.2/admin/email/sendmail.php (revision 4255)
@@ -0,0 +1,123 @@
+<?php
+##############################################################
+##In-portal ##
+##############################################################
+## In-portal ##
+## Intechnic Corporation ##
+## All Rights Reserved, 1998-2002 ##
+## ##
+## No portion of this code may be copied, reproduced or ##
+## otherwise redistributed without proper written ##
+## consent of Intechnic Corporation. Violation will ##
+## result in revocation of the license and support ##
+## privileges along maximum prosecution allowed by law. ##
+##############################################################
+
+// new startup: begin
+define('REL_PATH', 'admin/email');
+$relation_level = count( explode('/', REL_PATH) );
+define('FULL_PATH', realpath(dirname(__FILE__) . str_repeat('/..', $relation_level) ) );
+require_once FULL_PATH.'/kernel/startup.php';
+// new startup: end
+
+$pathtolocal = $pathtoroot."kernel/";
+require_once ($pathtoroot.$admin."/include/elements.php");
+//require_once ($pathtoroot."kernel/admin/include/navmenu.php");
+require_once ($pathtolocal."admin/include/navmenu.php");
+require_once($pathtoroot.$admin."/browse/toolbar.php");
+
+//Set Section
+$section = 'in-portal:sendmail';
+
+//Set Environment Variable
+$envar = "env=" . BuildEnv();
+
+$objListToolBar = new clsToolBar();
+
+$objListToolBar->Set("section",$section);
+$objListToolBar->Set("load_menu_func","");
+$objListToolBar->Set("CheckClass","");
+
+$listImages = array();
+ //$img, $alt, $link, $onMouseOver, $onMouseOut, $onClick
+
+$objListToolBar->Add("select", "la_ToolTip_SendEmail","#","swap('select','toolbar/tool_select_f2.gif');",
+ "swap('select', 'toolbar/tool_select.gif');",
+ "SendMail();",
+ $imagesURL."/toolbar/tool_select.gif");
+
+$objListToolBar->Add("cancel", "la_ToolTip_Stop","#","swap('cancel','toolbar/tool_stop_f2.gif');",
+ "swap('cancel', 'toolbar/tool_stop.gif');","window.close();",
+ $imagesURL."/toolbar/tool_stop.gif");
+
+
+int_header($objListToolBar);
+if(count(explode(",",$recip_ids))>1 || $_POST["idtype"] == 'group')
+{
+ $action = "email_multi_send";
+}
+else
+ $action = "email_single_send";
+if ($addr_list != '' || $addr_list != null) {
+ $addresses = implode(",",$addr_list);
+}
+?>
+
+<table width="100%" border="0" cellspacing="0" cellpadding="4" class="tableborder">
+<form ID="sendmail" name="sendmail" action="<?php echo $adminURL."/email/do_send.php?env=".BuildEnv(); ?>&destform=popup" enctype="multipart/form-data" method=POST>
+ <INPUT TYPE="HIDDEN" NAME="EmailState" VALUE="<?php echo $action; ?>">
+ <?php int_subsection_title(admin_language("la_tab_General")); ?>
+
+ <tr <?php int_table_color(); ?>>
+ <td valign="top"><span class="text"><?php echo admin_language("la_prompt_To"); ?></span></td>
+ <td>
+
+ <SPAN CLASS="text"><?php echo implode("; ", $reciplist); ?></SPAN>
+ <input type="hidden" name="sendto" class="text" value="<?php echo $recip_ids; ?>">
+ <INPUT TYPE="HIDDEN" NAME="sendaddrs" VALUE="<?php echo $addresses; ?>">
+ </td>
+ <td><span ID="valTo" class="validation_error"><?php echo admin_language("la_val_RequiredField"); ?></span></td>
+ </tr>
+ <tr <?php int_table_color(); ?>>
+ <td valign="top"><span class="text"><?php echo admin_language("la_prompt_Subject"); ?></span></td>
+ <td>
+ <input type="text" name="subject" class="text" size="60" value="<?php echo ""; ?>">
+ </td>
+ <td><span ID="valSubject" class="validation_error"><?php echo admin_language("la_val_RequiredField"); ?></span></td>
+ </tr>
+
+ <tr <?php int_table_color(); ?>>
+ <td valign="top"><span class="text"><?php echo admin_language("la_prompt_Attatchment"); ?></span></td>
+ <td>
+ <input type="file" name="attatchment" class="text" size="60">
+ </td>
+ <td></td>
+ </tr>
+
+ <?php int_subsection_title(admin_language("la_tab_Message")); ?>
+ <tr <?php int_table_color(); ?>>
+ <td valign="top"><span class="text"><?php echo admin_language("la_prompt_html_version"); ?></span>
+ <br />
+ <a href="#">
+ <img src="<?php echo $rootURL; ?>admin/icons/icon24_link_editor.gif" style="cursor:hand" border="0"
+ ONCLICK="document.forms[0].elements[0].checked=true; OpenEditor('§ion=<?php echo $section; ?>','sendmail','messageHTML');">
+ </a>
+
+ </td>
+ <td valign="top" COLSPAN=2>
+ <textarea name="messageHTML" id="messageHTML" rows="5" cols="60">Type your Message Here</textarea>
+ </td>
+ </tr>
+ <tr <?php int_table_color(); ?>>
+ <td valign="top"><span class="text"><?php echo admin_language("la_prompt_text_version"); ?></span></td>
+ <td valign="top" COLSPAN=2>
+ <textarea name="messageTEXT" id="messageTEXT" rows="5" cols="60">Type your Message Here</textarea>
+ </td>
+ </tr>
+
+</FORM>
+</TABLE>
+<script language="JavaScript">
+ InitValidation();
+</script>
+<?php int_footer(); ?>
Property changes on: branches/unlabeled/unlabeled-1.7.2/admin/email/sendmail.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.7
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Event Timeline
Log In to Comment