コード例 #1
0
ファイル: oldFlexiModel.php プロジェクト: u007/FlexiPHP
 /**
  * Get DB
  * @param boolean force new connection if did not exists
  * @return link
  */
 function getDB($bNew = false)
 {
     if (!isset($this->oDb)) {
         $this->oDb = FlexiModelUtil::getDBInstance($bNew);
     }
     return $this->oDb;
 }
コード例 #2
0
ファイル: FlexiService.php プロジェクト: u007/FlexiPHP
 public static function cleanField($sName)
 {
     if (FlexiConfig::$sDBType == "mysql") {
         return "`" . FlexiModelUtil::dbCleanName($sName) . "`";
     }
     return $sName;
 }
コード例 #3
0
ファイル: controller.php プロジェクト: u007/FlexiPHP
 public function serviceSyncTable($oData)
 {
     FlexiLogger::debug(__METHOD__, "Running");
     //var_dump($aData["type"]);
     //FlexiLogger::error(__METHOD__, print_r($oData, true));
     $aTable = $oData->tables;
     $sType = $oData->type;
     $aMessage = array();
     FlexiLogger::info(__METHOD__, "Sync type: " . $sType);
     $oUtil = FlexiModelUtil::getInstance();
     foreach ($aTable as $sTable => $aTableSetting) {
         $aRow = $aTableSetting->rows;
         $sIDField = $aTableSetting->idfield;
         //FlexiLogger::error(__METHOD__, $sTable);
         $oModel = $oUtil->getRedBeanModel($sTable);
         if ($sType == "fullsync") {
             FlexiLogger::info(__METHOD__, "Clearing table: " . $sTable);
             if ($oUtil->getRedBeanDB()->tableExists($sTable)) {
                 $oUtil->getRedBeanExecute("delete from " . $sTable);
             }
         }
         if (count($aRow) > 0) {
             $sFields = implode(",", array_keys((array) $aRow[0]));
         }
         $oUtil->setRedBeanTableIdField($sTable, $sIDField);
         FlexiLogger::debug(__METHOD__, $sTable . ", fields: " . $sFields);
         foreach ($aRow as $oRow) {
             $oRowData = (array) $oRow;
             $oModel = $oUtil->getRedBeanModel($sTable);
             //        $sPrimaryField = "id";
             //        if (isset($oRowData[$sPrimaryField])) {
             //          $oModel = $oUtil->getRedBeanModel($sTable, $oRowData[$sPrimaryField]);
             //        } else {
             //          $oModel = $oUtil->getRedBeanModel($sTable);
             //        }
             //FlexiLogger::info(__METHOD__, "Type: " . $oModel->getMeta("type"));
             $oModel->import($oRowData, $sFields);
             FlexiLogger::info(__METHOD__, "model: " . $sTable . ", values: " . print_r($oModel->export(), true));
             $oUtil->insertOrUpdateRedBean($oModel);
             unset($oModel);
         }
         //each records
         $aMessage[] = "Imported: " . $sTable . ", cnt: " . count($aRow);
         FlexiLogger::info(__METHOD__, "Imported: " . $sTable . ", cnt: " . count($aRow));
         //if (1==1) { break; }
     }
     //each table
     $this->unsetToken();
     FlexiLogger::info(__METHOD__, "Done");
     return array("msg" => implode("\r\n<br/>", $aMessage));
 }
コード例 #4
0
ファイル: FlexiBaseService.php プロジェクト: u007/FlexiPHP
 /**
  * get table rows
  * @param array $aCond ['field:condition'=>'value'], eg: 'id:=' => 1
  * @param String $sOrderby
  * @param String $sSelect, eg: select id, name
  */
 public function getFetchOne($sTable, $aCond = array(), $sOrderby = null, $sSelect = null)
 {
     $select = empty($sSelect) ? "select * " : $sSelect;
     $aWhere = FlexiService::getWhere($aCond);
     $sSQL = $select . " from " . FlexiService::cleanField($sTable);
     $aParams = array();
     if (!empty($aWhere["where"])) {
         $aParams = $aWhere["params"];
         $sSQL .= " where " . $aWhere["where"];
     }
     if (!empty($sOrderby)) {
         $sSQL .= " order by " . $sOrderby;
     }
     $sSQL .= " limit 1";
     return FlexiModelUtil::getInstance()->getRedbeanFetchOne($sSQL, $aParams);
 }
コード例 #5
0
ファイル: ModxWebUsers.php プロジェクト: u007/FlexiPHP
 public function postValidate()
 {
     if (empty($this->username)) {
         $this->getErrorStack()->add("username", "notnull");
     } else {
         $oQuery = FlexiModelUtil::getDBQuery("ModxWebUsers")->where("username=?", array($this->username));
         if (!empty($this->id)) {
             $oQuery->addWhere("id<>?", array($this->id));
         }
         //echo $oQuery->getSQLQuery();
         //echo var_dump($this->username);
         $oResult = $oQuery->fetchOne();
         if ($oResult !== false) {
             $this->getErrorStack()->add("username", "duplicate");
         }
     }
     if (empty($this->password)) {
         $this->getErrorStack()->add("password", "notnull");
     }
 }
コード例 #6
0
ファイル: FlexiLogger.php プロジェクト: u007/FlexiPHP
 public static function log($asType, $sMessage, $sEventId = "")
 {
     $iType = -1;
     switch ($asType) {
         case "warn":
             $iType = 2;
             break;
         case "error":
             $iType = 3;
             break;
         case "info":
         case "notice":
             $iType = 1;
             break;
         case "debug":
             $iType = 1;
             break;
         default:
             $iType = 0;
     }
     if (strlen($sEventId) > 50) {
         $sEventId = substr($sEventId, -50);
     }
     switch (FlexiConfig::$sFramework) {
         case "modx":
         case "modx2":
             global $modx;
             //echo "$sType:$sMessage<br/>\n";
             $modx->logEvent(0, $iType, $sMessage, substr($sMessage, 0, 47) . (strlen($sMessage) > 47 ? "..." : ""));
             break;
         case "wirenet":
             $aLog = array("source" => $sEventId, "type" => $iType, "createdon" => gmmktime(), "user" => !empty($_SESSION['screenname']) ? $_SESSION['screenname'] : (isset($_SESSION['activenodeid']) ? $_SESSION['activenodeid'] : 0), "description" => $sMessage);
             FlexiModelUtil::getInstance()->insertXPDO("modx_event_log", $aLog);
             break;
         default:
             file_put_contents(FlexiConfig::$sLogFile, date("Ymd.H:m:s") . ":" . $sMessage . "\r\n", FILE_APPEND);
     }
 }
コード例 #7
0
ファイル: flexi.include.php プロジェクト: u007/FlexiPHP
<?php

global $aFlexiSetting;
require_once $aFlexiSetting["basedir"] . "/lib/Doctrine/Doctrine.php";
if ($aFlexiSetting["doctrine"]) {
    spl_autoload_register(array('Doctrine', 'autoload'));
}
require_once $aFlexiSetting["basedir"] . "/base/Flexi/objectclass/FlexiConfig.php";
FlexiConfig::configure($aFlexiSetting);
//include this file to integrate flexi controller
require_once FlexiConfig::$sBaseDir . "/functions.php";
spl_autoload_register(array("FlexiConfig", "autoLoad"));
require_once FlexiConfig::$sBaseDir . "/base/Flexi/controller.php";
FlexiController::$iLogLevel = FlexiConfig::$iLogLevel;
//setting up DB Module
$oFlexiModelUtil = FlexiModelUtil::getInstance();
$oFlexiModelUtil->setDBSetting(FlexiConfig::$sDBType, FlexiConfig::$sDBHost, FlexiConfig::$iDBPort, FlexiConfig::$sDBUser, FlexiConfig::$sDBPass, FlexiConfig::$sDBName);
FlexiConfig::finalize();
//initialising main controller
$oFlexi = FlexiController::getInstance();
コード例 #8
0
ファイル: FlexiModel.php プロジェクト: u007/FlexiPHP
 /**
  * load model
  * @param string name
  * @param path (optional)
  */
 public function loadModel($asName, $asPath)
 {
     FlexiModelUtil::includeModelFile($asName, $asPath);
 }
コード例 #9
0
 public function onUpdate($oModel)
 {
     FlexiLogger::error(__METHOD__, "Model: " . $oModel->id);
     $aForm = self::getFormFields();
     FlexiModelUtil::validateForm($aForm, $oModel);
 }
コード例 #10
0
 public function getUserById($iId)
 {
     $oModel = FlexiModelUtil::getInstance()->getRedBeanModel(FlexiConfig::$sDBPrefix . "users", $iId);
     if (empty($oModel->user_id)) {
         throw new FlexiException("User not found: " . $iId, ERROR_EOF);
     }
     return $oModel;
 }
コード例 #11
0
 public function getUserByLoginId($asLoginId, $sUserType = "user")
 {
     static $oUser = null;
     if ($oUser != null && $this->getUserType() == $sUserType && $this->getUserLoginId() == $asLoginId) {
         return $oUser;
     }
     //echo "Getting: " . $asLoginId . ", type: " . $sUserType;
     if ($sUserType == "seller") {
         $oUser = FlexiModelUtil::getInstance()->getRedbeanFetchOne("select * from " . FlexiConfig::$sDBPrefix . "artists" . " where artist_name=:user_id AND deleted = 'N'", array(":user_id" => $asLoginId));
         if (empty($oUser["artist_id"])) {
             return null;
         }
     } else {
         if ($sUserType == "user") {
             $oUser = FlexiModelUtil::getInstance()->getRedbeanFetchOne("select * from " . FlexiConfig::$sDBPrefix . "users" . " where user_id=:user_id AND deleted = 'N'", array(":user_id" => $asLoginId));
             if (empty($oUser["user_id"])) {
                 return null;
             }
         }
     }
     return $oUser;
 }
コード例 #12
0
ファイル: FlexiModelUtil.php プロジェクト: u007/FlexiPHP
 public static function getInstance()
 {
     if (self::$oInstance == null) {
         self::$oInstance = new FlexiModelUtil();
     }
     return self::$oInstance;
 }
コード例 #13
0
ファイル: functions_db.php プロジェクト: u007/FlexiPHP
function dbReconnect(&$pdo = null)
{
    if (!is_null($pdo)) {
        return $pdo;
    }
    //there is no reconnect in pdo
    return FlexiModelUtil::getInstance()->getXPDO();
}
コード例 #14
0
 public function doLoginByToken($sToken)
 {
     //restoring based on token
     if (empty($sToken)) {
         return;
     }
     $oToken = FlexiModelUtil::getInstance()->getRedBeanFetchOne("select userid from service_token where token=:token", array(":token" => $sToken));
     if ($oToken != null && $oToken !== false) {
         if (!$this->forceLogin($oToken["userid"])) {
             throw new Exception("Unable to force login: "******"userid"]);
         }
     } else {
         FlexiLogger::error(__METHOD__, "Invalid token: " . $sToken);
     }
 }
コード例 #15
0
ファイル: controller.php プロジェクト: u007/FlexiPHP
 public function methodAjaxTableList()
 {
     $this->disableView();
     $aList = FlexiModelUtil::getTableList();
     echo $this->returnJSON(true, $aList);
     return true;
 }
コード例 #16
0
ファイル: FlexiTableObject.php プロジェクト: u007/FlexiPHP
 public function getSchemaSQL()
 {
     $sSQL = "CREATE TABLE " . FlexiModelUtil::getSQLName($this->sTableName);
     $sSQL .= " (";
     $sFieldSQL = "";
     $sPrimaryField = "";
     $aFields = $this->fieldsToArray();
     foreach ($aFields as $oField) {
         $oFieldObject = $this->aChild["field"][$oField["sName"]];
         $sFieldSQL .= empty($sFieldSQL) ? "" : ",\n";
         if ($oField["primary"]) {
             $sPrimaryField .= (empty($sPrimaryField) ? "" : ",") . $oField["sName"];
         }
         $sSQLDefault = FlexiModelUtil::getDefaultSQL($oField["default"], $oField["cannull"]);
         $sFieldSQL .= FlexiModelUtil::getSQLName($oField["sName"]) . " " . strtoupper($oField["dbtype"]) . " " . (empty($oField["precision"]) ? "" : "(" . $oField["precision"] . ") ") . (!empty($oField["options"]) && $oField["dbtype"] == "enum" ? "(" . $oFieldObject->getEnum() . ")" : "") . " " . $sSQLDefault . " " . ($oField["autonumber"] ? " AUTO_INCREMENT" : "");
     }
     $sSQL .= "\n" . $sFieldSQL . "\n";
     if (!empty($sPrimaryField)) {
         $aPrimary = explode(",", $sPrimaryField);
         $sPrimarySQL = FlexiModelUtil::getSQLName($aPrimary);
         $sSQL .= "\n,PRIMARY KEY (" . $sPrimarySQL . ")\n";
     }
     $sSQL .= ") ENGINE=InnoDB CHARSET UTF8";
     return $sSQL;
 }
コード例 #17
0
 /**
  * Get logged in user
  * @return FlexiLoginUserModel
  */
 public function getLoggedInUser()
 {
     if (is_null($this->oUser)) {
         $oUser = FlexiModelUtil::getModelInstance("FlexiLoginUserModel", "flexiphp/base/Flexi");
         global $modx;
         $oUser->iUserId = $modx->getLoginUserID();
         //var_dump("userid: " . $oUser->iUserId);
         //TODO demo
         //$oUser->iUserId					= 1;
         $oUserInfo = $modx->getWebUserInfo($oUser->iUserId);
         //var_dump($oUserInfo);
         //var_dump($oUserInfo);
         $oUser->sUserFullName = $oUserInfo["fullname"];
         $oUser->sUserName = $oUserInfo["username"];
         $oUser->sPassword = $oUserInfo["password"];
         //var_dump($modx->getWebUserInfo(1));
         $this->setUser($oUser);
         return $this->getUser();
     }
     return null;
 }
コード例 #18
0
ファイル: FlexiBaseController.php プロジェクト: u007/FlexiPHP
 public function getTableInstance($asName, $asPath = null)
 {
     $sPath = empty($asPath) ? $this->sModulePath : $asPath;
     return FlexiModelUtil::getTableInstance($asName, $sPath);
 }
コード例 #19
0
ファイル: FlexiConfig.php プロジェクト: u007/FlexiPHP
 /**
  * finalize setting for particular framework
  */
 public static function finalize()
 {
     //initialise db
     FlexiModelUtil::getInstance()->setDBSetting(self::$sDBType, self::$sDBHost, self::$iDBPort, self::$sDBUser, self::$sDBPass, self::$sDBName);
     if (self::$bEnableDoctrine && !empty(self::$sDBType)) {
         FlexiModelUtil::getDBInstance();
     }
     if (is_null(self::$oLoginHandler)) {
         if (!empty(self::$sLoginHandlerClass)) {
             self::setLoginHandler(new self::$sLoginHandlerClass());
         } else {
             switch (self::$sFramework) {
                 case "drupal":
                     //TODO
                     break;
                 case "modx":
                     self::setLoginHandler(new FlexiModXLoginHandler());
                     break;
                 case "modx2":
                     self::setLoginHandler(new FlexiModX2LoginHandler());
                     break;
                 case "iscript":
                     self::setLoginHandler(new FlexiIScriptLoginHandler());
                     break;
                 case "joomla":
                     //TODO
                     break;
                 case "":
                     self::setLoginHandler(new FlexiLoginHandler());
                     break;
                 default:
                     $sClass = "Flexi" . ucfirst(self::$sFramework) . "LoginHandler";
                     self::setLoginHandler(new $sClass());
             }
             //switch
         }
     }
     //end if
 }
コード例 #20
0
ファイル: FlexiObjectManager.php プロジェクト: u007/FlexiPHP
 public function updateTable(FlexiObject $oObject)
 {
     $bDebug = false;
     $aList = FlexiModelUtil::getTableSchema($oObject->sTableName);
     $aFieldSQL = array();
     $aPrimary = array();
     $sLastField = "";
     $aLastPrimary = array();
     foreach ($oObject->aChild["field"] as $oFieldObject) {
         $oField = $oFieldObject->toArray();
         //finding field by old name and new name
         $bHasField = false;
         foreach ($aList as $oTableField) {
             $sFindName = empty($oField["oldname"]) ? $oField["sName"] : $oField["oldname"];
             if ($bDebug) {
                 echo "[" . $oTableField["Field"] . "]vs[" . $sFindName . "]";
             }
             if ($oTableField["Field"] == $sFindName) {
                 $bHasField = true;
                 break;
             }
         }
         //if old name not found, use new name
         if (!$bHasField && $oField["sName"] != $oField["oldname"]) {
             foreach ($aList as $oTableField) {
                 $sFindName = $oField["sName"];
                 if ($bDebug) {
                     echo "[" . $oTableField["Field"] . "]vs[" . $sFindName . "]";
                 }
                 if ($oTableField["Field"] == $sFindName) {
                     $bHasField = true;
                     break;
                 }
             }
         }
         if ($oField["iStatus"] == 1) {
             //update or add
             $sSQLDefault = FlexiModelUtil::getDefaultSQL($oField["default"], $oField["cannull"]);
             if ($oField["primary"]) {
                 $aPrimary[] = $oField["sName"];
             }
             if (strpos($oTableField["Key"], "PRI") !== false) {
                 $aLastPrimary[] = $oTableField["Field"];
             }
             //$this->doLog("Field: " . $oField["sName"] . ", " . $oFieldObject->options . ", enum: " . $oFieldObject->getEnum());
             $sFieldTypeSQL = FlexiModelUtil::getSQLName($oField["sName"]) . " " . strtoupper($oField["dbtype"]) . "" . (empty($oField["precision"]) ? "" : "(" . $oField["precision"] . ") ") . (!empty($oField["options"]) && $oField["dbtype"] == "enum" ? "(" . $oFieldObject->getEnum() . ")" : "") . " " . $sSQLDefault . " " . ($oField["autonumber"] ? "AUTO_INCREMENT" : "");
             if ($bHasField) {
                 $sFieldSQL = "CHANGE COLUMN " . FlexiModelUtil::getSQLName($sFindName) . " " . $sFieldTypeSQL;
             } else {
                 $sFieldSQL = "ADD COLUMN " . $sFieldTypeSQL;
             }
             $sFieldSQL .= empty($sLastField) ? " FIRST " : " AFTER " . FlexiModelUtil::getSQLName($sLastField);
             $aFieldSQL[] = $sFieldSQL;
             $sLastField = $oField["sName"];
         } else {
             //do delete
             if ($bHasField) {
                 $aFieldSQL[] = "DROP COLUMN " . FlexiModelUtil::getSQLName($sFindName);
             }
         }
     }
     //for
     $sSQL = "ALTER TABLE " . FlexiModelUtil::getSQLName($oObject->sTableName) . "\n";
     $sSQL .= implode(",\n", $aFieldSQL);
     if (!empty($aPrimary)) {
         $bIsSame = false;
         if (!empty($aLastPrimary)) {
             foreach ($aPrimary as $sPKey) {
                 $bFoundKey = false;
                 foreach ($aLastPrimary as $sLastKey) {
                     if ($sLastKey == $sPKey) {
                         $bFoundKey = true;
                         $bIsSame = true;
                         break;
                     }
                 }
                 //once found a single not same, time to redo primary key
                 if (!$bFoundKey) {
                     $bIsSame = false;
                     break;
                 }
             }
         }
         if (!$bIsSame) {
             $sPrimarySQL = FlexiModelUtil::getSQLName($aPrimary);
             if (!empty($aLastPrimary)) {
                 $sSQL .= "\n,DROP PRIMARY KEY";
             }
             $sSQL .= "\n,ADD PRIMARY KEY (" . $sPrimarySQL . ")";
         }
     } else {
         //new no primary key
         if (!empty($aLastPrimary)) {
             //last has primary, time to drop it
             $sSQL .= "\n,DROP PRIMARY KEY";
         }
     }
     //$sSQL .= ";";
     FlexiLogger::info(__METHOD__, "SQL: " . $sSQL);
     $this->logSQL($sSQL);
     return FlexiModelUtil::getInstance()->getXPDOExecute($sSQL);
 }
コード例 #21
0
 public function getAllRoles()
 {
     $aList = FlexiModelUtil::getInstance()->getRedBeanFetchAll("select name from modx_membergroup_names order by name asc");
     return $aList;
 }
コード例 #22
0
 public function _doQuery($sTable = "", &$aCond = array(), &$aGroupBy = null, &$aOrderby = null, &$sSelect = null, &$iLimit = null, &$iOffset = 0)
 {
     //echo __METHOD__ . ": select: " . $sSelect . "<br/>\n";
     $xpdo = FlexiModelUtil::getInstance()->getXPDO();
     $sSQL = $this->getQuery($sTable, $aCond, $aGroupBy, $aOrderby, $sSelect, $iLimit, $iOffset);
     $this->onQuery($sSQL);
     $stmt = $xpdo->query($sSQL);
     if ($stmt) {
         return $stmt;
     } else {
         $aError = $xpdo->errorInfo();
         throw new Exception("Query failed: " . $aError[2] . ":" . $sSQL);
     }
 }
コード例 #23
0
ファイル: controller.php プロジェクト: u007/FlexiPHP
 function methodDefault()
 {
     $iPage = (int) $this->getRequest("page", 1);
     $iRecordPerPage = 20;
     $aKeys = $this->getDBQuery("RepositoryListValuesTable")->select("distinct(listkey) as listkey")->orderBy("listkey asc")->execute();
     $this->oView->addVar("aKeys", $aKeys);
     $oQuery = $this->getDBQuery("RepositoryListValuesTable")->limit($iRecordPerPage)->offset(($iPage - 1) * $iRecordPerPage)->orderBy("listkey asc, weight asc, listvalue asc");
     $oCountQuery = $this->getDBQuery("RepositoryListValuesTable");
     $sFilter = $this->getFilter();
     if (!empty($sFilter)) {
         $oQuery->where("listkey=?", $sFilter);
         $oCountQuery->where("listkey=?", $sFilter);
     }
     $this->oView->addVar("filter_listkey", $sFilter);
     $aList = $oQuery->execute();
     //for more condition, add where clause
     $iCount = FlexiModelUtil::getRecordCount($oCountQuery);
     //var_dump($iCount);
     $this->oView->addPaging($iCount, $iRecordPerPage, $iPage, array(), null);
     $this->oView->addVar("aList", $aList->toArray());
     if (FlexiConfig::$sFramework == "modx" || FlexiConfig::$sFramework == "modx2") {
         $sForm = $this->renderMarkup($this->loadForm());
         $this->oView->addVar("form", $sForm);
     }
     return true;
 }