Amazon Glacier PHP and Jobs - amazon-glacier

I am trying to delete my archive in Amazon Glacier. I'm doing it via PHP with PHP SDK2.
I have a little problem.. I've launched job to get ArchiveID:
$this->client->initiateJob(array(
'accountId' => '-',
'vaultName' => $aValutName,
'Type' => "inventory-retrieval")
);
after a couple of hours a can see that job has finished, so I am trying to get job's using it's ID:
$res = $this->client->getJobOutput(array(
'accountId' => '-',
'vaultName' => $aValutName,
'jobId' => $aJobID,
));
and as a respons I am given such things:
Guzzle\Service\Resource\Model Object
(
[structure:protected] =>
[data:protected] => Array
(
[body] => Guzzle\Http\EntityBody Object
(
[contentEncoding:protected] =>
[rewindFunction:protected] =>
[stream:protected] => Resource id #152
[size:protected] =>
[cache:protected] => Array
(
[wrapper_type] => PHP
[stream_type] => TEMP
[mode] => w+b
[unread_bytes] => 0
[seekable] => 1
[uri] => php://temp
[is_local] => 1
[is_readable] => 1
[is_writable] => 1
)
[customData:protected] => Array
(
[default] => 1
)
)
[checksum] =>
[status] => 200
[contentRange] =>
[acceptRanges] => bytes
[contentType] => application/json
[archiveDescription] =>
)
)
Has enybody idea why "archiveDescription" is empty?
Maybe there is another way to obtain ArchiveID so I would be able to delete my archive....
Thanx for any help ;D
MK.

OK, the solution was too easy...
public function getJobResult($aValutName, $aJobID) {
$res = $this->client->getJobOutput(array(
'accountId' => '-',
'vaultName' => $aValutName,
'jobId' => $aJobID,
));
$body = EntityBody::factory($res['body']);
$body->rewind();
$inventory = stream_get_contents($body->getStream());
$ArchiveList = json_decode($inventory,1)['ArchiveList'];
$res = array();
foreach($ArchiveList as $archive):
$res[]=$archive['ArchiveId'];
endforeach;
return $res;
}

Related

Where does phTagr set the requests 'search' parameter?

I am fairly new to cakePHP, i am trying to work with phtagr which uses cakePHP. I am trying to fix a pagination problem it has.
when i see the output of $this->request->params['search'] it has the pagecount value.
function beforeRender($viewFile) {
$this->search->iniitialize();
if(isset($this->request->params['search'])){
$this->data = am($this->defaults, $this->request->params['search']);
$this->data['page'] = 1;
}
} else {
$this->data = $this->defaults;
}
}
printing $this->request->params['search'] gives
Array ( [pageCount] => 27683 [current] => 0 [nextPage] => 1 [prevPage] => [baseUri] => /explorer/query [afterUri] => [defaults] => Array ( [page] => 1 [pos] => [show] => 24 [sort] => -date [view] => small ) [data] => Array ( ) [page] => )
How can i find out where the pageCount value is set?
Just search the source files for the string 'search'. For example using grep:
grep -r "'search'" /path/to/phTagr/
Results:
...
Controller/Component/SearchComponent.php: $this->controller->request->params['search'] = $params;
...
ie it's being set in the search component.

How to apply triming in beforevalidate method in cakephp appmodel

I use cakephp framework ,in that i post parent and child model data but i want to remove triming from that. My demo code is
Array
(
[Currency] => Array
(
[Code] => fgfg
[Name] => fg
[Description] =>
[NoOfDecimalPrecision] => 3
[CurrencyName] => bnjmhj
[CurrencySymbol] => hjh
[DecimalPrecisionName] => bjmh
[DecimalPrecisionSymbol] =>
[CurrencyScaleType_058] => 368
[IsPrefixSymbol] => 0
[IsInActive] => 0
[IsExchangeCurrency] => 0
[RevisionNumber] =>
)
[CurrencyDenomination] => Array
(
[0] => Array
(
[LineNo] => 1
[RowState] => 435
[DenominationName] => jhgjk
[DenominationDetails] => kgk
[DenominationValue] => 1
[RevisionNumber] => 1
[DenominationSequence] => 1
)
)
)
In my code currency is parent model and currencydenimination in child model so i want in both case.my data post dyanamic not static.so please suggest solution.

impresspages parse the renturn data from getMenuItems class

I want to build a custom menu output so I am calling this class:
$pages = \Ip\Menu\Helper::getMenuItems('menu1');
It returns this:
Array
(
[0] => Ip\Menu\Item Object
(
[title:protected] => Home
[pageTitle:protected] =>
[url:protected] => http://porto.gigaweb.me/home
[target:protected] =>
[selected:protected] =>
[current:protected] => 1
[children:protected] => Array
(
[0] => Ip\Menu\Item Object
(
[title:protected] => Lorem ipsum
[pageTitle:protected] =>
[url:protected] => http://porto.gigaweb.me/lorem-ipsumy
[target:protected] =>
[selected:protected] =>
[current:protected] =>
[children:protected] =>
[depth:protected] => 2
[disabled:protected] => 0
[blank:protected] => 0
)
[1] => Ip\Menu\Item Object
(
[title:protected] => about
[pageTitle:protected] =>
[url:protected] => http://porto.gigaweb.me/about
[target:protected] =>
[selected:protected] =>
[current:protected] =>
[children:protected] =>
[depth:protected] => 2
[disabled:protected] => 0
[blank:protected] => 0
)
)
[depth:protected] => 1
[disabled:protected] => 0
[blank:protected] => 0
)
)
I have tried to turn it into an array but it returns value like this [*title].
I want to loop through it and output the values but cant seem to do it.
It is an array of objects. Not an array of arrays. So you have to do something like this:
foreach ($pages as $menuItem) {
$page->getTitle();
}
You can find other methods of $page object here http://www.impresspages.org/menu-item
Please keep in mind, that you are getting MenuItem objects, not Page objects.

How to simplify the query executed rows in cake php

In my cakephp i need to retrieve datas from database.
how can i display the table result in neat format.
Controller:
function MarketingTaskmanagement(){
$data['list'] = $this->TravancoAdmin->get_task_all();
$this->set($data);
$this->render('Marketing/taskmanagement');
}
Model:
function get_task_all(){
$users = $this->query('select * from tbl_tasks');
if($users){
return $users;
}else{
return 1;
}
}
View:
But it displays values as so many arrays:
Array ( [0] => Array ( [tbl_tasks] => Array ( [task_ids_mm] => 1 [task_title_mm] => ghjg [task_description_mm] => gjg [task_from_mm] => 09/04/2012 [task_to_mm] => 09/27/2012 ) ) [1] => Array ( [tbl_tasks] => Array ( [task_ids_mm] => 2 [task_title_mm] => hf [task_description_mm] => hfgh [task_from_mm] => 09/03/2012 [task_to_mm] => 09/27/2012 ) ) [2] => Array ( [tbl_tasks] => Array ( [task_ids_mm] => 3 [task_title_mm] => hf [task_description_mm] => hfgh [task_from_mm] => 09/03/2012 [task_to_mm] => 09/27/2012 ) ) [3] => Array ( [tbl_tasks] => Array ( [task_ids_mm] => 4 [task_title_mm] => hfh [task_description_mm] => fgh [task_from_mm] => 09/03/2012 [task_to_mm] => 09/20/2012 ) ) [4] => Array ( [tbl_tasks] => Array ( [task_ids_mm] => 5 [task_title_mm] => h [task_description_mm] => h [task_from_mm] => 09/04/2012 [task_to_mm] => 09/28/2012 ) ) [5] => Array ( [tbl_tasks] => Array ( [task_ids_mm] => 6 [task_title_mm] => hjk [task_description_mm] => hk [task_from_mm] => 09/05/2012 [task_to_mm] => 09/22/2012 ) ) [6] => Array ( [tbl_tasks] => Array ( [task_ids_mm] => 7 [task_title_mm] => v [task_description_mm] => v [task_from_mm] => 09/03/2012 [task_to_mm] => 09/28/2012 ) ) [7] => Array ( [tbl_tasks] => Array ( [task_ids_mm] => 8 [task_title_mm] => d [task_description_mm] => d [task_from_mm] => 09/03/2012 [task_to_mm] => 09/28/2012 ) ) [8] => Array ( [tbl_tasks] => Array ( [task_ids_mm] => 9 [task_title_mm] => f [task_description_mm] => d [task_from_mm] => 09/04/2012 [task_to_mm] => 09/27/2012 ) ) [9] => Array ( [tbl_tasks] => Array ( [task_ids_mm] => 10 [task_title_mm] => b [task_description_mm] => b [task_from_mm] => 09/05/2012 [task_to_mm] => 09/27/2012 ) ) )
In codeigniter there have something like this:
$users = $this->query('select * from tbl_tasks')->result();
Then it displays the correct array without any complication .
So how can i do this in cakephp?
And i need to display the all task_title_mm values from the table result in view page.
How can i do this?
Use the "find" method.
$this->ModelName->find('all');
or
$this->ModelName->find('list');
If you need less information from query, put:
$this->ModelName->recursive = -1;
before find method.
Since you expanded your question I'll elaborate a bit on the anwser.
It is a good practice to not use $this->query() where a native cake search would work.
if you don't have a model file for your tbl_tasks create one:
<?php
class Task extends AppModel {
var $name = 'Task';
var $displayField = 'task_title_mm';
var $useTable = 'tbl_tasks';
}
Load it inside your get_task_all() function. You can load a model dinamically inside another.
function get_task_all(){
//load the Task model on the fly if it isnt associated with this one
//loadModel won't work because we're inside a model.
//App:import might work, dunno.
$this->Task = ClassRegistry::init('Task');
$users = $this->Task->find('list');
return $users ? $users : 1;
}
find('list') works if you declare 'task_title_mm' as displayField otherwise you can use $this->Task->find('all', array('fields' => array('task_title_mm')));, but the result will be prefixed with ['Task'];
function get_task_all(){
$users = $this->query('select * from tbl_tasks') ....
Hey hey hey! Stop right there! That just gave me a heart attack.
Zero. Read the cookbook! No seriously, Stop! before you go any further I would suggest going through the cookbook atleast once. Do things the right way from the beginning is the way to go.
Use proper methods that cake has provided you to get the job done. SQL queries can get the job done just fine, but trust me using cake's inbuilt methods will benefit you long term and make your life much easier.
As per your query on how to display the data in table format, use cake bake: http://book.cakephp.org/1.3/view/1522/Code-Generation-with-Bake . The cake bake utility will generate the basic scaffold for your application controllers, models, views included. The default view templates of cake are really useful and has almost all the functionality built in, pagination etc.
Want a paginated result? No problem use paginate!
function index() {
$this->ModelAlias->recursive = -1;
$this->set('list', $this->paginate());
}
And voila! you have your paginated data inside $list readily available in your view. And if you have your views baked everything is nicely displayed in a table as you needed.
Don't want to fetch everything? Insert conditions into paginate like this:
function index() {
$this->ModelAlias->recursive = -1;
$this->paginate = array(
'conditions' => array('ModelAlias.tasks' => 'incomplete')
);
$this->set('list', $this->paginate());
}
Not only this you can include virtually any otherkey like 'fields', 'order', 'limit' that cake supports.
Once you start using cake's functions things start to get really awesome. For fetching related data you can use cake 'containable' behavior. This is just one thing of hundreds that cake does really well. I can't outline everything here, I insist please have a go at the cookbook http://book.cakephp.org

cakephp (1.3) - accessing session vars in views

If I do a print_r($_SESSION) in my page.ctp I get:
Array
(
[Config] => Array
(
[userAgent] => b3346028c15f82ac5d4b25c4f50d8718
[time] => 1281034201
[timeout] => 100
)
[manualLogout] => 1
[Message] => Array
(
)
[Auth] => Array
(
[redirect] => /events/add/controller:events
)
[facebookSynced] => 1
)
The var facebookSynced I set in my controller with $this->Session-write() - and there it is in the session as expected. But when I do a pr($this->Session) or a pr($session) from page.ctp I get:
SessionHelper Object
(
[helpers] => Array
(
)
[__active] => 1
[valid] =>
[error] =>
[_userAgent] => b3346028c15f82ac5d4b25c4f50d8718
[path] => /
[lastError] =>
[security] => medium
[time] => 1281016202
[sessionTime] => 1281034202
[watchKeys] => Array
(
)
[id] =>
[host] =>
[timeout] =>
[base] => /Eclipse/Calc_1.3.2/trunk
[webroot] => /Eclipse/Calc_1.3.2/trunk/
[here] => /Eclipse/Calc_1.3.2/trunk/users/login
[params] => Array
(
[controller] => users
[action] => login
[named] => Array
(
)
[pass] => Array
(
)
[plugin] =>
[form] => Array
(
)
[url] => Array
(
[url] => users/login
)
[models] => Array
(
[0] => User
)
)
[action] => login
[data] =>
[theme] =>
[plugin] =>
)
How do I access my session with the facebookSynced var in it, and what is the difference between these two 'sessions'. Extra info: in core.php I have:
Configure::write('Session.save', 'php');
Configure::write('Session.cookie', 'CAKEPHP');
Configure::write('Session.save', 'custom_sesh');
Configure::write('Session.timeout', '180');
Configure::write('Session.checkAgent', true);
Configure::write('Session.start', true);
The contents of custom_sesh is just one line:
ini_set('session.cookie_lifetime', 0);
The first result from print_r($_SESSION) is a list of the values of the actual session variable.
The second result from pr($this->Session) shows the contents of CakePHP's Session helper object.
Both are entirely different things. If you wanted to access the value of your session variable facebookSynced you would probably want to do something like:
$foo = $_SESSION["facebookSynced"];
In your view you should be using the Session helper.
echo $session->read('Key.value');
Where you have written in something like, in your controller,
$this->Session->write('Key.value','example');
if you are using
$this->Session->write('facebookSynced',true);
in your controller,
just use
$foo = $this->Session->read('facebookSynced');
in the view.
as simple as that ! :)

Resources