function vtws_addEntityInfo()
 {
     require_once 'include/Webservices/Utils.php';
     $names = vtws_getModuleNameList();
     $moduleHandler = array('file' => 'include/Webservices/VtigerModuleOperation.php', 'class' => 'VtigerModuleOperation');
     foreach ($names as $tab) {
         if (in_array($tab, array('Rss', 'Webmails', 'Recyclebin'))) {
             continue;
         }
         $entityId = $this->db->getUniqueID("vtiger_ws_entity");
         $this->db->pquery('insert into vtiger_ws_entity(id,name,handler_path,handler_class,ismodule) values (?,?,?,?,?)', array($entityId, $tab, $moduleHandler['file'], $moduleHandler['class'], 1));
     }
     $entityId = $this->db->getUniqueID("vtiger_ws_entity");
     $this->db->pquery('insert into vtiger_ws_entity(id,name,handler_path,handler_class,ismodule) values (?,?,?,?,?)', array($entityId, 'Events', $moduleHandler['file'], $moduleHandler['class'], 1));
     $entityId = $this->db->getUniqueID("vtiger_ws_entity");
     $this->db->pquery('insert into vtiger_ws_entity(id,name,handler_path,handler_class,ismodule) values (?,?,?,?,?)', array($entityId, 'Users', $moduleHandler['file'], $moduleHandler['class'], 1));
     vtws_addDefaultActorTypeEntity('Groups', array('fieldNames' => 'groupname', 'indexField' => 'groupid', 'tableName' => 'vtiger_groups'));
     require_once "include/Webservices/WebServiceError.php";
     require_once 'include/Webservices/VtigerWebserviceObject.php';
     $webserviceObject = VtigerWebserviceObject::fromName($this->db, 'Groups');
     $this->db->pquery("insert into vtiger_ws_entity_tables(webservice_entity_id,table_name) values \n\t\t\t(?,?)", array($webserviceObject->getEntityId(), 'vtiger_groups'));
     vtws_addDefaultActorTypeEntity('Currency', array('fieldNames' => 'currency_name', 'indexField' => 'id', 'tableName' => 'vtiger_currency_info'));
     $webserviceObject = VtigerWebserviceObject::fromName($this->db, 'Currency');
     $this->db->pquery("insert into vtiger_ws_entity_tables(webservice_entity_id,table_name) values (?,?)", array($webserviceObject->getEntityId(), 'vtiger_currency_info'));
     vtws_addDefaultActorTypeEntity('DocumentFolders', array('fieldNames' => 'foldername', 'indexField' => 'folderid', 'tableName' => 'vtiger_attachmentsfolder'));
     $webserviceObject = VtigerWebserviceObject::fromName($this->db, 'DocumentFolders');
     $this->db->pquery("insert into vtiger_ws_entity_tables(webservice_entity_id,table_name) values (?,?)", array($webserviceObject->getEntityId(), 'vtiger_attachmentsfolder'));
 }
Exemplo n.º 2
0
function webserviceMigration()
{
    global $adb;
    require_once 'include/utils/CommonUtils.php';
    require_once 'include/Webservices/Utils.php';
    $fieldTypeInfo = array('picklist' => array(15, 16), 'text' => array(19, 20, 21, 24), 'autogenerated' => array(3), 'phone' => array(11), 'multipicklist' => array(33), 'url' => array(17), 'skype' => array(85), 'boolean' => array(56, 156), 'owner' => array(53), 'file' => array(61, 28));
    $referenceMapping = array("50" => array("Accounts"), "51" => array("Accounts"), "57" => array("Contacts"), "58" => array("Campaigns"), "73" => array("Accounts"), "75" => array("Vendors"), "76" => array("Potentials"), "78" => array("Quotes"), "80" => array("SalesOrder"), "81" => array("Vendors"), "101" => array("Users"), "52" => array("Users"), "357" => array("Contacts", "Accounts", "Leads", "Users", "Vendors"), "59" => array("Products"), "66" => array("Leads", "Accounts", "Potentials", "HelpDesk"), "77" => array("Users"), "68" => array("Contacts", "Accounts"), "117" => array('Currency'), "116" => array('Currency'), '26' => array('DocumentFolders'), '10' => array());
    ExecuteQuery("CREATE TABLE IF NOT EXISTS vtiger_ws_fieldtype(fieldtypeid integer(19) not null auto_increment,uitype varchar(30)not null,fieldtype varchar(200) not null,PRIMARY KEY(fieldtypeid),UNIQUE KEY uitype_idx (uitype)) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
    ExecuteQuery("CREATE TABLE IF NOT EXISTS vtiger_ws_referencetype(fieldtypeid integer(19) not null,type varchar(25) not null,PRIMARY KEY(fieldtypeid,type),  CONSTRAINT `fk_1_vtiger_referencetype` FOREIGN KEY (`fieldtypeid`) REFERENCES `vtiger_ws_fieldtype` (`fieldtypeid`) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
    ExecuteQuery("CREATE TABLE IF NOT EXISTS vtiger_ws_userauthtoken(userid integer(19) not null,token varchar(25) not null,expiretime INTEGER(19),PRIMARY KEY(userid,expiretime),UNIQUE KEY userid_idx (userid)) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
    ExecuteQuery("alter table vtiger_users add column accesskey varchar(36);");
    $fieldid = $adb->getUniqueID("vtiger_field");
    $usersTabId = getTabid("Users");
    $user_adv_block_id = getBlockId($usersTabId, 'LBL_USER_ADV_OPTIONS');
    ExecuteQuery("insert into vtiger_field (tabid, fieldid, columnname, tablename, generatedtype, uitype, fieldname, fieldlabel, readonly, presence, selected, maximumlength, sequence, block, displaytype, typeofdata, quickcreate, quickcreatesequence, info_type, masseditable, helpinfo) values({$usersTabId},{$fieldid},'accesskey','vtiger_users',1,3,'accesskey','Webservice Access Key',1,0,0,100,2,{$user_adv_block_id},2,'V~O',1,null,'BAS',0,'Webservice Access Key');");
    foreach ($referenceMapping as $uitype => $referenceArray) {
        $success = true;
        $result = $adb->pquery("insert into vtiger_ws_fieldtype(uitype,fieldtype) values(?,?)", array($uitype, "reference"));
        if (!is_object($result)) {
            $success = false;
        }
        $result = $adb->pquery("select * from vtiger_ws_fieldtype where uitype=?", array($uitype));
        $rowCount = $adb->num_rows($result);
        for ($i = 0; $i < $rowCount; $i++) {
            $fieldTypeId = $adb->query_result($result, $i, "fieldtypeid");
            foreach ($referenceArray as $index => $referenceType) {
                $result = $adb->pquery("insert into vtiger_ws_referencetype(fieldtypeid,type) values(?,?)", array($fieldTypeId, $referenceType));
                if (!is_object($result)) {
                    echo "failed for: {$referenceType}, uitype: {$fieldTypeId}";
                    $success = false;
                }
            }
        }
        if (!$success) {
            echo "Migration Query Failed";
            break;
        }
    }
    foreach ($fieldTypeInfo as $type => $uitypes) {
        foreach ($uitypes as $uitype) {
            $result = $adb->pquery("insert into vtiger_ws_fieldtype(uitype,fieldtype) values(?,?)", array($uitype, $type));
            if (!is_object($result)) {
                "Query for fieldtype details({$uitype}:uitype,{$type}:fieldtype)";
            }
        }
    }
    $sql = "select * from vtiger_users";
    $updateQuery = "update vtiger_users set accesskey=? where id=?";
    $result = $adb->pquery($sql, array());
    $rowCount = $adb->num_rows($result);
    for ($i = 0; $i < $rowCount; $i++) {
        $userId = $adb->query_result($result, $i, "id");
        $insertResult = $adb->pquery($updateQuery, array(vtws_generateRandomAccessKey(16), $userId));
        if (!is_object($insertResult)) {
            echo "failed for user: "******"user_name");
            break;
        }
    }
    ExecuteQuery("CREATE TABLE IF NOT EXISTS vtiger_ws_entity(id integer(11) not null auto_increment PRIMARY\n\t\tKEY,name varchar(25) not null UNIQUE,handler_path varchar(255) NOT NULL,handler_class varchar(64) NOT NULL,\n\t\tismodule int(3) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
    ExecuteQuery("CREATE TABLE IF NOT EXISTS vtiger_ws_entity_name(entity_id integer(11) not null PRIMARY\n\t\tKEY,name_fields varchar(50),index_field varchar(50),table_name varchar(50)) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
    $names = vtws_getModuleNameList();
    $moduleHandler = array('file' => 'include/Webservices/VtigerModuleOperation.php', 'class' => 'VtigerModuleOperation');
    foreach ($names as $tab) {
        if (in_array($tab, array('Rss', 'Webmails', 'Recyclebin'))) {
            continue;
        }
        $entityId = $adb->getUniqueID("vtiger_ws_entity");
        $adb->pquery('insert into vtiger_ws_entity(id,name,handler_path,handler_class,ismodule) values (?,?,?,?,?)', array($entityId, $tab, $moduleHandler['file'], $moduleHandler['class'], 1));
    }
    $entityId = $adb->getUniqueID("vtiger_ws_entity");
    $adb->pquery('insert into vtiger_ws_entity(id,name,handler_path,handler_class,ismodule) values (?,?,?,?,?)', array($entityId, 'Events', $moduleHandler['file'], $moduleHandler['class'], 1));
    $entityId = $adb->getUniqueID("vtiger_ws_entity");
    $adb->pquery('insert into vtiger_ws_entity(id,name,handler_path,handler_class,ismodule) values (?,?,?,?,?)', array($entityId, 'Users', $moduleHandler['file'], $moduleHandler['class'], 1));
    vtws_addDefaultActorTypeEntity('Groups', array('fieldNames' => 'groupname', 'indexField' => 'groupid', 'tableName' => 'vtiger_groups'));
    ExecuteQuery("CREATE TABLE IF NOT EXISTS `vtiger_ws_entity_tables` (`webservice_entity_id` int(11) NOT NULL ,`table_name` varchar(50) NOT NULL , PRIMARY KEY  (`webservice_entity_id`,`table_name`), CONSTRAINT `fk_1_vtiger_ws_actor_tables` FOREIGN KEY (`webservice_entity_id`) REFERENCES `vtiger_ws_entity` (`id`) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8");
    ExecuteQuery("CREATE TABLE IF NOT EXISTS vtiger_ws_entity_fieldtype(fieldtypeid integer(19) not null auto_increment,table_name varchar(50) not null,field_name varchar(50) not null,fieldtype varchar(200) not null,PRIMARY KEY(fieldtypeid),UNIQUE KEY vtiger_idx_1_tablename_fieldname (table_name,field_name)) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
    ExecuteQuery("CREATE TABLE IF NOT EXISTS vtiger_ws_entity_referencetype(fieldtypeid integer(19) not null,type varchar(25) not null,PRIMARY KEY(fieldtypeid,type),  CONSTRAINT `vtiger_fk_1_actors_referencetype` FOREIGN KEY (`fieldtypeid`) REFERENCES `vtiger_ws_entity_fieldtype` (`fieldtypeid`) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
    require_once "include/Webservices/WebServiceError.php";
    require_once 'include/Webservices/VtigerWebserviceObject.php';
    $webserviceObject = VtigerWebserviceObject::fromName($adb, 'Groups');
    ExecuteQuery("insert into vtiger_ws_entity_tables(webservice_entity_id,table_name) values ({$webserviceObject->getEntityId()},'vtiger_groups')");
    ExecuteQuery("CREATE TABLE IF NOT EXISTS vtiger_ws_operation(operationid int(11) not null auto_increment PRIMARY KEY,name varchar(128) \n\tnot null UNIQUE,handler_path varchar(255),handler_method varchar(64), type varchar(8) not null,prelogin int(3) not null, KEY vtiger_idx_ws_oepration_prelogin (prelogin)) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
    ExecuteQuery("CREATE TABLE IF NOT EXISTS `vtiger_ws_operation_parameters` (`operationid` int(11) NOT NULL, `name` varchar(128) NOT NULL,\n\t\t`type` varchar(64) NOT NULL, sequence int(11) not null,PRIMARY KEY  (`operationid`,`name`), CONSTRAINT \n\t\t`vtiger_fk_1_ws_operation_params` FOREIGN KEY (`operationid`) REFERENCES `vtiger_ws_operation` (`operationid`) \n\t\tON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
    $operationMeta = array("login" => array("include" => array("include/Webservices/Login.php"), "handler" => "vtws_login", "params" => array("username" => "String", "accessKey" => "String"), "prelogin" => 1, "type" => "POST"), "retrieve" => array("include" => array("include/Webservices/Retrieve.php"), "handler" => "vtws_retrieve", "params" => array("id" => "String"), "prelogin" => 0, "type" => "GET"), "create" => array("include" => array("include/Webservices/Create.php"), "handler" => "vtws_create", "params" => array("elementType" => "String", "element" => "encoded"), "prelogin" => 0, "type" => "POST"), "update" => array("include" => array("include/Webservices/Update.php"), "handler" => "vtws_update", "params" => array("element" => "encoded"), "prelogin" => 0, "type" => "POST"), "delete" => array("include" => array("include/Webservices/Delete.php"), "handler" => "vtws_delete", "params" => array("id" => "String"), "prelogin" => 0, "type" => "POST"), "sync" => array("include" => array("include/Webservices/GetUpdates.php"), "handler" => "vtws_sync", "params" => array("modifiedTime" => "DateTime", "elementType" => "String"), "prelogin" => 0, "type" => "GET"), "query" => array("include" => array("include/Webservices/Query.php"), "handler" => "vtws_query", "params" => array("query" => "String"), "prelogin" => 0, "type" => "GET"), "logout" => array("include" => array("include/Webservices/Logout.php"), "handler" => "vtws_logout", "params" => array("sessionName" => "String"), "prelogin" => 0, "type" => "POST"), "listtypes" => array("include" => array("include/Webservices/ModuleTypes.php"), "handler" => "vtws_listtypes", "params" => array(), "prelogin" => 0, "type" => "GET"), "getchallenge" => array("include" => array("include/Webservices/AuthToken.php"), "handler" => "vtws_getchallenge", "params" => array("username" => "String"), "prelogin" => 1, "type" => "GET"), "describe" => array("include" => array("include/Webservices/DescribeObject.php"), "handler" => "vtws_describe", "params" => array("elementType" => "String"), "prelogin" => 0, "type" => "GET"), "extendsession" => array("include" => array("include/Webservices/ExtendSession.php"), "handler" => "vtws_extendSession", 'params' => array(), "prelogin" => 1, "type" => "POST"));
    $createOperationQuery = "insert into vtiger_ws_operation(operationid,name,handler_path,handler_method,type,prelogin) \n\t\tvalues (?,?,?,?,?,?);";
    $createOperationParamsQuery = "insert into vtiger_ws_operation_parameters(operationid,name,type,sequence) \n\t\tvalues (?,?,?,?);";
    foreach ($operationMeta as $operationName => $operationDetails) {
        $operationId = $adb->getUniqueID("vtiger_ws_operation");
        $result = $adb->pquery($createOperationQuery, array($operationId, $operationName, $operationDetails['include'], $operationDetails['handler'], $operationDetails['type'], $operationDetails['prelogin']));
        $params = $operationDetails['params'];
        $sequence = 1;
        foreach ($params as $paramName => $paramType) {
            $result = $adb->pquery($createOperationParamsQuery, array($operationId, $paramName, $paramType, $sequence++));
        }
    }
    vtws_addDefaultActorTypeEntity('Currency', array('fieldNames' => 'currency_name', 'indexField' => 'id', 'tableName' => 'vtiger_currency_info'));
    require_once 'include/Webservices/VtigerWebserviceObject.php';
    $webserviceObject = VtigerWebserviceObject::fromName($adb, 'Currency');
    ExecuteQuery("insert into vtiger_ws_entity_tables(webservice_entity_id,table_name) values ({$webserviceObject->getEntityId()},'vtiger_currency_info')");
    vtws_addDefaultActorTypeEntity('DocumentFolders', array('fieldNames' => 'foldername', 'indexField' => 'folderid', 'tableName' => 'vtiger_attachmentsfolder'));
    $webserviceObject = VtigerWebserviceObject::fromName($adb, 'DocumentFolders');
    ExecuteQuery("insert into vtiger_ws_entity_tables(webservice_entity_id,table_name) values ({$webserviceObject->getEntityId()},'vtiger_attachmentsfolder')");
    $success = true;
    $fieldTypeId = $adb->getUniqueID("vtiger_ws_entity_fieldtype");
    $result = $adb->pquery("insert into vtiger_ws_entity_fieldtype(fieldtypeid,table_name,field_name,fieldtype) values(?,?,?,?);", array($fieldTypeId, 'vtiger_attachmentsfolder', 'createdby', "reference"));
    if (!is_object($result)) {
        echo "failed fo init<br>";
        $success = false;
    }
    $result = $adb->pquery("insert into vtiger_ws_entity_referencetype(fieldtypeid,type) values(?,?)", array($fieldTypeId, 'Users'));
    if (!is_object($result)) {
        echo "failed for: Users, fieldtypeid: {$fieldTypeId}";
        $success = false;
    }
    if (!$success) {
        echo "Migration Query Failed";
    }
}