晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/akaindir/public_html/crm/pkg/vtiger/modules/ExtensionStore/settings/actions/ |
Upload File : |
<?php
/* +**********************************************************************************
* The contents of this file are subject to the vtiger CRM Public License Version 1.1
* ("License"); You may not use this file except in compliance with the License
* The Original Code is: vtiger CRM Open Source
* The Initial Developer of the Original Code is vtiger.
* Portions created by vtiger are Copyright (C) vtiger.
* All Rights Reserved.
* ***********************************************************************************/
class Settings_ExtensionStore_Basic_Action extends Settings_Vtiger_IndexAjax_View {
protected $modelInstance;
function __construct() {
parent::__construct();
$this->exposeMethod('postReview');
$this->exposeMethod('getDateString');
$this->exposeMethod('uninstallExtension');
$this->exposeMethod('registerAccount');
$this->exposeMethod('updateTrialMode');
$this->exposeMethod('updateCardDetails');
$this->exposeMethod('logoutMarketPlace');
$this->exposeMethod('forgotPassword');
}
function process(Vtiger_Request $request) {
$mode = $request->getMode();
if (!empty($mode)) {
echo $this->invokeExposedMethod($mode, $request);
return;
}
}
protected function getModelInstance() {
if (!isset($this->modelInstance)) {
$this->modelInstance = Settings_ExtensionStore_Extension_Model::getInstance();
}
return $this->modelInstance;
}
protected function postReview(Vtiger_Request $request) {
$listing = $request->get('listing');
$comment = $request->get('comment');
$rating = $request->get('rating');
$modelInstance = $this->getModelInstance();
$postResponse = $modelInstance->postReview($listing, $comment, $rating);
$response = new Vtiger_Response();
if ($postResponse['success']) {
$postResult = $postResponse['result'];
$createdTime = str_replace('T', " ", $postResult['createdon']);
$postResult['createdon'] = $this->getDateString($createdTime);
$customerInfo = $modelInstance->getCustomerDetails($postResult['CustomerId']);
$postResult['Customer'] = $customerInfo['result'];
$response = new Vtiger_Response();
$response->setResult($postResult);
} else {
$response->setError($postResponse['error']);
}
$response->emit();
}
protected function getDateString($date) {
$dateString = Vtiger_Util_Helper::formatDateTimeIntoDayString($date);
return $dateString;
}
protected function logoutMarketPlace(Vtiger_Request $request) {
$modelInstance = $this->getModelInstance();
$modelInstance->logoutMarketPlace($request);
}
protected function uninstallExtension(Vtiger_Request $request) {
$extensionName = $request->get('extensionName');
$extensionInstance = Settings_ExtensionStore_Extension_Model::getModuleFromExtnName($extensionName);
$extnType = $extensionInstance->get('extnType');
$response = new Vtiger_Response();
if ($extnType == 'module') {
$extensionInstance->delete();
//Remove extension files
global $root_directory;
$deletePaths = array();
$pathToExtensionLayouts = $root_directory."layouts/vlayout/modules/$extensionName";
$layoutDirAccessible = isFileAccessible($pathToExtensionLayouts);
if ($layoutDirAccessible) {
$deletePaths['layouts'] = $pathToExtensionLayouts;
}
$pathToExtensionSettingsLayouts = $root_directory."layouts/vlayout/modules/Settings/$extensionName";
$layoutSettingsDirAccessible = isFileAccessible($pathToExtensionSettingsLayouts);
if ($layoutSettingsDirAccessible) {
$deletePaths['settingsLayouts'] = $pathToExtensionSettingsLayouts;
}
$pathToExtensionModule = $root_directory."modules/$extensionName";
$moduleDirAccessible = isFileAccessible($pathToExtensionModule);
if ($moduleDirAccessible) {
$deletePaths['modules'] = $pathToExtensionModule;
}
$pathToExtensionModuleSettings = $root_directory."modules/Settings/$extensionName";
$moduleSettingsDirAccessible = isFileAccessible($pathToExtensionModuleSettings);
if ($moduleSettingsDirAccessible) {
$deletePaths['settingsModules'] = $pathToExtensionModuleSettings;
}
foreach ($deletePaths as $dirName) {
$this->deleteRecursively($dirName);
}
$response->setResult(array('success' => true, 'message' => 'extension deleted'));
} else if ($extnType == 'language') {
$languageInstance = Settings_ExtensionStore_Extension_Model::getLanguageInstance($extensionName);
if ($languageInstance) {
$langPrefix = $languageInstance->get('prefix');
Vtiger_Language::deregister($langPrefix);
//remove files
$langDir = "languages/$langPrefix";
if (isFileAccessible($langDir)) {
$this->deleteRecursively($langDir);
}
}
$response->setResult(array('success' => true, 'message' => 'extension deleted'));
} else {
$response->setError('Error in deleting extension');
}
$response->emit();
}
//Source from http:/ /php.net/manual/en/function.rmdir.php
protected function deleteRecursively($dirName) {
$files = array_diff(scandir($dirName), array('.', '..'));
foreach ($files as $file) {
(is_dir("$dirName/$file")) ? $this->deleteRecursively("$dirName/$file") : unlink("$dirName/$file");
$afterDeletefiles = array_diff(scandir($dirName), array('.', '..'));
if (count($afterDeletefiles) == 0) {
rmdir($dirName);
}
}
return true;
}
protected function registerAccount(Vtiger_Request $request) {
$options = array();
$userAction = $request->get('userAction');
$options['emailAddress'] = $request->get('emailAddress');
$options['password'] = $request->get('password');
$modelInstance = $this->getModelInstance();
if ($userAction == 'signup') {
$options['firstName'] = $request->get('firstName');
$options['lastName'] = $request->get('lastName');
$options['companyName'] = $request->get('companyName');
$options['confirmPassword'] = $request->get('confirmPassword');
$profieInfo = $modelInstance->signup($options);
} elseif ($userAction == 'login') {
$options['savePassword'] = ($request->get('savePassword') == 'true') ? true : false;
$options['password'] = md5($options['password']);
$profieInfo = $modelInstance->login($options);
}
$response = new Vtiger_Response();
if ($profieInfo['success'] != 'true') {
$response->setError('', $profieInfo['error']);
} else {
$response->setResult($profieInfo['result']);
}
$response->emit();
}
protected function updateTrialMode(Vtiger_Request $request) {
$response = new Vtiger_Response();
$importedModuleName = $request->get('extensionName');
$trial = $request->get('trial');
$db = PearDatabase::getInstance();
$db->pquery('UPDATE vtiger_tab SET trial = ? WHERE name = ?', array($trial, $importedModuleName));
$response->setResult(array('success' => true, 'message' => 'Extension Store Installed'));
$response->emit();
}
protected function updateCardDetails(Vtiger_Request $request) {
$number = $request->get('cardNumber');
$expmonth = (int) $request->get('expMonth');
$expyear = (int) $request->get('expYear');
$cvc = (int) $request->get('cvccode');
$customerId = (int) $request->get('customerId');
$customerCardId = (int) $request->get('customerCardId');
$modelInstance = $this->getModelInstance();
if (empty($customerCardId)) {
$result = $modelInstance->createCard($number, $expmonth, $expyear, $cvc);
} else {
$result = $modelInstance->updateCard($number, $expmonth, $expyear, $cvc, $customerId);
}
$response = new Vtiger_Response();
if ($result['success'] != 'true') {
$response->setError('', $result['error']);
} else {
$response->setResult($result['result']);
}
$response->emit();
}
public function forgotPassword(Vtiger_Request $request) {
$response = new Vtiger_Response();
$qualifiedModuleName = $request->getModule(false);
$modelInstance = $this->getModelInstance();
$forgotPasswordRes = $modelInstance->forgotPassword($request->getAll());
if ($forgotPasswordRes['success']) {
$response->setResult(array('message' => vtranslate('LBL_RESET_PASSWORD_LINK_EMAILED', $qualifiedModuleName)));
} else {
$response->setError('', $forgotPasswordRes['error']);
}
$response->emit();
}
public function validateRequest(Vtiger_Request $request) {
$request->validateWriteAccess();
}
}