Which options can you pass as the third parameter of Mage::run()? - php

Magento is started by running Mage::run() in index.php. Mage::run has three parameters: $code, $type, and $options. The first two are well-documented but I can't find anything about the third: $options.
I did read somewhere that you can move your etc directory to another place, but what other options can I set? I hope I can set the theme package; that's what I have been looking for.

I haven't personally used the third argument but after some investigation I've found out that they are used to set the Mage_Core_Model_Config options:
I've made a var_dump with the options and it looks something like this:
//excerpt from var_dump() of Mage_Core_Model_Config_Options
protected '_data' =>
array
'app_dir' => string '/var/www/magento/app' (length=36)
'base_dir' => string '/var/www/magento' (length=32)
'code_dir' => string '/var/www/magento/app/code' (length=41)
'design_dir' => string '/var/www/magento/app/design' (length=43)
'etc_dir' => string '/var/www/magento/app/etc' (length=40)
'lib_dir' => string '/var/www/magento/lib' (length=36)
'locale_dir' => string '/var/www/magento/app/locale' (length=43)
'media_dir' => string '/var/www/magento/media' (length=38)
'skin_dir' => string '/var/www/magento/skin' (length=37)
'var_dir' => string '/var/www/magento/var' (length=36)
'tmp_dir' => string '/var/www/magento/var/tmp' (length=40)
'cache_dir' => string '/var/www/magento/var/cache' (length=42)
'log_dir' => string '/var/www/magento/var/log' (length=40)
'session_dir' => string '/var/www/magento/var/session' (length=44)
'upload_dir' => string '/var/www/magento/media/upload' (length=45)
'export_dir' => string '/var/www/magento/var/export' (length=43)

Related

how to get key from object(stdClass)[key]?

I want to create new array base on object with structure like this :
object(stdClass)[33]
public 'IKSindividuList' =>
array (size=6)
0 =>
object(stdClass)[27] // <---- i need to get the 27
public 'indikator' => string 'nik' (length=3)
public 'value' => string '123654789' (length=9)
1 =>
object(stdClass)[28]
public 'indikator' => string 'name' (length=4)
public 'value' => string 'afdikage' (length=8)
and the new array that i want to create, more or less should look like this :
array(size=6)
27 => // and put the 27 as index number
array(size=1)
'nik' => '123654789'
28 =>
array(size=1)
'name' => 'afdikage'
I don't have any idea what is that number and how to get it. Can someone help me with this?
If you use XDebug you get this in the brackets, if you don't it will be after the hash like this object(stdClass)#1
This is object identifier, which you should not rely or care in real life. See: http://php.net/manual/en/language.oop5.references.php
You can get the object ID using spl_object_id, but that seems like a bad idea. Consider if the object gets destroyed that ID might get reused and your will not have any real meaning.
You can also take a look at a similar SO question What is # next to object(someClass) in var_dump of an object? I have an inference. Am I right?

Zend route with unlimited parameters

I am using Zend 1.10. I am trying to create a route for unlimited variables like abc.com/var1/var2/var3 and so on.
Till now i have searched and find out that i can add route for each variable like
$route = new Zend_Controller_Router_Route(
'/emaillog/:var1',
array(
'controller' => 'emaillog', // The controller to point to.
'action' => 'index', // The action to point to, in said Controller.
':var1' =>null //default value if param is not passed
)
);
$frontController->getRouter()->addRoute('emaillogWithVar1', $route);
and for second variable,
$route = new Zend_Controller_Router_Route(
'/emaillog/:var1/:var2',
array(
'controller' => 'emaillog', // The controller to point to.
'action' => 'index', // The action to point to, in said Controller.
':var1' =>null, //default value if param is not passed
':var2' =>null //default value if param is not passed
)
);
$frontController->getRouter()->addRoute('emaillogWithVar2', $route);
But the work i going to do, can contain 1-∞ infinite variables.
So i want to have once route for unlimited variables.
Any help will be appreciated!
There is a way to get infinite params. For that you don't have to declare them.
Lest say the url is index/test/p1/p2/p3/p4/p5, now if you try the following inside IndexController:
public function testAction()
{
var_dump($this->getRequest());
}
You will get a dump of an instance of Zend_Controller_Request_Http, in that dump, you will see, 2 properties, _params & _pathInfo, Like:
protected '_pathInfo' => string '/index/test/p1/p2/p3/p4/p5' (length=26)
protected '_params' =>
array (size=5)
'controller' => string 'index' (length=5)
'action' => string 'test' (length=4)
'p1' => string 'p2' (length=2)
'p3' => string 'p4' (length=2)
'module' => string 'default' (length=7)
1st method: Now in _params, they will occur as key => value pairs, as long as they are even, the last odd param will be ignored. You can get these by(for example):
$params = $this->getRequest()->getParams();
unset($params['controller']);
unset($params['action']);
unset($params['module']);
$params = array_merge(array_keys($params), array_values($params));
var_dump($params);
Output:
array (size=4)
0 => string 'p1' (length=2)
1 => string 'p3' (length=2)
2 => string 'p2' (length=2)
3 => string 'p4' (length=2)
2nd Method: OR you can use _pathinfo to get the params using explode, like:
$path = $this->getRequest()->getPathinfo();
$params = explode('/', $path);
unset($params[0]);
unset($params[1]);
unset($params[2]);
var_dump($params);
Output:
array (size=5)
3 => string 'p1' (length=2)
4 => string 'p2' (length=2)
5 => string 'p3' (length=2)
6 => string 'p4' (length=2)
7 => string 'p5' (length=2)

How to integrate square with Laravel

I have an app in Laravel and I am following this tutorial. I cloned a sample repo from here and When I try to make a pyament form this, it gives me the following response
Caught exception!
Response body:
object(stdClass)[6]
public 'errors' =>
array (size=1)
0 =>
object(stdClass)[7]
public 'category' => string 'INVALID_REQUEST_ERROR' (length=21)
public 'code' => string 'VALUE_TOO_LOW' (length=13)
public 'detail' => string '`amount_money.amount` must be greater than 100.' (length=47)
public 'field' => string 'amount_money.amount' (length=19)
Response headers:
array (size=12)
0 => string 'HTTP/1.1 400 Bad Request' (length=24)
'Content-Type' => string 'application/json' (length=16)
'Vary' => string 'Origin, Accept-Encoding' (length=23)
'X-Content-Type-Options' => string 'nosniff' (length=7)
'X-Download-Options' => string 'noopen' (length=6)
'X-Frame-Options' => string 'SAMEORIGIN' (length=10)
'X-Permitted-Cross-Domain-Policies' => string 'none' (length=4)
'X-Xss-Protection' => string '1; mode=block' (length=13)
'Date' => string 'Sat, 29 Oct 2016 08:23:51 GMT' (length=29)
'Keep-Alive' => string 'timeout=60' (length=10)
'Strict-Transport-Security' => string 'max-age=631152000' (length=17)
'content-length' => string '161' (length=3)
It worked when i tried the sandbox.
How can I make square to charge any amount that is less than USD 100?
How can I validate the card i.e. in the form given in the github repo, they don't ask for card holder name?
How can I integrate other payment methods with square like cash or cheque?
It sounds like you are trying to make a web based point of sale. To answer your questions:
The minimum charge for Credit Cards, both in the Square Register app and the API is $1.00 (the 100 amount includes cents)
The cards are primarily validated with CVV and postal code, which you should see as required fields in the form.
At this time you cannot create payments for other tender types like cash or check through the API. (This is primarily because our transaction APIs are used for e-commerce exclusively, while custom point of sales are usually created with our Register APIs)

MailChimp API listStaticSegments is always empty

I have created several static Segments in Mailchimp for a List.
I am writing some PHP to create campaigns, but I am stuck on a hurdle early on.
I am using v1.3 of the MailChimp API
$api = new MCAPI( $this->config['api_key'] );
$lists = $api->listStaticSegments( $list_id );
var_dump( $api );
var_dump( $lists );
Results:
object(MCAPI)[39]
public 'version' => string '1.3' (length=3)
public 'errorMessage' => string '' (length=0)
public 'errorCode' => string '' (length=0)
public 'apiUrl' =>
array (size=4)
'scheme' => string 'http' (length=4)
'host' => string 'api.mailchimp.com' (length=17)
'path' => string '/1.3/' (length=5)
'query' => string 'output=php' (length=10)
public 'timeout' => int 300
public 'chunkSize' => int 8192
public 'api_key' => string 'XXX' (length=XX)
public 'secure' => boolean false
array (size=0)
empty
I am expecting $lists to have 10 items in an array.
When I log into MailChimp and check the API Account API Keys page, I can see there are requests but there are no responses.
Ah ha. The problem was I had no static lists. The lists that I had created were dynamic segments (auto updating) , so therefore I must use campaignSegmentTest to generate the same criteria for the dynamic segments.
http://apidocs.mailchimp.com/api/1.3/campaignsegmenttest.func.php
Further research on the Google Mailchimp forum:
https://groups.google.com/forum/#!msg/mailchimp-api-discuss/63DLfYq7ydI/jyGASmUxK8AJ

Whats wrong with this SetExpressCheckout request for recurring payments?

OK, PayPal's docs and examples are pain awful so I hope someone else could help me figure this out. I'm doing a PayPal SetExpressCheckout request using their NVP API. It seems that my code produces one-time payment and not a subscription (which I figured out when receiving IPNs in the single-payment format, not subscription format, also on the sandbox buyer/seller panel in paypal there is nothing that says that the payments in the history are recurring), so I want to know what am I doing wrong. Those are the key => value pairs that I use, of course I implode and send them to PayPal in the right manner - as I said it works but not the way I want it.
array
'METHOD' => string 'SetExpressCheckout' (length=18)
'PAYMENTREQUEST_0_AMT' => string '3.99' (length=4)
'PAYMENTREQUEST_0_CURRENCYCODE' => string 'USD' (length=3)
'PAYMENTREQUEST_0_PAYMENTACTION' => string 'Sale' (length=4)
'PAYMENTREQUEST_0_INVNUM' => int 93
'PAYMENTREQUEST_0_CUSTOM' => string '394mtrf1h5lfdeehvgrferk1n1' (length=26)
'LOCALECODE' => string 'EN' (length=2)
'NOSHIPPING' => int 1
'REQCONFIRMSHIPPING' => int 0
'RETURNURL' => string 'http://MYDOMAINXXXX.COM/payPal/return' (length=44)
'CANCELURL' => string 'http://MYDOMAINXXXX.COM/upgrade' (length=38)
'ALLOWNOTE' => int 0
'LANDINGPAGE' => string 'Billing' (length=7)
'EMAIL' => string 'dimitar#instinctiv.com' (length=22)
'BILLINGPERIOD' => string 'Month' (length=5)
'BILLINGFREQUENCY' => int 1
'PROFILESTARTDATE' => string '2011-07-26' (length=10)
'L_BILLINGTYPE0' => string 'RecurringPayments' (length=17)
'L_BILLINGAGREEMENTDESCRIPTION0' => string 'Basic Subscription - 25GB' (length=34)
'VERSION' => string '63.0' (length=4)
'USER' => string 'pro_1307543338_biz_api1.gmail.com' (length=33)
'PWD' => string 'XXXXXXXXX' (length=10)
'SIGNATURE' => string 'AdTGraIKTCQ-O2lYSLlGJVfeJ1FWAKhC6Y8qZZxqGGkKkccrGxO45emb' (length=56)
I suspect the problem might be PAYMENTREQUEST_0_AMT and the other PAYMENTREQUEST_N_XXX keys, as in the PayPal docs I see that "PAYMENTREQUEST_N_AMT" "SHOULD BE" set to 0 for recurring payments, but also in the docs they say that "AMT is used to point out the amount to be billed on each billing cycle and is deprecated, to use PAYMENTREQUEST_N_AMT instead"!?
Any help is appreciated. If you need more specific info I will provide everything, just add a comment.
You still have to call CreateRecurringPaymentsProfile to create the recurring payments profile. If you don't want to bill an initial amount, you could leave the AMT set to '0' for your SetExpressCheckout API call. See also https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_nvp_r_CreateRecurringPayments and Table 4.2 in https://www.paypalobjects.com/en_US/ebook/PP_ExpressCheckout_IntegrationGuide/RecurringPayments.html

Categories